@marcoschwartz/lite-ui 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +85 -40
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +86 -41
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/theme/ThemeProvider.tsx","../src/theme/themes.ts","../src/components/Button.tsx","../src/components/Select.tsx","../src/components/Modal.tsx","../src/components/Navbar.tsx","../src/components/Sidebar.tsx","../src/components/SidebarProvider.tsx","../src/components/AppShell.tsx","../src/icons/icon-utils.tsx","../src/icons/HomeIcon.tsx","../src/icons/UserIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/BellIcon.tsx","../src/icons/SettingsIcon.tsx","../src/icons/MenuIcon.tsx","../src/icons/CloseIcon.tsx","../src/icons/ChevronDownIcon.tsx","../src/icons/ChevronRightIcon.tsx","../src/icons/CheckIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/TrashIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/MailIcon.tsx","../src/icons/StarIcon.tsx","../src/icons/HeartIcon.tsx","../src/icons/DownloadIcon.tsx","../src/icons/UploadIcon.tsx","../src/icons/CameraIcon.tsx","../src/icons/LockIcon.tsx","../src/icons/CalendarIcon.tsx","../src/icons/GoogleIcon.tsx","../src/icons/GitHubIcon.tsx","../src/icons/TwitterIcon.tsx","../src/icons/FacebookIcon.tsx","../src/icons/AppleIcon.tsx","../src/icons/LinkedInIcon.tsx","../src/icons/YouTubeIcon.tsx","../src/icons/SlackIcon.tsx","../src/components/Drawer.tsx","../src/components/TextInput.tsx","../src/components/ActionMenu.tsx","../src/components/Card.tsx","../src/components/Alert.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Badge.tsx","../src/components/Spinner.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx","../src/components/Pagination.tsx","../src/components/DatePicker.tsx","../src/components/TimePicker.tsx","../src/components/DateTimePicker.tsx","../src/components/Radio.tsx","../src/components/ProgressBar.tsx","../src/components/Slider.tsx","../src/components/Avatar.tsx","../src/components/Textarea.tsx","../src/components/Toast.tsx","../src/components/Stepper.tsx","../src/components/Divider.tsx","../src/components/FileUpload.tsx","../src/utils/theme-script.ts"],"sourcesContent":["export { Button } from './components/Button';\nexport type { ButtonProps } from './components/Button';\n\nexport { Select } from './components/Select';\nexport type { SelectProps, SelectOption } from './components/Select';\n\nexport { Modal } from './components/Modal';\nexport type { ModalProps } from './components/Modal';\n\nexport { Navbar } from './components/Navbar';\nexport type { NavbarProps } from './components/Navbar';\n\nexport { Sidebar } from './components/Sidebar';\nexport type { SidebarProps } from './components/Sidebar';\n\nexport { SidebarProvider, useSidebar } from './components/SidebarProvider';\nexport type { SidebarProviderProps, SidebarContextValue } from './components/SidebarProvider';\n\nexport { AppShell } from './components/AppShell';\nexport type { AppShellProps } from './components/AppShell';\n\nexport { Drawer } from './components/Drawer';\nexport type { DrawerProps } from './components/Drawer';\n\nexport { TextInput } from './components/TextInput';\nexport type { TextInputProps } from './components/TextInput';\n\nexport { ActionMenu } from './components/ActionMenu';\nexport type { ActionMenuProps, ActionMenuItem } from './components/ActionMenu';\n\nexport { Card } from './components/Card';\nexport type { CardProps } from './components/Card';\n\nexport { Alert } from './components/Alert';\nexport type { AlertProps } from './components/Alert';\n\nexport { Checkbox } from './components/Checkbox';\nexport type { CheckboxProps } from './components/Checkbox';\n\nexport { Toggle } from './components/Toggle';\nexport type { ToggleProps } from './components/Toggle';\n\nexport { Badge } from './components/Badge';\nexport type { BadgeProps } from './components/Badge';\n\nexport { Spinner } from './components/Spinner';\nexport type { SpinnerProps } from './components/Spinner';\n\nexport { Tabs } from './components/Tabs';\nexport type { TabsProps, Tab } from './components/Tabs';\n\nexport { Table } from './components/Table';\nexport type { TableProps, Column } from './components/Table';\n\nexport { Pagination } from './components/Pagination';\nexport type { PaginationProps } from './components/Pagination';\n\nexport { DatePicker } from './components/DatePicker';\nexport type { DatePickerProps } from './components/DatePicker';\n\nexport { TimePicker } from './components/TimePicker';\nexport type { TimePickerProps } from './components/TimePicker';\n\nexport { DateTimePicker } from './components/DateTimePicker';\nexport type { DateTimePickerProps } from './components/DateTimePicker';\n\nexport { Radio } from './components/Radio';\nexport type { RadioProps, RadioOption } from './components/Radio';\n\nexport { ProgressBar } from './components/ProgressBar';\nexport type { ProgressBarProps } from './components/ProgressBar';\n\nexport { Slider } from './components/Slider';\nexport type { SliderProps } from './components/Slider';\n\nexport { Avatar } from './components/Avatar';\nexport type { AvatarProps } from './components/Avatar';\n\nexport { Textarea } from './components/Textarea';\nexport type { TextareaProps } from './components/Textarea';\n\nexport { ToastProvider, useToast, toast } from './components/Toast';\nexport type { Toast, ToastProviderProps } from './components/Toast';\n\nexport { Stepper } from './components/Stepper';\nexport type { StepperProps, Step } from './components/Stepper';\n\nexport { Divider } from './components/Divider';\nexport type { DividerProps } from './components/Divider';\n\nexport { FileUpload } from './components/FileUpload';\nexport type { FileUploadProps } from './components/FileUpload';\n\nexport { ThemeProvider, useTheme } from './theme/ThemeProvider';\nexport type { ColorMode } from './theme/ThemeProvider';\nexport { themes } from './theme/themes';\nexport type { ThemeName, Theme, ButtonTheme, SelectTheme } from './theme/themes';\n\nexport { themeScript, getThemeScript } from './utils/theme-script';\n\nexport * from './icons';\n","\"use client\";\n\nimport React, { createContext, useContext, useState, useEffect } from 'react';\nimport { themes, ThemeName, Theme } from './themes';\n\nexport type ColorMode = 'light' | 'dark' | 'system';\n\ninterface ThemeContextValue {\n theme: Theme;\n themeName: ThemeName;\n setTheme: (themeName: ThemeName) => void;\n colorMode: ColorMode;\n setColorMode: (mode: ColorMode) => void;\n resolvedColorMode: 'light' | 'dark';\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: ThemeName;\n defaultColorMode?: ColorMode;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'default',\n defaultColorMode = 'system'\n}: ThemeProviderProps) {\n const [mounted, setMounted] = useState(false);\n\n // Initialize from defaults (will sync with actual values after mount)\n const [themeName, setThemeNameState] = useState<ThemeName>(defaultTheme);\n const [colorMode, setColorModeState] = useState<ColorMode>(defaultColorMode);\n const [resolvedColorMode, setResolvedColorMode] = useState<'light' | 'dark'>('light');\n\n // Sync with actual values after mount to avoid hydration mismatch\n useEffect(() => {\n setMounted(true);\n\n // Read actual values from localStorage and DOM\n const storedTheme = localStorage.getItem('lite-ui-theme') as ThemeName;\n const storedColorMode = localStorage.getItem('lite-ui-color-mode') as ColorMode;\n const currentColorMode = document.documentElement.getAttribute('data-color-mode') as 'light' | 'dark';\n\n if (storedTheme) setThemeNameState(storedTheme);\n if (storedColorMode) setColorModeState(storedColorMode);\n if (currentColorMode) setResolvedColorMode(currentColorMode);\n }, []);\n\n const theme = themes[themeName];\n\n // Update theme\n const setTheme = (newThemeName: ThemeName) => {\n setThemeNameState(newThemeName);\n if (typeof window !== 'undefined') {\n localStorage.setItem('lite-ui-theme', newThemeName);\n document.documentElement.setAttribute('data-theme', newThemeName);\n }\n };\n\n // Update color mode\n const setColorMode = (mode: ColorMode) => {\n if (typeof window === 'undefined') return;\n\n setColorModeState(mode);\n localStorage.setItem('lite-ui-color-mode', mode);\n\n let resolved: 'light' | 'dark';\n if (mode === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n resolved = mode;\n }\n\n setResolvedColorMode(resolved);\n document.documentElement.setAttribute('data-color-mode', resolved);\n\n if (resolved === 'dark') {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n };\n\n // Listen for system theme changes\n useEffect(() => {\n if (!mounted) return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n const handleChange = (e: MediaQueryListEvent) => {\n if (colorMode === 'system') {\n const resolved = e.matches ? 'dark' : 'light';\n setResolvedColorMode(resolved);\n document.documentElement.setAttribute('data-color-mode', resolved);\n\n if (resolved === 'dark') {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n }\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [mounted, colorMode]);\n\n return (\n <ThemeContext.Provider value={{\n theme,\n themeName,\n setTheme,\n colorMode,\n setColorMode,\n resolvedColorMode\n }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n","export type ThemeName = 'default' | 'minimalistic';\n\nexport interface ButtonTheme {\n primary: string;\n secondary: string;\n success: string;\n danger: string;\n warning: string;\n info: string;\n}\n\nexport interface SelectTheme {\n base: string;\n sizes: {\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n disabled: string;\n}\n\nexport interface Theme {\n name: ThemeName;\n button: {\n base: string;\n variants: ButtonTheme;\n sizes: {\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n disabled: string;\n };\n select: SelectTheme;\n}\n\nexport const themes: Record<ThemeName, Theme> = {\n default: {\n name: 'default',\n button: {\n base: 'font-semibold rounded-lg transition-all duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 active:scale-95 gap-2',\n variants: {\n primary: 'bg-blue-600 hover:bg-blue-700 active:bg-blue-800 text-white shadow-sm hover:shadow-md dark:bg-blue-500 dark:hover:bg-blue-600 dark:active:bg-blue-700',\n secondary: 'bg-gray-600 hover:bg-gray-700 active:bg-gray-800 text-white shadow-sm hover:shadow-md dark:bg-gray-500 dark:hover:bg-gray-600 dark:active:bg-gray-700',\n success: 'bg-green-600 hover:bg-green-700 active:bg-green-800 text-white shadow-sm hover:shadow-md dark:bg-green-500 dark:hover:bg-green-600 dark:active:bg-green-700',\n danger: 'bg-red-600 hover:bg-red-700 active:bg-red-800 text-white shadow-sm hover:shadow-md dark:bg-red-500 dark:hover:bg-red-600 dark:active:bg-red-700',\n warning: 'bg-yellow-500 hover:bg-yellow-600 active:bg-yellow-700 text-white shadow-sm hover:shadow-md dark:bg-yellow-400 dark:hover:bg-yellow-500 dark:active:bg-yellow-600',\n info: 'bg-cyan-600 hover:bg-cyan-700 active:bg-cyan-800 text-white shadow-sm hover:shadow-md dark:bg-cyan-500 dark:hover:bg-cyan-600 dark:active:bg-cyan-700',\n },\n sizes: {\n sm: 'px-3 py-1.5 text-sm min-h-[30px]',\n md: 'px-4 py-2 text-base min-h-[38px]',\n lg: 'px-6 py-3 text-lg min-h-[48px]',\n xl: 'px-8 py-4 text-xl min-h-[60px]',\n },\n disabled: 'opacity-50 cursor-not-allowed hover:shadow-sm active:scale-100',\n },\n select: {\n base: 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 text-left transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 pr-10 cursor-pointer dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500',\n sizes: {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2.5 text-base',\n lg: 'px-4 py-3 text-lg',\n xl: 'px-5 py-4 text-xl',\n },\n disabled: 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900',\n },\n },\n minimalistic: {\n name: 'minimalistic',\n button: {\n base: 'font-normal rounded-none transition-colors duration-200 focus:outline-none border-2 gap-2',\n variants: {\n primary: 'bg-transparent border-white text-white hover:bg-white hover:text-black',\n secondary: 'bg-transparent border-gray-400 text-gray-400 hover:bg-gray-400 hover:text-black',\n success: 'bg-transparent border-green-400 text-green-400 hover:bg-green-400 hover:text-black',\n danger: 'bg-transparent border-red-400 text-red-400 hover:bg-red-400 hover:text-black',\n warning: 'bg-transparent border-yellow-400 text-yellow-400 hover:bg-yellow-400 hover:text-black',\n info: 'bg-transparent border-blue-400 text-blue-400 hover:bg-blue-400 hover:text-black',\n },\n sizes: {\n sm: 'px-4 py-2 text-sm uppercase tracking-wide min-h-[36px]',\n md: 'px-6 py-3 text-base uppercase tracking-wide min-h-[48px]',\n lg: 'px-8 py-4 text-lg uppercase tracking-wider min-h-[60px]',\n xl: 'px-10 py-5 text-xl uppercase tracking-wider min-h-[72px]',\n },\n disabled: 'opacity-30 cursor-not-allowed hover:bg-transparent',\n },\n select: {\n base: 'w-full appearance-none rounded-none border-2 border-white bg-transparent text-white text-left transition-colors duration-200 focus:outline-none pr-10 cursor-pointer placeholder:text-gray-500',\n sizes: {\n sm: 'px-4 py-2 text-sm uppercase tracking-wide',\n md: 'px-4 py-3 text-base uppercase tracking-wide',\n lg: 'px-4 py-4 text-lg uppercase tracking-wider',\n xl: 'px-5 py-5 text-xl uppercase tracking-wider',\n },\n disabled: 'opacity-30 cursor-not-allowed',\n },\n },\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n children: React.ReactNode;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n iconOnly?: boolean;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n className = '',\n children,\n disabled,\n leftIcon,\n rightIcon,\n iconOnly = false,\n ...props\n}) => {\n const { theme } = useTheme();\n\n const baseStyles = theme.button.base;\n const variantStyles = theme.button.variants[variant];\n const sizeStyles = theme.button.sizes[size];\n const disabledStyles = disabled ? theme.button.disabled : '';\n\n // Adjust padding for icon-only buttons - remove horizontal padding and make square\n const iconOnlyStyles = iconOnly ? '!p-0 aspect-square' : '';\n\n const classes = `inline-flex items-center justify-center ${baseStyles} ${variantStyles} ${sizeStyles} ${disabledStyles} ${iconOnlyStyles} ${className}`.trim();\n\n return (\n <button\n className={classes}\n disabled={disabled}\n {...props}\n >\n {iconOnly ? (\n children\n ) : (\n <>\n {leftIcon && <span className=\"inline-flex shrink-0\">{leftIcon}</span>}\n {children && <span className=\"inline-flex items-center\">{children}</span>}\n {rightIcon && <span className=\"inline-flex shrink-0\">{rightIcon}</span>}\n </>\n )}\n </button>\n );\n};\n","\"use client\";\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'size' | 'onChange' | 'defaultValue'> {\n options: SelectOption[];\n size?: 'sm' | 'md' | 'lg' | 'xl';\n placeholder?: string;\n disabled?: boolean;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n size = 'md',\n placeholder,\n className = '',\n disabled,\n value: controlledValue,\n defaultValue,\n onChange,\n ...props\n}) => {\n const { theme, themeName } = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Use controlled value if provided, otherwise use internal state\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Find the selected option\n const selectedOption = options.find(opt => opt.value === value);\n const displayText = selectedOption ? selectedOption.label : placeholder || 'Select...';\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [isOpen]);\n\n const handleSelect = (optionValue: string) => {\n if (disabled) return;\n\n setInternalValue(optionValue);\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const baseStyles = theme.select.base;\n const sizeStyles = theme.select.sizes[size];\n const disabledStyles = disabled ? theme.select.disabled : '';\n\n const buttonClasses = `${baseStyles} ${sizeStyles} ${disabledStyles} ${className}`.trim();\n\n // Icon color based on theme\n const iconColor = themeName === 'minimalistic'\n ? (disabled ? 'text-gray-600' : 'text-white')\n : (disabled ? 'text-gray-400' : 'text-gray-500');\n\n // Dropdown menu styles based on theme\n const dropdownBaseStyles = themeName === 'minimalistic'\n ? 'bg-black border-2 border-white'\n : 'bg-white border border-gray-300 shadow-lg dark:bg-gray-800 dark:border-gray-600';\n\n const optionBaseStyles = themeName === 'minimalistic'\n ? 'text-white hover:bg-white hover:text-black transition-colors duration-200'\n : 'text-gray-900 hover:bg-blue-50 transition-colors duration-150 dark:text-gray-100 dark:hover:bg-gray-700';\n\n const optionSizeStyles = {\n sm: 'px-4 py-2 text-sm',\n md: 'px-4 py-2.5 text-base',\n lg: 'px-4 py-3 text-lg',\n xl: 'px-5 py-4 text-xl',\n }[size];\n\n return (\n <div className=\"relative inline-block w-full\" ref={dropdownRef} {...props}>\n {/* Custom button that looks like select */}\n <button\n type=\"button\"\n className={buttonClasses}\n onClick={handleToggle}\n disabled={disabled}\n >\n <span className={!selectedOption && placeholder ? 'opacity-50' : ''}>\n {displayText}\n </span>\n </button>\n\n {/* Chevron icon */}\n <div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-4\">\n <svg\n className={`h-5 w-5 transition-transform duration-200 ${iconColor} ${isOpen ? 'rotate-180' : ''}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n\n {/* Custom dropdown menu */}\n {isOpen && !disabled && (\n <div\n className={`absolute z-50 w-full mt-1 ${dropdownBaseStyles} rounded-lg overflow-hidden`}\n style={{ maxHeight: '300px', overflowY: 'auto' }}\n >\n {options.map((option) => (\n <div\n key={option.value}\n className={`${optionBaseStyles} ${optionSizeStyles} cursor-pointer ${\n value === option.value ? (themeName === 'minimalistic' ? 'bg-white text-black' : 'bg-blue-50 dark:bg-gray-700') : ''\n }`}\n onClick={() => handleSelect(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React, { useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n showCloseButton?: boolean;\n}\n\nconst sizeClasses = {\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl',\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n size = 'md',\n showCloseButton = true,\n}) => {\n const { theme } = useTheme();\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n // Prevent body scroll when modal is open\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = 'unset';\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const sizeClass = sizeClasses[size];\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/60 backdrop-blur-sm transition-all duration-200\"\n onClick={onClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n >\n <div\n className={`relative w-full ${sizeClass} bg-white dark:bg-gray-800 rounded-lg shadow-2xl transform transition-all duration-200 scale-100 animate-in`}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700\">\n {title && (\n <h3 id=\"modal-title\" className=\"text-xl font-semibold text-gray-900 dark:text-gray-100\">\n {title}\n </h3>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors\"\n aria-label=\"Close modal\"\n >\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"p-6\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface NavbarProps {\n logo?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n sticky?: boolean;\n}\n\nexport const Navbar: React.FC<NavbarProps> = ({\n logo,\n children,\n className = '',\n sticky = false,\n}) => {\n const { theme } = useTheme();\n\n const baseClasses = sticky ? 'sticky top-0 z-40' : '';\n\n return (\n <nav className={`bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 ${baseClasses} ${className}`}>\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n <div className=\"flex justify-between items-center h-16\">\n {logo && (\n <div className=\"flex items-center\">\n {logo}\n </div>\n )}\n {children && (\n <div className=\"flex items-center gap-6\">\n {children}\n </div>\n )}\n </div>\n </div>\n </nav>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface SidebarProps {\n children: React.ReactNode;\n className?: string;\n width?: 'sm' | 'md' | 'lg';\n position?: 'left' | 'right';\n}\n\nconst widthClasses = {\n sm: 'w-48',\n md: 'w-64',\n lg: 'w-80',\n};\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n children,\n className = '',\n width = 'md',\n position = 'left',\n}) => {\n const { theme } = useTheme();\n const widthClass = widthClasses[width];\n const borderClass = position === 'left' ? 'border-r' : 'border-l';\n\n return (\n <aside\n className={`${widthClass} bg-white dark:bg-gray-800 ${borderClass} border-gray-200 dark:border-gray-700 h-full overflow-y-auto ${className}`}\n >\n {children}\n </aside>\n );\n};\n","\"use client\";\n\nimport React, { createContext, useContext, useState, ReactNode } from 'react';\n\nexport interface SidebarContextValue {\n isOpen: boolean;\n isMobile: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setIsMobile: (isMobile: boolean) => void;\n}\n\nconst SidebarContext = createContext<SidebarContextValue | undefined>(undefined);\n\nexport interface SidebarProviderProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\nexport const SidebarProvider: React.FC<SidebarProviderProps> = ({\n children,\n defaultOpen = false,\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [isMobile, setIsMobile] = useState(false);\n\n const open = () => setIsOpen(true);\n const close = () => setIsOpen(false);\n const toggle = () => setIsOpen(prev => !prev);\n\n const value: SidebarContextValue = {\n isOpen,\n isMobile,\n open,\n close,\n toggle,\n setIsMobile,\n };\n\n return (\n <SidebarContext.Provider value={value}>\n {children}\n </SidebarContext.Provider>\n );\n};\n\nexport const useSidebar = (): SidebarContextValue => {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider');\n }\n return context;\n};\n","\"use client\";\n\nimport React, { useState } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\nimport { MenuIcon } from '../icons';\n\nexport interface AppShellProps {\n children: React.ReactNode;\n navbar?: {\n content: React.ReactNode;\n width?: 'sm' | 'md' | 'lg';\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl';\n };\n header?: React.ReactNode;\n navbarTitle?: string;\n navbarLogo?: React.ReactNode;\n defaultNavbarOpen?: boolean;\n responsive?: boolean;\n className?: string;\n}\n\nconst widthClasses = {\n sm: 'w-48',\n md: 'w-64',\n lg: 'w-80',\n};\n\nconst breakpointClasses = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n};\n\nexport const AppShell: React.FC<AppShellProps> = ({\n children,\n navbar,\n header,\n navbarTitle,\n navbarLogo,\n defaultNavbarOpen = false,\n responsive = true,\n className = '',\n}) => {\n const { theme } = useTheme();\n const [isMobileNavbarOpen, setIsMobileNavbarOpen] = useState(defaultNavbarOpen);\n\n const navbarWidth = navbar?.width || 'md';\n const navbarBreakpoint = navbar?.breakpoint || 'md';\n const widthClass = widthClasses[navbarWidth];\n const breakpoint = breakpointClasses[navbarBreakpoint];\n\n // Non-responsive mode: always show sidebar\n if (!responsive && navbar) {\n return (\n <div className={`min-h-screen flex flex-col ${className}`}>\n {header && <div className=\"w-full\">{header}</div>}\n <div className=\"flex flex-1\">\n <aside className={`${widthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 h-full overflow-y-auto`}>\n {navbar.content}\n </aside>\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n </div>\n );\n }\n\n // Non-responsive mode without navbar\n if (!responsive) {\n return (\n <div className={`min-h-screen flex flex-col ${className}`}>\n {header && <div className=\"w-full\">{header}</div>}\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n );\n }\n\n // Responsive mode with navbar\n if (navbar) {\n // Build breakpoint classes statically\n const mobileHeaderClass = navbarBreakpoint === 'sm' ? 'sm:hidden' :\n navbarBreakpoint === 'md' ? 'md:hidden' :\n navbarBreakpoint === 'lg' ? 'lg:hidden' : 'xl:hidden';\n\n const desktopNavbarClass = navbarBreakpoint === 'sm' ? 'sm:block' :\n navbarBreakpoint === 'md' ? 'md:block' :\n navbarBreakpoint === 'lg' ? 'lg:block' : 'xl:block';\n\n const mobileDrawerClass = navbarBreakpoint === 'sm' ? 'sm:hidden' :\n navbarBreakpoint === 'md' ? 'md:hidden' :\n navbarBreakpoint === 'lg' ? 'lg:hidden' : 'xl:hidden';\n\n // Build width classes statically (Tailwind can't use dynamic classes)\n const sidebarWidthClass = navbarWidth === 'sm' ? 'w-48' :\n navbarWidth === 'lg' ? 'w-80' : 'w-64';\n\n return (\n <div className={`min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 ${className}`}>\n {/* Mobile Header - Hidden on Desktop */}\n <div className={`${mobileHeaderClass} sticky top-0 z-30 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 px-4 py-3 flex items-center justify-between`}>\n {navbarLogo ? (\n <div>{navbarLogo}</div>\n ) : navbarTitle ? (\n <span className=\"text-xl font-bold text-gray-900 dark:text-gray-100\">\n {navbarTitle}\n </span>\n ) : null}\n <button\n className=\"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n onClick={() => setIsMobileNavbarOpen(!isMobileNavbarOpen)}\n aria-label=\"Toggle menu\"\n >\n <MenuIcon size=\"md\" />\n </button>\n </div>\n\n {/* Header (optional, shows on all screen sizes) */}\n {header && <div className=\"w-full\">{header}</div>}\n\n {/* Main Layout */}\n <div className=\"flex flex-1 min-h-0\">\n {/* Desktop Navbar - Hidden on Mobile */}\n <aside className={`hidden ${desktopNavbarClass} ${sidebarWidthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 overflow-y-auto shrink-0`}>\n {navbar.content}\n </aside>\n\n {/* Mobile Drawer Overlay */}\n {isMobileNavbarOpen && (\n <>\n <div\n className={`${mobileDrawerClass} fixed inset-0 z-40 bg-black/60 backdrop-blur-sm animate-in fade-in duration-200`}\n onClick={() => setIsMobileNavbarOpen(false)}\n />\n <div className={`${mobileDrawerClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-white dark:bg-gray-800 shadow-2xl animate-in slide-in-from-left duration-300`}>\n <div className=\"p-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between\">\n {navbarLogo ? (\n <div>{navbarLogo}</div>\n ) : navbarTitle ? (\n <span className=\"text-xl font-bold text-gray-900 dark:text-gray-100\">\n {navbarTitle}\n </span>\n ) : null}\n <button\n className=\"p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n onClick={() => setIsMobileNavbarOpen(false)}\n aria-label=\"Close menu\"\n >\n <svg className=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div className=\"overflow-y-auto h-[calc(100vh-73px)]\">\n {navbar.content}\n </div>\n </div>\n </>\n )}\n\n {/* Main Content */}\n <main className=\"flex-1 overflow-y-auto min-h-screen\">\n {children}\n </main>\n </div>\n </div>\n );\n }\n\n // Responsive mode without navbar\n return (\n <div className={`min-h-screen flex flex-col ${className}`}>\n {header && <div className=\"w-full\">{header}</div>}\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface IconProps {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n color?: string;\n}\n\nconst sizeClasses = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-8 h-8',\n};\n\nexport interface IconComponent extends React.FC<IconProps> {\n displayName?: string;\n}\n\nexport const createIcon = (\n displayName: string,\n path: React.ReactNode,\n filled = false\n): IconComponent => {\n const Icon: IconComponent = ({ size = 'md', className = '', color = 'currentColor' }) => {\n const sizeClass = sizeClasses[size];\n return (\n <svg\n className={`${sizeClass} ${className}`}\n fill={filled ? color : \"none\"}\n viewBox=\"0 0 24 24\"\n stroke={filled ? \"none\" : color}\n aria-hidden=\"true\"\n >\n {path}\n </svg>\n );\n };\n Icon.displayName = displayName;\n return Icon;\n};\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const HomeIcon = createIcon(\n 'HomeIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const UserIcon = createIcon(\n 'UserIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const SearchIcon = createIcon(\n 'SearchIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const BellIcon = createIcon(\n 'BellIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const SettingsIcon = createIcon(\n 'SettingsIcon',\n <>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n </>\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const MenuIcon = createIcon(\n 'MenuIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 6h16M4 12h16M4 18h16\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CloseIcon = createIcon(\n 'CloseIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const ChevronDownIcon = createIcon(\n 'ChevronDownIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const ChevronRightIcon = createIcon(\n 'ChevronRightIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CheckIcon = createIcon(\n 'CheckIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const PlusIcon = createIcon(\n 'PlusIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const TrashIcon = createIcon(\n 'TrashIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const EditIcon = createIcon(\n 'EditIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const MailIcon = createIcon(\n 'MailIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const StarIcon = createIcon(\n 'StarIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const HeartIcon = createIcon(\n 'HeartIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const DownloadIcon = createIcon(\n 'DownloadIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const UploadIcon = createIcon(\n 'UploadIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CameraIcon = createIcon(\n 'CameraIcon',\n <>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 13a3 3 0 11-6 0 3 3 0 016 0z\" />\n </>\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const LockIcon = createIcon(\n 'LockIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CalendarIcon = createIcon(\n 'CalendarIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const GoogleIcon = createIcon(\n 'GoogleIcon',\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const GitHubIcon = createIcon(\n 'GitHubIcon',\n <path d=\"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const TwitterIcon = createIcon(\n 'TwitterIcon',\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const FacebookIcon = createIcon(\n 'FacebookIcon',\n <path d=\"M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const AppleIcon = createIcon(\n 'AppleIcon',\n <path d=\"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const LinkedInIcon = createIcon(\n 'LinkedInIcon',\n <path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const YouTubeIcon = createIcon(\n 'YouTubeIcon',\n <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const SlackIcon = createIcon(\n 'SlackIcon',\n <path d=\"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z\" />,\n true\n);\n","\"use client\";\n\nimport React, { useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface DrawerProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n position?: 'left' | 'right' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg';\n showCloseButton?: boolean;\n}\n\nconst sizeClasses = {\n left: {\n sm: 'w-64',\n md: 'w-80',\n lg: 'w-96',\n },\n right: {\n sm: 'w-64',\n md: 'w-80',\n lg: 'w-96',\n },\n top: {\n sm: 'h-48',\n md: 'h-64',\n lg: 'h-80',\n },\n bottom: {\n sm: 'h-48',\n md: 'h-64',\n lg: 'h-80',\n },\n};\n\nconst positionClasses = {\n left: 'left-0 top-0 h-full',\n right: 'right-0 top-0 h-full',\n top: 'top-0 left-0 w-full',\n bottom: 'bottom-0 left-0 w-full',\n};\n\nconst slideClasses = {\n left: 'transform transition-transform duration-300',\n right: 'transform transition-transform duration-300',\n top: 'transform transition-transform duration-300',\n bottom: 'transform transition-transform duration-300',\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n title,\n children,\n position = 'right',\n size = 'md',\n showCloseButton = true,\n}) => {\n const { theme } = useTheme();\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = 'unset';\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const sizeClass = sizeClasses[position][size];\n const positionClass = positionClasses[position];\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-40 bg-black/60 backdrop-blur-sm transition-all duration-200\"\n onClick={onClose}\n />\n\n {/* Drawer */}\n <div\n className={`fixed z-50 ${positionClass} ${sizeClass} bg-white dark:bg-gray-800 shadow-2xl overflow-hidden flex flex-col ${slideClasses[position]}`}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700\">\n {title && (\n <h3 className=\"text-xl font-semibold text-gray-900 dark:text-gray-100\">\n {title}\n </h3>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors\"\n aria-label=\"Close drawer\"\n >\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 p-6 overflow-y-auto\">\n {children}\n </div>\n </div>\n </>\n );\n};\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface TextInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n label?: string;\n error?: string;\n helperText?: string;\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2.5 text-base',\n lg: 'px-4 py-3 text-lg',\n};\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n error,\n helperText,\n size = 'md',\n fullWidth = false,\n leftIcon,\n rightIcon,\n className = '',\n disabled,\n ...props\n },\n ref\n ) => {\n const { theme, themeName } = useTheme();\n\n const baseStyles = theme.select?.base || 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const sizeStyle = sizeClasses[size];\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n const widthStyle = fullWidth ? 'w-full' : '';\n const paddingWithIcon = leftIcon ? 'pl-10' : rightIcon ? 'pr-10' : '';\n\n return (\n <div className={`${widthStyle} ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500\">\n {leftIcon}\n </div>\n )}\n <input\n ref={ref}\n className={`${baseStyles} ${sizeStyle} ${errorStyles} ${disabledStyles} ${paddingWithIcon}`.trim()}\n disabled={disabled}\n {...props}\n />\n {rightIcon && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500\">\n {rightIcon}\n </div>\n )}\n </div>\n {error && (\n <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n </div>\n );\n }\n);\n\nTextInput.displayName = 'TextInput';\n","\"use client\";\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ActionMenuItem {\n label: string;\n onClick: () => void;\n icon?: React.ReactNode;\n disabled?: boolean;\n variant?: 'default' | 'danger';\n}\n\nexport interface ActionMenuProps {\n items: ActionMenuItem[];\n trigger?: React.ReactNode;\n position?: 'left' | 'right';\n}\n\nexport const ActionMenu: React.FC<ActionMenuProps> = ({\n items,\n trigger,\n position = 'right',\n}) => {\n const { themeName } = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [isOpen]);\n\n const handleItemClick = (item: ActionMenuItem) => {\n if (!item.disabled) {\n item.onClick();\n setIsOpen(false);\n }\n };\n\n const defaultTrigger = (\n <button\n className=\"p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n aria-label=\"Open menu\"\n >\n <svg className=\"w-5 h-5 text-gray-600 dark:text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z\" />\n </svg>\n </button>\n );\n\n const menuBaseStyles = themeName === 'minimalistic'\n ? 'bg-black border-2 border-white'\n : 'bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg';\n\n const itemBaseStyles = themeName === 'minimalistic'\n ? 'text-white hover:bg-white hover:text-black transition-colors duration-200'\n : 'text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors';\n\n const positionClass = position === 'left' ? 'left-0' : 'right-0';\n\n return (\n <div className=\"relative inline-block\" ref={menuRef}>\n <div onClick={() => setIsOpen(!isOpen)}>\n {trigger || defaultTrigger}\n </div>\n\n {isOpen && (\n <div\n className={`absolute ${positionClass} mt-2 w-56 rounded-lg ${menuBaseStyles} z-50 overflow-hidden`}\n style={{ minWidth: '14rem' }}\n >\n {items.map((item, index) => (\n <button\n key={index}\n onClick={() => handleItemClick(item)}\n disabled={item.disabled}\n className={`w-full text-left px-4 py-3 flex items-center gap-3 ${itemBaseStyles} ${\n item.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'\n } ${\n item.variant === 'danger' ? 'text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20' : ''\n }`}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span className=\"flex-1\">{item.label}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface CardProps {\n children: React.ReactNode;\n className?: string;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n hover?: boolean;\n}\n\nconst paddingClasses = {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n};\n\nexport const Card: React.FC<CardProps> = ({\n children,\n className = '',\n padding = 'md',\n hover = false,\n}) => {\n const { theme } = useTheme();\n\n const paddingClass = paddingClasses[padding];\n const hoverClass = hover ? 'hover:shadow-lg transition-shadow duration-200' : '';\n\n return (\n <div\n className={`bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 ${paddingClass} ${hoverClass} ${className}`}\n >\n {children}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface AlertProps {\n variant?: 'info' | 'success' | 'warning' | 'error';\n title?: string;\n children: React.ReactNode;\n onClose?: () => void;\n className?: string;\n}\n\nconst variantStyles = {\n info: 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-900 dark:text-blue-100',\n success: 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-900 dark:text-green-100',\n warning: 'bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800 text-yellow-900 dark:text-yellow-100',\n error: 'bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800 text-red-900 dark:text-red-100',\n};\n\nconst iconStyles = {\n info: 'text-blue-600 dark:text-blue-400',\n success: 'text-green-600 dark:text-green-400',\n warning: 'text-yellow-600 dark:text-yellow-400',\n error: 'text-red-600 dark:text-red-400',\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = 'info',\n title,\n children,\n onClose,\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const variantClass = variantStyles[variant];\n const iconClass = iconStyles[variant];\n\n return (\n <div className={`rounded-lg border p-4 ${variantClass} ${className}`} role=\"alert\">\n <div className=\"flex items-start gap-3\">\n <div className={`flex-shrink-0 ${iconClass}`}>\n {variant === 'info' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clipRule=\"evenodd\" />\n </svg>\n )}\n {variant === 'success' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clipRule=\"evenodd\" />\n </svg>\n )}\n {variant === 'warning' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>\n )}\n {variant === 'error' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clipRule=\"evenodd\" />\n </svg>\n )}\n </div>\n <div className=\"flex-1\">\n {title && <h3 className=\"font-semibold mb-1\">{title}</h3>}\n <div className=\"text-sm\">{children}</div>\n </div>\n {onClose && (\n <button\n onClick={onClose}\n className={`flex-shrink-0 ${iconClass} hover:opacity-70 transition-opacity`}\n aria-label=\"Close alert\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, error, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n return (\n <div className={className}>\n <label className=\"flex items-center gap-2 cursor-pointer group\">\n <input\n ref={ref}\n type=\"checkbox\"\n disabled={disabled}\n className={`w-4 h-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed transition-colors ${\n error ? 'border-red-500 dark:border-red-500' : ''\n }`}\n {...props}\n />\n {label && (\n <span className={`text-sm text-gray-700 dark:text-gray-300 ${disabled ? 'opacity-50 cursor-not-allowed' : 'group-hover:text-gray-900 dark:group-hover:text-gray-100'}`}>\n {label}\n </span>\n )}\n </label>\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n </div>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ToggleProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n label?: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n ({ label, size = 'md', className = '', disabled, checked, ...props }, ref) => {\n const { theme } = useTheme();\n\n // Use complete class strings for Tailwind\n const toggleClasses = {\n sm: {\n switch: 'w-9 h-5',\n thumb: 'w-4 h-4 peer-checked:translate-x-4',\n },\n md: {\n switch: 'w-11 h-6',\n thumb: 'w-5 h-5 peer-checked:translate-x-5',\n },\n lg: {\n switch: 'w-14 h-7',\n thumb: 'w-6 h-6 peer-checked:translate-x-7',\n },\n };\n\n const currentSize = toggleClasses[size];\n\n return (\n <label className={`inline-flex items-center gap-3 cursor-pointer ${disabled ? 'opacity-50 cursor-not-allowed' : ''} ${className}`}>\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n className=\"sr-only peer\"\n disabled={disabled}\n checked={checked}\n {...props}\n />\n <div\n className={`${currentSize.switch} bg-gray-300 dark:bg-gray-700 peer-focus:ring-2 peer-focus:ring-blue-500 rounded-full peer peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500 transition-colors`}\n ></div>\n <div\n className={`${currentSize.thumb} bg-white rounded-full shadow-md absolute top-0.5 left-0.5 transition-transform`}\n ></div>\n </div>\n {label && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nToggle.displayName = 'Toggle';\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface BadgeProps {\n children: React.ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n}\n\nconst variantStyles = {\n default: 'bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200',\n primary: 'bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200',\n success: 'bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-200',\n warning: 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-800 dark:text-yellow-200',\n error: 'bg-red-100 dark:bg-red-900/30 text-red-800 dark:text-red-200',\n info: 'bg-cyan-100 dark:bg-cyan-900/30 text-cyan-800 dark:text-cyan-200',\n};\n\nconst sizeStyles = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n};\n\nexport const Badge: React.FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const variantClass = variantStyles[variant];\n const sizeClass = sizeStyles[size];\n\n return (\n <span className={`inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`}>\n {children}\n </span>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface SpinnerProps {\n size?: 'sm' | 'md' | 'lg' | 'xl';\n color?: 'primary' | 'secondary' | 'white';\n className?: string;\n}\n\nconst sizeClasses = {\n sm: 'w-4 h-4 border-2',\n md: 'w-8 h-8 border-2',\n lg: 'w-12 h-12 border-3',\n xl: 'w-16 h-16 border-4',\n};\n\nconst colorClasses = {\n primary: 'border-blue-600 border-t-transparent',\n secondary: 'border-gray-600 border-t-transparent',\n white: 'border-white border-t-transparent',\n};\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n size = 'md',\n color = 'primary',\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const sizeClass = sizeClasses[size];\n const colorClass = colorClasses[color];\n\n return (\n <div\n className={`inline-block rounded-full animate-spin ${sizeClass} ${colorClass} ${className}`}\n role=\"status\"\n aria-label=\"Loading\"\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n};\n","\"use client\";\n\nimport React, { useState } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface Tab {\n label: string;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps {\n tabs: Tab[];\n defaultIndex?: number;\n onChange?: (index: number) => void;\n className?: string;\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultIndex = 0,\n onChange,\n className = '',\n}) => {\n const { theme } = useTheme();\n const [activeIndex, setActiveIndex] = useState(defaultIndex);\n\n const handleTabClick = (index: number) => {\n if (tabs[index].disabled) return;\n setActiveIndex(index);\n onChange?.(index);\n };\n\n return (\n <div className={className}>\n {/* Tab Headers */}\n <div className=\"border-b border-gray-200 dark:border-gray-700\">\n <nav className=\"flex gap-8 px-6\" aria-label=\"Tabs\">\n {tabs.map((tab, index) => (\n <button\n key={index}\n onClick={() => handleTabClick(index)}\n disabled={tab.disabled}\n className={`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${\n activeIndex === index\n ? 'border-blue-600 text-blue-600 dark:text-blue-400'\n : 'border-transparent text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:border-gray-300 dark:hover:border-gray-600'\n } ${tab.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`}\n aria-current={activeIndex === index ? 'page' : undefined}\n >\n {tab.label}\n </button>\n ))}\n </nav>\n </div>\n\n {/* Tab Content */}\n <div>\n {tabs[activeIndex]?.content}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface Column<T = any> {\n key: string;\n title: string;\n render?: (value: any, row: T, index: number) => React.ReactNode;\n width?: string;\n}\n\nexport interface TableProps<T = any> {\n columns: Column<T>[];\n data: T[];\n keyField?: string;\n striped?: boolean;\n hoverable?: boolean;\n className?: string;\n}\n\nexport function Table<T extends Record<string, any>>({\n columns,\n data,\n keyField = 'id',\n striped = false,\n hoverable = true,\n className = '',\n}: TableProps<T>) {\n const { theme } = useTheme();\n\n return (\n <div className={`overflow-x-auto ${className}`}>\n <table className=\"w-full text-left\">\n <thead className=\"bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700\">\n <tr>\n {columns.map((column) => (\n <th\n key={column.key}\n className=\"px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider\"\n style={{ width: column.width }}\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700\">\n {data.map((row, rowIndex) => (\n <tr\n key={row[keyField] || rowIndex}\n className={`\n ${striped && rowIndex % 2 === 1 ? 'bg-gray-50 dark:bg-gray-800/50' : ''}\n ${hoverable ? 'hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors' : ''}\n `}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className=\"px-6 py-4 text-sm text-gray-900 dark:text-gray-100\"\n >\n {column.render\n ? column.render(row[column.key], row, rowIndex)\n : row[column.key]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n {data.length === 0 && (\n <div className=\"text-center py-8 text-gray-500 dark:text-gray-400\">\n No data available\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n className?: string;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const range = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n };\n\n const paginationRange = () => {\n const totalPageNumbers = siblingCount + 5;\n\n if (totalPageNumbers >= totalPages) {\n return range(1, totalPages);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);\n\n const shouldShowLeftDots = leftSiblingIndex > 2;\n const shouldShowRightDots = rightSiblingIndex < totalPages - 2;\n\n const firstPageIndex = 1;\n const lastPageIndex = totalPages;\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + 2 * siblingCount;\n const leftRange = range(1, leftItemCount);\n return [...leftRange, '...', totalPages];\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + 2 * siblingCount;\n const rightRange = range(totalPages - rightItemCount + 1, totalPages);\n return [firstPageIndex, '...', ...rightRange];\n }\n\n if (shouldShowLeftDots && shouldShowRightDots) {\n const middleRange = range(leftSiblingIndex, rightSiblingIndex);\n return [firstPageIndex, '...', ...middleRange, '...', lastPageIndex];\n }\n\n return range(1, totalPages);\n };\n\n const pages = paginationRange();\n\n return (\n <nav className={`flex items-center gap-1 ${className}`} aria-label=\"Pagination\">\n {/* Previous Button */}\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n className=\"px-3 py-2 rounded-md text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous page\"\n >\n Previous\n </button>\n\n {/* Page Numbers */}\n {pages.map((page, index) => {\n if (page === '...') {\n return (\n <span\n key={`dots-${index}`}\n className=\"px-3 py-2 text-gray-700 dark:text-gray-300\"\n >\n ...\n </span>\n );\n }\n\n return (\n <button\n key={page}\n onClick={() => onPageChange(page as number)}\n className={`px-3 py-2 rounded-md text-sm font-medium transition-colors ${\n currentPage === page\n ? 'bg-blue-600 text-white'\n : 'text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800'\n }`}\n aria-label={`Page ${page}`}\n aria-current={currentPage === page ? 'page' : undefined}\n >\n {page}\n </button>\n );\n })}\n\n {/* Next Button */}\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n className=\"px-3 py-2 rounded-md text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next page\"\n >\n Next\n </button>\n </nav>\n );\n};\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface DatePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n ({ label, error, helperText, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n const baseStyles = 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n type=\"date\"\n disabled={disabled}\n className={`${baseStyles} ${errorStyles} ${disabledStyles}`.trim()}\n {...props}\n />\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n {helperText && !error && <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>}\n </div>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface TimePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const TimePicker = forwardRef<HTMLInputElement, TimePickerProps>(\n ({ label, error, helperText, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n const baseStyles = 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n type=\"time\"\n disabled={disabled}\n className={`${baseStyles} ${errorStyles} ${disabledStyles}`.trim()}\n {...props}\n />\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n {helperText && !error && <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>}\n </div>\n );\n }\n);\n\nTimePicker.displayName = 'TimePicker';\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface DateTimePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n ({ label, error, helperText, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n const baseStyles = 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n type=\"datetime-local\"\n disabled={disabled}\n className={`${baseStyles} ${errorStyles} ${disabledStyles}`.trim()}\n {...props}\n />\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n {helperText && !error && <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>}\n </div>\n );\n }\n);\n\nDateTimePicker.displayName = 'DateTimePicker';\n","\"use client\";\n\nimport React from 'react';\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioProps {\n name: string;\n options: RadioOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nexport const Radio: React.FC<RadioProps> = ({\n name,\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n disabled = false,\n orientation = 'vertical',\n className = '',\n}) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue || '');\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const handleChange = (optionValue: string) => {\n if (disabled) return;\n setInternalValue(optionValue);\n onChange?.(optionValue);\n };\n\n const containerClass = orientation === 'horizontal'\n ? 'flex flex-wrap gap-4'\n : 'flex flex-col gap-2';\n\n return (\n <div className={`${containerClass} ${className}`} role=\"radiogroup\">\n {options.map((option) => {\n const isDisabled = disabled || option.disabled;\n const isChecked = value === option.value;\n const id = `${name}-${option.value}`;\n\n return (\n <label\n key={option.value}\n htmlFor={id}\n className={`flex items-center gap-2 cursor-pointer ${\n isDisabled ? 'opacity-50 cursor-not-allowed' : ''\n }`}\n >\n <input\n type=\"radio\"\n id={id}\n name={name}\n value={option.value}\n checked={isChecked}\n onChange={() => handleChange(option.value)}\n disabled={isDisabled}\n className=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 cursor-pointer disabled:cursor-not-allowed\"\n />\n <span className=\"text-sm font-medium text-gray-900 dark:text-gray-300\">\n {option.label}\n </span>\n </label>\n );\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface ProgressBarProps {\n value: number;\n max?: number;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'success' | 'warning' | 'danger';\n showLabel?: boolean;\n label?: string;\n className?: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n value,\n max = 100,\n size = 'md',\n variant = 'default',\n showLabel = false,\n label,\n className = '',\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n const sizeClasses = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n };\n\n const variantClasses = {\n default: 'bg-blue-600 dark:bg-blue-500',\n success: 'bg-green-600 dark:bg-green-500',\n warning: 'bg-yellow-500 dark:bg-yellow-400',\n danger: 'bg-red-600 dark:bg-red-500',\n };\n\n return (\n <div className={`w-full ${className}`}>\n {(showLabel || label) && (\n <div className=\"flex justify-between items-center mb-1\">\n {label && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </span>\n )}\n {showLabel && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <div\n className={`w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses[size]}`}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n >\n <div\n className={`${sizeClasses[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface SliderProps {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n onChange?: (value: number) => void;\n disabled?: boolean;\n showValue?: boolean;\n label?: string;\n className?: string;\n}\n\nexport const Slider: React.FC<SliderProps> = ({\n value: controlledValue,\n defaultValue = 50,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n disabled = false,\n showValue = false,\n label,\n className = '',\n}) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = Number(e.target.value);\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const percentage = ((value - min) / (max - min)) * 100;\n\n return (\n <div className={`w-full ${className}`}>\n {(label || showValue) && (\n <div className=\"flex justify-between items-center mb-2\">\n {label && (\n <label className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </label>\n )}\n {showValue && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {value}\n </span>\n )}\n </div>\n )}\n <div className=\"relative\">\n {/* Background track */}\n <div className=\"absolute inset-0 h-2 bg-gray-200 dark:bg-gray-700 rounded-full top-1/2 -translate-y-1/2\" />\n\n {/* Filled track */}\n <div\n className=\"absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full top-1/2 -translate-y-1/2 pointer-events-none\"\n style={{ width: `${percentage}%` }}\n />\n\n {/* Input slider */}\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n className=\"relative w-full h-2 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-md\n [&::-webkit-slider-thumb]:hover:bg-blue-700 [&::-webkit-slider-thumb]:active:scale-110 [&::-webkit-slider-thumb]:transition-all\n [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-2\n [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-md [&::-moz-range-thumb]:hover:bg-blue-700\n [&::-moz-range-thumb]:active:scale-110 [&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:border-none\"\n aria-label={label}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n />\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n name?: string;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n shape?: 'circle' | 'square';\n className?: string;\n fallbackColor?: string;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt,\n name,\n size = 'md',\n shape = 'circle',\n className = '',\n fallbackColor = 'bg-blue-600',\n}) => {\n const [imageError, setImageError] = React.useState(false);\n\n const sizeClasses = {\n xs: 'w-6 h-6 text-xs',\n sm: 'w-8 h-8 text-sm',\n md: 'w-10 h-10 text-base',\n lg: 'w-12 h-12 text-lg',\n xl: 'w-16 h-16 text-2xl',\n };\n\n const shapeClass = shape === 'circle' ? 'rounded-full' : 'rounded-md';\n\n const getInitials = (name: string): string => {\n const parts = name.trim().split(' ');\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();\n }\n return name.slice(0, 2).toUpperCase();\n };\n\n const showImage = src && !imageError;\n const showInitials = !showImage && name;\n\n return (\n <div\n className={`${sizeClasses[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${\n showImage ? 'bg-gray-200 dark:bg-gray-700' : `${fallbackColor} text-white`\n } ${className}`}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt || name || 'Avatar'}\n className=\"w-full h-full object-cover\"\n onError={() => setImageError(true)}\n />\n ) : showInitials ? (\n <span className=\"font-semibold select-none\">{getInitials(name)}</span>\n ) : (\n <svg\n className=\"w-full h-full text-gray-400 dark:text-gray-600\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n label?: string;\n error?: string;\n helperText?: string;\n size?: 'sm' | 'md' | 'lg';\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n}\n\nexport const Textarea: React.FC<TextareaProps> = ({\n label,\n error,\n helperText,\n size = 'md',\n resize = 'vertical',\n className = '',\n disabled,\n ...props\n}) => {\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm min-h-[80px]',\n md: 'px-4 py-2 text-base min-h-[100px]',\n lg: 'px-4 py-3 text-lg min-h-[120px]',\n };\n\n const resizeClasses = {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n };\n\n const baseClasses = `w-full rounded-lg border transition-colors duration-150 focus:outline-none focus:ring-2\n ${error\n ? 'border-red-500 focus:ring-red-500 focus:border-red-500 dark:border-red-400 dark:focus:ring-red-400'\n : 'border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:focus:ring-blue-400'\n }\n bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100\n placeholder:text-gray-500 dark:placeholder:text-gray-400\n disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;\n\n return (\n <div className={`w-full ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <textarea\n className={`${baseClasses} ${sizeClasses[size]} ${resizeClasses[resize]}`}\n disabled={disabled}\n {...props}\n />\n {error && (\n <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React, { createContext, useContext, useState, useCallback } from 'react';\nimport { CheckIcon, CloseIcon } from '../icons';\n\nexport interface Toast {\n id: string;\n message: string;\n type?: 'success' | 'error' | 'warning' | 'info';\n duration?: number;\n}\n\ninterface ToastContextValue {\n toasts: Toast[];\n addToast: (toast: Omit<Toast, 'id'>) => void;\n removeToast: (id: string) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n return context;\n};\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({ children, position = 'top-right' }) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const addToast = useCallback((toast: Omit<Toast, 'id'>) => {\n const id = Math.random().toString(36).substring(7);\n const newToast = { ...toast, id };\n setToasts((prev) => [...prev, newToast]);\n\n // Auto-remove after duration\n const duration = toast.duration || 5000;\n setTimeout(() => {\n removeToast(id);\n }, duration);\n }, []);\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const positionClasses = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n };\n\n return (\n <ToastContext.Provider value={{ toasts, addToast, removeToast }}>\n {children}\n <div className={`fixed ${positionClasses[position]} z-50 flex flex-col gap-2 max-w-md`}>\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onClose={() => removeToast(toast.id)} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\ninterface ToastItemProps {\n toast: Toast;\n onClose: () => void;\n}\n\nconst ToastItem: React.FC<ToastItemProps> = ({ toast, onClose }) => {\n const typeStyles = {\n success: 'bg-green-50 dark:bg-green-900/30 border-green-500 text-green-800 dark:text-green-200',\n error: 'bg-red-50 dark:bg-red-900/30 border-red-500 text-red-800 dark:text-red-200',\n warning: 'bg-yellow-50 dark:bg-yellow-900/30 border-yellow-500 text-yellow-800 dark:text-yellow-200',\n info: 'bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200',\n };\n\n const typeIcons = {\n success: <CheckIcon size=\"sm\" className=\"text-green-600 dark:text-green-400\" />,\n error: <CloseIcon size=\"sm\" className=\"text-red-600 dark:text-red-400\" />,\n warning: (\n <svg className=\"w-4 h-4 text-yellow-600 dark:text-yellow-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>\n ),\n info: (\n <svg className=\"w-4 h-4 text-blue-600 dark:text-blue-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clipRule=\"evenodd\" />\n </svg>\n ),\n };\n\n const type = toast.type || 'info';\n\n return (\n <div\n className={`flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`}\n role=\"alert\"\n >\n <div className=\"flex-shrink-0 mt-0.5\">{typeIcons[type]}</div>\n <p className=\"flex-1 text-sm font-medium\">{toast.message}</p>\n <button\n onClick={onClose}\n className=\"flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors\"\n aria-label=\"Close\"\n >\n <CloseIcon size=\"sm\" />\n </button>\n </div>\n );\n};\n\n// Helper function to easily show toasts\nexport const toast = {\n success: (message: string, duration?: number) => ({\n message,\n type: 'success' as const,\n duration,\n }),\n error: (message: string, duration?: number) => ({\n message,\n type: 'error' as const,\n duration,\n }),\n warning: (message: string, duration?: number) => ({\n message,\n type: 'warning' as const,\n duration,\n }),\n info: (message: string, duration?: number) => ({\n message,\n type: 'info' as const,\n duration,\n }),\n};\n","\"use client\";\n\nimport React from 'react';\nimport { CheckIcon } from '../icons';\n\nexport interface Step {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps {\n steps: Step[];\n currentStep: number;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nexport const Stepper: React.FC<StepperProps> = ({\n steps,\n currentStep,\n orientation = 'horizontal',\n className = '',\n}) => {\n const isHorizontal = orientation === 'horizontal';\n\n return (\n <div className={`${isHorizontal ? 'flex items-center' : 'flex flex-col'} ${className}`}>\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const isActive = stepNumber === currentStep;\n const isCompleted = stepNumber < currentStep;\n const isLast = index === steps.length - 1;\n\n return (\n <React.Fragment key={index}>\n {/* Step */}\n <div className={`flex ${isHorizontal ? 'flex-col items-center' : 'flex-row items-start'} ${isHorizontal ? '' : 'flex-1'}`}>\n <div className=\"flex items-center\">\n {/* Circle/Check */}\n <div\n className={`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${\n isCompleted\n ? 'bg-blue-600 border-blue-600 dark:bg-blue-500 dark:border-blue-500'\n : isActive\n ? 'border-blue-600 bg-white dark:border-blue-500 dark:bg-gray-800'\n : 'border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800'\n }`}\n >\n {isCompleted ? (\n <CheckIcon size=\"sm\" className=\"text-white\" />\n ) : (\n <span\n className={`text-sm font-semibold ${\n isActive\n ? 'text-blue-600 dark:text-blue-400'\n : 'text-gray-500 dark:text-gray-400'\n }`}\n >\n {stepNumber}\n </span>\n )}\n </div>\n </div>\n\n {/* Label */}\n <div className={`${isHorizontal ? 'mt-2 text-center' : 'ml-4 pb-8'} ${isLast && !isHorizontal ? 'pb-0' : ''}`}>\n <p\n className={`text-sm font-medium ${\n isActive || isCompleted\n ? 'text-gray-900 dark:text-gray-100'\n : 'text-gray-500 dark:text-gray-400'\n }`}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400 mt-1\">\n {step.description}\n </p>\n )}\n </div>\n </div>\n\n {/* Connector Line */}\n {!isLast && (\n <div\n className={`${\n isHorizontal\n ? 'flex-1 h-0.5 mx-4'\n : 'w-0.5 h-full ml-5 -mt-8'\n } ${\n isCompleted || (isActive && stepNumber < currentStep)\n ? 'bg-blue-600 dark:bg-blue-500'\n : 'bg-gray-300 dark:bg-gray-600'\n }`}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'solid' | 'dashed' | 'dotted';\n className?: string;\n label?: string;\n labelPosition?: 'left' | 'center' | 'right';\n}\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = 'horizontal',\n variant = 'solid',\n className = '',\n label,\n labelPosition = 'center',\n}) => {\n const variantClasses = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n };\n\n if (label && orientation === 'horizontal') {\n const alignmentClasses = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n };\n\n return (\n <div className={`flex items-center ${alignmentClasses[labelPosition]} ${className}`} role=\"separator\">\n {labelPosition !== 'left' && (\n <div className={`flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600`} />\n )}\n <span className=\"px-4 text-sm text-gray-500 dark:text-gray-400\">\n {label}\n </span>\n {labelPosition !== 'right' && (\n <div className={`flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600`} />\n )}\n </div>\n );\n }\n\n if (orientation === 'vertical') {\n return (\n <div\n className={`inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`}\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n );\n }\n\n return (\n <hr\n className={`border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`}\n role=\"separator\"\n />\n );\n};\n","\"use client\";\n\nimport React, { useRef, useState } from 'react';\nimport { UploadIcon, CloseIcon } from '../icons';\n\nexport interface FileUploadProps {\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n maxFiles?: number;\n disabled?: boolean;\n onChange?: (files: File[]) => void;\n onError?: (error: string) => void;\n className?: string;\n label?: string;\n helperText?: string;\n}\n\nexport const FileUpload: React.FC<FileUploadProps> = ({\n accept,\n multiple = false,\n maxSize,\n maxFiles = 10,\n disabled = false,\n onChange,\n onError,\n className = '',\n label,\n helperText,\n}) => {\n const [files, setFiles] = useState<File[]>([]);\n const [isDragging, setIsDragging] = useState(false);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];\n };\n\n const validateFiles = (fileList: FileList): File[] => {\n const validFiles: File[] = [];\n const filesArray = Array.from(fileList);\n\n // Check max files\n if (filesArray.length + files.length > maxFiles) {\n onError?.(`Maximum ${maxFiles} files allowed`);\n return validFiles;\n }\n\n for (const file of filesArray) {\n // Check file size\n if (maxSize && file.size > maxSize) {\n onError?.(`File ${file.name} exceeds maximum size of ${formatFileSize(maxSize)}`);\n continue;\n }\n\n validFiles.push(file);\n }\n\n return validFiles;\n };\n\n const handleFiles = (fileList: FileList | null) => {\n if (!fileList || disabled) return;\n\n const validFiles = validateFiles(fileList);\n if (validFiles.length > 0) {\n const newFiles = multiple ? [...files, ...validFiles] : validFiles;\n setFiles(newFiles);\n onChange?.(newFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setIsDragging(false);\n handleFiles(e.dataTransfer.files);\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (!disabled) {\n setIsDragging(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleClick = () => {\n if (!disabled) {\n fileInputRef.current?.click();\n }\n };\n\n const handleRemoveFile = (index: number) => {\n const newFiles = files.filter((_, i) => i !== index);\n setFiles(newFiles);\n onChange?.(newFiles);\n };\n\n return (\n <div className={`w-full ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\n {label}\n </label>\n )}\n\n <div\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={handleClick}\n className={`relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${\n isDragging\n ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/20'\n : 'border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500'\n } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(e) => handleFiles(e.target.files)}\n disabled={disabled}\n className=\"hidden\"\n />\n\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center\">\n <UploadIcon size=\"lg\" className=\"text-gray-400 dark:text-gray-500\" />\n </div>\n <div>\n <p className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n <span className=\"text-blue-600 dark:text-blue-400\">Click to upload</span> or drag and drop\n </p>\n <p className=\"text-xs text-gray-500 dark:text-gray-400 mt-1\">\n {accept ? `Accepted: ${accept}` : 'Any file type'}\n {maxSize && ` • Max size: ${formatFileSize(maxSize)}`}\n </p>\n </div>\n </div>\n </div>\n\n {helperText && (\n <p className=\"mt-2 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n\n {/* File List */}\n {files.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n {files.map((file, index) => (\n <div\n key={index}\n className=\"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700\"\n >\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 dark:text-gray-100 truncate\">\n {file.name}\n </p>\n <p className=\"text-xs text-gray-500 dark:text-gray-400\">\n {formatFileSize(file.size)}\n </p>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleRemoveFile(index);\n }}\n className=\"ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors\"\n aria-label=\"Remove file\"\n >\n <CloseIcon size=\"sm\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n","/**\n * Theme initialization script that runs before React hydration\n * This prevents flickering by setting the theme before the page renders\n * Must be inlined in the HTML <head> as a blocking script\n */\n\nexport const themeScript = `\n(function() {\n try {\n // Get stored preferences\n const storedTheme = localStorage.getItem('lite-ui-theme') || 'default';\n const storedColorMode = localStorage.getItem('lite-ui-color-mode');\n\n // Determine color mode (system, light, or dark)\n let colorMode = storedColorMode;\n if (!colorMode || colorMode === 'system') {\n colorMode = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n // Set attributes before render\n document.documentElement.setAttribute('data-theme', storedTheme);\n document.documentElement.setAttribute('data-color-mode', colorMode);\n\n // Add dark class for Tailwind\n if (colorMode === 'dark') {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n } catch (e) {\n console.error('Failed to initialize theme:', e);\n }\n})();\n`;\n\nexport function getThemeScript() {\n return themeScript;\n}\n"],"mappings":"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","names":["import_jsx_runtime","variantStyles","sizeStyles","import_react","import_jsx_runtime","sizeStyles","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","sizeClasses","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","widthClasses","import_react","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","variantStyles","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","sizeClasses","name","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","toast","positionClasses","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/theme/ThemeProvider.tsx","../src/theme/themes.ts","../src/components/Button.tsx","../src/components/Select.tsx","../src/components/Modal.tsx","../src/components/Navbar.tsx","../src/components/Sidebar.tsx","../src/components/SidebarProvider.tsx","../src/components/AppShell.tsx","../src/icons/icon-utils.tsx","../src/icons/HomeIcon.tsx","../src/icons/UserIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/BellIcon.tsx","../src/icons/SettingsIcon.tsx","../src/icons/MenuIcon.tsx","../src/icons/CloseIcon.tsx","../src/icons/ChevronDownIcon.tsx","../src/icons/ChevronRightIcon.tsx","../src/icons/CheckIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/TrashIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/MailIcon.tsx","../src/icons/StarIcon.tsx","../src/icons/HeartIcon.tsx","../src/icons/DownloadIcon.tsx","../src/icons/UploadIcon.tsx","../src/icons/CameraIcon.tsx","../src/icons/LockIcon.tsx","../src/icons/CalendarIcon.tsx","../src/icons/GoogleIcon.tsx","../src/icons/GitHubIcon.tsx","../src/icons/TwitterIcon.tsx","../src/icons/FacebookIcon.tsx","../src/icons/AppleIcon.tsx","../src/icons/LinkedInIcon.tsx","../src/icons/YouTubeIcon.tsx","../src/icons/SlackIcon.tsx","../src/components/Drawer.tsx","../src/components/TextInput.tsx","../src/components/ActionMenu.tsx","../src/components/Card.tsx","../src/components/Alert.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Badge.tsx","../src/components/Spinner.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx","../src/components/Pagination.tsx","../src/components/DatePicker.tsx","../src/components/TimePicker.tsx","../src/components/DateTimePicker.tsx","../src/components/Radio.tsx","../src/components/ProgressBar.tsx","../src/components/Slider.tsx","../src/components/Avatar.tsx","../src/components/Textarea.tsx","../src/components/Toast.tsx","../src/components/Stepper.tsx","../src/components/Divider.tsx","../src/components/FileUpload.tsx","../src/utils/theme-script.ts"],"sourcesContent":["export { Button } from './components/Button';\nexport type { ButtonProps } from './components/Button';\n\nexport { Select } from './components/Select';\nexport type { SelectProps, SelectOption } from './components/Select';\n\nexport { Modal } from './components/Modal';\nexport type { ModalProps } from './components/Modal';\n\nexport { Navbar } from './components/Navbar';\nexport type { NavbarProps } from './components/Navbar';\n\nexport { Sidebar } from './components/Sidebar';\nexport type { SidebarProps } from './components/Sidebar';\n\nexport { SidebarProvider, useSidebar } from './components/SidebarProvider';\nexport type { SidebarProviderProps, SidebarContextValue } from './components/SidebarProvider';\n\nexport { AppShell } from './components/AppShell';\nexport type { AppShellProps } from './components/AppShell';\n\nexport { Drawer } from './components/Drawer';\nexport type { DrawerProps } from './components/Drawer';\n\nexport { TextInput } from './components/TextInput';\nexport type { TextInputProps } from './components/TextInput';\n\nexport { ActionMenu } from './components/ActionMenu';\nexport type { ActionMenuProps, ActionMenuItem } from './components/ActionMenu';\n\nexport { Card } from './components/Card';\nexport type { CardProps } from './components/Card';\n\nexport { Alert } from './components/Alert';\nexport type { AlertProps } from './components/Alert';\n\nexport { Checkbox } from './components/Checkbox';\nexport type { CheckboxProps } from './components/Checkbox';\n\nexport { Toggle } from './components/Toggle';\nexport type { ToggleProps } from './components/Toggle';\n\nexport { Badge } from './components/Badge';\nexport type { BadgeProps } from './components/Badge';\n\nexport { Spinner } from './components/Spinner';\nexport type { SpinnerProps } from './components/Spinner';\n\nexport { Tabs } from './components/Tabs';\nexport type { TabsProps, Tab } from './components/Tabs';\n\nexport { Table } from './components/Table';\nexport type { TableProps, Column } from './components/Table';\n\nexport { Pagination } from './components/Pagination';\nexport type { PaginationProps } from './components/Pagination';\n\nexport { DatePicker } from './components/DatePicker';\nexport type { DatePickerProps } from './components/DatePicker';\n\nexport { TimePicker } from './components/TimePicker';\nexport type { TimePickerProps } from './components/TimePicker';\n\nexport { DateTimePicker } from './components/DateTimePicker';\nexport type { DateTimePickerProps } from './components/DateTimePicker';\n\nexport { Radio } from './components/Radio';\nexport type { RadioProps, RadioOption } from './components/Radio';\n\nexport { ProgressBar } from './components/ProgressBar';\nexport type { ProgressBarProps } from './components/ProgressBar';\n\nexport { Slider } from './components/Slider';\nexport type { SliderProps } from './components/Slider';\n\nexport { Avatar } from './components/Avatar';\nexport type { AvatarProps } from './components/Avatar';\n\nexport { Textarea } from './components/Textarea';\nexport type { TextareaProps } from './components/Textarea';\n\nexport { ToastProvider, useToast, toast } from './components/Toast';\nexport type { Toast, ToastProviderProps } from './components/Toast';\n\nexport { Stepper } from './components/Stepper';\nexport type { StepperProps, Step } from './components/Stepper';\n\nexport { Divider } from './components/Divider';\nexport type { DividerProps } from './components/Divider';\n\nexport { FileUpload } from './components/FileUpload';\nexport type { FileUploadProps } from './components/FileUpload';\n\nexport { ThemeProvider, useTheme } from './theme/ThemeProvider';\nexport type { ColorMode } from './theme/ThemeProvider';\nexport { themes } from './theme/themes';\nexport type { ThemeName, Theme, ButtonTheme, SelectTheme } from './theme/themes';\n\nexport { themeScript, getThemeScript } from './utils/theme-script';\n\nexport * from './icons';\n","\"use client\";\n\nimport React, { createContext, useContext, useState, useEffect } from 'react';\nimport { themes, ThemeName, Theme } from './themes';\n\nexport type ColorMode = 'light' | 'dark' | 'system';\n\ninterface ThemeContextValue {\n theme: Theme;\n themeName: ThemeName;\n setTheme: (themeName: ThemeName) => void;\n colorMode: ColorMode;\n setColorMode: (mode: ColorMode) => void;\n resolvedColorMode: 'light' | 'dark';\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: ThemeName;\n defaultColorMode?: ColorMode;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'default',\n defaultColorMode = 'system'\n}: ThemeProviderProps) {\n const [mounted, setMounted] = useState(false);\n\n // Initialize from defaults (will sync with actual values after mount)\n const [themeName, setThemeNameState] = useState<ThemeName>(defaultTheme);\n const [colorMode, setColorModeState] = useState<ColorMode>(defaultColorMode);\n const [resolvedColorMode, setResolvedColorMode] = useState<'light' | 'dark'>('light');\n\n // Sync with actual values after mount to avoid hydration mismatch\n useEffect(() => {\n setMounted(true);\n\n // Read actual values from localStorage and DOM\n const storedTheme = localStorage.getItem('lite-ui-theme') as ThemeName;\n const storedColorMode = localStorage.getItem('lite-ui-color-mode') as ColorMode;\n const currentColorMode = document.documentElement.getAttribute('data-color-mode') as 'light' | 'dark';\n\n if (storedTheme) setThemeNameState(storedTheme);\n if (storedColorMode) setColorModeState(storedColorMode);\n if (currentColorMode) setResolvedColorMode(currentColorMode);\n }, []);\n\n const theme = themes[themeName];\n\n // Update theme\n const setTheme = (newThemeName: ThemeName) => {\n setThemeNameState(newThemeName);\n if (typeof window !== 'undefined') {\n localStorage.setItem('lite-ui-theme', newThemeName);\n document.documentElement.setAttribute('data-theme', newThemeName);\n }\n };\n\n // Update color mode\n const setColorMode = (mode: ColorMode) => {\n if (typeof window === 'undefined') return;\n\n setColorModeState(mode);\n localStorage.setItem('lite-ui-color-mode', mode);\n\n let resolved: 'light' | 'dark';\n if (mode === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n resolved = mode;\n }\n\n setResolvedColorMode(resolved);\n document.documentElement.setAttribute('data-color-mode', resolved);\n\n if (resolved === 'dark') {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n };\n\n // Listen for system theme changes\n useEffect(() => {\n if (!mounted) return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n const handleChange = (e: MediaQueryListEvent) => {\n if (colorMode === 'system') {\n const resolved = e.matches ? 'dark' : 'light';\n setResolvedColorMode(resolved);\n document.documentElement.setAttribute('data-color-mode', resolved);\n\n if (resolved === 'dark') {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n }\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [mounted, colorMode]);\n\n return (\n <ThemeContext.Provider value={{\n theme,\n themeName,\n setTheme,\n colorMode,\n setColorMode,\n resolvedColorMode\n }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n","export type ThemeName = 'default' | 'minimalistic';\n\nexport interface ButtonTheme {\n primary: string;\n secondary: string;\n success: string;\n danger: string;\n warning: string;\n info: string;\n}\n\nexport interface SelectTheme {\n base: string;\n sizes: {\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n disabled: string;\n}\n\nexport interface Theme {\n name: ThemeName;\n button: {\n base: string;\n variants: ButtonTheme;\n sizes: {\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n disabled: string;\n };\n select: SelectTheme;\n}\n\nexport const themes: Record<ThemeName, Theme> = {\n default: {\n name: 'default',\n button: {\n base: 'font-semibold rounded-lg transition-all duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 active:scale-95 gap-2',\n variants: {\n primary: 'bg-blue-600 hover:bg-blue-700 active:bg-blue-800 text-white shadow-sm hover:shadow-md dark:bg-blue-500 dark:hover:bg-blue-600 dark:active:bg-blue-700',\n secondary: 'bg-gray-600 hover:bg-gray-700 active:bg-gray-800 text-white shadow-sm hover:shadow-md dark:bg-gray-500 dark:hover:bg-gray-600 dark:active:bg-gray-700',\n success: 'bg-green-600 hover:bg-green-700 active:bg-green-800 text-white shadow-sm hover:shadow-md dark:bg-green-500 dark:hover:bg-green-600 dark:active:bg-green-700',\n danger: 'bg-red-600 hover:bg-red-700 active:bg-red-800 text-white shadow-sm hover:shadow-md dark:bg-red-500 dark:hover:bg-red-600 dark:active:bg-red-700',\n warning: 'bg-yellow-500 hover:bg-yellow-600 active:bg-yellow-700 text-white shadow-sm hover:shadow-md dark:bg-yellow-400 dark:hover:bg-yellow-500 dark:active:bg-yellow-600',\n info: 'bg-cyan-600 hover:bg-cyan-700 active:bg-cyan-800 text-white shadow-sm hover:shadow-md dark:bg-cyan-500 dark:hover:bg-cyan-600 dark:active:bg-cyan-700',\n },\n sizes: {\n sm: 'px-3 py-1.5 text-sm min-h-[30px]',\n md: 'px-4 py-2 text-base min-h-[38px]',\n lg: 'px-6 py-3 text-lg min-h-[48px]',\n xl: 'px-8 py-4 text-xl min-h-[60px]',\n },\n disabled: 'opacity-50 cursor-not-allowed hover:shadow-sm active:scale-100',\n },\n select: {\n base: 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 text-left transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 pr-10 cursor-pointer dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500',\n sizes: {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2.5 text-base',\n lg: 'px-4 py-3 text-lg',\n xl: 'px-5 py-4 text-xl',\n },\n disabled: 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900',\n },\n },\n minimalistic: {\n name: 'minimalistic',\n button: {\n base: 'font-normal rounded-none transition-colors duration-200 focus:outline-none border-2 gap-2',\n variants: {\n primary: 'bg-transparent border-white text-white hover:bg-white hover:text-black',\n secondary: 'bg-transparent border-gray-400 text-gray-400 hover:bg-gray-400 hover:text-black',\n success: 'bg-transparent border-green-400 text-green-400 hover:bg-green-400 hover:text-black',\n danger: 'bg-transparent border-red-400 text-red-400 hover:bg-red-400 hover:text-black',\n warning: 'bg-transparent border-yellow-400 text-yellow-400 hover:bg-yellow-400 hover:text-black',\n info: 'bg-transparent border-blue-400 text-blue-400 hover:bg-blue-400 hover:text-black',\n },\n sizes: {\n sm: 'px-4 py-2 text-sm uppercase tracking-wide min-h-[36px]',\n md: 'px-6 py-3 text-base uppercase tracking-wide min-h-[48px]',\n lg: 'px-8 py-4 text-lg uppercase tracking-wider min-h-[60px]',\n xl: 'px-10 py-5 text-xl uppercase tracking-wider min-h-[72px]',\n },\n disabled: 'opacity-30 cursor-not-allowed hover:bg-transparent',\n },\n select: {\n base: 'w-full appearance-none rounded-none border-2 border-white bg-transparent text-white text-left transition-colors duration-200 focus:outline-none pr-10 cursor-pointer placeholder:text-gray-500',\n sizes: {\n sm: 'px-4 py-2 text-sm uppercase tracking-wide',\n md: 'px-4 py-3 text-base uppercase tracking-wide',\n lg: 'px-4 py-4 text-lg uppercase tracking-wider',\n xl: 'px-5 py-5 text-xl uppercase tracking-wider',\n },\n disabled: 'opacity-30 cursor-not-allowed',\n },\n },\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n children: React.ReactNode;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n iconOnly?: boolean;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n className = '',\n children,\n disabled,\n leftIcon,\n rightIcon,\n iconOnly = false,\n ...props\n}) => {\n const { theme } = useTheme();\n\n const baseStyles = theme.button.base;\n const variantStyles = theme.button.variants[variant];\n const sizeStyles = theme.button.sizes[size];\n const disabledStyles = disabled ? theme.button.disabled : '';\n\n // Adjust padding for icon-only buttons - remove horizontal padding and make square\n const iconOnlyStyles = iconOnly ? '!p-0 aspect-square' : '';\n\n const classes = `inline-flex items-center justify-center ${baseStyles} ${variantStyles} ${sizeStyles} ${disabledStyles} ${iconOnlyStyles} ${className}`.trim();\n\n return (\n <button\n className={classes}\n disabled={disabled}\n {...props}\n >\n {iconOnly ? (\n children\n ) : (\n <>\n {leftIcon && <span className=\"inline-flex shrink-0\">{leftIcon}</span>}\n {children && <span className=\"inline-flex items-center\">{children}</span>}\n {rightIcon && <span className=\"inline-flex shrink-0\">{rightIcon}</span>}\n </>\n )}\n </button>\n );\n};\n","\"use client\";\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'size' | 'onChange' | 'defaultValue'> {\n options: SelectOption[];\n size?: 'sm' | 'md' | 'lg' | 'xl';\n placeholder?: string;\n disabled?: boolean;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n size = 'md',\n placeholder,\n className = '',\n disabled,\n value: controlledValue,\n defaultValue,\n onChange,\n ...props\n}) => {\n const { theme, themeName } = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Use controlled value if provided, otherwise use internal state\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Find the selected option\n const selectedOption = options.find(opt => opt.value === value);\n const displayText = selectedOption ? selectedOption.label : placeholder || 'Select...';\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [isOpen]);\n\n const handleSelect = (optionValue: string) => {\n if (disabled) return;\n\n setInternalValue(optionValue);\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const baseStyles = theme.select.base;\n const sizeStyles = theme.select.sizes[size];\n const disabledStyles = disabled ? theme.select.disabled : '';\n\n const buttonClasses = `${baseStyles} ${sizeStyles} ${disabledStyles} ${className}`.trim();\n\n // Icon color based on theme\n const iconColor = themeName === 'minimalistic'\n ? (disabled ? 'text-gray-600' : 'text-white')\n : (disabled ? 'text-gray-400' : 'text-gray-500');\n\n // Dropdown menu styles based on theme\n const dropdownBaseStyles = themeName === 'minimalistic'\n ? 'bg-black border-2 border-white'\n : 'bg-white border border-gray-300 shadow-lg dark:bg-gray-800 dark:border-gray-600';\n\n const optionBaseStyles = themeName === 'minimalistic'\n ? 'text-white hover:bg-white hover:text-black transition-colors duration-200'\n : 'text-gray-900 hover:bg-blue-50 transition-colors duration-150 dark:text-gray-100 dark:hover:bg-gray-700';\n\n const optionSizeStyles = {\n sm: 'px-4 py-2 text-sm',\n md: 'px-4 py-2.5 text-base',\n lg: 'px-4 py-3 text-lg',\n xl: 'px-5 py-4 text-xl',\n }[size];\n\n return (\n <div className=\"relative inline-block w-full\" ref={dropdownRef} {...props}>\n {/* Custom button that looks like select */}\n <button\n type=\"button\"\n className={buttonClasses}\n onClick={handleToggle}\n disabled={disabled}\n >\n <span className={!selectedOption && placeholder ? 'opacity-50' : ''}>\n {displayText}\n </span>\n </button>\n\n {/* Chevron icon */}\n <div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-4\">\n <svg\n className={`h-5 w-5 transition-transform duration-200 ${iconColor} ${isOpen ? 'rotate-180' : ''}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n\n {/* Custom dropdown menu */}\n {isOpen && !disabled && (\n <div\n className={`absolute z-50 w-full mt-1 ${dropdownBaseStyles} rounded-lg overflow-hidden`}\n style={{ maxHeight: '300px', overflowY: 'auto' }}\n >\n {options.map((option) => (\n <div\n key={option.value}\n className={`${optionBaseStyles} ${optionSizeStyles} cursor-pointer ${\n value === option.value ? (themeName === 'minimalistic' ? 'bg-white text-black' : 'bg-blue-50 dark:bg-gray-700') : ''\n }`}\n onClick={() => handleSelect(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React, { useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n showCloseButton?: boolean;\n}\n\nconst sizeClasses = {\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl',\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n size = 'md',\n showCloseButton = true,\n}) => {\n const { theme } = useTheme();\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n // Prevent body scroll when modal is open\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = 'unset';\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const sizeClass = sizeClasses[size];\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/60 backdrop-blur-sm transition-all duration-200\"\n onClick={onClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n >\n <div\n className={`relative w-full ${sizeClass} bg-white dark:bg-gray-800 rounded-lg shadow-2xl transform transition-all duration-200 scale-100 animate-in`}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700\">\n {title && (\n <h3 id=\"modal-title\" className=\"text-xl font-semibold text-gray-900 dark:text-gray-100\">\n {title}\n </h3>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors\"\n aria-label=\"Close modal\"\n >\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"p-6\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface NavbarProps {\n logo?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n sticky?: boolean;\n}\n\nexport const Navbar: React.FC<NavbarProps> = ({\n logo,\n children,\n className = '',\n sticky = false,\n}) => {\n const { theme } = useTheme();\n\n const baseClasses = sticky ? 'sticky top-0 z-40' : '';\n\n return (\n <nav className={`bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 ${baseClasses} ${className}`}>\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n <div className=\"flex justify-between items-center h-16\">\n {logo && (\n <div className=\"flex items-center\">\n {logo}\n </div>\n )}\n {children && (\n <div className=\"flex items-center gap-6\">\n {children}\n </div>\n )}\n </div>\n </div>\n </nav>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface SidebarProps {\n children: React.ReactNode;\n className?: string;\n width?: 'sm' | 'md' | 'lg';\n position?: 'left' | 'right';\n}\n\nconst widthClasses = {\n sm: 'w-48',\n md: 'w-64',\n lg: 'w-80',\n};\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n children,\n className = '',\n width = 'md',\n position = 'left',\n}) => {\n const { theme } = useTheme();\n const widthClass = widthClasses[width];\n const borderClass = position === 'left' ? 'border-r' : 'border-l';\n\n return (\n <aside\n className={`${widthClass} bg-white dark:bg-gray-800 ${borderClass} border-gray-200 dark:border-gray-700 h-full overflow-y-auto ${className}`}\n >\n {children}\n </aside>\n );\n};\n","\"use client\";\n\nimport React, { createContext, useContext, useState, ReactNode } from 'react';\n\nexport interface SidebarContextValue {\n isOpen: boolean;\n isMobile: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setIsMobile: (isMobile: boolean) => void;\n}\n\nconst SidebarContext = createContext<SidebarContextValue | undefined>(undefined);\n\nexport interface SidebarProviderProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\nexport const SidebarProvider: React.FC<SidebarProviderProps> = ({\n children,\n defaultOpen = false,\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [isMobile, setIsMobile] = useState(false);\n\n const open = () => setIsOpen(true);\n const close = () => setIsOpen(false);\n const toggle = () => setIsOpen(prev => !prev);\n\n const value: SidebarContextValue = {\n isOpen,\n isMobile,\n open,\n close,\n toggle,\n setIsMobile,\n };\n\n return (\n <SidebarContext.Provider value={value}>\n {children}\n </SidebarContext.Provider>\n );\n};\n\nexport const useSidebar = (): SidebarContextValue => {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider');\n }\n return context;\n};\n","\"use client\";\n\nimport React, { useState } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\nimport { MenuIcon } from '../icons';\n\nexport interface AppShellProps {\n children: React.ReactNode;\n navbar?: {\n content: React.ReactNode;\n width?: 'sm' | 'md' | 'lg';\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl';\n };\n header?: React.ReactNode;\n navbarTitle?: string;\n navbarLogo?: React.ReactNode;\n defaultNavbarOpen?: boolean;\n responsive?: boolean;\n className?: string;\n}\n\nconst widthClasses = {\n sm: 'w-48',\n md: 'w-64',\n lg: 'w-80',\n};\n\nconst breakpointClasses = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n};\n\nexport const AppShell: React.FC<AppShellProps> = ({\n children,\n navbar,\n header,\n navbarTitle,\n navbarLogo,\n defaultNavbarOpen = false,\n responsive = true,\n className = '',\n}) => {\n const { theme } = useTheme();\n const [isMobileNavbarOpen, setIsMobileNavbarOpen] = useState(defaultNavbarOpen);\n\n const navbarWidth = navbar?.width || 'md';\n const navbarBreakpoint = navbar?.breakpoint || 'md';\n const widthClass = widthClasses[navbarWidth];\n const breakpoint = breakpointClasses[navbarBreakpoint];\n\n // Non-responsive mode: always show sidebar\n if (!responsive && navbar) {\n return (\n <div className={`min-h-screen flex flex-col ${className}`}>\n {header && <div className=\"w-full\">{header}</div>}\n <div className=\"flex flex-1\">\n <aside className={`${widthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 h-full overflow-y-auto`}>\n {navbar.content}\n </aside>\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n </div>\n );\n }\n\n // Non-responsive mode without navbar\n if (!responsive) {\n return (\n <div className={`min-h-screen flex flex-col ${className}`}>\n {header && <div className=\"w-full\">{header}</div>}\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n );\n }\n\n // Responsive mode with navbar\n if (navbar) {\n // Build breakpoint classes statically\n const mobileHeaderClass = navbarBreakpoint === 'sm' ? 'sm:hidden' :\n navbarBreakpoint === 'md' ? 'md:hidden' :\n navbarBreakpoint === 'lg' ? 'lg:hidden' : 'xl:hidden';\n\n const desktopNavbarClass = navbarBreakpoint === 'sm' ? 'sm:block' :\n navbarBreakpoint === 'md' ? 'md:block' :\n navbarBreakpoint === 'lg' ? 'lg:block' : 'xl:block';\n\n const mobileDrawerClass = navbarBreakpoint === 'sm' ? 'sm:hidden' :\n navbarBreakpoint === 'md' ? 'md:hidden' :\n navbarBreakpoint === 'lg' ? 'lg:hidden' : 'xl:hidden';\n\n // Build width classes statically (Tailwind can't use dynamic classes)\n const sidebarWidthClass = navbarWidth === 'sm' ? 'w-48' :\n navbarWidth === 'lg' ? 'w-80' : 'w-64';\n\n return (\n <div className={`min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 ${className}`}>\n {/* Mobile Header - Hidden on Desktop */}\n <div className={`${mobileHeaderClass} sticky top-0 z-30 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 px-4 py-3 flex items-center justify-between`}>\n {navbarLogo ? (\n <div>{navbarLogo}</div>\n ) : navbarTitle ? (\n <span className=\"text-xl font-bold text-gray-900 dark:text-gray-100\">\n {navbarTitle}\n </span>\n ) : null}\n <button\n className=\"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n onClick={() => setIsMobileNavbarOpen(!isMobileNavbarOpen)}\n aria-label=\"Toggle menu\"\n >\n <MenuIcon size=\"md\" />\n </button>\n </div>\n\n {/* Header (optional, shows on all screen sizes) */}\n {header && <div className=\"w-full\">{header}</div>}\n\n {/* Main Layout */}\n <div className=\"flex flex-1 min-h-0\">\n {/* Desktop Navbar - Hidden on Mobile */}\n <aside className={`hidden ${desktopNavbarClass} ${sidebarWidthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 overflow-y-auto shrink-0`}>\n {navbar.content}\n </aside>\n\n {/* Mobile Drawer Overlay */}\n {isMobileNavbarOpen && (\n <>\n <div\n className={`${mobileDrawerClass} fixed inset-0 z-40 bg-black/60 backdrop-blur-sm animate-in fade-in duration-200`}\n onClick={() => setIsMobileNavbarOpen(false)}\n />\n <div className={`${mobileDrawerClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-white dark:bg-gray-800 shadow-2xl animate-in slide-in-from-left duration-300`}>\n <div className=\"p-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between\">\n {navbarLogo ? (\n <div>{navbarLogo}</div>\n ) : navbarTitle ? (\n <span className=\"text-xl font-bold text-gray-900 dark:text-gray-100\">\n {navbarTitle}\n </span>\n ) : null}\n <button\n className=\"p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n onClick={() => setIsMobileNavbarOpen(false)}\n aria-label=\"Close menu\"\n >\n <svg className=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div className=\"overflow-y-auto h-[calc(100vh-73px)]\">\n {navbar.content}\n </div>\n </div>\n </>\n )}\n\n {/* Main Content */}\n <main className=\"flex-1 overflow-y-auto min-h-screen\">\n {children}\n </main>\n </div>\n </div>\n );\n }\n\n // Responsive mode without navbar\n return (\n <div className={`min-h-screen flex flex-col ${className}`}>\n {header && <div className=\"w-full\">{header}</div>}\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface IconProps {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n color?: string;\n}\n\nconst sizeClasses = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-8 h-8',\n};\n\nexport interface IconComponent extends React.FC<IconProps> {\n displayName?: string;\n}\n\nexport const createIcon = (\n displayName: string,\n path: React.ReactNode,\n filled = false\n): IconComponent => {\n const Icon: IconComponent = ({ size = 'md', className = '', color = 'currentColor' }) => {\n const sizeClass = sizeClasses[size];\n return (\n <svg\n className={`${sizeClass} ${className}`}\n fill={filled ? color : \"none\"}\n viewBox=\"0 0 24 24\"\n stroke={filled ? \"none\" : color}\n aria-hidden=\"true\"\n >\n {path}\n </svg>\n );\n };\n Icon.displayName = displayName;\n return Icon;\n};\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const HomeIcon = createIcon(\n 'HomeIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const UserIcon = createIcon(\n 'UserIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const SearchIcon = createIcon(\n 'SearchIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const BellIcon = createIcon(\n 'BellIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const SettingsIcon = createIcon(\n 'SettingsIcon',\n <>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n </>\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const MenuIcon = createIcon(\n 'MenuIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 6h16M4 12h16M4 18h16\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CloseIcon = createIcon(\n 'CloseIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const ChevronDownIcon = createIcon(\n 'ChevronDownIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const ChevronRightIcon = createIcon(\n 'ChevronRightIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CheckIcon = createIcon(\n 'CheckIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const PlusIcon = createIcon(\n 'PlusIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const TrashIcon = createIcon(\n 'TrashIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const EditIcon = createIcon(\n 'EditIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const MailIcon = createIcon(\n 'MailIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const StarIcon = createIcon(\n 'StarIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const HeartIcon = createIcon(\n 'HeartIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const DownloadIcon = createIcon(\n 'DownloadIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const UploadIcon = createIcon(\n 'UploadIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CameraIcon = createIcon(\n 'CameraIcon',\n <>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 13a3 3 0 11-6 0 3 3 0 016 0z\" />\n </>\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const LockIcon = createIcon(\n 'LockIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const CalendarIcon = createIcon(\n 'CalendarIcon',\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const GoogleIcon = createIcon(\n 'GoogleIcon',\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const GitHubIcon = createIcon(\n 'GitHubIcon',\n <path d=\"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const TwitterIcon = createIcon(\n 'TwitterIcon',\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const FacebookIcon = createIcon(\n 'FacebookIcon',\n <path d=\"M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const AppleIcon = createIcon(\n 'AppleIcon',\n <path d=\"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const LinkedInIcon = createIcon(\n 'LinkedInIcon',\n <path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const YouTubeIcon = createIcon(\n 'YouTubeIcon',\n <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />,\n true\n);\n","\"use client\";\n\nimport { createIcon } from './icon-utils';\n\nexport const SlackIcon = createIcon(\n 'SlackIcon',\n <path d=\"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z\" />,\n true\n);\n","\"use client\";\n\nimport React, { useEffect } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface DrawerProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n position?: 'left' | 'right' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg';\n showCloseButton?: boolean;\n}\n\nconst sizeClasses = {\n left: {\n sm: 'w-64',\n md: 'w-80',\n lg: 'w-96',\n },\n right: {\n sm: 'w-64',\n md: 'w-80',\n lg: 'w-96',\n },\n top: {\n sm: 'h-48',\n md: 'h-64',\n lg: 'h-80',\n },\n bottom: {\n sm: 'h-48',\n md: 'h-64',\n lg: 'h-80',\n },\n};\n\nconst positionClasses = {\n left: 'left-0 top-0 h-full',\n right: 'right-0 top-0 h-full',\n top: 'top-0 left-0 w-full',\n bottom: 'bottom-0 left-0 w-full',\n};\n\nconst slideClasses = {\n left: 'transform transition-transform duration-300',\n right: 'transform transition-transform duration-300',\n top: 'transform transition-transform duration-300',\n bottom: 'transform transition-transform duration-300',\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n title,\n children,\n position = 'right',\n size = 'md',\n showCloseButton = true,\n}) => {\n const { theme } = useTheme();\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = 'unset';\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const sizeClass = sizeClasses[position][size];\n const positionClass = positionClasses[position];\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-40 bg-black/60 backdrop-blur-sm transition-all duration-200\"\n onClick={onClose}\n />\n\n {/* Drawer */}\n <div\n className={`fixed z-50 ${positionClass} ${sizeClass} bg-white dark:bg-gray-800 shadow-2xl overflow-hidden flex flex-col ${slideClasses[position]}`}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700\">\n {title && (\n <h3 className=\"text-xl font-semibold text-gray-900 dark:text-gray-100\">\n {title}\n </h3>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors\"\n aria-label=\"Close drawer\"\n >\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 p-6 overflow-y-auto\">\n {children}\n </div>\n </div>\n </>\n );\n};\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface TextInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n label?: string;\n error?: string;\n helperText?: string;\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2.5 text-base',\n lg: 'px-4 py-3 text-lg',\n};\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n error,\n helperText,\n size = 'md',\n fullWidth = false,\n leftIcon,\n rightIcon,\n className = '',\n disabled,\n ...props\n },\n ref\n ) => {\n const { theme, themeName } = useTheme();\n\n const baseStyles = theme.select?.base || 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const sizeStyle = sizeClasses[size];\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n const widthStyle = fullWidth ? 'w-full' : '';\n const paddingWithIcon = leftIcon ? 'pl-10' : rightIcon ? 'pr-10' : '';\n\n return (\n <div className={`${widthStyle} ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500\">\n {leftIcon}\n </div>\n )}\n <input\n ref={ref}\n className={`${baseStyles} ${sizeStyle} ${errorStyles} ${disabledStyles} ${paddingWithIcon}`.trim()}\n disabled={disabled}\n {...props}\n />\n {rightIcon && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500\">\n {rightIcon}\n </div>\n )}\n </div>\n {error && (\n <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n </div>\n );\n }\n);\n\nTextInput.displayName = 'TextInput';\n","\"use client\";\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport type ActionMenuItem = {\n type?: 'item';\n label: string;\n onClick: () => void;\n icon?: React.ReactNode;\n disabled?: boolean;\n variant?: 'default' | 'danger';\n} | {\n type: 'divider';\n};\n\nexport interface ActionMenuProps {\n items: ActionMenuItem[];\n trigger?: React.ReactNode;\n position?: 'left' | 'right';\n}\n\nexport const ActionMenu: React.FC<ActionMenuProps> = ({\n items,\n trigger,\n position = 'right',\n}) => {\n const { themeName } = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const [menuPosition, setMenuPosition] = useState<{ top: number; left: number } | null>(null);\n const [mounted, setMounted] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(event.target as Node) &&\n triggerRef.current && !triggerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const menuWidth = 224; // 14rem\n\n setMenuPosition({\n top: rect.bottom + 8,\n left: position === 'left' ? rect.left : rect.right - menuWidth,\n });\n } else {\n setMenuPosition(null);\n }\n }, [isOpen, position]);\n\n const handleItemClick = (item: ActionMenuItem) => {\n if (item.type === 'divider') return;\n if (!item.disabled) {\n item.onClick();\n setIsOpen(false);\n }\n };\n\n const defaultTrigger = (\n <button\n className=\"p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n aria-label=\"Open menu\"\n >\n <svg className=\"w-5 h-5 text-gray-600 dark:text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z\" />\n </svg>\n </button>\n );\n\n const menuBaseStyles = themeName === 'minimalistic'\n ? 'bg-black border-2 border-white'\n : 'bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg';\n\n const itemBaseStyles = themeName === 'minimalistic'\n ? 'text-white hover:bg-white hover:text-black transition-colors duration-200'\n : 'text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors';\n\n const menu = isOpen && mounted && menuPosition ? (\n <div\n ref={menuRef}\n className={`fixed w-56 rounded-lg ${menuBaseStyles} z-[9999] max-h-[80vh] overflow-auto`}\n style={{\n minWidth: '14rem',\n top: `${menuPosition.top}px`,\n left: `${menuPosition.left}px`,\n }}\n >\n {items.map((item, index) => {\n if (item.type === 'divider') {\n return (\n <div\n key={index}\n className=\"my-1 border-t border-gray-200 dark:border-gray-700\"\n />\n );\n }\n\n return (\n <button\n key={index}\n onClick={() => handleItemClick(item)}\n disabled={item.disabled}\n className={`w-full text-left px-4 py-3 flex items-center gap-3 ${itemBaseStyles} ${\n item.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'\n } ${\n item.variant === 'danger' ? 'text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20' : ''\n }`}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span className=\"flex-1\">{item.label}</span>\n </button>\n );\n })}\n </div>\n ) : null;\n\n return (\n <>\n <div className=\"relative inline-block\" ref={triggerRef}>\n <div onClick={() => setIsOpen(!isOpen)}>\n {trigger || defaultTrigger}\n </div>\n </div>\n {mounted && createPortal(menu, document.body)}\n </>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface CardProps {\n children: React.ReactNode;\n className?: string;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n hover?: boolean;\n}\n\nconst paddingClasses = {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n};\n\nexport const Card: React.FC<CardProps> = ({\n children,\n className = '',\n padding = 'md',\n hover = false,\n}) => {\n const { theme } = useTheme();\n\n const paddingClass = paddingClasses[padding];\n const hoverClass = hover ? 'hover:shadow-lg transition-shadow duration-200' : '';\n\n return (\n <div\n className={`bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 ${paddingClass} ${hoverClass} ${className}`}\n >\n {children}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface AlertProps {\n variant?: 'info' | 'success' | 'warning' | 'error';\n title?: string;\n children: React.ReactNode;\n onClose?: () => void;\n className?: string;\n}\n\nconst variantStyles = {\n info: 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-900 dark:text-blue-100',\n success: 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-900 dark:text-green-100',\n warning: 'bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800 text-yellow-900 dark:text-yellow-100',\n error: 'bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800 text-red-900 dark:text-red-100',\n};\n\nconst iconStyles = {\n info: 'text-blue-600 dark:text-blue-400',\n success: 'text-green-600 dark:text-green-400',\n warning: 'text-yellow-600 dark:text-yellow-400',\n error: 'text-red-600 dark:text-red-400',\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = 'info',\n title,\n children,\n onClose,\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const variantClass = variantStyles[variant];\n const iconClass = iconStyles[variant];\n\n return (\n <div className={`rounded-lg border p-4 ${variantClass} ${className}`} role=\"alert\">\n <div className=\"flex items-start gap-3\">\n <div className={`flex-shrink-0 ${iconClass}`}>\n {variant === 'info' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clipRule=\"evenodd\" />\n </svg>\n )}\n {variant === 'success' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clipRule=\"evenodd\" />\n </svg>\n )}\n {variant === 'warning' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>\n )}\n {variant === 'error' && (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clipRule=\"evenodd\" />\n </svg>\n )}\n </div>\n <div className=\"flex-1\">\n {title && <h3 className=\"font-semibold mb-1\">{title}</h3>}\n <div className=\"text-sm\">{children}</div>\n </div>\n {onClose && (\n <button\n onClick={onClose}\n className={`flex-shrink-0 ${iconClass} hover:opacity-70 transition-opacity`}\n aria-label=\"Close alert\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, error, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n return (\n <div className={className}>\n <label className=\"flex items-center gap-2 cursor-pointer group\">\n <input\n ref={ref}\n type=\"checkbox\"\n disabled={disabled}\n className={`w-4 h-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed transition-colors ${\n error ? 'border-red-500 dark:border-red-500' : ''\n }`}\n {...props}\n />\n {label && (\n <span className={`text-sm text-gray-700 dark:text-gray-300 ${disabled ? 'opacity-50 cursor-not-allowed' : 'group-hover:text-gray-900 dark:group-hover:text-gray-100'}`}>\n {label}\n </span>\n )}\n </label>\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n </div>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface ToggleProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n label?: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n ({ label, size = 'md', className = '', disabled, checked, ...props }, ref) => {\n const { theme } = useTheme();\n\n // Use complete class strings for Tailwind\n const toggleClasses = {\n sm: {\n switch: 'w-9 h-5',\n thumb: 'w-4 h-4 peer-checked:translate-x-4',\n },\n md: {\n switch: 'w-11 h-6',\n thumb: 'w-5 h-5 peer-checked:translate-x-5',\n },\n lg: {\n switch: 'w-14 h-7',\n thumb: 'w-6 h-6 peer-checked:translate-x-7',\n },\n };\n\n const currentSize = toggleClasses[size];\n\n return (\n <label className={`inline-flex items-center gap-3 cursor-pointer ${disabled ? 'opacity-50 cursor-not-allowed' : ''} ${className}`}>\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n className=\"sr-only peer\"\n disabled={disabled}\n checked={checked}\n {...props}\n />\n <div\n className={`${currentSize.switch} bg-gray-300 dark:bg-gray-700 peer-focus:ring-2 peer-focus:ring-blue-500 rounded-full peer peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500 transition-colors`}\n ></div>\n <div\n className={`${currentSize.thumb} bg-white rounded-full shadow-md absolute top-0.5 left-0.5 transition-transform`}\n ></div>\n </div>\n {label && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nToggle.displayName = 'Toggle';\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface BadgeProps {\n children: React.ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n}\n\nconst variantStyles = {\n default: 'bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200',\n primary: 'bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200',\n success: 'bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-200',\n warning: 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-800 dark:text-yellow-200',\n error: 'bg-red-100 dark:bg-red-900/30 text-red-800 dark:text-red-200',\n info: 'bg-cyan-100 dark:bg-cyan-900/30 text-cyan-800 dark:text-cyan-200',\n};\n\nconst sizeStyles = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n};\n\nexport const Badge: React.FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const variantClass = variantStyles[variant];\n const sizeClass = sizeStyles[size];\n\n return (\n <span className={`inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`}>\n {children}\n </span>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface SpinnerProps {\n size?: 'sm' | 'md' | 'lg' | 'xl';\n color?: 'primary' | 'secondary' | 'white';\n className?: string;\n}\n\nconst sizeClasses = {\n sm: 'w-4 h-4 border-2',\n md: 'w-8 h-8 border-2',\n lg: 'w-12 h-12 border-3',\n xl: 'w-16 h-16 border-4',\n};\n\nconst colorClasses = {\n primary: 'border-blue-600 border-t-transparent',\n secondary: 'border-gray-600 border-t-transparent',\n white: 'border-white border-t-transparent',\n};\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n size = 'md',\n color = 'primary',\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const sizeClass = sizeClasses[size];\n const colorClass = colorClasses[color];\n\n return (\n <div\n className={`inline-block rounded-full animate-spin ${sizeClass} ${colorClass} ${className}`}\n role=\"status\"\n aria-label=\"Loading\"\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n};\n","\"use client\";\n\nimport React, { useState } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface Tab {\n label: string;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps {\n tabs: Tab[];\n defaultIndex?: number;\n onChange?: (index: number) => void;\n className?: string;\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultIndex = 0,\n onChange,\n className = '',\n}) => {\n const { theme } = useTheme();\n const [activeIndex, setActiveIndex] = useState(defaultIndex);\n\n const handleTabClick = (index: number) => {\n if (tabs[index].disabled) return;\n setActiveIndex(index);\n onChange?.(index);\n };\n\n return (\n <div className={className}>\n {/* Tab Headers */}\n <div className=\"border-b border-gray-200 dark:border-gray-700\">\n <nav className=\"flex gap-8 px-6\" aria-label=\"Tabs\">\n {tabs.map((tab, index) => (\n <button\n key={index}\n onClick={() => handleTabClick(index)}\n disabled={tab.disabled}\n className={`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${\n activeIndex === index\n ? 'border-blue-600 text-blue-600 dark:text-blue-400'\n : 'border-transparent text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:border-gray-300 dark:hover:border-gray-600'\n } ${tab.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`}\n aria-current={activeIndex === index ? 'page' : undefined}\n >\n {tab.label}\n </button>\n ))}\n </nav>\n </div>\n\n {/* Tab Content */}\n <div>\n {tabs[activeIndex]?.content}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface Column<T = any> {\n key: string;\n title: string;\n render?: (value: any, row: T, index: number) => React.ReactNode;\n width?: string;\n}\n\nexport interface TableProps<T = any> {\n columns: Column<T>[];\n data: T[];\n keyField?: string;\n striped?: boolean;\n hoverable?: boolean;\n className?: string;\n}\n\nexport function Table<T extends Record<string, any>>({\n columns,\n data,\n keyField = 'id',\n striped = false,\n hoverable = true,\n className = '',\n}: TableProps<T>) {\n const { theme } = useTheme();\n\n return (\n <div className={`overflow-x-auto ${className}`}>\n <table className=\"w-full text-left\">\n <thead className=\"bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700\">\n <tr>\n {columns.map((column, colIndex) => {\n const isLast = colIndex === columns.length - 1;\n return (\n <th\n key={column.key}\n className={\n isLast\n ? 'px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider relative'\n : 'px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider'\n }\n style={{ width: column.width }}\n >\n {column.title}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody className=\"bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700\">\n {data.map((row, rowIndex) => {\n const rowClasses = [\n striped && rowIndex % 2 === 1 ? 'bg-gray-50 dark:bg-gray-800/50' : '',\n hoverable ? 'hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors' : ''\n ].filter(Boolean).join(' ');\n\n return (\n <tr\n key={row[keyField] || rowIndex}\n className={rowClasses}\n >\n {columns.map((column, colIndex) => {\n const isLast = colIndex === columns.length - 1;\n return (\n <td\n key={column.key}\n className={\n isLast\n ? 'px-6 py-4 text-sm text-gray-900 dark:text-gray-100 overflow-visible'\n : 'px-6 py-4 text-sm text-gray-900 dark:text-gray-100'\n }\n >\n {column.render\n ? column.render(row[column.key], row, rowIndex)\n : row[column.key]}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n {data.length === 0 && (\n <div className=\"text-center py-8 text-gray-500 dark:text-gray-400\">\n No data available\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n className?: string;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n className = '',\n}) => {\n const { theme } = useTheme();\n\n const range = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n };\n\n const paginationRange = () => {\n const totalPageNumbers = siblingCount + 5;\n\n if (totalPageNumbers >= totalPages) {\n return range(1, totalPages);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);\n\n const shouldShowLeftDots = leftSiblingIndex > 2;\n const shouldShowRightDots = rightSiblingIndex < totalPages - 2;\n\n const firstPageIndex = 1;\n const lastPageIndex = totalPages;\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + 2 * siblingCount;\n const leftRange = range(1, leftItemCount);\n return [...leftRange, '...', totalPages];\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + 2 * siblingCount;\n const rightRange = range(totalPages - rightItemCount + 1, totalPages);\n return [firstPageIndex, '...', ...rightRange];\n }\n\n if (shouldShowLeftDots && shouldShowRightDots) {\n const middleRange = range(leftSiblingIndex, rightSiblingIndex);\n return [firstPageIndex, '...', ...middleRange, '...', lastPageIndex];\n }\n\n return range(1, totalPages);\n };\n\n const pages = paginationRange();\n\n return (\n <nav className={`flex items-center gap-1 ${className}`} aria-label=\"Pagination\">\n {/* Previous Button */}\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n className=\"px-3 py-2 rounded-md text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous page\"\n >\n Previous\n </button>\n\n {/* Page Numbers */}\n {pages.map((page, index) => {\n if (page === '...') {\n return (\n <span\n key={`dots-${index}`}\n className=\"px-3 py-2 text-gray-700 dark:text-gray-300\"\n >\n ...\n </span>\n );\n }\n\n return (\n <button\n key={page}\n onClick={() => onPageChange(page as number)}\n className={`px-3 py-2 rounded-md text-sm font-medium transition-colors ${\n currentPage === page\n ? 'bg-blue-600 text-white'\n : 'text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800'\n }`}\n aria-label={`Page ${page}`}\n aria-current={currentPage === page ? 'page' : undefined}\n >\n {page}\n </button>\n );\n })}\n\n {/* Next Button */}\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n className=\"px-3 py-2 rounded-md text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next page\"\n >\n Next\n </button>\n </nav>\n );\n};\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface DatePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n ({ label, error, helperText, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n const baseStyles = 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n type=\"date\"\n disabled={disabled}\n className={`${baseStyles} ${errorStyles} ${disabledStyles}`.trim()}\n {...props}\n />\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n {helperText && !error && <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>}\n </div>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface TimePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const TimePicker = forwardRef<HTMLInputElement, TimePickerProps>(\n ({ label, error, helperText, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n const baseStyles = 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n type=\"time\"\n disabled={disabled}\n className={`${baseStyles} ${errorStyles} ${disabledStyles}`.trim()}\n {...props}\n />\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n {helperText && !error && <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>}\n </div>\n );\n }\n);\n\nTimePicker.displayName = 'TimePicker';\n","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport { useTheme } from '../theme/ThemeProvider';\n\nexport interface DateTimePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n ({ label, error, helperText, className = '', disabled, ...props }, ref) => {\n const { theme } = useTheme();\n\n const baseStyles = 'w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500';\n const errorStyles = error ? 'border-red-500 focus:ring-red-500 dark:border-red-500' : '';\n const disabledStyles = disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '';\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n type=\"datetime-local\"\n disabled={disabled}\n className={`${baseStyles} ${errorStyles} ${disabledStyles}`.trim()}\n {...props}\n />\n {error && <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>}\n {helperText && !error && <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>}\n </div>\n );\n }\n);\n\nDateTimePicker.displayName = 'DateTimePicker';\n","\"use client\";\n\nimport React from 'react';\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioProps {\n name: string;\n options: RadioOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nexport const Radio: React.FC<RadioProps> = ({\n name,\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n disabled = false,\n orientation = 'vertical',\n className = '',\n}) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue || '');\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const handleChange = (optionValue: string) => {\n if (disabled) return;\n setInternalValue(optionValue);\n onChange?.(optionValue);\n };\n\n const containerClass = orientation === 'horizontal'\n ? 'flex flex-wrap gap-4'\n : 'flex flex-col gap-2';\n\n return (\n <div className={`${containerClass} ${className}`} role=\"radiogroup\">\n {options.map((option) => {\n const isDisabled = disabled || option.disabled;\n const isChecked = value === option.value;\n const id = `${name}-${option.value}`;\n\n return (\n <label\n key={option.value}\n htmlFor={id}\n className={`flex items-center gap-2 cursor-pointer ${\n isDisabled ? 'opacity-50 cursor-not-allowed' : ''\n }`}\n >\n <input\n type=\"radio\"\n id={id}\n name={name}\n value={option.value}\n checked={isChecked}\n onChange={() => handleChange(option.value)}\n disabled={isDisabled}\n className=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 cursor-pointer disabled:cursor-not-allowed\"\n />\n <span className=\"text-sm font-medium text-gray-900 dark:text-gray-300\">\n {option.label}\n </span>\n </label>\n );\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface ProgressBarProps {\n value: number;\n max?: number;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'success' | 'warning' | 'danger';\n showLabel?: boolean;\n label?: string;\n className?: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n value,\n max = 100,\n size = 'md',\n variant = 'default',\n showLabel = false,\n label,\n className = '',\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n const sizeClasses = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n };\n\n const variantClasses = {\n default: 'bg-blue-600 dark:bg-blue-500',\n success: 'bg-green-600 dark:bg-green-500',\n warning: 'bg-yellow-500 dark:bg-yellow-400',\n danger: 'bg-red-600 dark:bg-red-500',\n };\n\n return (\n <div className={`w-full ${className}`}>\n {(showLabel || label) && (\n <div className=\"flex justify-between items-center mb-1\">\n {label && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </span>\n )}\n {showLabel && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <div\n className={`w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses[size]}`}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n >\n <div\n className={`${sizeClasses[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface SliderProps {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n onChange?: (value: number) => void;\n disabled?: boolean;\n showValue?: boolean;\n label?: string;\n className?: string;\n}\n\nexport const Slider: React.FC<SliderProps> = ({\n value: controlledValue,\n defaultValue = 50,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n disabled = false,\n showValue = false,\n label,\n className = '',\n}) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = Number(e.target.value);\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const percentage = ((value - min) / (max - min)) * 100;\n\n return (\n <div className={`w-full ${className}`}>\n {(label || showValue) && (\n <div className=\"flex justify-between items-center mb-2\">\n {label && (\n <label className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </label>\n )}\n {showValue && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {value}\n </span>\n )}\n </div>\n )}\n <div className=\"relative\">\n {/* Background track */}\n <div className=\"absolute inset-0 h-2 bg-gray-200 dark:bg-gray-700 rounded-full top-1/2 -translate-y-1/2\" />\n\n {/* Filled track */}\n <div\n className=\"absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full top-1/2 -translate-y-1/2 pointer-events-none\"\n style={{ width: `${percentage}%` }}\n />\n\n {/* Input slider */}\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n className=\"relative w-full h-2 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-md\n [&::-webkit-slider-thumb]:hover:bg-blue-700 [&::-webkit-slider-thumb]:active:scale-110 [&::-webkit-slider-thumb]:transition-all\n [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-2\n [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-md [&::-moz-range-thumb]:hover:bg-blue-700\n [&::-moz-range-thumb]:active:scale-110 [&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:border-none\"\n aria-label={label}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n />\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n name?: string;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n shape?: 'circle' | 'square';\n className?: string;\n fallbackColor?: string;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt,\n name,\n size = 'md',\n shape = 'circle',\n className = '',\n fallbackColor = 'bg-blue-600',\n}) => {\n const [imageError, setImageError] = React.useState(false);\n\n const sizeClasses = {\n xs: 'w-6 h-6 text-xs',\n sm: 'w-8 h-8 text-sm',\n md: 'w-10 h-10 text-base',\n lg: 'w-12 h-12 text-lg',\n xl: 'w-16 h-16 text-2xl',\n };\n\n const shapeClass = shape === 'circle' ? 'rounded-full' : 'rounded-md';\n\n const getInitials = (name: string): string => {\n const parts = name.trim().split(' ');\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();\n }\n return name.slice(0, 2).toUpperCase();\n };\n\n const showImage = src && !imageError;\n const showInitials = !showImage && name;\n\n return (\n <div\n className={`${sizeClasses[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${\n showImage ? 'bg-gray-200 dark:bg-gray-700' : `${fallbackColor} text-white`\n } ${className}`}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt || name || 'Avatar'}\n className=\"w-full h-full object-cover\"\n onError={() => setImageError(true)}\n />\n ) : showInitials ? (\n <span className=\"font-semibold select-none\">{getInitials(name)}</span>\n ) : (\n <svg\n className=\"w-full h-full text-gray-400 dark:text-gray-600\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n label?: string;\n error?: string;\n helperText?: string;\n size?: 'sm' | 'md' | 'lg';\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n}\n\nexport const Textarea: React.FC<TextareaProps> = ({\n label,\n error,\n helperText,\n size = 'md',\n resize = 'vertical',\n className = '',\n disabled,\n ...props\n}) => {\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm min-h-[80px]',\n md: 'px-4 py-2 text-base min-h-[100px]',\n lg: 'px-4 py-3 text-lg min-h-[120px]',\n };\n\n const resizeClasses = {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n };\n\n const baseClasses = `w-full rounded-lg border transition-colors duration-150 focus:outline-none focus:ring-2\n ${error\n ? 'border-red-500 focus:ring-red-500 focus:border-red-500 dark:border-red-400 dark:focus:ring-red-400'\n : 'border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:focus:ring-blue-400'\n }\n bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100\n placeholder:text-gray-500 dark:placeholder:text-gray-400\n disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;\n\n return (\n <div className={`w-full ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n {label}\n </label>\n )}\n <textarea\n className={`${baseClasses} ${sizeClasses[size]} ${resizeClasses[resize]}`}\n disabled={disabled}\n {...props}\n />\n {error && (\n <p className=\"mt-1 text-sm text-red-600 dark:text-red-400\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React, { createContext, useContext, useState, useCallback } from 'react';\nimport { CheckIcon, CloseIcon } from '../icons';\n\nexport interface Toast {\n id: string;\n message: string;\n type?: 'success' | 'error' | 'warning' | 'info';\n duration?: number;\n}\n\ninterface ToastContextValue {\n toasts: Toast[];\n addToast: (toast: Omit<Toast, 'id'>) => void;\n removeToast: (id: string) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n return context;\n};\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({ children, position = 'top-right' }) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const addToast = useCallback((toast: Omit<Toast, 'id'>) => {\n const id = Math.random().toString(36).substring(7);\n const newToast = { ...toast, id };\n setToasts((prev) => [...prev, newToast]);\n\n // Auto-remove after duration\n const duration = toast.duration || 5000;\n setTimeout(() => {\n removeToast(id);\n }, duration);\n }, []);\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const positionClasses = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n };\n\n return (\n <ToastContext.Provider value={{ toasts, addToast, removeToast }}>\n {children}\n <div className={`fixed ${positionClasses[position]} z-50 flex flex-col gap-2 max-w-md`}>\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onClose={() => removeToast(toast.id)} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\ninterface ToastItemProps {\n toast: Toast;\n onClose: () => void;\n}\n\nconst ToastItem: React.FC<ToastItemProps> = ({ toast, onClose }) => {\n const typeStyles = {\n success: 'bg-green-50 dark:bg-green-900/30 border-green-500 text-green-800 dark:text-green-200',\n error: 'bg-red-50 dark:bg-red-900/30 border-red-500 text-red-800 dark:text-red-200',\n warning: 'bg-yellow-50 dark:bg-yellow-900/30 border-yellow-500 text-yellow-800 dark:text-yellow-200',\n info: 'bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200',\n };\n\n const typeIcons = {\n success: <CheckIcon size=\"sm\" className=\"text-green-600 dark:text-green-400\" />,\n error: <CloseIcon size=\"sm\" className=\"text-red-600 dark:text-red-400\" />,\n warning: (\n <svg className=\"w-4 h-4 text-yellow-600 dark:text-yellow-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>\n ),\n info: (\n <svg className=\"w-4 h-4 text-blue-600 dark:text-blue-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clipRule=\"evenodd\" />\n </svg>\n ),\n };\n\n const type = toast.type || 'info';\n\n return (\n <div\n className={`flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`}\n role=\"alert\"\n >\n <div className=\"flex-shrink-0 mt-0.5\">{typeIcons[type]}</div>\n <p className=\"flex-1 text-sm font-medium\">{toast.message}</p>\n <button\n onClick={onClose}\n className=\"flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors\"\n aria-label=\"Close\"\n >\n <CloseIcon size=\"sm\" />\n </button>\n </div>\n );\n};\n\n// Helper function to easily show toasts\nexport const toast = {\n success: (message: string, duration?: number) => ({\n message,\n type: 'success' as const,\n duration,\n }),\n error: (message: string, duration?: number) => ({\n message,\n type: 'error' as const,\n duration,\n }),\n warning: (message: string, duration?: number) => ({\n message,\n type: 'warning' as const,\n duration,\n }),\n info: (message: string, duration?: number) => ({\n message,\n type: 'info' as const,\n duration,\n }),\n};\n","\"use client\";\n\nimport React from 'react';\nimport { CheckIcon } from '../icons';\n\nexport interface Step {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps {\n steps: Step[];\n currentStep: number;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nexport const Stepper: React.FC<StepperProps> = ({\n steps,\n currentStep,\n orientation = 'horizontal',\n className = '',\n}) => {\n const isHorizontal = orientation === 'horizontal';\n\n return (\n <div className={`${isHorizontal ? 'flex items-center' : 'flex flex-col'} ${className}`}>\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const isActive = stepNumber === currentStep;\n const isCompleted = stepNumber < currentStep;\n const isLast = index === steps.length - 1;\n\n return (\n <React.Fragment key={index}>\n {/* Step */}\n <div className={`flex ${isHorizontal ? 'flex-col items-center' : 'flex-row items-start'} ${isHorizontal ? '' : 'flex-1'}`}>\n <div className=\"flex items-center\">\n {/* Circle/Check */}\n <div\n className={`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${\n isCompleted\n ? 'bg-blue-600 border-blue-600 dark:bg-blue-500 dark:border-blue-500'\n : isActive\n ? 'border-blue-600 bg-white dark:border-blue-500 dark:bg-gray-800'\n : 'border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800'\n }`}\n >\n {isCompleted ? (\n <CheckIcon size=\"sm\" className=\"text-white\" />\n ) : (\n <span\n className={`text-sm font-semibold ${\n isActive\n ? 'text-blue-600 dark:text-blue-400'\n : 'text-gray-500 dark:text-gray-400'\n }`}\n >\n {stepNumber}\n </span>\n )}\n </div>\n </div>\n\n {/* Label */}\n <div className={`${isHorizontal ? 'mt-2 text-center' : 'ml-4 pb-8'} ${isLast && !isHorizontal ? 'pb-0' : ''}`}>\n <p\n className={`text-sm font-medium ${\n isActive || isCompleted\n ? 'text-gray-900 dark:text-gray-100'\n : 'text-gray-500 dark:text-gray-400'\n }`}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400 mt-1\">\n {step.description}\n </p>\n )}\n </div>\n </div>\n\n {/* Connector Line */}\n {!isLast && (\n <div\n className={`${\n isHorizontal\n ? 'flex-1 h-0.5 mx-4'\n : 'w-0.5 h-full ml-5 -mt-8'\n } ${\n isCompleted || (isActive && stepNumber < currentStep)\n ? 'bg-blue-600 dark:bg-blue-500'\n : 'bg-gray-300 dark:bg-gray-600'\n }`}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport React from 'react';\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'solid' | 'dashed' | 'dotted';\n className?: string;\n label?: string;\n labelPosition?: 'left' | 'center' | 'right';\n}\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = 'horizontal',\n variant = 'solid',\n className = '',\n label,\n labelPosition = 'center',\n}) => {\n const variantClasses = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n };\n\n if (label && orientation === 'horizontal') {\n const alignmentClasses = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n };\n\n return (\n <div className={`flex items-center ${alignmentClasses[labelPosition]} ${className}`} role=\"separator\">\n {labelPosition !== 'left' && (\n <div className={`flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600`} />\n )}\n <span className=\"px-4 text-sm text-gray-500 dark:text-gray-400\">\n {label}\n </span>\n {labelPosition !== 'right' && (\n <div className={`flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600`} />\n )}\n </div>\n );\n }\n\n if (orientation === 'vertical') {\n return (\n <div\n className={`inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`}\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n );\n }\n\n return (\n <hr\n className={`border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`}\n role=\"separator\"\n />\n );\n};\n","\"use client\";\n\nimport React, { useRef, useState } from 'react';\nimport { UploadIcon, CloseIcon } from '../icons';\n\nexport interface FileUploadProps {\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n maxFiles?: number;\n disabled?: boolean;\n onChange?: (files: File[]) => void;\n onError?: (error: string) => void;\n className?: string;\n label?: string;\n helperText?: string;\n}\n\nexport const FileUpload: React.FC<FileUploadProps> = ({\n accept,\n multiple = false,\n maxSize,\n maxFiles = 10,\n disabled = false,\n onChange,\n onError,\n className = '',\n label,\n helperText,\n}) => {\n const [files, setFiles] = useState<File[]>([]);\n const [isDragging, setIsDragging] = useState(false);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];\n };\n\n const validateFiles = (fileList: FileList): File[] => {\n const validFiles: File[] = [];\n const filesArray = Array.from(fileList);\n\n // Check max files\n if (filesArray.length + files.length > maxFiles) {\n onError?.(`Maximum ${maxFiles} files allowed`);\n return validFiles;\n }\n\n for (const file of filesArray) {\n // Check file size\n if (maxSize && file.size > maxSize) {\n onError?.(`File ${file.name} exceeds maximum size of ${formatFileSize(maxSize)}`);\n continue;\n }\n\n validFiles.push(file);\n }\n\n return validFiles;\n };\n\n const handleFiles = (fileList: FileList | null) => {\n if (!fileList || disabled) return;\n\n const validFiles = validateFiles(fileList);\n if (validFiles.length > 0) {\n const newFiles = multiple ? [...files, ...validFiles] : validFiles;\n setFiles(newFiles);\n onChange?.(newFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setIsDragging(false);\n handleFiles(e.dataTransfer.files);\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (!disabled) {\n setIsDragging(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleClick = () => {\n if (!disabled) {\n fileInputRef.current?.click();\n }\n };\n\n const handleRemoveFile = (index: number) => {\n const newFiles = files.filter((_, i) => i !== index);\n setFiles(newFiles);\n onChange?.(newFiles);\n };\n\n return (\n <div className={`w-full ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\n {label}\n </label>\n )}\n\n <div\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={handleClick}\n className={`relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${\n isDragging\n ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/20'\n : 'border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500'\n } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(e) => handleFiles(e.target.files)}\n disabled={disabled}\n className=\"hidden\"\n />\n\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center\">\n <UploadIcon size=\"lg\" className=\"text-gray-400 dark:text-gray-500\" />\n </div>\n <div>\n <p className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n <span className=\"text-blue-600 dark:text-blue-400\">Click to upload</span> or drag and drop\n </p>\n <p className=\"text-xs text-gray-500 dark:text-gray-400 mt-1\">\n {accept ? `Accepted: ${accept}` : 'Any file type'}\n {maxSize && ` • Max size: ${formatFileSize(maxSize)}`}\n </p>\n </div>\n </div>\n </div>\n\n {helperText && (\n <p className=\"mt-2 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n\n {/* File List */}\n {files.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n {files.map((file, index) => (\n <div\n key={index}\n className=\"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700\"\n >\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 dark:text-gray-100 truncate\">\n {file.name}\n </p>\n <p className=\"text-xs text-gray-500 dark:text-gray-400\">\n {formatFileSize(file.size)}\n </p>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleRemoveFile(index);\n }}\n className=\"ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors\"\n aria-label=\"Remove file\"\n >\n <CloseIcon size=\"sm\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n","/**\n * Theme initialization script that runs before React hydration\n * This prevents flickering by setting the theme before the page renders\n * Must be inlined in the HTML <head> as a blocking script\n */\n\nexport const themeScript = `\n(function() {\n try {\n // Get stored preferences\n const storedTheme = localStorage.getItem('lite-ui-theme') || 'default';\n const storedColorMode = localStorage.getItem('lite-ui-color-mode');\n\n // Determine color mode (system, light, or dark)\n let colorMode = storedColorMode;\n if (!colorMode || colorMode === 'system') {\n colorMode = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n // Set attributes before render\n document.documentElement.setAttribute('data-theme', storedTheme);\n document.documentElement.setAttribute('data-color-mode', colorMode);\n\n // Add dark class for Tailwind\n if (colorMode === 'dark') {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n } catch (e) {\n console.error('Failed to initialize theme:', e);\n }\n})();\n`;\n\nexport function getThemeScript() {\n return themeScript;\n}\n"],"mappings":"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","names":["import_jsx_runtime","variantStyles","sizeStyles","import_react","import_jsx_runtime","sizeStyles","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","sizeClasses","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","widthClasses","import_react","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","variantStyles","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","sizeClasses","name","import_jsx_runtime","sizeClasses","import_react","import_jsx_runtime","toast","positionClasses","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react","import_jsx_runtime"]}
|