/**
* Card surface styling variants for content containers.
*
* Provides consistent styling patterns for card components with various visual treatments.
* All variants include responsive hover states and smooth transitions.
*
* @example
* ```tsx
* import { card } from '@/lib/theme/surfaces'
*
* // Standard card
*
*
Content
*
*
* // Domain portfolio card with backdrop blur
*
* example.com
*
*
* // Featured content with accent border
*
*
Top Pick
*
* ```
*
* @category Theme
* @public
*/
export const card = {
/** Standard card with bold border and hover effect - use for general content containers */
default: 'border-2 border-gray-700 rounded-lg hover:border-gray-600 transition-colors duration-300',
/** Domain-specific card with glassmorphism effect - used in domain portfolio grid */
domain: 'bg-gray-900/50 backdrop-blur-sm border border-gray-800 rounded-xl hover:border-gray-700 transition-all hover:shadow-xl hover:shadow-black/20',
/** AI analytics card with padding and hover states - used for usage statistics */
ai: 'p-6 border-2 border-gray-700 rounded-lg hover:border-gray-600 transition-colors duration-300',
/** Featured/highlighted card with orange accent border and tinted background - used for TopPick component */
featured: 'p-6 sm:p-8 border-2 border-[#c15f3c] rounded-lg bg-orange-500/5',
/** Minimal card with thin border only - use for nested or subtle containers */
simple: 'border border-gray-700 rounded-lg',
} as const
/**
* Section surface styling variants for page layout containers.
*
* Sections are larger content areas that organize page content into logical blocks.
* Use these for page-level organization and content grouping.
*
* @example
* ```tsx
* import { section } from '@/lib/theme/surfaces'
*
* // Standard section with responsive padding
*
*
Section Title
*
Content...
*
*
* // Compact section for tighter layouts
*
*
Dense content
*
*
* // Plain section for nested content (no border)
*
*
Nested content without visual container
*
* ```
*
* @category Theme
* @public
*/
export const section = {
/** Standard section with responsive padding, border, and hover effect - use for main content areas */
default: 'p-4 sm:p-8 border-2 border-gray-700 rounded-lg hover:border-gray-600 transition-colors duration-300',
/** Compact section with reduced padding - use for sidebar or constrained layouts */
compact: 'p-4 border-2 border-gray-700 rounded-lg hover:border-gray-600 transition-colors duration-300',
/** Plain section with padding only (no border) - use for nested content areas */
plain: 'p-4 sm:p-8',
} as const
/**
* Panel surface styling variants for overlays and UI elements.
*
* Panels are floating or fixed UI elements like dropdowns, modals, and sidebars.
* These styles provide consistent backdrop effects and layering.
*
* @example
* ```tsx
* import { panel } from '@/lib/theme/surfaces'
*
* // Dropdown menu
*
*
*
*
*
* // Modal overlay
*
*
Modal Content
*
*
* // Sidebar navigation
*
* ```
*
* @category Theme
* @public
*/
export const panel = {
/** Dropdown panel with solid background and shadow - use for menus and popovers */
dropdown: 'bg-gray-800 rounded-lg shadow-xl border border-gray-700',
/** Overlay panel with translucent backdrop blur - use for modals and dialogs */
overlay: 'bg-gray-800/95 backdrop-blur-sm border border-gray-700/50',
/** Sidebar panel with right border - use for navigation sidebars */
sidebar: 'bg-gray-900/50 backdrop-blur-sm border-r border-gray-800',
} as const
/**
* Button surface styling variants for interactive elements.
*
* Button styles provide consistent interaction patterns across navigation,
* CTAs, and other clickable elements.
*
* @example
* ```tsx
* import { button } from '@/lib/theme/surfaces'
*
* // Navigation button
*
*
* // Primary CTA button
*
*
* // Active state (combine with nav)
*
*
* // Icon button
*
* ```
*
* @category Theme
* @public
*/
export const button = {
/** Navigation button with subtle hover - use for header/sidebar navigation links */
nav: 'text-gray-300 hover:text-white hover:bg-gray-700 rounded-md px-3 py-2 transition-all duration-300',
/** Dropdown menu item with translucent hover - use for menu items in dropdowns */
dropdownItem: 'text-gray-300 hover:text-white hover:bg-gray-700/30 rounded-md transition-all duration-300',
/** Active state styling - combine with nav for current page indication */
active: 'text-white bg-gray-700/50',
/** Icon-only button with fixed size - use for toolbar icons and action buttons */
icon: 'inline-flex h-9 w-9 items-center justify-center rounded-xl bg-gray-800 text-gray-300',
/** Primary CTA button with shadow and lift effect - use for main call-to-action elements */
primary: 'bg-gray-800 text-white font-bold py-2 px-4 rounded-sm shadow-md transition-all duration-300 ease-in-out hover:bg-gray-700 hover:shadow-lg hover:-translate-y-0.5',
} as const
/**
* Badge surface styling variants for labels and status indicators.
*
* Badges are small inline labels used for categories, tags, and status indicators.
* All variants use consistent sizing with semantic color coding.
*
* @example
* ```tsx
* import { badge } from '@/lib/theme/surfaces'
*
* // Default badge
* Tag
*
* // Muted/subtle badge
* Draft
*
* // Status badges with semantic colors
* Active
* Pending
* Error
* Featured
* ```
*
* @category Theme
* @public
*/
export const badge = {
/** Default badge with neutral gray background - use for general tags and categories */
default: 'px-2 py-1 bg-gray-700 rounded text-xs text-gray-300',
/** Muted badge with darker background - use for secondary or de-emphasized labels */
muted: 'px-2 py-1 bg-gray-800 rounded text-xs text-gray-400',
/** Accent badge with orange theme colors - use for featured or highlighted items */
accent: 'px-2 py-1 bg-orange-500/20 border border-orange-500/30 rounded text-xs text-orange-300',
/** Success badge with green colors - use for active, completed, or positive status */
success: 'px-2 py-1 bg-green-500/20 border border-green-500/30 rounded text-xs text-green-300',
/** Warning badge with yellow colors - use for pending, caution, or attention states */
warning: 'px-2 py-1 bg-yellow-500/20 border border-yellow-500/30 rounded text-xs text-yellow-300',
/** Error badge with red colors - use for errors, failures, or critical states */
error: 'px-2 py-1 bg-red-500/20 border border-red-500/30 rounded text-xs text-red-300',
} as const
/**
* Spacing utilities for consistent layout and content organization.
*
* Provides responsive spacing patterns for page layouts, sections, grids, and content flow.
* All spacing values use Tailwind's responsive breakpoints for mobile-first design.
*
* @example
* ```tsx
* import { spacing } from '@/lib/theme/surfaces'
*
* // Page-level container with responsive padding
*
*
Page content
*
*
* // Section container with vertical spacing
*
*
* ```
*
* @category Theme
* @public
*/
export const spacing = {
/** Page-level responsive padding - use on main containers and page wrappers */
page: 'px-4 py-8 sm:px-6 lg:px-8',
/** Vertical spacing between major sections - creates consistent rhythm on pages */
section: 'space-y-8',
/** Grid gap with responsive sizing - use with CSS Grid or flex layouts */
grid: 'gap-4 sm:gap-6',
/** Content flow vertical spacing - use for text content and article layouts */
content: 'space-y-4',
} as const
/**
* Layout grid utilities for responsive card and content grids.
*
* Provides pre-configured responsive grid layouts with mobile-first column breakpoints.
* All layouts include consistent gap spacing and padding.
*
* @example
* ```tsx
* import { layout } from '@/lib/theme/surfaces'
*
* // 3-column grid (homepage, about page)
*
*
Card 1
*
Card 2
*
Card 3
*
*
* // 2-column grid
*
*
Card 1
*
Card 2
*
*
* // 4-column grid (stats, icons)
*
*
Stat 1
*
Stat 2
*
Stat 3
*
Stat 4
*
* ```
*
* @category Theme
* @public
*/
export const layout = {
/** 2-column responsive grid - 1 col mobile, 2 cols tablet+ */
grid2col: 'grid grid-cols-1 md:grid-cols-2 gap-4 p-4',
/** 3-column responsive grid - 1 col mobile, 2 cols tablet, 3 cols desktop - use for homepage and about page */
grid3col: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 p-4',
/** 4-column responsive grid - 2 cols mobile, 4 cols tablet+ */
grid4col: 'grid grid-cols-2 md:grid-cols-4 gap-4',
} as const
/**
* Surface design tokens for consistent UI styling across the application.
*
* Provides a comprehensive set of pre-configured surface styles for cards, sections,
* panels, buttons, badges, and spacing. All styles follow the dark theme design system
* with consistent colors, borders, shadows, and transitions.
*
* @remarks
* This is the main theme export. Import individual categories or the full surfaces object
* depending on your needs. All variants support responsive design and include smooth
* hover transitions.
*
* @example
* ```tsx
* import { surfaces } from '@/lib/theme/surfaces'
* // or
* import { card, button, badge } from '@/lib/theme/surfaces'
*
* // Using the full surfaces object
*
*
Card Title
*
*
* // Using individual imports
*
* example.com
*
* ```
*
* @category Theme
* @public
*/
export const surfaces = {
card,
section,
panel,
button,
badge,
spacing,
layout,
} as const
/**
* TypeScript type representing all available surface tokens.
*
* Use this type for type-safe access to surface styles in components.
*
* @example
* ```tsx
* import type { SurfaceTokens } from '@/lib/theme/surfaces'
*
* function CustomComponent(props: { surfaces: SurfaceTokens }) {
* return