@yomologic/react-ui 0.2.5 → 0.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/button.tsx","../src/lib/utils.ts","../src/ui/input.tsx","../src/ui/card.tsx","../src/ui/badge.tsx","../src/ui/checkbox.tsx","../src/ui/radio.tsx","../src/ui/dropdown.tsx","../src/ui/spinner.tsx","../src/ui/code-snippet.tsx","../src/feedback/alert.tsx","../src/layout/container.tsx","../src/layout/section-layout.tsx","../src/layout/sidebar-nav.tsx","../src/shared/empty-state.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"md\",\n isLoading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseStyles =\n \"inline-flex items-center justify-center transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\";\n\n // Use CSS variables for theming\n const variants = {\n primary:\n \"[background-color:var(--color-primary)] text-white hover:[background-color:var(--color-primary-hover)] focus:[--tw-ring-color:var(--color-primary)]\",\n secondary:\n \"[background-color:var(--color-secondary)] text-white hover:[background-color:var(--color-secondary-hover)] focus:[--tw-ring-color:var(--color-secondary)]\",\n outline:\n \"border-2 [border-color:var(--color-primary)] [color:var(--color-primary)] hover:bg-blue-50 focus:[--tw-ring-color:var(--color-primary)]\",\n ghost: \"text-gray-700 hover:bg-gray-100 focus:ring-gray-500\",\n danger:\n \"[background-color:var(--color-error)] text-white hover:bg-red-700 focus:[--tw-ring-color:var(--color-error)]\",\n };\n\n const sizes = {\n sm: \"[font-size:var(--button-text-sm)] [padding-left:var(--button-padding-sm-x)] [padding-right:var(--button-padding-sm-x)] [padding-top:var(--button-padding-sm-y)] [padding-bottom:var(--button-padding-sm-y)] gap-1.5\",\n md: \"[font-size:var(--button-text-md)] [padding-left:var(--button-padding-md-x)] [padding-right:var(--button-padding-md-x)] [padding-top:var(--button-padding-md-y)] [padding-bottom:var(--button-padding-md-y)] gap-2\",\n lg: \"[font-size:var(--button-text-lg)] [padding-left:var(--button-padding-lg-x)] [padding-right:var(--button-padding-lg-x)] [padding-top:var(--button-padding-lg-y)] [padding-bottom:var(--button-padding-lg-y)] gap-2.5\",\n };\n\n const radiusStyle = \"[border-radius:var(--button-radius)]\";\n const fontWeightStyle = \"[font-weight:var(--button-font-weight)]\";\n\n return (\n <button\n ref={ref}\n className={cn(\n baseStyles,\n variants[variant],\n sizes[size],\n radiusStyle,\n fontWeightStyle,\n className\n )}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n {!isLoading && leftIcon && leftIcon}\n {children}\n {!isLoading && rightIcon && rightIcon}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n","import { clsx, type ClassValue } from \"clsx\";\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs);\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n helperText?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type = \"text\",\n label,\n error,\n helperText,\n leftIcon,\n rightIcon,\n fullWidth = false,\n id,\n ...props\n },\n ref\n ) => {\n const inputId = id || label?.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label\n htmlFor={inputId}\n className=\"block text-sm font-semibold text-gray-600 mb-1\"\n >\n {label}\n {props.required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none text-gray-400\">\n {leftIcon}\n </div>\n )}\n\n <input\n ref={ref}\n type={type}\n id={inputId}\n className={cn(\n \"w-full px-3 py-2 border rounded-md transition-colors\",\n \"text-gray-700 placeholder-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\n \"disabled:bg-gray-100 disabled:cursor-not-allowed disabled:text-gray-500\",\n error ? \"border-red-500 focus:ring-red-500\" : \"border-gray-400\",\n leftIcon && \"pl-10\",\n rightIcon && \"pr-10\",\n className\n )}\n {...props}\n />\n\n {rightIcon && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-gray-400\">\n {rightIcon}\n </div>\n )}\n </div>\n\n {error && <p className=\"mt-1 text-sm text-red-600\">{error}</p>}\n\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-gray-500\">{helperText}</p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"bordered\" | \"elevated\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n hoverable?: boolean;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n padding = \"md\",\n hoverable = false,\n children,\n ...props\n },\n ref\n ) => {\n const baseStyles = \"bg-white rounded-lg\";\n\n const variants = {\n default: \"border border-gray-200\",\n bordered: \"border-2 border-gray-300\",\n elevated: \"shadow-md\",\n };\n\n const paddings = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n };\n\n const hoverStyles = hoverable\n ? \"hover:shadow-lg transition-shadow cursor-pointer\"\n : \"\";\n\n return (\n <div\n ref={ref}\n className={cn(\n baseStyles,\n variants[variant],\n paddings[padding],\n hoverStyles,\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-lg font-semibold text-gray-800\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-gray-600\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n};\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n size?: \"sm\" | \"md\" | \"lg\";\n dot?: boolean;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n dot = false,\n children,\n ...props\n },\n ref\n ) => {\n const baseStyles = \"inline-flex items-center font-medium rounded-full\";\n\n const variants = {\n default: \"bg-gray-100 text-gray-800\",\n primary: \"bg-blue-100 text-blue-800\",\n success: \"bg-green-100 text-green-800\",\n warning: \"bg-yellow-100 text-yellow-800\",\n danger: \"bg-red-100 text-red-800\",\n info: \"bg-cyan-100 text-cyan-800\",\n };\n\n const sizes = {\n sm: \"text-xs px-2 py-0.5\",\n md: \"text-sm px-2.5 py-1\",\n lg: \"text-base px-3 py-1.5\",\n };\n\n const dotVariants = {\n default: \"bg-gray-600\",\n primary: \"bg-blue-600\",\n success: \"bg-green-600\",\n warning: \"bg-yellow-600\",\n danger: \"bg-red-600\",\n info: \"bg-cyan-600\",\n };\n\n return (\n <span\n ref={ref}\n className={cn(baseStyles, variants[variant], sizes[size], className)}\n {...props}\n >\n {dot && (\n <span\n className={cn(\"w-2 h-2 rounded-full mr-1.5\", dotVariants[variant])}\n />\n )}\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge };\n","import { cn } from \"../lib/utils\";\n\ninterface CheckboxProps {\n label?: string;\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n id?: string;\n}\n\nexport function Checkbox({\n label,\n checked = false,\n onChange,\n disabled = false,\n className,\n id,\n}: CheckboxProps) {\n // Auto-generate ID if not provided to ensure label clicking works\n const checkboxId =\n id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e.target.checked);\n }\n };\n\n return (\n <div className={cn(\"flex items-center\", className)}>\n <input\n type=\"checkbox\"\n id={checkboxId}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n \"h-4 w-4 rounded border-gray-400 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className={cn(\n \"ml-2 text-sm font-medium text-gray-600\",\n disabled && \"cursor-not-allowed opacity-50\",\n !disabled && \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n\ninterface CheckboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface CheckboxGroupProps {\n label?: string;\n name: string;\n options: CheckboxOption[];\n value?: string[];\n onChange?: (value: string[]) => void;\n className?: string;\n orientation?: \"vertical\" | \"horizontal\";\n required?: boolean;\n disabled?: boolean;\n}\n\nexport function CheckboxGroup({\n label,\n name,\n options,\n value = [],\n onChange,\n className,\n orientation = \"vertical\",\n required = false,\n disabled = false,\n}: CheckboxGroupProps) {\n const handleChange = (optionValue: string, checked: boolean) => {\n if (onChange) {\n if (checked) {\n onChange([...value, optionValue]);\n } else {\n onChange(value.filter((v) => v !== optionValue));\n }\n }\n };\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-semibold text-gray-600 mb-1\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n <div\n className={cn(\n \"space-y-2\",\n orientation === \"horizontal\" && \"flex flex-wrap gap-4 space-y-0\"\n )}\n >\n {options.map((option) => {\n const isDisabled = disabled || option.disabled;\n return (\n <div key={option.value} className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id={`${name}-${option.value}`}\n name={name}\n value={option.value}\n checked={value.includes(option.value)}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n disabled={isDisabled}\n className={cn(\n \"h-4 w-4 rounded border-gray-400 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n <label\n htmlFor={`${name}-${option.value}`}\n className={cn(\n \"ml-2 text-sm font-medium text-gray-600\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n !isDisabled && \"cursor-pointer\"\n )}\n >\n {option.label}\n </label>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cn } from \"../lib/utils\";\n\ninterface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface RadioGroupProps {\n label?: string;\n name: string;\n options: RadioOption[];\n value?: string;\n onChange?: (value: string) => void;\n className?: string;\n orientation?: \"vertical\" | \"horizontal\";\n required?: boolean;\n disabled?: boolean;\n}\n\nexport function RadioGroup({\n label,\n name,\n options,\n value,\n onChange,\n className,\n orientation = \"vertical\",\n required = false,\n disabled = false,\n}: RadioGroupProps) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e.target.value);\n }\n };\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-semibold text-gray-600 mb-1\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n <div\n className={cn(\n orientation === \"vertical\" && \"space-y-2\",\n orientation === \"horizontal\" && \"flex flex-wrap gap-4\"\n )}\n >\n {options.map((option) => {\n const isDisabled = disabled || option.disabled;\n return (\n <div key={option.value} className=\"flex items-center\">\n <input\n type=\"radio\"\n id={`${name}-${option.value}`}\n name={name}\n value={option.value}\n checked={value === option.value}\n onChange={handleChange}\n disabled={isDisabled}\n className={cn(\n \"h-4 w-4 border-gray-400 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n <label\n htmlFor={`${name}-${option.value}`}\n className={cn(\n \"ml-2 text-sm font-medium text-gray-600\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n !isDisabled && \"cursor-pointer\"\n )}\n >\n {option.label}\n </label>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useState, useRef, useEffect, ReactNode } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface DropdownOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface DropdownProps {\n /**\n * Label text displayed above the dropdown\n */\n label?: string;\n /**\n * Placeholder text when no option is selected\n */\n placeholder?: string;\n /**\n * Array of options for the dropdown\n */\n options?: DropdownOption[];\n /**\n * Current selected value\n */\n value?: string | number;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string | number) => void;\n /**\n * Custom content to render in the dropdown menu (overrides options)\n */\n children?: ReactNode;\n /**\n * Disable the dropdown\n */\n disabled?: boolean;\n /**\n * Error message to display\n */\n error?: string;\n /**\n * Helper text to display below the dropdown\n */\n helperText?: string;\n /**\n * Mark the field as required\n */\n required?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport function Dropdown({\n label,\n placeholder = \"Select an option\",\n options = [],\n value,\n onChange,\n children,\n disabled = false,\n error,\n helperText,\n required = false,\n className = \"\",\n}: DropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Get the display text for the selected value\n const getSelectedLabel = () => {\n if (!value) return placeholder;\n const selected = options.find((opt) => opt.value === value);\n return selected ? selected.label : placeholder;\n };\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const handleSelect = (optionValue: string | number) => {\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setIsOpen(!isOpen);\n } else if (e.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n return (\n <div className={`w-full ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"block text-sm font-semibold text-gray-600 mb-1\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n\n {/* Dropdown Container */}\n <div ref={dropdownRef} className=\"relative\">\n {/* Trigger Button */}\n <button\n type=\"button\"\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n className={`\n w-full px-4 py-2 text-left bg-white border rounded-lg\n flex items-center justify-between\n transition-all duration-200\n ${\n error\n ? \"border-red-500 focus:ring-2 focus:ring-red-200 focus:border-red-500\"\n : \"border-gray-400 focus:ring-2 focus:ring-blue-200 focus:border-blue-500\"\n }\n ${\n disabled\n ? \"bg-gray-100 cursor-not-allowed opacity-60\"\n : \"hover:border-gray-400\"\n }\n ${!value ? \"text-gray-400\" : \"text-gray-900\"}\n `}\n >\n <span className=\"truncate\">{getSelectedLabel()}</span>\n <ChevronDown\n className={`w-5 h-5 text-gray-400 transition-transform duration-200 shrink-0 ml-2 ${\n isOpen ? \"transform rotate-180\" : \"\"\n }`}\n />\n </button>\n\n {/* Dropdown Menu */}\n {isOpen && !disabled && (\n <div\n className=\"absolute z-50 w-full mt-1 bg-white border border-gray-400 rounded-lg shadow-lg max-h-60 overflow-auto\"\n role=\"listbox\"\n >\n {children ? (\n // Custom content\n <div onClick={() => setIsOpen(false)}>{children}</div>\n ) : (\n // Standard options\n <ul>\n {options.map((option) => (\n <li key={option.value}>\n <button\n type=\"button\"\n onClick={() =>\n !option.disabled && handleSelect(option.value)\n }\n disabled={option.disabled}\n className={`\n w-full px-4 py-2 text-left text-sm\n transition-colors duration-150\n ${\n option.value === value\n ? \"bg-blue-50 text-blue-700 font-medium\"\n : \"text-gray-900 hover:bg-gray-100\"\n }\n ${\n option.disabled ? \"opacity-50 cursor-not-allowed\" : \"\"\n }\n `}\n role=\"option\"\n aria-selected={option.value === value}\n >\n {option.label}\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n </div>\n\n {/* Helper Text or Error */}\n {(helperText || error) && (\n <p\n className={`mt-1 text-xs ${error ? \"text-red-600\" : \"text-gray-500\"}`}\n >\n {error || helperText}\n </p>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n color?: \"primary\" | \"secondary\" | \"white\";\n label?: string;\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = \"md\", color = \"primary\", label, ...props }, ref) => {\n const sizes = {\n sm: \"h-4 w-4\",\n md: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n };\n\n const colors = {\n primary: \"text-blue-600\",\n secondary: \"text-gray-600\",\n white: \"text-white\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center gap-2\",\n className\n )}\n {...props}\n >\n <svg\n className={cn(\"animate-spin\", sizes[size], colors[color])}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n {label && <p className=\"text-sm text-gray-600\">{label}</p>}\n </div>\n );\n }\n);\n\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner };\n","import { useState } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { vscDarkPlus } from \"react-syntax-highlighter/dist/esm/styles/prism\";\n\ninterface CodeSnippetProps {\n code: string;\n language?: string;\n}\n\nexport function CodeSnippet({ code, language = \"tsx\" }: CodeSnippetProps) {\n const [copied, setCopied] = useState(false);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n return (\n <div className=\"relative group\">\n {/* Copy Button */}\n <div className=\"absolute right-3 top-3 z-10\">\n <button\n onClick={handleCopy}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n className=\"p-2 rounded-md bg-gray-800 hover:bg-gray-700 text-gray-400 hover:text-gray-200 transition-all duration-200 border border-gray-700 hover:border-gray-600 shadow-lg\"\n aria-label=\"Copy code\"\n >\n {copied ? (\n // Check icon\n <svg\n className=\"w-4 h-4 text-green-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n ) : (\n // Copy icon\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n )}\n </button>\n\n {/* Tooltip */}\n {showTooltip && !copied && (\n <div className=\"absolute right-0 top-full mt-2 px-2 py-1 bg-gray-800 text-white text-xs rounded shadow-lg whitespace-nowrap border border-gray-700\">\n Copy code\n <div className=\"absolute -top-1 right-3 w-2 h-2 bg-gray-800 border-l border-t border-gray-700 transform rotate-45\"></div>\n </div>\n )}\n\n {copied && (\n <div className=\"absolute right-0 top-full mt-2 px-2 py-1 bg-green-600 text-white text-xs rounded shadow-lg whitespace-nowrap\">\n Copied!\n <div className=\"absolute -top-1 right-3 w-2 h-2 bg-green-600 transform rotate-45\"></div>\n </div>\n )}\n </div>\n\n {/* Code Block with Syntax Highlighting */}\n <div className=\"rounded-lg overflow-hidden border border-gray-800\">\n {/* @ts-expect-error - SyntaxHighlighter has typing issues with React 19 */}\n <SyntaxHighlighter\n language={language}\n style={vscDarkPlus}\n customStyle={{\n margin: 0,\n padding: \"1rem 3.5rem 1rem 1rem\",\n fontSize: \"0.875rem\",\n lineHeight: \"1.5\",\n background: \"#1a1b26\",\n }}\n showLineNumbers={false}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n dismissible?: boolean;\n onDismiss?: () => void;\n icon?: React.ReactNode;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"info\",\n title,\n dismissible = false,\n onDismiss,\n icon,\n children,\n ...props\n },\n ref\n ) => {\n const variants = {\n info: \"bg-blue-50 border-blue-200 text-blue-800\",\n success: \"bg-green-50 border-green-200 text-green-800\",\n warning: \"bg-yellow-50 border-yellow-200 text-yellow-800\",\n error: \"bg-red-50 border-red-200 text-red-800\",\n };\n\n const iconColors = {\n info: \"text-blue-500\",\n success: \"text-green-500\",\n warning: \"text-yellow-500\",\n error: \"text-red-500\",\n };\n\n const defaultIcons = {\n info: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n success: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n warning: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n error: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative border rounded-lg p-4\",\n variants[variant],\n className\n )}\n role=\"alert\"\n {...props}\n >\n <div className=\"flex items-start gap-3\">\n <div className={cn(\"flex-shrink-0\", iconColors[variant])}>\n {icon || defaultIcons[variant]}\n </div>\n\n <div className=\"flex-1\">\n {title && <h5 className=\"font-semibold mb-1\">{title}</h5>}\n <div className=\"text-sm\">{children}</div>\n </div>\n\n {dismissible && onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"flex-shrink-0 rounded-lg p-1.5 inline-flex focus:outline-none focus:ring-2\",\n iconColors[variant],\n \"hover:bg-black hover:bg-opacity-10\"\n )}\n aria-label=\"Close\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n centered?: boolean;\n padding?: boolean;\n}\n\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n (\n {\n className,\n maxWidth = \"xl\",\n centered = true,\n padding = true,\n children,\n ...props\n },\n ref\n ) => {\n const maxWidths = {\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n maxWidths[maxWidth],\n centered && \"mx-auto\",\n padding && \"px-4 sm:px-6 lg:px-8\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nContainer.displayName = \"Container\";\n\nexport { Container };\n","import React from \"react\";\n\ninterface SectionLayoutProps {\n children: React.ReactNode;\n hasStickyPreview?: boolean;\n}\n\n/**\n * SectionLayout - Wrapper component for showcase sections\n *\n * @param hasStickyPreview - When true, expects the first child to be a sticky preview section\n * that stays at the top while the rest of the content scrolls\n */\nexport function SectionLayout({\n children,\n hasStickyPreview = false,\n}: SectionLayoutProps) {\n if (!hasStickyPreview) {\n // Normal layout - just render children with spacing\n return <>{children}</>;\n }\n\n // Convert children to array to separate sticky preview from scrollable content\n const childArray = React.Children.toArray(children);\n\n if (childArray.length === 0) {\n return null;\n }\n\n // First child is the sticky preview\n const stickyPreview = childArray[0];\n\n // Rest are scrollable content\n const scrollableContent = childArray.slice(1);\n\n return (\n <>\n {/* Sticky Preview at Top */}\n {stickyPreview}\n\n {/* Scrollable Content Below */}\n {scrollableContent.length > 0 && (\n <div className=\"space-y-8\">{scrollableContent}</div>\n )}\n </>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Menu, X } from \"lucide-react\";\n\nexport interface NavItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n}\n\nexport interface SidebarNavProps {\n title: string;\n subtitle?: string;\n items: NavItem[];\n activeItem: string;\n onItemClick: (itemId: string) => void;\n footer?: React.ReactNode;\n position?: \"left\" | \"right\";\n}\n\nexport function SidebarNav({\n title,\n subtitle,\n items,\n activeItem,\n onItemClick,\n footer,\n position = \"right\",\n}: SidebarNavProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n\n const isLeft = position === \"left\";\n\n const handleItemClick = (itemId: string) => {\n onItemClick(itemId);\n setMobileMenuOpen(false);\n };\n\n return (\n <>\n {/* Mobile Header */}\n <div className=\"lg:hidden fixed top-0 left-0 right-0 z-50 bg-white border-b border-gray-200 px-4 py-3\">\n <div\n className={`flex items-center ${\n isLeft ? \"justify-between\" : \"justify-between flex-row-reverse\"\n }`}\n >\n <button\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n className=\"p-2 rounded-lg hover:bg-gray-100 transition-colors\"\n aria-label=\"Toggle menu\"\n >\n {mobileMenuOpen ? (\n <X className=\"w-6 h-6 text-gray-700\" />\n ) : (\n <Menu className=\"w-6 h-6 text-gray-700\" />\n )}\n </button>\n <div>\n <h1 className=\"text-lg font-bold text-gray-900\">{title}</h1>\n {subtitle && <p className=\"text-xs text-gray-500\">{subtitle}</p>}\n </div>\n </div>\n </div>\n\n {/* Mobile Menu Overlay - Overlays main content without shifting */}\n {mobileMenuOpen && (\n <div\n className=\"fixed inset-0 bg-black/50 lg:hidden\"\n style={{ zIndex: 35 }}\n onClick={() => setMobileMenuOpen(false)}\n />\n )}\n\n {/* Sidebar Navigation */}\n <aside\n className={`\n fixed top-0 h-screen w-64 bg-white z-40\n transition-transform duration-300 ease-in-out overflow-y-auto\n ${isLeft ? \"left-0 border-r\" : \"right-0 border-l\"} border-gray-200\n lg:translate-x-0\n ${\n mobileMenuOpen\n ? \"translate-x-0\"\n : `${\n isLeft ? \"-translate-x-full\" : \"translate-x-full\"\n } lg:translate-x-0`\n }\n `}\n >\n {/* Desktop Header */}\n <div className=\"hidden lg:block p-6 border-b border-gray-200\">\n <h1 className=\"text-xl font-bold text-gray-900\">{title}</h1>\n {subtitle && <p className=\"text-xs text-gray-500 mt-1\">{subtitle}</p>}\n </div>\n\n {/* Mobile Header Spacer */}\n <div className=\"lg:hidden h-[57px]\" aria-hidden=\"true\" />\n\n {/* Navigation Items */}\n <nav className=\"p-4\">\n <ul className=\"space-y-1\">\n {items.map((item) => (\n <li key={item.id}>\n <button\n onClick={() => handleItemClick(item.id)}\n className={`\n w-full flex items-center gap-3 px-4 py-3 rounded-lg text-sm font-medium transition-colors\n ${\n activeItem === item.id\n ? \"bg-blue-50 text-blue-700\"\n : \"text-gray-700 hover:bg-gray-50\"\n }\n `}\n >\n {item.icon && <span className=\"shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n </button>\n </li>\n ))}\n </ul>\n </nav>\n\n {/* Footer */}\n {footer && (\n <div className=\"p-4 border-t border-gray-200 mt-auto\">{footer}</div>\n )}\n </aside>\n </>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center py-12 px-4\",\n className\n )}\n {...props}\n >\n {icon && <div className=\"mb-4 text-gray-400\">{icon}</div>}\n\n <h3 className=\"text-lg font-semibold text-gray-900 mb-2\">{title}</h3>\n\n {description && (\n <p className=\"text-sm text-gray-500 mb-6 max-w-sm\">{description}</p>\n )}\n\n {action && <div>{action}</div>}\n </div>\n );\n }\n);\n\nEmptyState.displayName = \"EmptyState\";\n\nexport { EmptyState };\n"],"mappings":"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","names":["React","jsx","jsxs","React","React","jsx","React","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","useState","jsx","jsxs","React","jsx","jsxs","React","React","jsx","React","React","jsx","jsxs","useState","Fragment","jsx","jsxs","React","jsx","jsxs","React"]}
1
+ {"version":3,"sources":["../src/ui/button.tsx","../src/lib/utils.ts","../src/ui/input.tsx","../src/ui/card.tsx","../src/ui/badge.tsx","../src/ui/checkbox.tsx","../src/ui/radio.tsx","../src/ui/dropdown.tsx","../src/ui/spinner.tsx","../src/ui/code-snippet.tsx","../src/feedback/alert.tsx","../src/layout/container.tsx","../src/layout/section-layout.tsx","../src/layout/nav.tsx","../src/layout/drawer.tsx","../src/layout/sidebar-nav.tsx","../src/shared/empty-state.tsx","../src/shared/contexts/ThemeContext.tsx","../src/styles/themes/default.json"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"md\",\n isLoading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseStyles =\n \"inline-flex items-center justify-center transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\";\n\n // Use CSS variables for theming\n const variants = {\n primary:\n \"[background-color:var(--color-primary)] text-white hover:[background-color:var(--color-primary-hover)] focus:[--tw-ring-color:var(--color-primary)]\",\n secondary:\n \"[background-color:var(--color-secondary)] text-white hover:[background-color:var(--color-secondary-hover)] focus:[--tw-ring-color:var(--color-secondary)]\",\n outline:\n \"border-2 [border-color:var(--color-primary)] [color:var(--color-primary)] hover:bg-blue-50 focus:[--tw-ring-color:var(--color-primary)]\",\n ghost: \"text-gray-700 hover:bg-gray-100 focus:ring-gray-500\",\n danger:\n \"[background-color:var(--color-error)] text-white hover:bg-red-700 focus:[--tw-ring-color:var(--color-error)]\",\n };\n\n const sizes = {\n xs: \"[font-size:var(--button-font-size-xs)] [padding-left:var(--button-padding-xs-x)] [padding-right:var(--button-padding-xs-x)] [padding-top:var(--button-padding-xs-y)] [padding-bottom:var(--button-padding-xs-y)] gap-1\",\n sm: \"[font-size:var(--button-font-size-sm)] [padding-left:var(--button-padding-sm-x)] [padding-right:var(--button-padding-sm-x)] [padding-top:var(--button-padding-sm-y)] [padding-bottom:var(--button-padding-sm-y)] gap-1.5\",\n md: \"[font-size:var(--button-font-size-md)] [padding-left:var(--button-padding-md-x)] [padding-right:var(--button-padding-md-x)] [padding-top:var(--button-padding-md-y)] [padding-bottom:var(--button-padding-md-y)] gap-2\",\n lg: \"[font-size:var(--button-font-size-lg)] [padding-left:var(--button-padding-lg-x)] [padding-right:var(--button-padding-lg-x)] [padding-top:var(--button-padding-lg-y)] [padding-bottom:var(--button-padding-lg-y)] gap-2.5\",\n xl: \"[font-size:var(--button-font-size-xl)] [padding-left:var(--button-padding-xl-x)] [padding-right:var(--button-padding-xl-x)] [padding-top:var(--button-padding-xl-y)] [padding-bottom:var(--button-padding-xl-y)] gap-3\",\n };\n\n const radiusStyle = \"[border-radius:var(--button-radius)]\";\n const fontWeightStyle = \"[font-weight:var(--button-font-weight)]\";\n\n return (\n <button\n ref={ref}\n className={cn(\n baseStyles,\n variants[variant],\n sizes[size],\n radiusStyle,\n fontWeightStyle,\n className\n )}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n {!isLoading && leftIcon && leftIcon}\n {children}\n {!isLoading && rightIcon && rightIcon}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n","import { clsx, type ClassValue } from \"clsx\";\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs);\n}\n","import React, { useId } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n helperText?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type = \"text\",\n label,\n error,\n helperText,\n leftIcon,\n rightIcon,\n fullWidth = false,\n id,\n ...props\n },\n ref\n ) => {\n const autoId = useId();\n const inputId = id || `input-${autoId}`;\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label\n htmlFor={inputId}\n className=\"block text-sm font-semibold text-gray-600 mb-1\"\n >\n {label}\n {props.required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none text-gray-400\">\n {leftIcon}\n </div>\n )}\n\n <input\n ref={ref}\n type={type}\n id={inputId}\n className={cn(\n \"w-full px-3 py-2 border rounded-md transition-colors\",\n \"text-gray-700 placeholder-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\n \"disabled:bg-gray-100 disabled:cursor-not-allowed disabled:text-gray-500\",\n error ? \"border-red-500 focus:ring-red-500\" : \"border-gray-400\",\n leftIcon && \"pl-10\",\n rightIcon && \"pr-10\",\n className\n )}\n {...props}\n />\n\n {rightIcon && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-gray-400\">\n {rightIcon}\n </div>\n )}\n </div>\n\n {error && <p className=\"mt-1 text-sm text-red-600\">{error}</p>}\n\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-gray-500\">{helperText}</p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"bordered\" | \"elevated\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n hoverable?: boolean;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n padding = \"md\",\n hoverable = false,\n children,\n ...props\n },\n ref\n ) => {\n const baseStyles = \"bg-white rounded-lg\";\n\n const variants = {\n default: \"border border-gray-200\",\n bordered: \"border-2 border-gray-300\",\n elevated: \"shadow-md\",\n };\n\n const paddings = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n };\n\n const hoverStyles = hoverable\n ? \"hover:shadow-lg transition-shadow cursor-pointer\"\n : \"\";\n\n return (\n <div\n ref={ref}\n className={cn(\n baseStyles,\n variants[variant],\n paddings[padding],\n hoverStyles,\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-lg font-semibold text-gray-800\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-gray-600\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n};\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n dot?: boolean;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n dot = false,\n children,\n ...props\n },\n ref\n ) => {\n const baseStyles = \"inline-flex items-center font-medium rounded-full\";\n\n const variants = {\n default: \"bg-gray-100 text-gray-800\",\n primary: \"bg-blue-100 text-blue-800\",\n success: \"bg-green-100 text-green-800\",\n warning: \"bg-yellow-100 text-yellow-800\",\n danger: \"bg-red-100 text-red-800\",\n info: \"bg-cyan-100 text-cyan-800\",\n };\n\n const sizes = {\n xs: \"text-[0.625rem] px-1.5 py-0.5\",\n sm: \"text-xs px-2 py-0.5\",\n md: \"text-sm px-2.5 py-1\",\n lg: \"text-base px-3 py-1.5\",\n xl: \"text-lg px-3.5 py-2\",\n };\n\n const dotVariants = {\n default: \"bg-gray-600\",\n primary: \"bg-blue-600\",\n success: \"bg-green-600\",\n warning: \"bg-yellow-600\",\n danger: \"bg-red-600\",\n info: \"bg-cyan-600\",\n };\n\n return (\n <span\n ref={ref}\n className={cn(baseStyles, variants[variant], sizes[size], className)}\n {...props}\n >\n {dot && (\n <span\n className={cn(\"w-2 h-2 rounded-full mr-1.5\", dotVariants[variant])}\n />\n )}\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge };\n","import { useId } from \"react\";\nimport { cn } from \"../lib/utils\";\n\ninterface CheckboxProps {\n label?: string;\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n id?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nexport function Checkbox({\n label,\n checked = false,\n onChange,\n disabled = false,\n className,\n id,\n size = \"md\",\n}: CheckboxProps) {\n // Auto-generate ID if not provided to ensure label clicking works\n const autoId = useId();\n const checkboxId = id || `checkbox-${autoId}`;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e.target.checked);\n }\n };\n\n const sizeStyles = {\n xs: `[width:var(--checkbox-size-xs)] [height:var(--checkbox-size-xs)]`,\n sm: `[width:var(--checkbox-size-sm)] [height:var(--checkbox-size-sm)]`,\n md: `[width:var(--checkbox-size-md)] [height:var(--checkbox-size-md)]`,\n lg: `[width:var(--checkbox-size-lg)] [height:var(--checkbox-size-lg)]`,\n xl: `[width:var(--checkbox-size-xl)] [height:var(--checkbox-size-xl)]`,\n };\n\n const labelSizeStyles = {\n xs: `[font-size:var(--checkbox-label-font-size-xs)]`,\n sm: `[font-size:var(--checkbox-label-font-size-sm)]`,\n md: `[font-size:var(--checkbox-label-font-size-md)]`,\n lg: `[font-size:var(--checkbox-label-font-size-lg)]`,\n xl: `[font-size:var(--checkbox-label-font-size-xl)]`,\n };\n\n const labelSpacingStyles = {\n xs: `[margin-left:var(--checkbox-label-spacing-xs)]`,\n sm: `[margin-left:var(--checkbox-label-spacing-sm)]`,\n md: `[margin-left:var(--checkbox-label-spacing-md)]`,\n lg: `[margin-left:var(--checkbox-label-spacing-lg)]`,\n xl: `[margin-left:var(--checkbox-label-spacing-xl)]`,\n };\n\n return (\n <div className={cn(\"flex items-center\", className)}>\n <input\n type=\"checkbox\"\n id={checkboxId}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n sizeStyles[size],\n \"rounded-(--checkbox-radius) border-gray-400 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className={cn(\n labelSpacingStyles[size],\n labelSizeStyles[size],\n \"font-medium text-gray-600\",\n disabled && \"cursor-not-allowed opacity-50\",\n !disabled && \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n\ninterface CheckboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface CheckboxGroupProps {\n label?: string;\n name: string;\n options: CheckboxOption[];\n value?: string[];\n onChange?: (value: string[]) => void;\n className?: string;\n orientation?: \"vertical\" | \"horizontal\";\n required?: boolean;\n disabled?: boolean;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nexport function CheckboxGroup({\n label,\n name,\n options,\n value = [],\n onChange,\n className,\n orientation = \"vertical\",\n required = false,\n disabled = false,\n size = \"md\",\n}: CheckboxGroupProps) {\n const handleChange = (optionValue: string, checked: boolean) => {\n if (onChange) {\n if (checked) {\n onChange([...value, optionValue]);\n } else {\n onChange(value.filter((v) => v !== optionValue));\n }\n }\n };\n\n const sizeStyles = {\n xs: `[width:var(--checkbox-size-xs)] [height:var(--checkbox-size-xs)]`,\n sm: `[width:var(--checkbox-size-sm)] [height:var(--checkbox-size-sm)]`,\n md: `[width:var(--checkbox-size-md)] [height:var(--checkbox-size-md)]`,\n lg: `[width:var(--checkbox-size-lg)] [height:var(--checkbox-size-lg)]`,\n xl: `[width:var(--checkbox-size-xl)] [height:var(--checkbox-size-xl)]`,\n };\n\n const labelSizeStyles = {\n xs: `[font-size:var(--checkbox-label-font-size-xs)]`,\n sm: `[font-size:var(--checkbox-label-font-size-sm)]`,\n md: `[font-size:var(--checkbox-label-font-size-md)]`,\n lg: `[font-size:var(--checkbox-label-font-size-lg)]`,\n xl: `[font-size:var(--checkbox-label-font-size-xl)]`,\n };\n\n const labelSpacingStyles = {\n xs: `[margin-left:var(--checkbox-label-spacing-xs)]`,\n sm: `[margin-left:var(--checkbox-label-spacing-sm)]`,\n md: `[margin-left:var(--checkbox-label-spacing-md)]`,\n lg: `[margin-left:var(--checkbox-label-spacing-lg)]`,\n xl: `[margin-left:var(--checkbox-label-spacing-xl)]`,\n };\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-semibold text-gray-600 mb-1\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n <div\n className={cn(\n \"space-y-2\",\n orientation === \"horizontal\" && \"flex flex-wrap gap-4 space-y-0\"\n )}\n >\n {options.map((option) => {\n const isDisabled = disabled || option.disabled;\n return (\n <div key={option.value} className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id={`${name}-${option.value}`}\n name={name}\n value={option.value}\n checked={value.includes(option.value)}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n disabled={isDisabled}\n className={cn(\n sizeStyles[size],\n \"rounded-(--checkbox-radius) border-gray-400 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n <label\n htmlFor={`${name}-${option.value}`}\n className={cn(\n labelSpacingStyles[size],\n labelSizeStyles[size],\n \"font-medium text-gray-600\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n !isDisabled && \"cursor-pointer\"\n )}\n >\n {option.label}\n </label>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cn } from \"../lib/utils\";\n\ninterface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface RadioGroupProps {\n label?: string;\n name: string;\n options: RadioOption[];\n value?: string;\n onChange?: (value: string) => void;\n className?: string;\n orientation?: \"vertical\" | \"horizontal\";\n required?: boolean;\n disabled?: boolean;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nexport function RadioGroup({\n label,\n name,\n options,\n value,\n onChange,\n className,\n orientation = \"vertical\",\n required = false,\n disabled = false,\n size = \"md\",\n}: RadioGroupProps) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e.target.value);\n }\n };\n\n const sizeStyles = {\n xs: `[width:var(--radio-size-xs)] [height:var(--radio-size-xs)]`,\n sm: `[width:var(--radio-size-sm)] [height:var(--radio-size-sm)]`,\n md: `[width:var(--radio-size-md)] [height:var(--radio-size-md)]`,\n lg: `[width:var(--radio-size-lg)] [height:var(--radio-size-lg)]`,\n xl: `[width:var(--radio-size-xl)] [height:var(--radio-size-xl)]`,\n };\n\n const labelSizeStyles = {\n xs: `[font-size:var(--radio-label-font-size-xs)]`,\n sm: `[font-size:var(--radio-label-font-size-sm)]`,\n md: `[font-size:var(--radio-label-font-size-md)]`,\n lg: `[font-size:var(--radio-label-font-size-lg)]`,\n xl: `[font-size:var(--radio-label-font-size-xl)]`,\n };\n\n const labelSpacingStyles = {\n xs: `[margin-left:var(--radio-label-spacing-xs)]`,\n sm: `[margin-left:var(--radio-label-spacing-sm)]`,\n md: `[margin-left:var(--radio-label-spacing-md)]`,\n lg: `[margin-left:var(--radio-label-spacing-lg)]`,\n xl: `[margin-left:var(--radio-label-spacing-xl)]`,\n };\n\n return (\n <div className={className}>\n {label && (\n <label className=\"block text-sm font-semibold text-gray-600 mb-1\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n <div\n className={cn(\n orientation === \"vertical\" && \"space-y-2\",\n orientation === \"horizontal\" && \"flex flex-wrap gap-4\"\n )}\n >\n {options.map((option) => {\n const isDisabled = disabled || option.disabled;\n return (\n <div key={option.value} className=\"flex items-center\">\n <input\n type=\"radio\"\n id={`${name}-${option.value}`}\n name={name}\n value={option.value}\n checked={value === option.value}\n onChange={handleChange}\n disabled={isDisabled}\n className={cn(\n sizeStyles[size],\n \"border-gray-400 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n <label\n htmlFor={`${name}-${option.value}`}\n className={cn(\n labelSpacingStyles[size],\n labelSizeStyles[size],\n \"font-medium text-gray-600\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n !isDisabled && \"cursor-pointer\"\n )}\n >\n {option.label}\n </label>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useRef, useEffect, ReactNode } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface DropdownOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface DropdownProps {\n /**\n * Label text displayed above the dropdown\n */\n label?: string;\n /**\n * Placeholder text when no option is selected\n */\n placeholder?: string;\n /**\n * Array of options for the dropdown\n */\n options?: DropdownOption[];\n /**\n * Current selected value\n */\n value?: string | number;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string | number) => void;\n /**\n * Custom content to render in the dropdown menu (overrides options)\n */\n children?: ReactNode;\n /**\n * Disable the dropdown\n */\n disabled?: boolean;\n /**\n * Error message to display\n */\n error?: string;\n /**\n * Helper text to display below the dropdown\n */\n helperText?: string;\n /**\n * Mark the field as required\n */\n required?: boolean;\n /**\n * Size of the dropdown\n */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport function Dropdown({\n label,\n placeholder = \"Select an option\",\n options = [],\n value,\n onChange,\n children,\n disabled = false,\n error,\n helperText,\n required = false,\n size = \"md\",\n className = \"\",\n}: DropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Get the display text for the selected value\n const getSelectedLabel = () => {\n if (!value) return placeholder;\n const selected = options.find((opt) => opt.value === value);\n return selected ? selected.label : placeholder;\n };\n\n const sizeStyles = {\n xs: `[padding-left:var(--dropdown-padding-xs-x)] [padding-right:var(--dropdown-padding-xs-x)] [padding-top:var(--dropdown-padding-xs-y)] [padding-bottom:var(--dropdown-padding-xs-y)] [font-size:var(--dropdown-font-size-xs)]`,\n sm: `[padding-left:var(--dropdown-padding-sm-x)] [padding-right:var(--dropdown-padding-sm-x)] [padding-top:var(--dropdown-padding-sm-y)] [padding-bottom:var(--dropdown-padding-sm-y)] [font-size:var(--dropdown-font-size-sm)]`,\n md: `[padding-left:var(--dropdown-padding-md-x)] [padding-right:var(--dropdown-padding-md-x)] [padding-top:var(--dropdown-padding-md-y)] [padding-bottom:var(--dropdown-padding-md-y)] [font-size:var(--dropdown-font-size-md)]`,\n lg: `[padding-left:var(--dropdown-padding-lg-x)] [padding-right:var(--dropdown-padding-lg-x)] [padding-top:var(--dropdown-padding-lg-y)] [padding-bottom:var(--dropdown-padding-lg-y)] [font-size:var(--dropdown-font-size-lg)]`,\n xl: `[padding-left:var(--dropdown-padding-xl-x)] [padding-right:var(--dropdown-padding-xl-x)] [padding-top:var(--dropdown-padding-xl-y)] [padding-bottom:var(--dropdown-padding-xl-y)] [font-size:var(--dropdown-font-size-xl)]`,\n };\n\n const iconSizeStyles = {\n xs: `[width:var(--dropdown-icon-size-xs)] [height:var(--dropdown-icon-size-xs)]`,\n sm: `[width:var(--dropdown-icon-size-sm)] [height:var(--dropdown-icon-size-sm)]`,\n md: `[width:var(--dropdown-icon-size-md)] [height:var(--dropdown-icon-size-md)]`,\n lg: `[width:var(--dropdown-icon-size-lg)] [height:var(--dropdown-icon-size-lg)]`,\n xl: `[width:var(--dropdown-icon-size-xl)] [height:var(--dropdown-icon-size-xl)]`,\n };\n\n const optionSizeStyles = {\n xs: `[padding-left:var(--dropdown-option-padding-xs-x)] [padding-right:var(--dropdown-option-padding-xs-x)] [padding-top:var(--dropdown-option-padding-xs-y)] [padding-bottom:var(--dropdown-option-padding-xs-y)] [font-size:var(--dropdown-option-font-size-xs)]`,\n sm: `[padding-left:var(--dropdown-option-padding-sm-x)] [padding-right:var(--dropdown-option-padding-sm-x)] [padding-top:var(--dropdown-option-padding-sm-y)] [padding-bottom:var(--dropdown-option-padding-sm-y)] [font-size:var(--dropdown-option-font-size-sm)]`,\n md: `[padding-left:var(--dropdown-option-padding-md-x)] [padding-right:var(--dropdown-option-padding-md-x)] [padding-top:var(--dropdown-option-padding-md-y)] [padding-bottom:var(--dropdown-option-padding-md-y)] [font-size:var(--dropdown-option-font-size-md)]`,\n lg: `[padding-left:var(--dropdown-option-padding-lg-x)] [padding-right:var(--dropdown-option-padding-lg-x)] [padding-top:var(--dropdown-option-padding-lg-y)] [padding-bottom:var(--dropdown-option-padding-lg-y)] [font-size:var(--dropdown-option-font-size-lg)]`,\n xl: `[padding-left:var(--dropdown-option-padding-xl-x)] [padding-right:var(--dropdown-option-padding-xl-x)] [padding-top:var(--dropdown-option-padding-xl-y)] [padding-bottom:var(--dropdown-option-padding-xl-y)] [font-size:var(--dropdown-option-font-size-xl)]`,\n };\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const handleSelect = (optionValue: string | number) => {\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setIsOpen(!isOpen);\n } else if (e.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n return (\n <div className={`w-full ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"block text-sm font-semibold text-gray-600 mb-1\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n\n {/* Dropdown Container */}\n <div ref={dropdownRef} className=\"relative\">\n {/* Trigger Button */}\n <button\n type=\"button\"\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n className={`\n w-full ${\n sizeStyles[size]\n } text-left bg-white border rounded-(--dropdown-radius)\n flex items-center justify-between\n transition-all duration-200\n ${\n error\n ? \"border-red-500 focus:ring-2 focus:ring-red-200 focus:border-red-500\"\n : \"border-gray-400 focus:ring-2 focus:ring-blue-200 focus:border-blue-500\"\n }\n ${\n disabled\n ? \"bg-gray-100 cursor-not-allowed opacity-60\"\n : \"hover:border-gray-400\"\n }\n ${!value ? \"text-gray-400\" : \"text-gray-900\"}\n `}\n >\n <span className=\"truncate\">{getSelectedLabel()}</span>\n <ChevronDown\n className={`${\n iconSizeStyles[size]\n } text-gray-400 transition-transform duration-200 shrink-0 ml-2 ${\n isOpen ? \"transform rotate-180\" : \"\"\n }`}\n />\n </button>\n\n {/* Dropdown Menu */}\n {isOpen && !disabled && (\n <div\n className=\"absolute z-50 w-full mt-1 bg-white border border-gray-400 rounded-lg shadow-lg max-h-60 overflow-auto\"\n role=\"listbox\"\n >\n {children ? (\n // Custom content\n <div onClick={() => setIsOpen(false)}>{children}</div>\n ) : (\n // Standard options\n <ul>\n {options.map((option) => (\n <li key={option.value}>\n <button\n type=\"button\"\n onClick={() =>\n !option.disabled && handleSelect(option.value)\n }\n disabled={option.disabled}\n className={`\n w-full ${optionSizeStyles[size]} text-left\n transition-colors duration-150\n ${\n option.value === value\n ? \"bg-blue-50 text-blue-700 font-medium\"\n : \"text-gray-900 hover:bg-gray-100\"\n }\n ${\n option.disabled ? \"opacity-50 cursor-not-allowed\" : \"\"\n }\n `}\n role=\"option\"\n aria-selected={option.value === value}\n >\n {option.label}\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n </div>\n\n {/* Helper Text or Error */}\n {(helperText || error) && (\n <p\n className={`mt-1 text-xs ${error ? \"text-red-600\" : \"text-gray-500\"}`}\n >\n {error || helperText}\n </p>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n color?: \"primary\" | \"secondary\" | \"white\";\n label?: string;\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = \"md\", color = \"primary\", label, ...props }, ref) => {\n const sizes = {\n sm: \"h-4 w-4\",\n md: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n };\n\n const colors = {\n primary: \"text-blue-600\",\n secondary: \"text-gray-600\",\n white: \"text-white\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center gap-2\",\n className\n )}\n {...props}\n >\n <svg\n className={cn(\"animate-spin\", sizes[size], colors[color])}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n {label && <p className=\"text-sm text-gray-600\">{label}</p>}\n </div>\n );\n }\n);\n\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { vscDarkPlus } from \"react-syntax-highlighter/dist/esm/styles/prism\";\n\ninterface CodeSnippetProps {\n code: string;\n language?: string;\n}\n\nexport function CodeSnippet({ code, language = \"tsx\" }: CodeSnippetProps) {\n const [copied, setCopied] = useState(false);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n return (\n <div className=\"relative group\">\n {/* Copy Button */}\n <div className=\"absolute right-3 top-3 z-10\">\n <button\n onClick={handleCopy}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n className=\"p-2 rounded-md bg-gray-800 hover:bg-gray-700 text-gray-400 hover:text-gray-200 transition-all duration-200 border border-gray-700 hover:border-gray-600 shadow-lg\"\n aria-label=\"Copy code\"\n >\n {copied ? (\n // Check icon\n <svg\n className=\"w-4 h-4 text-green-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n ) : (\n // Copy icon\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n )}\n </button>\n\n {/* Tooltip */}\n {showTooltip && !copied && (\n <div className=\"absolute right-0 top-full mt-2 px-2 py-1 bg-gray-800 text-white text-xs rounded shadow-lg whitespace-nowrap border border-gray-700\">\n Copy code\n <div className=\"absolute -top-1 right-3 w-2 h-2 bg-gray-800 border-l border-t border-gray-700 transform rotate-45\"></div>\n </div>\n )}\n\n {copied && (\n <div className=\"absolute right-0 top-full mt-2 px-2 py-1 bg-green-600 text-white text-xs rounded shadow-lg whitespace-nowrap\">\n Copied!\n <div className=\"absolute -top-1 right-3 w-2 h-2 bg-green-600 transform rotate-45\"></div>\n </div>\n )}\n </div>\n\n {/* Code Block with Syntax Highlighting */}\n <div className=\"rounded-lg overflow-hidden border border-gray-800\">\n {/* @ts-expect-error - SyntaxHighlighter has typing issues with React 19 */}\n <SyntaxHighlighter\n language={language}\n style={vscDarkPlus}\n customStyle={{\n margin: 0,\n padding: \"1rem 3.5rem 1rem 1rem\",\n fontSize: \"0.875rem\",\n lineHeight: \"1.5\",\n background: \"#1a1b26\",\n }}\n showLineNumbers={false}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n dismissible?: boolean;\n onDismiss?: () => void;\n icon?: React.ReactNode;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"info\",\n title,\n dismissible = false,\n onDismiss,\n icon,\n children,\n ...props\n },\n ref\n ) => {\n const variants = {\n info: \"bg-blue-50 border-blue-200 text-blue-800\",\n success: \"bg-green-50 border-green-200 text-green-800\",\n warning: \"bg-yellow-50 border-yellow-200 text-yellow-800\",\n error: \"bg-red-50 border-red-200 text-red-800\",\n };\n\n const iconColors = {\n info: \"text-blue-500\",\n success: \"text-green-500\",\n warning: \"text-yellow-500\",\n error: \"text-red-500\",\n };\n\n const defaultIcons = {\n info: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n success: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n warning: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n error: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative border rounded-lg p-4\",\n variants[variant],\n className\n )}\n role=\"alert\"\n {...props}\n >\n <div className=\"flex items-start gap-3\">\n <div className={cn(\"flex-shrink-0\", iconColors[variant])}>\n {icon || defaultIcons[variant]}\n </div>\n\n <div className=\"flex-1\">\n {title && <h5 className=\"font-semibold mb-1\">{title}</h5>}\n <div className=\"text-sm\">{children}</div>\n </div>\n\n {dismissible && onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"flex-shrink-0 rounded-lg p-1.5 inline-flex focus:outline-none focus:ring-2\",\n iconColors[variant],\n \"hover:bg-black hover:bg-opacity-10\"\n )}\n aria-label=\"Close\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n centered?: boolean;\n padding?: boolean;\n}\n\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n (\n {\n className,\n maxWidth = \"xl\",\n centered = true,\n padding = true,\n children,\n ...props\n },\n ref\n ) => {\n const maxWidths = {\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n maxWidths[maxWidth],\n centered && \"mx-auto\",\n padding && \"px-4 sm:px-6 lg:px-8\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nContainer.displayName = \"Container\";\n\nexport { Container };\n","import React from \"react\";\n\ninterface SectionLayoutProps {\n children: React.ReactNode;\n hasStickyPreview?: boolean;\n}\n\n/**\n * SectionLayout - Wrapper component for showcase sections\n *\n * @param hasStickyPreview - When true, expects the first child to be a sticky preview section\n * that stays at the top while the rest of the content scrolls\n */\nexport function SectionLayout({\n children,\n hasStickyPreview = false,\n}: SectionLayoutProps) {\n if (!hasStickyPreview) {\n // Normal layout - just render children with spacing\n return <>{children}</>;\n }\n\n // Convert children to array to separate sticky preview from scrollable content\n const childArray = React.Children.toArray(children);\n\n if (childArray.length === 0) {\n return null;\n }\n\n // First child is the sticky preview\n const stickyPreview = childArray[0];\n\n // Rest are scrollable content\n const scrollableContent = childArray.slice(1);\n\n return (\n <>\n {/* Sticky Preview at Top */}\n {stickyPreview}\n\n {/* Scrollable Content Below */}\n {scrollableContent.length > 0 && (\n <div className=\"space-y-8\">{scrollableContent}</div>\n )}\n </>\n );\n}\n","\"use client\";\n\nimport React, { useState, useEffect, useRef } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Menu, X, ChevronDown } from \"lucide-react\";\n\nexport interface NavItem {\n id: string;\n label?: string;\n type?: \"link\" | \"button\" | \"dropdown\" | \"divider\" | \"custom\";\n href?: string;\n onClick?: () => void;\n icon?: React.ReactNode;\n badge?: string | number;\n disabled?: boolean;\n target?: \"_blank\" | \"_self\";\n children?: NavItem[];\n render?: () => React.ReactNode;\n}\n\nexport interface NavProps extends React.HTMLAttributes<HTMLElement> {\n items: NavItem[];\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n mobileBreakpoint?: \"sm\" | \"md\" | \"lg\";\n mobileMenuDirection?: \"top\" | \"left\" | \"right\";\n logo?: React.ReactNode;\n actions?: React.ReactNode;\n sticky?: boolean;\n activeId?: string;\n onItemClick?: (item: NavItem) => void;\n}\n\nconst Nav = React.forwardRef<HTMLElement, NavProps>(\n (\n {\n className,\n items,\n variant = \"primary\",\n orientation = \"horizontal\",\n size = \"md\",\n mobileBreakpoint = \"md\",\n mobileMenuDirection = \"top\",\n logo,\n actions,\n sticky = false,\n activeId,\n onItemClick,\n ...props\n },\n ref\n ) => {\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\n const [openDropdownId, setOpenDropdownId] = useState<string | null>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setOpenDropdownId(null);\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n // Close mobile menu on escape\n useEffect(() => {\n function handleEscape(event: KeyboardEvent) {\n if (event.key === \"Escape\") {\n setIsMobileMenuOpen(false);\n setOpenDropdownId(null);\n }\n }\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, []);\n\n // Close mobile menu when direction changes\n useEffect(() => {\n setIsMobileMenuOpen(false);\n }, [mobileMenuDirection]);\n\n // Base styles using CSS variables\n const baseStyles = cn(\n \"bg-[var(--color-background)] border-b border-[var(--color-border)]\",\n sticky && \"sticky top-0 [z-index:var(--z-index-nav)]\"\n );\n\n // Container styles\n const containerStyles = cn(\n \"[min-height:var(--nav-height)]\",\n \"flex items-center justify-between\",\n \"px-[var(--spacing-lg)]\"\n );\n\n // Size-based padding styles using CSS variables\n const itemPaddingStyles = {\n xs: \"[padding-left:var(--nav-item-padding-xs-x)] [padding-right:var(--nav-item-padding-xs-x)] [padding-top:var(--nav-item-padding-xs-y)] [padding-bottom:var(--nav-item-padding-xs-y)]\",\n sm: \"[padding-left:var(--nav-item-padding-sm-x)] [padding-right:var(--nav-item-padding-sm-x)] [padding-top:var(--nav-item-padding-sm-y)] [padding-bottom:var(--nav-item-padding-sm-y)]\",\n md: \"[padding-left:var(--nav-item-padding-md-x)] [padding-right:var(--nav-item-padding-md-x)] [padding-top:var(--nav-item-padding-md-y)] [padding-bottom:var(--nav-item-padding-md-y)]\",\n lg: \"[padding-left:var(--nav-item-padding-lg-x)] [padding-right:var(--nav-item-padding-lg-x)] [padding-top:var(--nav-item-padding-lg-y)] [padding-bottom:var(--nav-item-padding-lg-y)]\",\n xl: \"[padding-left:var(--nav-item-padding-xl-x)] [padding-right:var(--nav-item-padding-xl-x)] [padding-top:var(--nav-item-padding-xl-y)] [padding-bottom:var(--nav-item-padding-xl-y)]\",\n };\n\n const fontSizeStyles = {\n xs: \"[font-size:var(--nav-font-size-xs)]\",\n sm: \"[font-size:var(--nav-font-size-sm)]\",\n md: \"[font-size:var(--nav-font-size-md)]\",\n lg: \"[font-size:var(--nav-font-size-lg)]\",\n xl: \"[font-size:var(--nav-font-size-xl)]\",\n };\n\n // Variant styles for items\n const variantItemStyles = {\n primary:\n \"rounded-[var(--nav-border-radius)] hover:bg-blue-50 transition-colors\",\n secondary:\n \"rounded-[var(--nav-border-radius)] hover:bg-[var(--color-muted)] transition-colors\",\n outline: cn(\n \"rounded-[var(--nav-border-radius)] border border-[var(--color-border)] hover:bg-[var(--color-muted)] transition-colors\"\n ),\n ghost:\n \"rounded-[var(--nav-border-radius)] hover:bg-[var(--color-muted)]/50 transition-colors\",\n };\n\n const activeItemStyles = {\n primary: \"bg-blue-100 text-blue-700\",\n secondary: \"bg-[var(--color-muted)] [font-weight:var(--font-semibold)]\",\n outline: \"border-blue-600 bg-blue-50 text-blue-700\",\n ghost: \"bg-[var(--color-muted)]\",\n };\n\n // Breakpoint classes\n const breakpointClasses = {\n sm: \"sm:hidden\",\n md: \"md:hidden\",\n lg: \"lg:hidden\",\n };\n\n const breakpointShowClasses = {\n sm: \"hidden sm:flex\",\n md: \"hidden md:flex\",\n lg: \"hidden lg:flex\",\n };\n\n // Handle item click\n const handleItemClick = (item: NavItem) => {\n if (item.disabled) return;\n\n if (item.type === \"dropdown\") {\n setOpenDropdownId(openDropdownId === item.id ? null : item.id);\n return;\n }\n\n if (item.onClick) {\n item.onClick();\n }\n\n if (onItemClick) {\n onItemClick(item);\n }\n\n // Close mobile menu after navigation\n setIsMobileMenuOpen(false);\n setOpenDropdownId(null);\n };\n\n // Render a single nav item\n const renderNavItem = (item: NavItem, isMobile: boolean = false) => {\n if (item.type === \"divider\") {\n return (\n <div\n key={item.id}\n className={cn(\n orientation === \"horizontal\" &&\n !isMobile &&\n \"h-6 border-l border-[var(--color-border)] mx-2\",\n (orientation === \"vertical\" || isMobile) &&\n \"w-full h-0 border-t border-[var(--color-border)] my-2\"\n )}\n />\n );\n }\n\n if (item.type === \"custom\" && item.render) {\n return <div key={item.id}>{item.render()}</div>;\n }\n\n const isActive = activeId === item.id;\n const isDropdownOpen = openDropdownId === item.id;\n const hasChildren = item.children && item.children.length > 0;\n\n const itemBaseStyles = cn(\n \"flex items-center [gap:var(--nav-gap)] font-medium text-[var(--color-foreground)] cursor-pointer select-none\",\n itemPaddingStyles[size],\n fontSizeStyles[size],\n variantItemStyles[variant],\n isActive && activeItemStyles[variant],\n orientation === \"vertical\" && \"w-full\",\n item.disabled && \"opacity-50 cursor-not-allowed\"\n );\n\n const content = (\n <>\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge && (\n <span className=\"ml-auto px-2 py-0.5 [font-size:var(--text-xs)] font-semibold bg-red-500 text-white rounded-[var(--radius-full)]\">\n {item.badge}\n </span>\n )}\n {hasChildren && (\n <ChevronDown\n className={cn(\n \"w-4 h-4 transition-transform\",\n isDropdownOpen && \"rotate-180\"\n )}\n />\n )}\n </>\n );\n\n // Dropdown item\n if (hasChildren) {\n return (\n <div key={item.id} className=\"relative\" ref={dropdownRef}>\n <button\n onClick={() => handleItemClick(item)}\n className={itemBaseStyles}\n disabled={item.disabled}\n >\n {content}\n </button>\n\n {/* Dropdown Menu */}\n {isDropdownOpen && (\n <div\n className={cn(\n \"absolute left-0 mt-[var(--nav-gap)] min-w-[200px] bg-[var(--color-background)] border border-[var(--color-border)] rounded-[var(--nav-border-radius)] shadow-lg z-50\",\n orientation === \"vertical\" && \"left-full top-0 ml-2 mt-0\"\n )}\n >\n <div className=\"py-1\">\n {item.children!.map((child) => (\n <button\n key={child.id}\n onClick={() => handleItemClick(child)}\n disabled={child.disabled}\n className={cn(\n \"w-full flex items-center gap-2 px-4 py-2 [font-size:var(--text-sm)] text-[var(--color-foreground)] hover:bg-[var(--color-muted)] transition-colors\",\n child.disabled && \"opacity-50 cursor-not-allowed\",\n activeId === child.id &&\n \"bg-[var(--color-muted)] [font-weight:var(--font-semibold)]\"\n )}\n >\n {child.icon && (\n <span className=\"flex-shrink-0\">{child.icon}</span>\n )}\n <span>{child.label}</span>\n {child.badge && (\n <span className=\"ml-auto px-2 py-0.5 [font-size:var(--text-xs)] font-semibold bg-red-500 text-white rounded-[var(--radius-full)]\">\n {child.badge}\n </span>\n )}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n\n // Link item\n if (item.href) {\n return (\n <a\n key={item.id}\n href={item.href}\n target={item.target}\n onClick={() => handleItemClick(item)}\n className={itemBaseStyles}\n >\n {content}\n </a>\n );\n }\n\n // Button item\n return (\n <button\n key={item.id}\n onClick={() => handleItemClick(item)}\n disabled={item.disabled}\n className={itemBaseStyles}\n >\n {content}\n </button>\n );\n };\n\n // Desktop navigation\n const desktopNav = (\n <div\n className={cn(\n \"items-center [gap:var(--nav-gap)]\",\n breakpointShowClasses[mobileBreakpoint],\n orientation === \"horizontal\" ? \"flex flex-row\" : \"flex flex-col\"\n )}\n >\n {items.map((item) => renderNavItem(item))}\n </div>\n );\n\n // Mobile navigation\n const mobileNav = (\n <>\n {/* Hamburger Button */}\n <button\n onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}\n className={cn(\n \"p-2 text-[var(--color-foreground)] hover:bg-[var(--color-muted)] rounded-[var(--nav-border-radius)] transition-colors\",\n breakpointClasses[mobileBreakpoint]\n )}\n aria-label=\"Toggle menu\"\n >\n {isMobileMenuOpen ? (\n <X className=\"w-6 h-6\" />\n ) : (\n <Menu className=\"w-6 h-6\" />\n )}\n </button>\n\n {/* Mobile Menu Overlay */}\n {isMobileMenuOpen && (\n <div\n className={cn(\n \"fixed inset-0 bg-black/50 [z-index:var(--z-index-nav-mobile-overlay)]\",\n breakpointClasses[mobileBreakpoint]\n )}\n onClick={() => setIsMobileMenuOpen(false)}\n />\n )}\n\n {/* Mobile Menu Panel */}\n <div\n className={cn(\n \"fixed bg-[var(--color-background)] shadow-lg [z-index:var(--z-index-nav-mobile-menu)] overflow-y-auto transition-transform duration-300 ease-in-out\",\n breakpointClasses[mobileBreakpoint],\n // Always hide when closed\n !isMobileMenuOpen && \"invisible\",\n // Direction-specific positioning and animation\n mobileMenuDirection === \"top\" && [\n \"top-0 left-0 right-0 border-b border-[var(--color-border)] max-h-screen\",\n isMobileMenuOpen ? \"translate-y-0\" : \"-translate-y-full\",\n ],\n mobileMenuDirection === \"left\" && [\n \"top-0 left-0 bottom-0 w-64 border-r border-[var(--color-border)]\",\n isMobileMenuOpen ? \"translate-x-0\" : \"-translate-x-full\",\n ],\n mobileMenuDirection === \"right\" && [\n \"top-0 right-0 bottom-0 w-64 border-l border-[var(--color-border)]\",\n isMobileMenuOpen ? \"translate-x-0\" : \"translate-x-full\",\n ]\n )}\n >\n <div\n className={cn(\n \"flex flex-col\",\n mobileMenuDirection === \"top\" ? \"py-2\" : \"space-y-1 px-2 pt-2\"\n )}\n >\n {items.map((item) => renderNavItem(item, true))}\n </div>\n </div>\n </>\n );\n\n return (\n <nav ref={ref} className={cn(baseStyles, className)} {...props}>\n <div className={containerStyles}>\n {/* Logo */}\n {logo && <div className=\"shrink-0\">{logo}</div>}\n\n {/* Desktop Navigation */}\n {desktopNav}\n\n {/* Actions (right side) */}\n {actions && (\n <div className=\"shrink-0 flex items-center gap-2\">{actions}</div>\n )}\n\n {/* Mobile Menu Button */}\n {mobileNav}\n </div>\n </nav>\n );\n }\n);\n\nNav.displayName = \"Nav\";\n\nexport { Nav };\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Menu, X } from \"lucide-react\";\n\nexport interface NavItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n}\n\nexport interface NavSection {\n title: string;\n items: NavItem[];\n}\n\nexport interface DrawerProps {\n title: string;\n subtitle?: string;\n items?: NavItem[];\n sections?: NavSection[];\n activeItem: string;\n onItemClick: (itemId: string) => void;\n footer?: React.ReactNode;\n position?: \"left\" | \"right\";\n}\n\nexport function Drawer({\n title,\n subtitle,\n items,\n sections,\n activeItem,\n onItemClick,\n footer,\n position = \"right\",\n}: DrawerProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n\n const isLeft = position === \"left\";\n\n const handleItemClick = (itemId: string) => {\n onItemClick(itemId);\n setMobileMenuOpen(false);\n };\n\n // Use sections if provided, otherwise fall back to items\n const useSections = sections || (items ? [{ title: \"\", items }] : []);\n\n return (\n <>\n {/* Mobile Header */}\n <div className=\"lg:hidden fixed top-0 left-0 right-0 bg-white border-b border-gray-200 px-4 py-3 [z-index:var(--z-index-drawer-header)]\">\n <div\n className={`flex items-center ${\n isLeft ? \"justify-between\" : \"justify-between flex-row-reverse\"\n }`}\n >\n <button\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n className=\"p-2 rounded-lg hover:bg-gray-100 transition-colors relative [z-index:var(--z-index-drawer-button)]\"\n aria-label=\"Toggle menu\"\n >\n {mobileMenuOpen ? (\n <X className=\"w-6 h-6 text-gray-700\" />\n ) : (\n <Menu className=\"w-6 h-6 text-gray-700\" />\n )}\n </button>\n <div>\n <h1 className=\"text-lg font-bold text-gray-900\">{title}</h1>\n {subtitle && <p className=\"text-xs text-gray-500\">{subtitle}</p>}\n </div>\n </div>\n </div>\n\n {/* Mobile Menu Overlay - Overlays main content without shifting */}\n {mobileMenuOpen && (\n <div\n className=\"fixed inset-0 bg-black/50 lg:hidden\"\n style={{ zIndex: 9998 }}\n onClick={() => setMobileMenuOpen(false)}\n />\n )}\n\n {/* Sidebar Navigation */}\n <aside\n className={`\n fixed top-0 bottom-0 w-64 bg-white\n transition-transform duration-300 ease-in-out overflow-y-auto\n ${isLeft ? \"left-0 border-r\" : \"right-0 border-l\"} border-gray-200\n lg:translate-x-0 lg:top-0\n ${\n mobileMenuOpen\n ? \"translate-x-0 top-0\"\n : `${isLeft ? \"-translate-x-full\" : \"translate-x-full\"} top-0`\n }\n `}\n style={\n mobileMenuOpen &&\n typeof window !== \"undefined\" &&\n window.innerWidth < 1024\n ? { zIndex: 9999 }\n : undefined\n }\n >\n {/* Desktop Header */}\n <div className=\"hidden lg:block p-6 border-b border-gray-200\">\n <h1 className=\"text-xl font-bold text-gray-900\">{title}</h1>\n {subtitle && <p className=\"text-xs text-gray-500 mt-1\">{subtitle}</p>}\n </div>\n\n {/* Mobile Header with Close Button Inside Drawer */}\n <div className=\"lg:hidden p-4 border-b border-gray-200 flex items-center justify-between\">\n <div>\n <h1 className=\"text-lg font-bold text-gray-900\">{title}</h1>\n {subtitle && (\n <p className=\"text-xs text-gray-500 mt-1\">{subtitle}</p>\n )}\n </div>\n <button\n onClick={() => setMobileMenuOpen(false)}\n className=\"p-2 rounded-lg hover:bg-gray-100 transition-colors\"\n aria-label=\"Close menu\"\n >\n <X className=\"w-5 h-5 text-gray-700\" />\n </button>\n </div>\n\n {/* Navigation Items */}\n <nav className=\"p-4\">\n {useSections.map((section, sectionIndex) => (\n <div key={sectionIndex} className={sectionIndex > 0 ? \"mt-6\" : \"\"}>\n {section.title && (\n <h3 className=\"px-4 mb-2 text-xs font-semibold text-gray-500 uppercase tracking-wider\">\n {section.title}\n </h3>\n )}\n <ul className=\"space-y-1\">\n {section.items.map((item) => (\n <li key={item.id}>\n <button\n onClick={() => handleItemClick(item.id)}\n className={`\n w-full flex items-center gap-3 px-4 py-3 rounded-lg text-sm font-medium transition-colors\n ${\n activeItem === item.id\n ? \"bg-blue-50 text-blue-700\"\n : \"text-gray-700 hover:bg-gray-50\"\n }\n `}\n >\n {item.icon && (\n <span className=\"shrink-0\">{item.icon}</span>\n )}\n <span>{item.label}</span>\n </button>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </nav>\n\n {/* Footer */}\n {footer && (\n <div className=\"p-4 border-t border-gray-200 mt-auto\">{footer}</div>\n )}\n </aside>\n </>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Menu, X } from \"lucide-react\";\n\nexport interface NavItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n}\n\nexport interface NavSection {\n title: string;\n items: NavItem[];\n}\n\nexport interface SidebarNavProps {\n title: string;\n subtitle?: string;\n items?: NavItem[];\n sections?: NavSection[];\n activeItem: string;\n onItemClick: (itemId: string) => void;\n footer?: React.ReactNode;\n position?: \"left\" | \"right\";\n}\n\nexport function SidebarNav({\n title,\n subtitle,\n items,\n sections,\n activeItem,\n onItemClick,\n footer,\n position = \"right\",\n}: SidebarNavProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n\n const isLeft = position === \"left\";\n\n const handleItemClick = (itemId: string) => {\n onItemClick(itemId);\n setMobileMenuOpen(false);\n };\n\n // Use sections if provided, otherwise fall back to items\n const useSections = sections || (items ? [{ title: \"\", items }] : []);\n\n return (\n <>\n {/* Mobile Header */}\n <div className=\"lg:hidden fixed top-0 left-0 right-0 z-50 bg-white border-b border-gray-200 px-4 py-3\">\n <div\n className={`flex items-center ${\n isLeft ? \"justify-between\" : \"justify-between flex-row-reverse\"\n }`}\n >\n <button\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n className=\"p-2 rounded-lg hover:bg-gray-100 transition-colors\"\n aria-label=\"Toggle menu\"\n >\n {mobileMenuOpen ? (\n <X className=\"w-6 h-6 text-gray-700\" />\n ) : (\n <Menu className=\"w-6 h-6 text-gray-700\" />\n )}\n </button>\n <div>\n <h1 className=\"text-lg font-bold text-gray-900\">{title}</h1>\n {subtitle && <p className=\"text-xs text-gray-500\">{subtitle}</p>}\n </div>\n </div>\n </div>\n\n {/* Mobile Menu Overlay - Overlays main content without shifting */}\n {mobileMenuOpen && (\n <div\n className=\"fixed inset-0 bg-black/50 lg:hidden\"\n style={{ zIndex: 35 }}\n onClick={() => setMobileMenuOpen(false)}\n />\n )}\n\n {/* Sidebar Navigation */}\n <aside\n className={`\n fixed top-0 h-screen w-64 bg-white z-40\n transition-transform duration-300 ease-in-out overflow-y-auto\n ${isLeft ? \"left-0 border-r\" : \"right-0 border-l\"} border-gray-200\n lg:translate-x-0\n ${\n mobileMenuOpen\n ? \"translate-x-0\"\n : `${\n isLeft ? \"-translate-x-full\" : \"translate-x-full\"\n } lg:translate-x-0`\n }\n `}\n >\n {/* Desktop Header */}\n <div className=\"hidden lg:block p-6 border-b border-gray-200\">\n <h1 className=\"text-xl font-bold text-gray-900\">{title}</h1>\n {subtitle && <p className=\"text-xs text-gray-500 mt-1\">{subtitle}</p>}\n </div>\n\n {/* Mobile Header Spacer */}\n <div className=\"lg:hidden h-[57px]\" aria-hidden=\"true\" />\n\n {/* Navigation Items */}\n <nav className=\"p-4\">\n {useSections.map((section, sectionIndex) => (\n <div key={sectionIndex} className={sectionIndex > 0 ? \"mt-6\" : \"\"}>\n {section.title && (\n <h3 className=\"px-4 mb-2 text-xs font-semibold text-gray-500 uppercase tracking-wider\">\n {section.title}\n </h3>\n )}\n <ul className=\"space-y-1\">\n {section.items.map((item) => (\n <li key={item.id}>\n <button\n onClick={() => handleItemClick(item.id)}\n className={`\n w-full flex items-center gap-3 px-4 py-3 rounded-lg text-sm font-medium transition-colors\n ${\n activeItem === item.id\n ? \"bg-blue-50 text-blue-700\"\n : \"text-gray-700 hover:bg-gray-50\"\n }\n `}\n >\n {item.icon && (\n <span className=\"shrink-0\">{item.icon}</span>\n )}\n <span>{item.label}</span>\n </button>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </nav>\n\n {/* Footer */}\n {footer && (\n <div className=\"p-4 border-t border-gray-200 mt-auto\">{footer}</div>\n )}\n </aside>\n </>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center py-12 px-4\",\n className\n )}\n {...props}\n >\n {icon && <div className=\"mb-4 text-gray-400\">{icon}</div>}\n\n <h3 className=\"text-lg font-semibold text-gray-900 mb-2\">{title}</h3>\n\n {description && (\n <p className=\"text-sm text-gray-500 mb-6 max-w-sm\">{description}</p>\n )}\n\n {action && <div>{action}</div>}\n </div>\n );\n }\n);\n\nEmptyState.displayName = \"EmptyState\";\n\nexport { EmptyState };\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useEffect,\n ReactNode,\n} from \"react\";\nimport type { Theme } from \"../../types/theme\";\nimport defaultTheme from \"../../styles/themes/default.json\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n applyTheme: (theme: Theme) => void;\n resetTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(defaultTheme as Theme);\n\n // Apply theme by setting CSS custom properties\n const applyTheme = (newTheme: Theme) => {\n const root = document.documentElement;\n\n // Colors\n const colors = newTheme.colors;\n\n // Primary colors\n Object.entries(colors.primary).forEach(([shade, value]) => {\n if (value) {\n root.style.setProperty(`--color-primary-${shade}`, value);\n }\n });\n\n // Secondary colors\n Object.entries(colors.secondary).forEach(([shade, value]) => {\n if (value) {\n root.style.setProperty(`--color-secondary-${shade}`, value);\n }\n });\n\n // Semantic colors\n root.style.setProperty(\"--color-success\", colors.success);\n root.style.setProperty(\"--color-error\", colors.error);\n root.style.setProperty(\"--color-warning\", colors.warning);\n root.style.setProperty(\"--color-info\", colors.info);\n\n // Gray scale\n Object.entries(colors.gray).forEach(([shade, value]) => {\n if (value) {\n root.style.setProperty(`--color-gray-${shade}`, value);\n }\n });\n\n // Background and foreground\n root.style.setProperty(\"--color-background\", colors.background);\n root.style.setProperty(\"--color-foreground\", colors.foreground);\n root.style.setProperty(\"--color-muted\", colors.muted);\n root.style.setProperty(\"--color-muted-foreground\", colors.mutedForeground);\n\n // Spacing\n Object.entries(newTheme.spacing).forEach(([key, value]) => {\n root.style.setProperty(`--spacing-${key}`, value);\n });\n\n // Border radius\n Object.entries(newTheme.borderRadius).forEach(([key, value]) => {\n root.style.setProperty(`--radius-${key}`, value);\n });\n\n // Typography\n const { typography } = newTheme;\n\n // Font families\n root.style.setProperty(\n \"--font-sans\",\n typography.fontFamily.sans.join(\", \")\n );\n root.style.setProperty(\n \"--font-mono\",\n typography.fontFamily.mono.join(\", \")\n );\n\n // Font sizes\n Object.entries(typography.fontSize).forEach(([key, value]) => {\n root.style.setProperty(`--text-${key}`, value);\n });\n\n // Font weights\n Object.entries(typography.fontWeight).forEach(([key, value]) => {\n root.style.setProperty(`--font-${key}`, value);\n });\n\n // Component: Button\n const button = newTheme.components.button;\n Object.entries(button.padding).forEach(([size, padding]) => {\n root.style.setProperty(`--button-padding-${size}-x`, padding.x);\n root.style.setProperty(`--button-padding-${size}-y`, padding.y);\n });\n Object.entries(button.fontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--button-font-size-${size}`, fontSize);\n });\n root.style.setProperty(\"--button-radius\", button.borderRadius);\n root.style.setProperty(\"--button-font-weight\", button.fontWeight);\n\n // Component: Card\n const card = newTheme.components.card;\n Object.entries(card.padding).forEach(([size, padding]) => {\n root.style.setProperty(`--card-padding-${size}`, padding);\n });\n root.style.setProperty(\"--card-radius\", card.borderRadius);\n root.style.setProperty(\"--card-border-width\", card.borderWidth);\n root.style.setProperty(\"--card-shadow-flat\", card.shadow.flat);\n root.style.setProperty(\"--card-shadow-elevated\", card.shadow.elevated);\n\n // Component: Input\n const input = newTheme.components.input;\n Object.entries(input.padding).forEach(([size, padding]) => {\n root.style.setProperty(`--input-padding-${size}`, padding);\n });\n Object.entries(input.fontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--input-font-size-${size}`, fontSize);\n });\n root.style.setProperty(\"--input-radius\", input.borderRadius);\n root.style.setProperty(\"--input-border-width\", input.borderWidth);\n\n // Component: Checkbox\n const checkbox = newTheme.components.checkbox;\n Object.entries(checkbox.size).forEach(([size, dimension]) => {\n root.style.setProperty(`--checkbox-size-${size}`, dimension);\n });\n Object.entries(checkbox.labelSpacing).forEach(([size, spacing]) => {\n root.style.setProperty(`--checkbox-label-spacing-${size}`, spacing);\n });\n Object.entries(checkbox.labelFontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--checkbox-label-font-size-${size}`, fontSize);\n });\n root.style.setProperty(\"--checkbox-radius\", checkbox.borderRadius);\n\n // Component: Radio\n const radio = newTheme.components.radio;\n Object.entries(radio.size).forEach(([size, dimension]) => {\n root.style.setProperty(`--radio-size-${size}`, dimension);\n });\n Object.entries(radio.labelSpacing).forEach(([size, spacing]) => {\n root.style.setProperty(`--radio-label-spacing-${size}`, spacing);\n });\n Object.entries(radio.labelFontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--radio-label-font-size-${size}`, fontSize);\n });\n\n // Component: Dropdown\n const dropdown = newTheme.components.dropdown;\n Object.entries(dropdown.padding).forEach(([size, padding]) => {\n root.style.setProperty(`--dropdown-padding-${size}-x`, padding.x);\n root.style.setProperty(`--dropdown-padding-${size}-y`, padding.y);\n });\n Object.entries(dropdown.fontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--dropdown-font-size-${size}`, fontSize);\n });\n Object.entries(dropdown.iconSize).forEach(([size, iconSize]) => {\n root.style.setProperty(`--dropdown-icon-size-${size}`, iconSize);\n });\n Object.entries(dropdown.optionPadding).forEach(([size, padding]) => {\n root.style.setProperty(`--dropdown-option-padding-${size}-x`, padding.x);\n root.style.setProperty(`--dropdown-option-padding-${size}-y`, padding.y);\n });\n Object.entries(dropdown.optionFontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--dropdown-option-font-size-${size}`, fontSize);\n });\n root.style.setProperty(\"--dropdown-radius\", dropdown.borderRadius);\n root.style.setProperty(\"--dropdown-border-width\", dropdown.borderWidth);\n\n // Component: Nav\n const nav = newTheme.components.nav;\n root.style.setProperty(\"--nav-height\", nav.height);\n Object.entries(nav.itemPadding).forEach(([size, padding]) => {\n root.style.setProperty(`--nav-item-padding-${size}-x`, padding.x);\n root.style.setProperty(`--nav-item-padding-${size}-y`, padding.y);\n });\n Object.entries(nav.fontSize).forEach(([size, fontSize]) => {\n root.style.setProperty(`--nav-font-size-${size}`, fontSize);\n });\n root.style.setProperty(\"--nav-border-radius\", nav.borderRadius);\n root.style.setProperty(\"--nav-gap\", nav.gap);\n\n // Z-Index Scale\n Object.entries(newTheme.zIndex).forEach(([key, value]) => {\n root.style.setProperty(`--z-index-${key}`, value.toString());\n });\n\n setThemeState(newTheme);\n };\n\n const setTheme = (newTheme: Theme) => {\n applyTheme(newTheme);\n // Optionally save to localStorage\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", JSON.stringify(newTheme));\n }\n };\n\n const resetTheme = () => {\n applyTheme(defaultTheme as Theme);\n if (typeof window !== \"undefined\") {\n localStorage.removeItem(\"theme\");\n }\n };\n\n // Load theme on mount\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const savedTheme = localStorage.getItem(\"theme\");\n if (savedTheme) {\n try {\n const parsedTheme = JSON.parse(savedTheme);\n applyTheme(parsedTheme);\n } catch (error) {\n console.error(\"Failed to parse saved theme:\", error);\n applyTheme(defaultTheme as Theme);\n }\n } else {\n applyTheme(defaultTheme as Theme);\n }\n }\n }, []);\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, applyTheme, resetTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","{\n \"name\": \"Default Theme\",\n \"version\": \"1.0.0\",\n \"colors\": {\n \"primary\": {\n \"50\": \"#eff6ff\",\n \"100\": \"#dbeafe\",\n \"200\": \"#bfdbfe\",\n \"300\": \"#93c5fd\",\n \"400\": \"#60a5fa\",\n \"500\": \"#3b82f6\",\n \"600\": \"#2563eb\",\n \"700\": \"#1d4ed8\",\n \"800\": \"#1e40af\",\n \"900\": \"#1e3a8a\"\n },\n \"secondary\": {\n \"50\": \"#f8fafc\",\n \"100\": \"#f1f5f9\",\n \"200\": \"#e2e8f0\",\n \"300\": \"#cbd5e1\",\n \"400\": \"#94a3b8\",\n \"500\": \"#64748b\",\n \"600\": \"#475569\",\n \"700\": \"#334155\",\n \"800\": \"#1e293b\",\n \"900\": \"#0f172a\"\n },\n \"success\": \"#10b981\",\n \"error\": \"#ef4444\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"gray\": {\n \"50\": \"#f9fafb\",\n \"100\": \"#f3f4f6\",\n \"200\": \"#e5e7eb\",\n \"300\": \"#d1d5db\",\n \"400\": \"#9ca3af\",\n \"500\": \"#6b7280\",\n \"600\": \"#4b5563\",\n \"700\": \"#374151\",\n \"800\": \"#1f2937\",\n \"900\": \"#111827\"\n },\n \"background\": \"#ffffff\",\n \"foreground\": \"#111827\",\n \"muted\": \"#f3f4f6\",\n \"mutedForeground\": \"#6b7280\"\n },\n \"spacing\": {\n \"xs\": \"0.25rem\",\n \"sm\": \"0.5rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.5rem\",\n \"xl\": \"2rem\",\n \"2xl\": \"3rem\"\n },\n \"borderRadius\": {\n \"none\": \"0\",\n \"sm\": \"0.25rem\",\n \"md\": \"0.5rem\",\n \"lg\": \"0.75rem\",\n \"xl\": \"1rem\",\n \"full\": \"9999px\"\n },\n \"typography\": {\n \"fontFamily\": {\n \"sans\": [\n \"Inter\",\n \"system-ui\",\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"Segoe UI\",\n \"Roboto\",\n \"Helvetica Neue\",\n \"Arial\",\n \"sans-serif\"\n ],\n \"mono\": [\n \"Monaco\",\n \"Consolas\",\n \"Liberation Mono\",\n \"Courier New\",\n \"monospace\"\n ]\n },\n \"fontSize\": {\n \"xs\": \"0.75rem\",\n \"sm\": \"0.875rem\",\n \"base\": \"1rem\",\n \"lg\": \"1.125rem\",\n \"xl\": \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\"\n },\n \"fontWeight\": {\n \"normal\": \"400\",\n \"medium\": \"500\",\n \"semibold\": \"600\",\n \"bold\": \"700\"\n }\n },\n \"zIndex\": {\n \"dropdown\": 1000,\n \"popover\": 1100,\n \"tooltip\": 1500,\n \"overlay\": 1200,\n \"nav\": 50,\n \"navMobileOverlay\": 60,\n \"navMobileMenu\": 70,\n \"drawerHeader\": 100,\n \"drawerButton\": 101,\n \"drawerOverlay\": 90,\n \"drawerPanel\": 95,\n \"modalBackdrop\": 1300,\n \"modal\": 1400,\n \"snackbar\": 1600,\n \"toast\": 1700\n },\n \"components\": {\n \"button\": {\n \"padding\": {\n \"xs\": { \"x\": \"0.5rem\", \"y\": \"0.375rem\" },\n \"sm\": { \"x\": \"0.75rem\", \"y\": \"0.5rem\" },\n \"md\": { \"x\": \"1rem\", \"y\": \"0.625rem\" },\n \"lg\": { \"x\": \"1.25rem\", \"y\": \"0.75rem\" },\n \"xl\": { \"x\": \"1.5rem\", \"y\": \"0.875rem\" }\n },\n \"fontSize\": {\n \"xs\": \"0.75rem\",\n \"sm\": \"0.875rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.125rem\",\n \"xl\": \"1.25rem\"\n },\n \"borderRadius\": \"0.5rem\",\n \"fontWeight\": \"500\"\n },\n \"card\": {\n \"padding\": {\n \"none\": \"0\",\n \"sm\": \"0.75rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.5rem\"\n },\n \"borderRadius\": \"0.75rem\",\n \"borderWidth\": \"1px\",\n \"shadow\": {\n \"flat\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n \"elevated\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\"\n }\n },\n \"input\": {\n \"padding\": {\n \"xs\": \"0.375rem 0.5rem\",\n \"sm\": \"0.5rem 0.75rem\",\n \"md\": \"0.625rem 1rem\",\n \"lg\": \"0.75rem 1.25rem\",\n \"xl\": \"0.875rem 1.5rem\"\n },\n \"fontSize\": {\n \"xs\": \"0.75rem\",\n \"sm\": \"0.875rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.125rem\",\n \"xl\": \"1.25rem\"\n },\n \"borderRadius\": \"0.5rem\",\n \"borderWidth\": \"1px\"\n },\n \"checkbox\": {\n \"size\": {\n \"xs\": \"0.75rem\",\n \"sm\": \"0.875rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.25rem\",\n \"xl\": \"1.5rem\"\n },\n \"labelSpacing\": {\n \"xs\": \"0.25rem\",\n \"sm\": \"0.375rem\",\n \"md\": \"0.5rem\",\n \"lg\": \"0.625rem\",\n \"xl\": \"0.75rem\"\n },\n \"labelFontSize\": {\n \"xs\": \"0.625rem\",\n \"sm\": \"0.75rem\",\n \"md\": \"0.875rem\",\n \"lg\": \"1rem\",\n \"xl\": \"1.125rem\"\n },\n \"borderRadius\": \"0.25rem\"\n },\n \"radio\": {\n \"size\": {\n \"xs\": \"0.75rem\",\n \"sm\": \"0.875rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.25rem\",\n \"xl\": \"1.5rem\"\n },\n \"labelSpacing\": {\n \"xs\": \"0.25rem\",\n \"sm\": \"0.375rem\",\n \"md\": \"0.5rem\",\n \"lg\": \"0.625rem\",\n \"xl\": \"0.75rem\"\n },\n \"labelFontSize\": {\n \"xs\": \"0.625rem\",\n \"sm\": \"0.75rem\",\n \"md\": \"0.875rem\",\n \"lg\": \"1rem\",\n \"xl\": \"1.125rem\"\n }\n },\n \"dropdown\": {\n \"padding\": {\n \"xs\": { \"x\": \"0.5rem\", \"y\": \"0.25rem\" },\n \"sm\": { \"x\": \"0.75rem\", \"y\": \"0.375rem\" },\n \"md\": { \"x\": \"1rem\", \"y\": \"0.5rem\" },\n \"lg\": { \"x\": \"1.25rem\", \"y\": \"0.625rem\" },\n \"xl\": { \"x\": \"1.5rem\", \"y\": \"0.75rem\" }\n },\n \"fontSize\": {\n \"xs\": \"0.75rem\",\n \"sm\": \"0.875rem\",\n \"md\": \"1rem\",\n \"lg\": \"1.125rem\",\n \"xl\": \"1.25rem\"\n },\n \"iconSize\": {\n \"xs\": \"0.875rem\",\n \"sm\": \"1rem\",\n \"md\": \"1.25rem\",\n \"lg\": \"1.5rem\",\n \"xl\": \"1.75rem\"\n },\n \"optionPadding\": {\n \"xs\": { \"x\": \"0.5rem\", \"y\": \"0.25rem\" },\n \"sm\": { \"x\": \"0.75rem\", \"y\": \"0.375rem\" },\n \"md\": { \"x\": \"1rem\", \"y\": \"0.5rem\" },\n \"lg\": { \"x\": \"1.25rem\", \"y\": \"0.625rem\" },\n \"xl\": { \"x\": \"1.5rem\", \"y\": \"0.75rem\" }\n },\n \"optionFontSize\": {\n \"xs\": \"0.625rem\",\n \"sm\": \"0.75rem\",\n \"md\": \"0.875rem\",\n \"lg\": \"1rem\",\n \"xl\": \"1.125rem\"\n },\n \"borderRadius\": \"0.5rem\",\n \"borderWidth\": \"1px\"\n },\n \"nav\": {\n \"height\": \"4rem\",\n \"itemPadding\": {\n \"xs\": { \"x\": \"0.375rem\", \"y\": \"0.25rem\" },\n \"sm\": { \"x\": \"0.5rem\", \"y\": \"0.375rem\" },\n \"md\": { \"x\": \"0.75rem\", \"y\": \"0.5rem\" },\n \"lg\": { \"x\": \"1rem\", \"y\": \"0.625rem\" },\n \"xl\": { \"x\": \"1.25rem\", \"y\": \"0.75rem\" }\n },\n \"fontSize\": {\n \"xs\": \"0.625rem\",\n \"sm\": \"0.75rem\",\n \"md\": \"0.875rem\",\n \"lg\": \"1rem\",\n \"xl\": \"1.125rem\"\n },\n \"borderRadius\": \"0.375rem\",\n \"gap\": \"0.25rem\"\n }\n }\n}\n"],"mappings":"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","names":["React","jsx","jsxs","React","React","jsx","React","React","jsx","jsxs","React","useId","jsx","jsxs","useId","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","useState","jsx","jsxs","React","jsx","jsxs","React","React","jsx","React","React","jsx","jsxs","React","useState","useEffect","useRef","ChevronDown","Fragment","jsx","jsxs","React","useState","useRef","useEffect","useState","Menu","X","Fragment","jsx","jsxs","useState","Menu","X","Fragment","jsx","jsxs","React","jsx","jsxs","React","useState","useEffect","jsx","useState","useEffect"]}