@yomologic/react-ui 0.2.6 → 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/nav.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 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 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 // 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-50\"\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 <>\n <div\n className=\"fixed inset-0 bg-black/20 z-40\"\n onClick={() => setIsMobileMenuOpen(false)}\n />\n <div className=\"fixed top-[var(--nav-height)] left-0 right-0 bg-[var(--color-background)] border-b border-[var(--color-border)] shadow-lg z-50 max-h-[calc(100vh-var(--nav-height))] overflow-y-auto\">\n <div className=\"flex flex-col py-2\">\n {items.map((item) => renderNavItem(item, true))}\n </div>\n </div>\n </>\n )}\n </>\n );\n\n return (\n <nav ref={ref} className={cn(baseStyles, className)} {...props}>\n <div className={containerStyles}>\n {/* Logo */}\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\n\n {/* Desktop Navigation */}\n {desktopNav}\n\n {/* Actions (right side) */}\n {actions && (\n <div className=\"flex-shrink-0 flex items-center gap-2\">\n {actions}\n </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 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 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 \"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":";;;AAAA,OAAO,WAAW;;;ACAlB,SAAS,YAA6B;AAE/B,SAAS,MAAM,QAAsB;AAC1C,SAAO,KAAK,MAAM;AACpB;;;ADiEU,SAME,KANF;AAzDV,IAAM,SAAS,MAAM;AAAA,EACnB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,aACJ;AAGF,UAAM,WAAW;AAAA,MACf,SACE;AAAA,MACF,WACE;AAAA,MACF,SACE;AAAA,MACF,OAAO;AAAA,MACP,QACE;AAAA,IACJ;AAEA,UAAM,QAAQ;AAAA,MACZ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,cAAc;AACpB,UAAM,kBAAkB;AAExB,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,SAAS,OAAO;AAAA,UAChB,MAAM,IAAI;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU,YAAY;AAAA,QACrB,GAAG;AAAA,QAEH;AAAA,uBACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAM;AAAA,cACN,MAAK;AAAA,cACL,SAAQ;AAAA,cAER;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,GAAE;AAAA,oBACF,QAAO;AAAA,oBACP,aAAY;AAAA;AAAA,gBACb;AAAA,gBACD;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,MAAK;AAAA,oBACL,GAAE;AAAA;AAAA,gBACH;AAAA;AAAA;AAAA,UACH;AAAA,UAED,CAAC,aAAa,YAAY;AAAA,UAC1B;AAAA,UACA,CAAC,aAAa,aAAa;AAAA;AAAA;AAAA,IAC9B;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AElGrB,OAAOA,UAAS,aAAa;AAmCnB,SAKqB,OAAAC,MALrB,QAAAC,aAAA;AAtBV,IAAM,QAAQC,OAAM;AAAA,EAClB,CACE;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,SAAS,MAAM;AACrB,UAAM,UAAU,MAAM,SAAS,MAAM;AAErC,WACE,gBAAAD,MAAC,SAAI,WAAW,GAAG,iBAAiB,aAAa,QAAQ,GACtD;AAAA,eACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAU;AAAA,UAET;AAAA;AAAA,YACA,MAAM,YAAY,gBAAAD,KAAC,UAAK,WAAU,qBAAoB,eAAC;AAAA;AAAA;AAAA,MAC1D;AAAA,MAGF,gBAAAC,MAAC,SAAI,WAAU,YACZ;AAAA,oBACC,gBAAAD,KAAC,SAAI,WAAU,sFACZ,oBACH;AAAA,QAGF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA,IAAI;AAAA,YACJ,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ,sCAAsC;AAAA,cAC9C,YAAY;AAAA,cACZ,aAAa;AAAA,cACb;AAAA,YACF;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,QAEC,aACC,gBAAAA,KAAC,SAAI,WAAU,uFACZ,qBACH;AAAA,SAEJ;AAAA,MAEC,SAAS,gBAAAA,KAAC,OAAE,WAAU,6BAA6B,iBAAM;AAAA,MAEzD,cAAc,CAAC,SACd,gBAAAA,KAAC,OAAE,WAAU,8BAA8B,sBAAW;AAAA,OAE1D;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ACrFpB,OAAOG,YAAW;AAyCZ,gBAAAC,YAAA;AAhCN,IAAM,OAAOC,OAAM;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,aAAa;AAEnB,UAAM,WAAW;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAEA,UAAM,WAAW;AAAA,MACf,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,cAAc,YAChB,qDACA;AAEJ,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,SAAS,OAAO;AAAA,UAChB,SAAS,OAAO;AAAA,UAChB;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;AAEnB,IAAM,aAAaC,OAAM,WAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,6BAA6B,SAAS;AAAA,IACnD,GAAG;AAAA;AACN,CACD;AACD,WAAW,cAAc;AAEzB,IAAM,YAAYC,OAAM,WAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,uCAAuC,SAAS;AAAA,IAC7D,GAAG;AAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,IAAM,kBAAkBC,OAAM,WAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD,KAAC,OAAE,KAAU,WAAW,GAAG,yBAAyB,SAAS,GAAI,GAAG,OAAO,CAC5E;AACD,gBAAgB,cAAc;AAE9B,IAAM,cAAcC,OAAM,WAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD,KAAC,SAAI,KAAU,WAAW,GAAG,QAAQ,SAAS,GAAI,GAAG,OAAO,CAC7D;AACD,YAAY,cAAc;AAE1B,IAAM,aAAaC,OAAM,WAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,0BAA0B,SAAS;AAAA,IAChD,GAAG;AAAA;AACN,CACD;AACD,WAAW,cAAc;;;AC9GzB,OAAOE,YAAW;AAkDZ,SAMI,OAAAC,MANJ,QAAAC,aAAA;AAzCN,IAAM,QAAQC,OAAM;AAAA,EAClB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,aAAa;AAEnB,UAAM,WAAW;AAAA,MACf,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,UAAM,QAAQ;AAAA,MACZ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,YAAY,SAAS,OAAO,GAAG,MAAM,IAAI,GAAG,SAAS;AAAA,QAClE,GAAG;AAAA,QAEH;AAAA,iBACC,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,GAAG,+BAA+B,YAAY,OAAO,CAAC;AAAA;AAAA,UACnE;AAAA,UAED;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AClEpB,SAAS,SAAAG,cAAa;AAyDlB,SACE,OAAAC,MADF,QAAAC,aAAA;AA5CG,SAAS,SAAS;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,OAAO;AACT,GAAkB;AAEhB,QAAM,SAASC,OAAM;AACrB,QAAM,aAAa,MAAM,YAAY,MAAM;AAE3C,QAAM,eAAe,CAAC,MAA2C;AAC/D,QAAI,UAAU;AACZ,eAAS,EAAE,OAAO,OAAO;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,kBAAkB;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,qBAAqB;AAAA,IACzB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE,gBAAAD,MAAC,SAAI,WAAW,GAAG,qBAAqB,SAAS,GAC/C;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAI;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,WAAW;AAAA,UACT,WAAW,IAAI;AAAA,UACf;AAAA,UACA,YAAY;AAAA,QACd;AAAA;AAAA,IACF;AAAA,IACC,SACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT,mBAAmB,IAAI;AAAA,UACvB,gBAAgB,IAAI;AAAA,UACpB;AAAA,UACA,YAAY;AAAA,UACZ,CAAC,YAAY;AAAA,QACf;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;AAqBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AACT,GAAuB;AACrB,QAAM,eAAe,CAAC,aAAqB,YAAqB;AAC9D,QAAI,UAAU;AACZ,UAAI,SAAS;AACX,iBAAS,CAAC,GAAG,OAAO,WAAW,CAAC;AAAA,MAClC,OAAO;AACL,iBAAS,MAAM,OAAO,CAAC,MAAM,MAAM,WAAW,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,kBAAkB;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,qBAAqB;AAAA,IACzB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE,gBAAAC,MAAC,SAAI,WACF;AAAA,aACC,gBAAAA,MAAC,WAAM,WAAU,kDACd;AAAA;AAAA,MACA,YAAY,gBAAAD,KAAC,UAAK,WAAU,qBAAoB,eAAC;AAAA,OACpD;AAAA,IAEF,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,gBAAgB,gBAAgB;AAAA,QAClC;AAAA,QAEC,kBAAQ,IAAI,CAAC,WAAW;AACvB,gBAAM,aAAa,YAAY,OAAO;AACtC,iBACE,gBAAAC,MAAC,SAAuB,WAAU,qBAChC;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,IAAI,GAAG,IAAI,IAAI,OAAO,KAAK;AAAA,gBAC3B;AAAA,gBACA,OAAO,OAAO;AAAA,gBACd,SAAS,MAAM,SAAS,OAAO,KAAK;AAAA,gBACpC,UAAU,CAAC,MAAM,aAAa,OAAO,OAAO,EAAE,OAAO,OAAO;AAAA,gBAC5D,UAAU;AAAA,gBACV,WAAW;AAAA,kBACT,WAAW,IAAI;AAAA,kBACf;AAAA,kBACA,cAAc;AAAA,gBAChB;AAAA;AAAA,YACF;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,GAAG,IAAI,IAAI,OAAO,KAAK;AAAA,gBAChC,WAAW;AAAA,kBACT,mBAAmB,IAAI;AAAA,kBACvB,gBAAgB,IAAI;AAAA,kBACpB;AAAA,kBACA,cAAc;AAAA,kBACd,CAAC,cAAc;AAAA,gBACjB;AAAA,gBAEC,iBAAO;AAAA;AAAA,YACV;AAAA,eA1BQ,OAAO,KA2BjB;AAAA,QAEJ,CAAC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;ACzIQ,SAEe,OAAAG,MAFf,QAAAC,aAAA;AA7CD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AACT,GAAoB;AAClB,QAAM,eAAe,CAAC,MAA2C;AAC/D,QAAI,UAAU;AACZ,eAAS,EAAE,OAAO,KAAK;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,kBAAkB;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,qBAAqB;AAAA,IACzB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE,gBAAAA,MAAC,SAAI,WACF;AAAA,aACC,gBAAAA,MAAC,WAAM,WAAU,kDACd;AAAA;AAAA,MACA,YAAY,gBAAAD,KAAC,UAAK,WAAU,qBAAoB,eAAC;AAAA,OACpD;AAAA,IAEF,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT,gBAAgB,cAAc;AAAA,UAC9B,gBAAgB,gBAAgB;AAAA,QAClC;AAAA,QAEC,kBAAQ,IAAI,CAAC,WAAW;AACvB,gBAAM,aAAa,YAAY,OAAO;AACtC,iBACE,gBAAAC,MAAC,SAAuB,WAAU,qBAChC;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,IAAI,GAAG,IAAI,IAAI,OAAO,KAAK;AAAA,gBAC3B;AAAA,gBACA,OAAO,OAAO;AAAA,gBACd,SAAS,UAAU,OAAO;AAAA,gBAC1B,UAAU;AAAA,gBACV,UAAU;AAAA,gBACV,WAAW;AAAA,kBACT,WAAW,IAAI;AAAA,kBACf;AAAA,kBACA,cAAc;AAAA,gBAChB;AAAA;AAAA,YACF;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,GAAG,IAAI,IAAI,OAAO,KAAK;AAAA,gBAChC,WAAW;AAAA,kBACT,mBAAmB,IAAI;AAAA,kBACvB,gBAAgB,IAAI;AAAA,kBACpB;AAAA,kBACA,cAAc;AAAA,kBACd,CAAC,cAAc;AAAA,gBACjB;AAAA,gBAEC,iBAAO;AAAA;AAAA,YACV;AAAA,eA1BQ,OAAO,KA2BjB;AAAA,QAEJ,CAAC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;AC/GA,SAAS,UAAU,QAAQ,iBAA4B;AACvD,SAAS,mBAAmB;AA8IpB,SAEe,OAAAE,MAFf,QAAAC,aAAA;AAnFD,SAAS,SAAS;AAAA,EACvB;AAAA,EACA,cAAc;AAAA,EACd,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,YAAY;AACd,GAAkB;AAChB,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,cAAc,OAAuB,IAAI;AAG/C,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,MAAO,QAAO;AACnB,UAAM,WAAW,QAAQ,KAAK,CAAC,QAAQ,IAAI,UAAU,KAAK;AAC1D,WAAO,WAAW,SAAS,QAAQ;AAAA,EACrC;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,iBAAiB;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,mBAAmB;AAAA,IACvB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAGA,YAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAsB;AAChD,UACE,YAAY,WACZ,CAAC,YAAY,QAAQ,SAAS,MAAM,MAAc,GAClD;AACA,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM,SAAS,oBAAoB,aAAa,kBAAkB;AAAA,EAC3E,GAAG,CAAC,CAAC;AAEL,QAAM,eAAe,CAAC,gBAAiC;AACrD,eAAW,WAAW;AACtB,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,gBAAgB,CAAC,MAA2B;AAChD,QAAI,SAAU;AAEd,QAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,QAAE,eAAe;AACjB,gBAAU,CAAC,MAAM;AAAA,IACnB,WAAW,EAAE,QAAQ,UAAU;AAC7B,gBAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAEA,SACE,gBAAAA,MAAC,SAAI,WAAW,UAAU,SAAS,IAEhC;AAAA,aACC,gBAAAA,MAAC,WAAM,WAAU,kDACd;AAAA;AAAA,MACA,YAAY,gBAAAD,KAAC,UAAK,WAAU,qBAAoB,eAAC;AAAA,OACpD;AAAA,IAIF,gBAAAC,MAAC,SAAI,KAAK,aAAa,WAAU,YAE/B;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,CAAC,YAAY,UAAU,CAAC,MAAM;AAAA,UAC7C,WAAW;AAAA,UACX;AAAA,UACA,WAAW;AAAA,qBAEP,WAAW,IAAI,CACjB;AAAA;AAAA;AAAA,cAIE,QACI,wEACA,wEACN;AAAA,cAEE,WACI,8CACA,uBACN;AAAA,cACE,CAAC,QAAQ,kBAAkB,eAAe;AAAA;AAAA,UAG9C;AAAA,4BAAAD,KAAC,UAAK,WAAU,YAAY,2BAAiB,GAAE;AAAA,YAC/C,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW,GACT,eAAe,IAAI,CACrB,kEACE,SAAS,yBAAyB,EACpC;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA,MAGC,UAAU,CAAC,YACV,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UAEJ;AAAA;AAAA,YAEC,gBAAAA,KAAC,SAAI,SAAS,MAAM,UAAU,KAAK,GAAI,UAAS;AAAA;AAAA;AAAA,YAGhD,gBAAAA,KAAC,QACE,kBAAQ,IAAI,CAAC,WACZ,gBAAAA,KAAC,QACC,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,MACP,CAAC,OAAO,YAAY,aAAa,OAAO,KAAK;AAAA,gBAE/C,UAAU,OAAO;AAAA,gBACjB,WAAW;AAAA,iCACA,iBAAiB,IAAI,CAAC;AAAA;AAAA,0BAG7B,OAAO,UAAU,QACb,yCACA,iCACN;AAAA,0BAEE,OAAO,WAAW,kCAAkC,EACtD;AAAA;AAAA,gBAEF,MAAK;AAAA,gBACL,iBAAe,OAAO,UAAU;AAAA,gBAE/B,iBAAO;AAAA;AAAA,YACV,KAvBO,OAAO,KAwBhB,CACD,GACH;AAAA;AAAA;AAAA,MAEJ;AAAA,OAEJ;AAAA,KAGE,cAAc,UACd,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,gBAAgB,QAAQ,iBAAiB,eAAe;AAAA,QAElE,mBAAS;AAAA;AAAA,IACZ;AAAA,KAEJ;AAEJ;;;ACnPA,OAAOE,YAAW;AAiCV,SAME,OAAAC,MANF,QAAAC,aAAA;AAxBR,IAAM,UAAUC,OAAM;AAAA,EACpB,CAAC,EAAE,WAAW,OAAO,MAAM,QAAQ,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,QAAQ;AAAA,MACZ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,SAAS;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,IACT;AAEA,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,GAAG,gBAAgB,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;AAAA,cACxD,OAAM;AAAA,cACN,MAAK;AAAA,cACL,SAAQ;AAAA,cAER;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,GAAE;AAAA,oBACF,QAAO;AAAA,oBACP,aAAY;AAAA;AAAA,gBACb;AAAA,gBACD,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,MAAK;AAAA,oBACL,GAAE;AAAA;AAAA,gBACH;AAAA;AAAA;AAAA,UACH;AAAA,UACC,SAAS,gBAAAA,KAAC,OAAE,WAAU,yBAAyB,iBAAM;AAAA;AAAA;AAAA,IACxD;AAAA,EAEJ;AACF;AAEA,QAAQ,cAAc;;;ACzDtB,SAAS,YAAAG,iBAAgB;AACzB,SAAS,SAAS,yBAAyB;AAC3C,SAAS,mBAAmB;AAwCd,gBAAAC,MA2BJ,QAAAC,aA3BI;AAjCP,SAAS,YAAY,EAAE,MAAM,WAAW,MAAM,GAAqB;AACxE,QAAM,CAAC,QAAQ,SAAS,IAAIF,UAAS,KAAK;AAC1C,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,KAAK;AAEpD,QAAM,aAAa,YAAY;AAC7B,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,IAAI;AACxC,gBAAU,IAAI;AACd,iBAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,IACzC,SAAS,KAAK;AACZ,cAAQ,MAAM,mBAAmB,GAAG;AAAA,IACtC;AAAA,EACF;AAEA,SACE,gBAAAE,MAAC,SAAI,WAAU,kBAEb;AAAA,oBAAAA,MAAC,SAAI,WAAU,+BACb;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,cAAc,MAAM,eAAe,IAAI;AAAA,UACvC,cAAc,MAAM,eAAe,KAAK;AAAA,UACxC,WAAU;AAAA,UACV,cAAW;AAAA,UAEV;AAAA;AAAA,YAEC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,SAAQ;AAAA,gBAER,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,eAAc;AAAA,oBACd,gBAAe;AAAA,oBACf,aAAa;AAAA,oBACb,GAAE;AAAA;AAAA,gBACJ;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,YAGA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,SAAQ;AAAA,gBAER,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,eAAc;AAAA,oBACd,gBAAe;AAAA,oBACf,aAAa;AAAA,oBACb,GAAE;AAAA;AAAA,gBACJ;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MAEJ;AAAA,MAGC,eAAe,CAAC,UACf,gBAAAC,MAAC,SAAI,WAAU,sIAAqI;AAAA;AAAA,QAElJ,gBAAAD,KAAC,SAAI,WAAU,qGAAoG;AAAA,SACrH;AAAA,MAGD,UACC,gBAAAC,MAAC,SAAI,WAAU,gHAA+G;AAAA;AAAA,QAE5H,gBAAAD,KAAC,SAAI,WAAU,oEAAmE;AAAA,SACpF;AAAA,OAEJ;AAAA,IAGA,gBAAAA,KAAC,SAAI,WAAU,qDAEb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,QACP,aAAa;AAAA,UACX,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,YAAY;AAAA,QACd;AAAA,QACA,iBAAiB;AAAA,QAEhB;AAAA;AAAA,IACH,GACF;AAAA,KACF;AAEJ;;;ACzGA,OAAOE,YAAW;AA0CR,gBAAAC,OAoDA,QAAAC,aApDA;AA/BV,IAAM,QAAQC,OAAM;AAAA,EAClB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,WAAW;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAEA,UAAM,aAAa;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAEA,UAAM,eAAe;AAAA,MACnB,MACE,gBAAAF,MAAC,SAAI,WAAU,WAAU,MAAK,gBAAe,SAAQ,aACnD,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA;AAAA,MACX,GACF;AAAA,MAEF,SACE,gBAAAA,MAAC,SAAI,WAAU,WAAU,MAAK,gBAAe,SAAQ,aACnD,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA;AAAA,MACX,GACF;AAAA,MAEF,SACE,gBAAAA,MAAC,SAAI,WAAU,WAAU,MAAK,gBAAe,SAAQ,aACnD,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA;AAAA,MACX,GACF;AAAA,MAEF,OACE,gBAAAA,MAAC,SAAI,WAAU,WAAU,MAAK,gBAAe,SAAQ,aACnD,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA;AAAA,MACX,GACF;AAAA,IAEJ;AAEA,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,SAAS,OAAO;AAAA,UAChB;AAAA,QACF;AAAA,QACA,MAAK;AAAA,QACJ,GAAG;AAAA,QAEJ,0BAAAC,MAAC,SAAI,WAAU,0BACb;AAAA,0BAAAD,MAAC,SAAI,WAAW,GAAG,iBAAiB,WAAW,OAAO,CAAC,GACpD,kBAAQ,aAAa,OAAO,GAC/B;AAAA,UAEA,gBAAAC,MAAC,SAAI,WAAU,UACZ;AAAA,qBAAS,gBAAAD,MAAC,QAAG,WAAU,sBAAsB,iBAAM;AAAA,YACpD,gBAAAA,MAAC,SAAI,WAAU,WAAW,UAAS;AAAA,aACrC;AAAA,UAEC,eAAe,aACd,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAW;AAAA,gBACT;AAAA,gBACA,WAAW,OAAO;AAAA,gBAClB;AAAA,cACF;AAAA,cACA,cAAW;AAAA,cAEX,0BAAAA,MAAC,SAAI,WAAU,WAAU,MAAK,gBAAe,SAAQ,aACnD,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,UAAS;AAAA,kBACT,GAAE;AAAA,kBACF,UAAS;AAAA;AAAA,cACX,GACF;AAAA;AAAA,UACF;AAAA,WAEJ;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AC7HpB,OAAOG,YAAW;AA+BZ,gBAAAC,aAAA;AAtBN,IAAM,YAAYC,OAAM;AAAA,EACtB,CACE;AAAA,IACE;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,YAAY;AAAA,MAChB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAEA,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,YAAY;AAAA,UACZ,WAAW;AAAA,UACX;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;AChDxB,OAAOE,YAAW;AAmBP,0BAAAC,OAiBP,QAAAC,cAjBO;AANJ,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,mBAAmB;AACrB,GAAuB;AACrB,MAAI,CAAC,kBAAkB;AAErB,WAAO,gBAAAD,MAAA,YAAG,UAAS;AAAA,EACrB;AAGA,QAAM,aAAaD,OAAM,SAAS,QAAQ,QAAQ;AAElD,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;AAAA,EACT;AAGA,QAAM,gBAAgB,WAAW,CAAC;AAGlC,QAAM,oBAAoB,WAAW,MAAM,CAAC;AAE5C,SACE,gBAAAE,OAAA,YAEG;AAAA;AAAA,IAGA,kBAAkB,SAAS,KAC1B,gBAAAD,MAAC,SAAI,WAAU,aAAa,6BAAkB;AAAA,KAElD;AAEJ;;;AC5CA,OAAOE,UAAS,YAAAC,WAAU,aAAAC,YAAW,UAAAC,eAAc;AAEnD,SAAS,MAAM,GAAG,eAAAC,oBAAmB;AA4K3B,SAgCF,YAAAC,WAhCE,OAAAC,OAgCF,QAAAC,cAhCE;AA/IV,IAAM,MAAMC,OAAM;AAAA,EAChB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,cAAc;AAAA,IACd,OAAO;AAAA,IACP,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,CAAC,kBAAkB,mBAAmB,IAAIC,UAAS,KAAK;AAC9D,UAAM,CAAC,gBAAgB,iBAAiB,IAAIA,UAAwB,IAAI;AACxE,UAAM,cAAcC,QAAuB,IAAI;AAG/C,IAAAC,WAAU,MAAM;AACd,eAAS,mBAAmB,OAAmB;AAC7C,YACE,YAAY,WACZ,CAAC,YAAY,QAAQ,SAAS,MAAM,MAAc,GAClD;AACA,4BAAkB,IAAI;AAAA,QACxB;AAAA,MACF;AAEA,eAAS,iBAAiB,aAAa,kBAAkB;AACzD,aAAO,MAAM;AACX,iBAAS,oBAAoB,aAAa,kBAAkB;AAAA,MAC9D;AAAA,IACF,GAAG,CAAC,CAAC;AAGL,IAAAA,WAAU,MAAM;AACd,eAAS,aAAa,OAAsB;AAC1C,YAAI,MAAM,QAAQ,UAAU;AAC1B,8BAAoB,KAAK;AACzB,4BAAkB,IAAI;AAAA,QACxB;AAAA,MACF;AAEA,eAAS,iBAAiB,WAAW,YAAY;AACjD,aAAO,MAAM;AACX,iBAAS,oBAAoB,WAAW,YAAY;AAAA,MACtD;AAAA,IACF,GAAG,CAAC,CAAC;AAGL,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,IACZ;AAGA,UAAM,kBAAkB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGA,UAAM,oBAAoB;AAAA,MACxB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,iBAAiB;AAAA,MACrB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAGA,UAAM,oBAAoB;AAAA,MACxB,SACE;AAAA,MACF,WACE;AAAA,MACF,SAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA,OACE;AAAA,IACJ;AAEA,UAAM,mBAAmB;AAAA,MACvB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAGA,UAAM,oBAAoB;AAAA,MACxB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,wBAAwB;AAAA,MAC5B,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAGA,UAAM,kBAAkB,CAAC,SAAkB;AACzC,UAAI,KAAK,SAAU;AAEnB,UAAI,KAAK,SAAS,YAAY;AAC5B,0BAAkB,mBAAmB,KAAK,KAAK,OAAO,KAAK,EAAE;AAC7D;AAAA,MACF;AAEA,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ;AAAA,MACf;AAEA,UAAI,aAAa;AACf,oBAAY,IAAI;AAAA,MAClB;AAGA,0BAAoB,KAAK;AACzB,wBAAkB,IAAI;AAAA,IACxB;AAGA,UAAM,gBAAgB,CAAC,MAAe,WAAoB,UAAU;AAClE,UAAI,KAAK,SAAS,WAAW;AAC3B,eACE,gBAAAL;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW;AAAA,cACT,gBAAgB,gBACd,CAAC,YACD;AAAA,eACD,gBAAgB,cAAc,aAC7B;AAAA,YACJ;AAAA;AAAA,UAPK,KAAK;AAAA,QAQZ;AAAA,MAEJ;AAEA,UAAI,KAAK,SAAS,YAAY,KAAK,QAAQ;AACzC,eAAO,gBAAAA,MAAC,SAAmB,eAAK,OAAO,KAAtB,KAAK,EAAmB;AAAA,MAC3C;AAEA,YAAM,WAAW,aAAa,KAAK;AACnC,YAAM,iBAAiB,mBAAmB,KAAK;AAC/C,YAAM,cAAc,KAAK,YAAY,KAAK,SAAS,SAAS;AAE5D,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA,kBAAkB,IAAI;AAAA,QACtB,eAAe,IAAI;AAAA,QACnB,kBAAkB,OAAO;AAAA,QACzB,YAAY,iBAAiB,OAAO;AAAA,QACpC,gBAAgB,cAAc;AAAA,QAC9B,KAAK,YAAY;AAAA,MACnB;AAEA,YAAM,UACJ,gBAAAC,OAAAF,WAAA,EACG;AAAA,aAAK,QAAQ,gBAAAC,MAAC,UAAK,WAAU,iBAAiB,eAAK,MAAK;AAAA,QACzD,gBAAAA,MAAC,UAAM,eAAK,OAAM;AAAA,QACjB,KAAK,SACJ,gBAAAA,MAAC,UAAK,WAAU,mHACb,eAAK,OACR;AAAA,QAED,eACC,gBAAAA;AAAA,UAACF;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,kBAAkB;AAAA,YACpB;AAAA;AAAA,QACF;AAAA,SAEJ;AAIF,UAAI,aAAa;AACf,eACE,gBAAAG,OAAC,SAAkB,WAAU,YAAW,KAAK,aAC3C;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM,gBAAgB,IAAI;AAAA,cACnC,WAAW;AAAA,cACX,UAAU,KAAK;AAAA,cAEd;AAAA;AAAA,UACH;AAAA,UAGC,kBACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,gBAAgB,cAAc;AAAA,cAChC;AAAA,cAEA,0BAAAA,MAAC,SAAI,WAAU,QACZ,eAAK,SAAU,IAAI,CAAC,UACnB,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBAEC,SAAS,MAAM,gBAAgB,KAAK;AAAA,kBACpC,UAAU,MAAM;AAAA,kBAChB,WAAW;AAAA,oBACT;AAAA,oBACA,MAAM,YAAY;AAAA,oBAClB,aAAa,MAAM,MACjB;AAAA,kBACJ;AAAA,kBAEC;AAAA,0BAAM,QACL,gBAAAD,MAAC,UAAK,WAAU,iBAAiB,gBAAM,MAAK;AAAA,oBAE9C,gBAAAA,MAAC,UAAM,gBAAM,OAAM;AAAA,oBAClB,MAAM,SACL,gBAAAA,MAAC,UAAK,WAAU,mHACb,gBAAM,OACT;AAAA;AAAA;AAAA,gBAjBG,MAAM;AAAA,cAmBb,CACD,GACH;AAAA;AAAA,UACF;AAAA,aA1CM,KAAK,EA4Cf;AAAA,MAEJ;AAGA,UAAI,KAAK,MAAM;AACb,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YAEC,MAAM,KAAK;AAAA,YACX,QAAQ,KAAK;AAAA,YACb,SAAS,MAAM,gBAAgB,IAAI;AAAA,YACnC,WAAW;AAAA,YAEV;AAAA;AAAA,UANI,KAAK;AAAA,QAOZ;AAAA,MAEJ;AAGA,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,gBAAgB,IAAI;AAAA,UACnC,UAAU,KAAK;AAAA,UACf,WAAW;AAAA,UAEV;AAAA;AAAA,QALI,KAAK;AAAA,MAMZ;AAAA,IAEJ;AAGA,UAAM,aACJ,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,sBAAsB,gBAAgB;AAAA,UACtC,gBAAgB,eAAe,kBAAkB;AAAA,QACnD;AAAA,QAEC,gBAAM,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC;AAAA;AAAA,IAC1C;AAIF,UAAM,YACJ,gBAAAC,OAAAF,WAAA,EAEE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MAAM,oBAAoB,CAAC,gBAAgB;AAAA,UACpD,WAAW;AAAA,YACT;AAAA,YACA,kBAAkB,gBAAgB;AAAA,UACpC;AAAA,UACA,cAAW;AAAA,UAEV,6BACC,gBAAAA,MAAC,KAAE,WAAU,WAAU,IAEvB,gBAAAA,MAAC,QAAK,WAAU,WAAU;AAAA;AAAA,MAE9B;AAAA,MAGC,oBACC,gBAAAC,OAAAF,WAAA,EACE;AAAA,wBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS,MAAM,oBAAoB,KAAK;AAAA;AAAA,QAC1C;AAAA,QACA,gBAAAA,MAAC,SAAI,WAAU,wLACb,0BAAAA,MAAC,SAAI,WAAU,sBACZ,gBAAM,IAAI,CAAC,SAAS,cAAc,MAAM,IAAI,CAAC,GAChD,GACF;AAAA,SACF;AAAA,OAEJ;AAGF,WACE,gBAAAA,MAAC,SAAI,KAAU,WAAW,GAAG,YAAY,SAAS,GAAI,GAAG,OACvD,0BAAAC,OAAC,SAAI,WAAW,iBAEb;AAAA,cAAQ,gBAAAD,MAAC,SAAI,WAAU,iBAAiB,gBAAK;AAAA,MAG7C;AAAA,MAGA,WACC,gBAAAA,MAAC,SAAI,WAAU,yCACZ,mBACH;AAAA,MAID;AAAA,OACH,GACF;AAAA,EAEJ;AACF;AAEA,IAAI,cAAc;;;ACzXlB,SAAgB,YAAAM,iBAAgB;AAChC,SAAS,QAAAC,OAAM,KAAAC,UAAS;AA+CpB,qBAAAC,WAcU,OAAAC,OAKJ,QAAAC,cAnBN;AAvBG,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAAoB;AAClB,QAAM,CAAC,gBAAgB,iBAAiB,IAAIL,UAAS,KAAK;AAE1D,QAAM,SAAS,aAAa;AAE5B,QAAM,kBAAkB,CAAC,WAAmB;AAC1C,gBAAY,MAAM;AAClB,sBAAkB,KAAK;AAAA,EACzB;AAGA,QAAM,cAAc,aAAa,QAAQ,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;AAEnE,SACE,gBAAAK,OAAAF,WAAA,EAEE;AAAA,oBAAAC,MAAC,SAAI,WAAU,yFACb,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,qBACT,SAAS,oBAAoB,kCAC/B;AAAA,QAEA;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM,kBAAkB,CAAC,cAAc;AAAA,cAChD,WAAU;AAAA,cACV,cAAW;AAAA,cAEV,2BACC,gBAAAA,MAACF,IAAA,EAAE,WAAU,yBAAwB,IAErC,gBAAAE,MAACH,OAAA,EAAK,WAAU,yBAAwB;AAAA;AAAA,UAE5C;AAAA,UACA,gBAAAI,OAAC,SACC;AAAA,4BAAAD,MAAC,QAAG,WAAU,mCAAmC,iBAAM;AAAA,YACtD,YAAY,gBAAAA,MAAC,OAAE,WAAU,yBAAyB,oBAAS;AAAA,aAC9D;AAAA;AAAA;AAAA,IACF,GACF;AAAA,IAGC,kBACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,GAAG;AAAA,QACpB,SAAS,MAAM,kBAAkB,KAAK;AAAA;AAAA,IACxC;AAAA,IAIF,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA;AAAA;AAAA,YAGP,SAAS,oBAAoB,kBAAkB;AAAA;AAAA,YAG/C,iBACI,kBACA,GACE,SAAS,sBAAsB,kBACjC,mBACN;AAAA;AAAA,QAIF;AAAA,0BAAAA,OAAC,SAAI,WAAU,gDACb;AAAA,4BAAAD,MAAC,QAAG,WAAU,mCAAmC,iBAAM;AAAA,YACtD,YAAY,gBAAAA,MAAC,OAAE,WAAU,8BAA8B,oBAAS;AAAA,aACnE;AAAA,UAGA,gBAAAA,MAAC,SAAI,WAAU,sBAAqB,eAAY,QAAO;AAAA,UAGvD,gBAAAA,MAAC,SAAI,WAAU,OACZ,sBAAY,IAAI,CAAC,SAAS,iBACzB,gBAAAC,OAAC,SAAuB,WAAW,eAAe,IAAI,SAAS,IAC5D;AAAA,oBAAQ,SACP,gBAAAD,MAAC,QAAG,WAAU,0EACX,kBAAQ,OACX;AAAA,YAEF,gBAAAA,MAAC,QAAG,WAAU,aACX,kBAAQ,MAAM,IAAI,CAAC,SAClB,gBAAAA,MAAC,QACC,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM,gBAAgB,KAAK,EAAE;AAAA,gBACtC,WAAW;AAAA;AAAA,0BAGP,eAAe,KAAK,KAChB,6BACA,gCACN;AAAA;AAAA,gBAGD;AAAA,uBAAK,QACJ,gBAAAD,MAAC,UAAK,WAAU,YAAY,eAAK,MAAK;AAAA,kBAExC,gBAAAA,MAAC,UAAM,eAAK,OAAM;AAAA;AAAA;AAAA,YACpB,KAhBO,KAAK,EAiBd,CACD,GACH;AAAA,eA3BQ,YA4BV,CACD,GACH;AAAA,UAGC,UACC,gBAAAA,MAAC,SAAI,WAAU,wCAAwC,kBAAO;AAAA;AAAA;AAAA,IAElE;AAAA,KACF;AAEJ;;;ACxJA,OAAOE,aAAW;AAaZ,SAQW,OAAAC,OARX,QAAAC,cAAA;AAHN,IAAM,aAAaC,QAAM;AAAA,EACvB,CAAC,EAAE,WAAW,MAAM,OAAO,aAAa,QAAQ,GAAG,MAAM,GAAG,QAAQ;AAClE,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,kBAAQ,gBAAAD,MAAC,SAAI,WAAU,sBAAsB,gBAAK;AAAA,UAEnD,gBAAAA,MAAC,QAAG,WAAU,4CAA4C,iBAAM;AAAA,UAE/D,eACC,gBAAAA,MAAC,OAAE,WAAU,uCAAuC,uBAAY;AAAA,UAGjE,UAAU,gBAAAA,MAAC,SAAK,kBAAO;AAAA;AAAA;AAAA,IAC1B;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;;;ACjCzB;AAAA,EACE;AAAA,EACA;AAAA,EACA,YAAAG;AAAA,EACA,aAAAC;AAAA,OAEK;;;ACRP;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,QAAU;AAAA,IACR,SAAW;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IACA,WAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IACA,SAAW;AAAA,IACX,OAAS;AAAA,IACT,SAAW;AAAA,IACX,MAAQ;AAAA,IACR,MAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IACA,YAAc;AAAA,IACd,YAAc;AAAA,IACd,OAAS;AAAA,IACT,iBAAmB;AAAA,EACrB;AAAA,EACA,SAAW;AAAA,IACT,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA,cAAgB;AAAA,IACd,MAAQ;AAAA,IACR,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,MAAQ;AAAA,EACV;AAAA,EACA,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV,IAAM;AAAA,MACN,IAAM;AAAA,MACN,MAAQ;AAAA,MACR,IAAM;AAAA,MACN,IAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IACA,YAAc;AAAA,MACZ,QAAU;AAAA,MACV,QAAU;AAAA,MACV,UAAY;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,YAAc;AAAA,IACZ,QAAU;AAAA,MACR,SAAW;AAAA,QACT,IAAM,EAAE,GAAK,UAAU,GAAK,WAAW;AAAA,QACvC,IAAM,EAAE,GAAK,WAAW,GAAK,SAAS;AAAA,QACtC,IAAM,EAAE,GAAK,QAAQ,GAAK,WAAW;AAAA,QACrC,IAAM,EAAE,GAAK,WAAW,GAAK,UAAU;AAAA,QACvC,IAAM,EAAE,GAAK,UAAU,GAAK,WAAW;AAAA,MACzC;AAAA,MACA,UAAY;AAAA,QACV,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,MAChB,YAAc;AAAA,IAChB;AAAA,IACA,MAAQ;AAAA,MACN,SAAW;AAAA,QACT,MAAQ;AAAA,QACR,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,MAChB,aAAe;AAAA,MACf,QAAU;AAAA,QACR,MAAQ;AAAA,QACR,UAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP,SAAW;AAAA,QACT,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,UAAY;AAAA,QACV,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,MAChB,aAAe;AAAA,IACjB;AAAA,IACA,UAAY;AAAA,MACV,MAAQ;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,QACd,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,eAAiB;AAAA,QACf,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,IAClB;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,QACd,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,eAAiB;AAAA,QACf,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV,SAAW;AAAA,QACT,IAAM,EAAE,GAAK,UAAU,GAAK,UAAU;AAAA,QACtC,IAAM,EAAE,GAAK,WAAW,GAAK,WAAW;AAAA,QACxC,IAAM,EAAE,GAAK,QAAQ,GAAK,SAAS;AAAA,QACnC,IAAM,EAAE,GAAK,WAAW,GAAK,WAAW;AAAA,QACxC,IAAM,EAAE,GAAK,UAAU,GAAK,UAAU;AAAA,MACxC;AAAA,MACA,UAAY;AAAA,QACV,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,UAAY;AAAA,QACV,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,eAAiB;AAAA,QACf,IAAM,EAAE,GAAK,UAAU,GAAK,UAAU;AAAA,QACtC,IAAM,EAAE,GAAK,WAAW,GAAK,WAAW;AAAA,QACxC,IAAM,EAAE,GAAK,QAAQ,GAAK,SAAS;AAAA,QACnC,IAAM,EAAE,GAAK,WAAW,GAAK,WAAW;AAAA,QACxC,IAAM,EAAE,GAAK,UAAU,GAAK,UAAU;AAAA,MACxC;AAAA,MACA,gBAAkB;AAAA,QAChB,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,MAChB,aAAe;AAAA,IACjB;AAAA,IACA,KAAO;AAAA,MACL,QAAU;AAAA,MACV,aAAe;AAAA,QACb,IAAM,EAAE,GAAK,YAAY,GAAK,UAAU;AAAA,QACxC,IAAM,EAAE,GAAK,UAAU,GAAK,WAAW;AAAA,QACvC,IAAM,EAAE,GAAK,WAAW,GAAK,SAAS;AAAA,QACtC,IAAM,EAAE,GAAK,QAAQ,GAAK,WAAW;AAAA,QACrC,IAAM,EAAE,GAAK,WAAW,GAAK,UAAU;AAAA,MACzC;AAAA,MACA,UAAY;AAAA,QACV,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,QACN,IAAM;AAAA,MACR;AAAA,MACA,cAAgB;AAAA,MAChB,KAAO;AAAA,IACT;AAAA,EACF;AACF;;;ADhCI,gBAAAC,aAAA;AAhNJ,IAAM,eAAe,cAA4C,MAAS;AAEnE,SAAS,cAAc,EAAE,SAAS,GAA4B;AACnE,QAAM,CAAC,OAAO,aAAa,IAAIC,UAAgB,eAAqB;AAGpE,QAAM,aAAa,CAAC,aAAoB;AACtC,UAAM,OAAO,SAAS;AAGtB,UAAM,SAAS,SAAS;AAGxB,WAAO,QAAQ,OAAO,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,KAAK,MAAM;AACzD,UAAI,OAAO;AACT,aAAK,MAAM,YAAY,mBAAmB,KAAK,IAAI,KAAK;AAAA,MAC1D;AAAA,IACF,CAAC;AAGD,WAAO,QAAQ,OAAO,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,KAAK,MAAM;AAC3D,UAAI,OAAO;AACT,aAAK,MAAM,YAAY,qBAAqB,KAAK,IAAI,KAAK;AAAA,MAC5D;AAAA,IACF,CAAC;AAGD,SAAK,MAAM,YAAY,mBAAmB,OAAO,OAAO;AACxD,SAAK,MAAM,YAAY,iBAAiB,OAAO,KAAK;AACpD,SAAK,MAAM,YAAY,mBAAmB,OAAO,OAAO;AACxD,SAAK,MAAM,YAAY,gBAAgB,OAAO,IAAI;AAGlD,WAAO,QAAQ,OAAO,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,KAAK,MAAM;AACtD,UAAI,OAAO;AACT,aAAK,MAAM,YAAY,gBAAgB,KAAK,IAAI,KAAK;AAAA,MACvD;AAAA,IACF,CAAC;AAGD,SAAK,MAAM,YAAY,sBAAsB,OAAO,UAAU;AAC9D,SAAK,MAAM,YAAY,sBAAsB,OAAO,UAAU;AAC9D,SAAK,MAAM,YAAY,iBAAiB,OAAO,KAAK;AACpD,SAAK,MAAM,YAAY,4BAA4B,OAAO,eAAe;AAGzE,WAAO,QAAQ,SAAS,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACzD,WAAK,MAAM,YAAY,aAAa,GAAG,IAAI,KAAK;AAAA,IAClD,CAAC;AAGD,WAAO,QAAQ,SAAS,YAAY,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9D,WAAK,MAAM,YAAY,YAAY,GAAG,IAAI,KAAK;AAAA,IACjD,CAAC;AAGD,UAAM,EAAE,WAAW,IAAI;AAGvB,SAAK,MAAM;AAAA,MACT;AAAA,MACA,WAAW,WAAW,KAAK,KAAK,IAAI;AAAA,IACtC;AACA,SAAK,MAAM;AAAA,MACT;AAAA,MACA,WAAW,WAAW,KAAK,KAAK,IAAI;AAAA,IACtC;AAGA,WAAO,QAAQ,WAAW,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5D,WAAK,MAAM,YAAY,UAAU,GAAG,IAAI,KAAK;AAAA,IAC/C,CAAC;AAGD,WAAO,QAAQ,WAAW,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9D,WAAK,MAAM,YAAY,UAAU,GAAG,IAAI,KAAK;AAAA,IAC/C,CAAC;AAGD,UAAM,SAAS,SAAS,WAAW;AACnC,WAAO,QAAQ,OAAO,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AAC1D,WAAK,MAAM,YAAY,oBAAoB,IAAI,MAAM,QAAQ,CAAC;AAC9D,WAAK,MAAM,YAAY,oBAAoB,IAAI,MAAM,QAAQ,CAAC;AAAA,IAChE,CAAC;AACD,WAAO,QAAQ,OAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AAC5D,WAAK,MAAM,YAAY,sBAAsB,IAAI,IAAI,QAAQ;AAAA,IAC/D,CAAC;AACD,SAAK,MAAM,YAAY,mBAAmB,OAAO,YAAY;AAC7D,SAAK,MAAM,YAAY,wBAAwB,OAAO,UAAU;AAGhE,UAAM,OAAO,SAAS,WAAW;AACjC,WAAO,QAAQ,KAAK,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AACxD,WAAK,MAAM,YAAY,kBAAkB,IAAI,IAAI,OAAO;AAAA,IAC1D,CAAC;AACD,SAAK,MAAM,YAAY,iBAAiB,KAAK,YAAY;AACzD,SAAK,MAAM,YAAY,uBAAuB,KAAK,WAAW;AAC9D,SAAK,MAAM,YAAY,sBAAsB,KAAK,OAAO,IAAI;AAC7D,SAAK,MAAM,YAAY,0BAA0B,KAAK,OAAO,QAAQ;AAGrE,UAAM,QAAQ,SAAS,WAAW;AAClC,WAAO,QAAQ,MAAM,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AACzD,WAAK,MAAM,YAAY,mBAAmB,IAAI,IAAI,OAAO;AAAA,IAC3D,CAAC;AACD,WAAO,QAAQ,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AAC3D,WAAK,MAAM,YAAY,qBAAqB,IAAI,IAAI,QAAQ;AAAA,IAC9D,CAAC;AACD,SAAK,MAAM,YAAY,kBAAkB,MAAM,YAAY;AAC3D,SAAK,MAAM,YAAY,wBAAwB,MAAM,WAAW;AAGhE,UAAM,WAAW,SAAS,WAAW;AACrC,WAAO,QAAQ,SAAS,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,SAAS,MAAM;AAC3D,WAAK,MAAM,YAAY,mBAAmB,IAAI,IAAI,SAAS;AAAA,IAC7D,CAAC;AACD,WAAO,QAAQ,SAAS,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AACjE,WAAK,MAAM,YAAY,4BAA4B,IAAI,IAAI,OAAO;AAAA,IACpE,CAAC;AACD,WAAO,QAAQ,SAAS,aAAa,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AACnE,WAAK,MAAM,YAAY,8BAA8B,IAAI,IAAI,QAAQ;AAAA,IACvE,CAAC;AACD,SAAK,MAAM,YAAY,qBAAqB,SAAS,YAAY;AAGjE,UAAM,QAAQ,SAAS,WAAW;AAClC,WAAO,QAAQ,MAAM,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,SAAS,MAAM;AACxD,WAAK,MAAM,YAAY,gBAAgB,IAAI,IAAI,SAAS;AAAA,IAC1D,CAAC;AACD,WAAO,QAAQ,MAAM,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AAC9D,WAAK,MAAM,YAAY,yBAAyB,IAAI,IAAI,OAAO;AAAA,IACjE,CAAC;AACD,WAAO,QAAQ,MAAM,aAAa,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AAChE,WAAK,MAAM,YAAY,2BAA2B,IAAI,IAAI,QAAQ;AAAA,IACpE,CAAC;AAGD,UAAM,WAAW,SAAS,WAAW;AACrC,WAAO,QAAQ,SAAS,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AAC5D,WAAK,MAAM,YAAY,sBAAsB,IAAI,MAAM,QAAQ,CAAC;AAChE,WAAK,MAAM,YAAY,sBAAsB,IAAI,MAAM,QAAQ,CAAC;AAAA,IAClE,CAAC;AACD,WAAO,QAAQ,SAAS,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AAC9D,WAAK,MAAM,YAAY,wBAAwB,IAAI,IAAI,QAAQ;AAAA,IACjE,CAAC;AACD,WAAO,QAAQ,SAAS,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AAC9D,WAAK,MAAM,YAAY,wBAAwB,IAAI,IAAI,QAAQ;AAAA,IACjE,CAAC;AACD,WAAO,QAAQ,SAAS,aAAa,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AAClE,WAAK,MAAM,YAAY,6BAA6B,IAAI,MAAM,QAAQ,CAAC;AACvE,WAAK,MAAM,YAAY,6BAA6B,IAAI,MAAM,QAAQ,CAAC;AAAA,IACzE,CAAC;AACD,WAAO,QAAQ,SAAS,cAAc,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AACpE,WAAK,MAAM,YAAY,+BAA+B,IAAI,IAAI,QAAQ;AAAA,IACxE,CAAC;AACD,SAAK,MAAM,YAAY,qBAAqB,SAAS,YAAY;AACjE,SAAK,MAAM,YAAY,2BAA2B,SAAS,WAAW;AAGtE,UAAM,MAAM,SAAS,WAAW;AAChC,SAAK,MAAM,YAAY,gBAAgB,IAAI,MAAM;AACjD,WAAO,QAAQ,IAAI,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AAC3D,WAAK,MAAM,YAAY,sBAAsB,IAAI,MAAM,QAAQ,CAAC;AAChE,WAAK,MAAM,YAAY,sBAAsB,IAAI,MAAM,QAAQ,CAAC;AAAA,IAClE,CAAC;AACD,WAAO,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AACzD,WAAK,MAAM,YAAY,mBAAmB,IAAI,IAAI,QAAQ;AAAA,IAC5D,CAAC;AACD,SAAK,MAAM,YAAY,uBAAuB,IAAI,YAAY;AAC9D,SAAK,MAAM,YAAY,aAAa,IAAI,GAAG;AAE3C,kBAAc,QAAQ;AAAA,EACxB;AAEA,QAAM,WAAW,CAAC,aAAoB;AACpC,eAAW,QAAQ;AAEnB,QAAI,OAAO,WAAW,aAAa;AACjC,mBAAa,QAAQ,SAAS,KAAK,UAAU,QAAQ,CAAC;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,aAAa,MAAM;AACvB,eAAW,eAAqB;AAChC,QAAI,OAAO,WAAW,aAAa;AACjC,mBAAa,WAAW,OAAO;AAAA,IACjC;AAAA,EACF;AAGA,EAAAC,WAAU,MAAM;AACd,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,aAAa,aAAa,QAAQ,OAAO;AAC/C,UAAI,YAAY;AACd,YAAI;AACF,gBAAM,cAAc,KAAK,MAAM,UAAU;AACzC,qBAAW,WAAW;AAAA,QACxB,SAAS,OAAO;AACd,kBAAQ,MAAM,gCAAgC,KAAK;AACnD,qBAAW,eAAqB;AAAA,QAClC;AAAA,MACF,OAAO;AACL,mBAAW,eAAqB;AAAA,MAClC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAF,MAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,OAAO,UAAU,YAAY,WAAW,GACrE,UACH;AAEJ;AAEO,SAAS,WAAW;AACzB,QAAM,UAAU,WAAW,YAAY;AACvC,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AACA,SAAO;AACT;","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","React","jsx","jsxs","React","useState","useEffect","jsx","useState","useEffect"]}
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"]}