@matheusrizzati/ui 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/components/theme-provider/theme-provider.tsx","../src/components/button/button.styles.ts","../src/components/button/button.tsx","../src/components/input/input.styles.ts","../src/components/input/input.tsx","../src/components/textarea/textarea.styles.ts","../src/components/textarea/textarea.tsx","../src/components/select/select.styles.ts","../src/components/select/select.tsx","../src/components/combobox/combobox.styles.ts","../src/components/combobox/combobox.tsx","../src/components/checkbox/checkbox.styles.ts","../src/components/checkbox/checkbox.tsx","../src/components/radio/radio.styles.ts","../src/components/radio/radio.tsx","../src/components/switch/switch.styles.ts","../src/components/switch/switch.tsx","../src/components/separator/separator.tsx","../src/components/avatar/avatar.styles.ts","../src/components/avatar/avatar.tsx","../src/components/tooltip/tooltip.styles.ts","../src/components/tooltip/tooltip.tsx","../src/components/popover/popover.styles.ts","../src/components/popover/popover.tsx","../src/components/card/card.styles.ts","../src/components/card/card.tsx","../src/components/modal/modal.styles.ts","../src/components/modal/modal.tsx","../src/components/dropdown/dropdown.styles.ts","../src/components/dropdown/dropdown.tsx","../src/components/badge/badge.styles.ts","../src/components/badge/badge.tsx","../src/components/tabs/tabs.styles.ts","../src/components/tabs/tabs.tsx","../src/components/table/table.styles.ts","../src/components/table/table.tsx","../src/components/sidebar/sidebar.styles.ts","../src/components/sidebar/sidebar.tsx","../src/components/stat-card/stat-card.styles.ts","../src/components/stat-card/stat-card.tsx","../src/components/empty-state/empty-state.styles.ts","../src/components/empty-state/empty-state.tsx","../src/components/alert/alert.styles.ts","../src/components/alert/alert.tsx","../src/components/skeleton/skeleton.styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/progress/progress.styles.ts","../src/components/progress/progress.tsx","../src/components/pagination/pagination.styles.ts","../src/components/pagination/pagination.tsx","../src/components/breadcrumb/breadcrumb.styles.ts","../src/components/breadcrumb/breadcrumb.tsx","../src/components/toast/toast.tsx","../src/components/command-palette/command-palette.tsx","../src/components/data-table/data-table.tsx","../src/components/steps/steps.tsx","../src/components/app-shell/app-shell.tsx","../src/components/page-header/page-header.styles.ts","../src/components/page-header/page-header.tsx","../src/components/navbar/navbar.styles.ts","../src/components/navbar/navbar.tsx","../src/components/drawer/drawer.styles.ts","../src/components/drawer/drawer.tsx","../src/components/accordion/accordion.styles.ts","../src/components/accordion/accordion.tsx","../src/components/slider/slider.styles.ts","../src/components/slider/slider.tsx","../src/components/avatar/avatar-group.tsx","../src/components/confirm-dialog/confirm-dialog.tsx"],"names":["React","cva","forwardRef","jsxs","jsx","labelStyles","helperStyles","errorStyles","useEffect","useState","useRef","useMemo","useCallback","flatIndex","PopoverPrimitive","PopoverPrimitive2","Fragment","createContext","useContext","Dialog","Dialog2","tableStyles","thStyles","tdStyles","contentStyles","overlayStyles"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\n/**\r\n * Merge class names with Tailwind conflict resolution.\r\n * Combines clsx conditional logic with tailwind-merge deduplication.\r\n */\r\nexport function cn(...inputs: ClassValue[]): string {\r\n return twMerge(clsx(inputs));\r\n}\r\n","import React, {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\n\r\nexport type Theme = \"light\" | \"dark\" | \"system\";\r\n\r\ninterface ThemeContextValue {\r\n /** The current theme setting ('light', 'dark', or 'system') */\r\n theme: Theme;\r\n /** The resolved theme after evaluating system preference */\r\n resolvedTheme: \"light\" | \"dark\";\r\n /** Set a specific theme */\r\n setTheme: (theme: Theme) => void;\r\n /** Toggle between light and dark */\r\n toggleTheme: () => void;\r\n}\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\r\n\r\nexport interface ThemeProviderProps {\r\n children: React.ReactNode;\r\n /** Default theme if nothing is stored. Defaults to 'system'. */\r\n defaultTheme?: Theme;\r\n /** localStorage key for persistence. Defaults to 'rizhel-theme'. */\r\n storageKey?: string;\r\n /** Force a specific theme, ignoring stored/default value. */\r\n forcedTheme?: \"light\" | \"dark\";\r\n}\r\n\r\nfunction getSystemTheme(): \"light\" | \"dark\" {\r\n if (typeof window === \"undefined\") return \"dark\";\r\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\r\n ? \"dark\"\r\n : \"light\";\r\n}\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"system\",\r\n storageKey = \"rizhel-theme\",\r\n forcedTheme,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<Theme>(() => {\r\n if (forcedTheme) return forcedTheme;\r\n if (typeof window === \"undefined\") return defaultTheme;\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") {\r\n return stored;\r\n }\r\n } catch {\r\n // localStorage not available\r\n }\r\n return defaultTheme;\r\n });\r\n\r\n const resolvedTheme = useMemo<\"light\" | \"dark\">(() => {\r\n if (forcedTheme) return forcedTheme;\r\n if (theme === \"system\") return getSystemTheme();\r\n return theme;\r\n }, [theme, forcedTheme]);\r\n\r\n const setTheme = useCallback(\r\n (newTheme: Theme) => {\r\n if (forcedTheme) return;\r\n setThemeState(newTheme);\r\n try {\r\n localStorage.setItem(storageKey, newTheme);\r\n } catch {\r\n // localStorage not available\r\n }\r\n },\r\n [forcedTheme, storageKey]\r\n );\r\n\r\n const toggleTheme = useCallback(() => {\r\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\r\n }, [resolvedTheme, setTheme]);\r\n\r\n // Apply the .dark class to <html>\r\n useEffect(() => {\r\n const root = document.documentElement;\r\n if (resolvedTheme === \"dark\") {\r\n root.classList.add(\"dark\");\r\n } else {\r\n root.classList.remove(\"dark\");\r\n }\r\n }, [resolvedTheme]);\r\n\r\n // Listen for system preference changes when theme === 'system'\r\n useEffect(() => {\r\n if (theme !== \"system\") return;\r\n const mql = window.matchMedia(\"(prefers-color-scheme: dark)\");\r\n const handler = () => setThemeState(\"system\"); // triggers re-resolve\r\n mql.addEventListener(\"change\", handler);\r\n return () => mql.removeEventListener(\"change\", handler);\r\n }, [theme]);\r\n\r\n const value = useMemo(\r\n () => ({ theme, resolvedTheme, setTheme, toggleTheme }),\r\n [theme, resolvedTheme, setTheme, toggleTheme]\r\n );\r\n\r\n return React.createElement(ThemeContext.Provider, { value }, children);\r\n}\r\n\r\n/**\r\n * Hook to access the current theme and theme controls.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { theme, resolvedTheme, toggleTheme } = useTheme();\r\n * ```\r\n */\r\nexport function useTheme(): ThemeContextValue {\r\n const context = useContext(ThemeContext);\r\n if (!context) {\r\n throw new Error(\"useTheme must be used within a <ThemeProvider>\");\r\n }\r\n return context;\r\n}\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const buttonVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center gap-2\",\r\n \"font-medium whitespace-nowrap select-none\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n \"active:scale-[0.98]\",\r\n \"cursor-pointer\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n primary: [\r\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\r\n \"hover:bg-[var(--color-primary-hover)]\",\r\n \"shadow-[0_1px_2px_0_rgba(0,0,0,0.4),0_0_0_1px_rgba(255,255,255,0.1)_inset]\",\r\n \"hover:shadow-[0_0_20px_-5px_var(--color-primary-500),0_0_0_1px_rgba(255,255,255,0.1)_inset]\",\r\n \"transition-all duration-300\",\r\n ],\r\n secondary: [\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-slate-700)] shadow-sm\",\r\n \"hover:bg-[var(--color-slate-800)] hover:border-[var(--color-slate-600)]\",\r\n ],\r\n ghost: [\r\n \"text-[var(--color-text-secondary)]\",\r\n \"hover:bg-[var(--color-slate-800)/50] hover:text-[var(--color-text-primary)]\",\r\n ],\r\n danger: [\r\n \"bg-[var(--color-danger)] text-white shadow-sm\",\r\n \"hover:brightness-110 hover:shadow-[0_0_15px_-3px_var(--color-danger)]\",\r\n ],\r\n },\r\n size: {\r\n sm: \"h-8 px-3 text-[var(--text-xs)] rounded-[var(--radius-sm)]\",\r\n md: \"h-10 px-4 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n lg: \"h-12 px-6 text-[var(--text-base)] rounded-[var(--radius-md)]\",\r\n icon: \"h-10 w-10 rounded-[var(--radius)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"primary\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, type ButtonHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { buttonVariants } from \"./button.styles\";\r\n\r\nexport interface ButtonProps\r\n extends ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n /** Show a loading spinner and disable the button */\r\n loading?: boolean;\r\n}\r\n\r\nconst Spinner = () => (\r\n <svg\r\n className=\"animate-spin h-4 w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <circle\r\n className=\"opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, loading, disabled, children, ...props }, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n className={cn(buttonVariants({ variant, size }), className)}\r\n disabled={disabled || loading}\r\n {...props}\r\n >\r\n {loading && <Spinner />}\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const inputVariants = cva(\r\n [\r\n \"w-full bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-slate-700)] shadow-sm\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)] focus:shadow-[0_0_0_1px_var(--color-primary),0_0_15px_-3px_var(--color-primary-500)]\",\r\n \"hover:border-[var(--color-slate-600)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)]\",\r\n ],\r\n {\r\n variants: {\r\n inputSize: {\r\n sm: \"h-8 px-3 text-[var(--text-xs)] rounded-[var(--radius-sm)]\",\r\n md: \"h-10 px-3 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n lg: \"h-12 px-4 text-[var(--text-base)] rounded-[var(--radius-md)]\",\r\n },\r\n state: {\r\n default: \"\",\r\n error: \"border-[var(--color-danger)] focus:ring-[var(--color-danger)] focus:shadow-[0_0_0_1px_var(--color-danger),0_0_15px_-3px_var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n inputSize: \"md\",\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport const labelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const helperStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n\r\nexport const errorStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n","import React, { forwardRef, type InputHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { inputVariants, labelStyles, helperStyles, errorStyles } from \"./input.styles\";\r\n\r\nexport interface InputProps\r\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\r\n VariantProps<typeof inputVariants> {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Helper text displayed below the input */\r\n helperText?: string;\r\n /** Error message — also sets error styling */\r\n error?: string;\r\n /** Content rendered at the start of the input */\r\n startIcon?: React.ReactNode;\r\n /** Content rendered at the end of the input */\r\n endIcon?: React.ReactNode;\r\n /** Callback to clear the input value — shows a clear (×) button when provided and input has value */\r\n onClear?: () => void;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n className,\r\n inputSize,\r\n state,\r\n label,\r\n helperText,\r\n error,\r\n startIcon,\r\n endIcon,\r\n onClear,\r\n id,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const inputId = id || (label ? label.toLowerCase().replace(/\\s+/g, \"-\") : undefined);\r\n const effectiveState = error ? \"error\" : state;\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label htmlFor={inputId} className={labelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {startIcon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-[var(--color-text-muted)]\">\r\n {startIcon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n className={cn(\r\n inputVariants({ inputSize, state: effectiveState }),\r\n startIcon && \"pl-9\",\r\n (endIcon || onClear) && \"pr-9\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n {onClear && props.value ? (\r\n <button\r\n type=\"button\"\r\n tabIndex={-1}\r\n onClick={onClear}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors cursor-pointer p-0.5 rounded-[var(--radius-sm)]\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n ) : endIcon ? (\r\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--color-text-muted)]\">\r\n {endIcon}\r\n </div>\r\n ) : null}\r\n </div>\r\n {error && <p className={errorStyles}>{error}</p>}\r\n {!error && helperText && <p className={helperStyles}>{helperText}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const textareaVariants = cva(\r\n [\r\n \"w-full bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)]\",\r\n \"resize-y min-h-[80px]\",\r\n ],\r\n {\r\n variants: {\r\n inputSize: {\r\n sm: \"px-3 py-2 text-[var(--text-xs)] rounded-[var(--radius-sm)]\",\r\n md: \"px-3 py-2.5 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n lg: \"px-4 py-3 text-[var(--text-base)] rounded-[var(--radius-md)]\",\r\n },\r\n state: {\r\n default: \"\",\r\n error: \"border-[var(--color-danger)] focus:ring-[var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n inputSize: \"md\",\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport const labelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const helperStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n\r\nexport const errorStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n\r\nexport const counterStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)] text-right\";\r\n","import React, { forwardRef, useEffect, useRef, type TextareaHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { textareaVariants, labelStyles, helperStyles, errorStyles, counterStyles } from \"./textarea.styles\";\r\n\r\nexport interface TextareaProps\r\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">,\r\n VariantProps<typeof textareaVariants> {\r\n label?: string;\r\n helperText?: string;\r\n error?: string;\r\n autoResize?: boolean;\r\n showCount?: boolean;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n (\r\n {\r\n className,\r\n inputSize,\r\n state,\r\n label,\r\n helperText,\r\n error,\r\n autoResize,\r\n showCount,\r\n maxLength,\r\n id,\r\n value,\r\n defaultValue,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const inputId = id || (label ? label.toLowerCase().replace(/\\s+/g, \"-\") : undefined);\r\n const effectiveState = error ? \"error\" : state;\r\n const internalRef = useRef<HTMLTextAreaElement>(null);\r\n const textareaRef = (ref as React.RefObject<HTMLTextAreaElement>) || internalRef;\r\n\r\n useEffect(() => {\r\n if (autoResize && textareaRef.current) {\r\n const el = textareaRef.current;\r\n el.style.height = \"auto\";\r\n el.style.height = el.scrollHeight + \"px\";\r\n }\r\n }, [autoResize, value, defaultValue, textareaRef]);\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (autoResize) {\r\n e.target.style.height = \"auto\";\r\n e.target.style.height = e.target.scrollHeight + \"px\";\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const currentLength = typeof value === \"string\" ? value.length : 0;\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label htmlFor={inputId} className={labelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n <textarea\r\n ref={textareaRef}\r\n id={inputId}\r\n className={cn(\r\n textareaVariants({ inputSize, state: effectiveState }),\r\n autoResize && \"resize-none overflow-hidden\",\r\n className\r\n )}\r\n value={value}\r\n defaultValue={defaultValue}\r\n maxLength={maxLength}\r\n onChange={handleChange}\r\n rows={props.rows || 3}\r\n {...props}\r\n />\r\n <div className=\"flex justify-between\">\r\n <div>\r\n {error && <p className={errorStyles}>{error}</p>}\r\n {!error && helperText && <p className={helperStyles}>{helperText}</p>}\r\n </div>\r\n {showCount && maxLength && (\r\n <p className={counterStyles}>\r\n {currentLength}/{maxLength}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n","export const selectTriggerStyles = [\r\n \"flex items-center justify-between w-full\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)] cursor-pointer\",\r\n].join(\" \");\r\n\r\nexport const selectTriggerSizes: Record<string, string> = {\r\n sm: \"h-8 px-3 text-[var(--text-xs)] rounded-[var(--radius-sm)] gap-2\",\r\n md: \"h-10 px-3 text-[var(--text-sm)] rounded-[var(--radius)] gap-2\",\r\n lg: \"h-12 px-4 text-[var(--text-base)] rounded-[var(--radius-md)] gap-3\",\r\n};\r\n\r\nexport const selectContentStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-[var(--radix-popover-trigger-width)] overflow-hidden\",\r\n \"rounded-[var(--radius-md)]\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"animate-in fade-in-0 zoom-in-[0.98]\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.98]\",\r\n].join(\" \");\r\n\r\nexport const selectSearchStyles = [\r\n \"w-full bg-transparent text-[var(--color-text-primary)]\",\r\n \"text-[var(--text-sm)] px-3 py-2.5\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"focus:outline-none\",\r\n \"font-[var(--font-sans)]\",\r\n].join(\" \");\r\n\r\nexport const selectItemStyles = [\r\n \"relative flex items-center gap-2 w-full\",\r\n \"px-3 py-2 cursor-pointer select-none\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius-sm)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"outline-none\",\r\n].join(\" \");\r\n\r\nexport const selectItemActiveStyles =\r\n \"bg-[var(--color-surface-hover)] text-[var(--color-text-primary)]\";\r\n\r\nexport const selectItemSelectedStyles =\r\n \"text-[var(--color-primary-400)] font-medium\";\r\n\r\nexport const selectGroupLabelStyles = [\r\n \"px-3 py-1.5\",\r\n \"text-[var(--text-xs)] font-semibold uppercase tracking-wider\",\r\n \"text-[var(--color-text-muted)]\",\r\n].join(\" \");\r\n\r\nexport const selectPlaceholderStyles =\r\n \"text-[var(--color-text-muted)]\";\r\n\r\nexport const selectClearStyles = [\r\n \"shrink-0 p-0.5 rounded-[var(--radius-sm)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n].join(\" \");\r\n\r\nexport const selectLabelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const selectHelperStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n\r\nexport const selectErrorStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n\r\nexport const selectErrorTriggerStyles =\r\n \"border-[var(--color-danger)] focus:ring-[var(--color-danger)]\";\r\n","import React, {\r\n forwardRef,\r\n useState,\r\n useRef,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n type KeyboardEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n selectTriggerStyles,\r\n selectTriggerSizes,\r\n selectContentStyles,\r\n selectSearchStyles,\r\n selectItemStyles,\r\n selectItemActiveStyles,\r\n selectItemSelectedStyles,\r\n selectGroupLabelStyles,\r\n selectPlaceholderStyles,\r\n selectClearStyles,\r\n selectLabelStyles,\r\n selectHelperStyles,\r\n selectErrorStyles,\r\n selectErrorTriggerStyles,\r\n} from \"./select.styles\";\r\n\r\nexport interface SelectOption {\r\n value: string;\r\n label: string;\r\n disabled?: boolean;\r\n /** Optional icon or element to render before the label */\r\n icon?: ReactNode;\r\n /** Optional description text below the label */\r\n description?: string;\r\n}\r\n\r\nexport interface SelectGroup {\r\n label: string;\r\n options: SelectOption[];\r\n}\r\n\r\nexport interface SelectProps {\r\n /** Flat list of options */\r\n options?: SelectOption[];\r\n /** Grouped options — takes priority over `options` */\r\n groups?: SelectGroup[];\r\n /** Currently selected value */\r\n value?: string;\r\n /** Callback when value changes */\r\n onChange?: (value: string) => void;\r\n /** Placeholder text shown when nothing is selected */\r\n placeholder?: string;\r\n /** Label above the select */\r\n label?: string;\r\n /** Helper text below the select */\r\n helperText?: string;\r\n /** Error message — activates error styling */\r\n error?: string;\r\n /** No search results text */\r\n emptyMessage?: string;\r\n /** Enable search filtering */\r\n searchable?: boolean;\r\n /** Search input placeholder */\r\n searchPlaceholder?: string;\r\n /** Allow clearing the selected value */\r\n clearable?: boolean;\r\n /** Component size */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n /** Disable the select */\r\n disabled?: boolean;\r\n /** Additional class name */\r\n className?: string;\r\n /** Custom option renderer */\r\n renderOption?: (option: SelectOption, isSelected: boolean) => ReactNode;\r\n}\r\n\r\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\r\n (\r\n {\r\n options = [],\r\n groups,\r\n value,\r\n onChange,\r\n placeholder = \"Select an option...\",\r\n label,\r\n helperText,\r\n error,\r\n emptyMessage = \"No results found.\",\r\n searchable = false,\r\n searchPlaceholder = \"Search...\",\r\n clearable = false,\r\n size = \"md\",\r\n disabled,\r\n className,\r\n renderOption,\r\n },\r\n ref\r\n ) => {\r\n const [open, setOpen] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const searchRef = useRef<HTMLInputElement>(null);\r\n const listRef = useRef<HTMLDivElement>(null);\r\n\r\n // Build flat list from groups or options\r\n const allOptions = useMemo(() => {\r\n if (groups) {\r\n return groups.flatMap((g) => g.options);\r\n }\r\n return options;\r\n }, [groups, options]);\r\n\r\n // Filter options\r\n const filterOptions = useCallback(\r\n (opts: SelectOption[]) =>\r\n search\r\n ? opts.filter((o) =>\r\n o.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n : opts,\r\n [search]\r\n );\r\n\r\n const filteredAll = useMemo(() => filterOptions(allOptions), [filterOptions, allOptions]);\r\n\r\n const filteredGroups = useMemo(() => {\r\n if (!groups) return null;\r\n return groups\r\n .map((g) => ({\r\n ...g,\r\n options: filterOptions(g.options),\r\n }))\r\n .filter((g) => g.options.length > 0);\r\n }, [groups, filterOptions]);\r\n\r\n const selectedOption = allOptions.find((o) => o.value === value);\r\n\r\n const handleSelect = useCallback(\r\n (optValue: string) => {\r\n onChange?.(optValue);\r\n setOpen(false);\r\n setSearch(\"\");\r\n },\r\n [onChange]\r\n );\r\n\r\n const handleClear = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onChange?.(\"\");\r\n setSearch(\"\");\r\n },\r\n [onChange]\r\n );\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement | HTMLButtonElement>) => {\r\n const items = filteredAll.filter((o) => !o.disabled);\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n if (!open) {\r\n setOpen(true);\r\n return;\r\n }\r\n setActiveIndex((i) => Math.min(i + 1, items.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.max(i - 1, 0));\r\n } else if (e.key === \"Enter\" && activeIndex >= 0) {\r\n e.preventDefault();\r\n const opt = items[activeIndex];\r\n if (opt) handleSelect(opt.value);\r\n } else if (e.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setActiveIndex(-1);\r\n }, [search]);\r\n\r\n // Focus search input when dropdown opens\r\n useEffect(() => {\r\n if (open && searchable) {\r\n // Small delay to let the popover render\r\n const timer = setTimeout(() => searchRef.current?.focus(), 50);\r\n return () => clearTimeout(timer);\r\n }\r\n }, [open, searchable]);\r\n\r\n const renderItem = (opt: SelectOption, flatIndex: number) => {\r\n const isSelected = opt.value === value;\r\n\r\n return (\r\n <div\r\n key={opt.value}\r\n role=\"option\"\r\n aria-selected={isSelected}\r\n aria-disabled={opt.disabled}\r\n className={cn(\r\n selectItemStyles,\r\n flatIndex === activeIndex && selectItemActiveStyles,\r\n isSelected && selectItemSelectedStyles,\r\n opt.disabled && \"opacity-50 pointer-events-none\"\r\n )}\r\n onClick={() => !opt.disabled && handleSelect(opt.value)}\r\n onMouseEnter={() => setActiveIndex(flatIndex)}\r\n >\r\n {renderOption ? (\r\n renderOption(opt, isSelected)\r\n ) : (\r\n <>\r\n {opt.icon && (\r\n <span className=\"shrink-0 w-5 h-5 flex items-center justify-center\">\r\n {opt.icon}\r\n </span>\r\n )}\r\n <div className=\"flex-1 min-w-0\">\r\n <span className=\"block truncate\">{opt.label}</span>\r\n {opt.description && (\r\n <span className=\"block text-[var(--text-xs)] text-[var(--color-text-muted)] truncate\">\r\n {opt.description}\r\n </span>\r\n )}\r\n </div>\r\n {isSelected && (\r\n <svg\r\n className=\"ml-auto shrink-0 text-[var(--color-primary)]\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n // Build flat index counter for keyboard nav across groups\r\n let flatIndex = 0;\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {label && <label className={selectLabelStyles}>{label}</label>}\r\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\r\n <PopoverPrimitive.Trigger asChild>\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n onKeyDown={!searchable ? handleKeyDown : undefined}\r\n className={cn(\r\n selectTriggerStyles,\r\n selectTriggerSizes[size],\r\n error && selectErrorTriggerStyles\r\n )}\r\n >\r\n {selectedOption ? (\r\n <span className=\"flex items-center gap-2 min-w-0 truncate\">\r\n {selectedOption.icon && (\r\n <span className=\"shrink-0 w-5 h-5 flex items-center justify-center\">\r\n {selectedOption.icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{selectedOption.label}</span>\r\n </span>\r\n ) : (\r\n <span className={selectPlaceholderStyles}>{placeholder}</span>\r\n )}\r\n <div className=\"flex items-center gap-1 shrink-0\">\r\n {clearable && value && (\r\n <span\r\n role=\"button\"\r\n tabIndex={-1}\r\n onClick={handleClear}\r\n className={selectClearStyles}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </span>\r\n )}\r\n <svg\r\n className={cn(\r\n \"shrink-0 text-[var(--color-text-muted)] transition-transform duration-200\",\r\n open && \"rotate-180\"\r\n )}\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </div>\r\n </button>\r\n </PopoverPrimitive.Trigger>\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={listRef}\r\n sideOffset={4}\r\n className={selectContentStyles}\r\n onOpenAutoFocus={(e) => e.preventDefault()}\r\n >\r\n {searchable && (\r\n <input\r\n ref={searchRef}\r\n type=\"text\"\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n className={selectSearchStyles}\r\n />\r\n )}\r\n <div className=\"p-1 max-h-60 overflow-auto\" role=\"listbox\">\r\n {filteredGroups ? (\r\n filteredGroups.length === 0 ? (\r\n <div className=\"py-6 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\">\r\n {emptyMessage}\r\n </div>\r\n ) : (\r\n filteredGroups.map((group) => (\r\n <div key={group.label}>\r\n <div className={selectGroupLabelStyles}>\r\n {group.label}\r\n </div>\r\n {group.options.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })}\r\n </div>\r\n ))\r\n )\r\n ) : filteredAll.length === 0 ? (\r\n <div className=\"py-6 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\">\r\n {emptyMessage}\r\n </div>\r\n ) : (\r\n filteredAll.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })\r\n )}\r\n </div>\r\n </PopoverPrimitive.Content>\r\n </PopoverPrimitive.Portal>\r\n </PopoverPrimitive.Root>\r\n {error && <p className={selectErrorStyles}>{error}</p>}\r\n {!error && helperText && <p className={selectHelperStyles}>{helperText}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSelect.displayName = \"Select\";\r\n","export const comboboxInputStyles = [\r\n \"w-full bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)]\",\r\n \"h-10 px-3 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n].join(\" \");\r\n\r\nexport const comboboxListStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-[var(--radix-popover-trigger-width)] max-h-60 overflow-auto\",\r\n \"rounded-[var(--radius-md)] p-1\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n].join(\" \");\r\n\r\nexport const comboboxItemStyles = [\r\n \"flex items-center gap-2 w-full px-2.5 py-2\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius-sm)] cursor-pointer\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"outline-none\",\r\n].join(\" \");\r\n\r\nexport const comboboxItemActiveStyles =\r\n \"bg-[var(--color-surface-hover)] text-[var(--color-text-primary)]\";\r\n\r\nexport const comboboxItemSelectedStyles =\r\n \"text-[var(--color-primary-400)]\";\r\n\r\nexport const comboboxEmptyStyles =\r\n \"py-6 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\";\r\n\r\nexport const comboboxLabelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const comboboxChipStyles = [\r\n \"inline-flex items-center gap-1 px-2 py-0.5\",\r\n \"text-[var(--text-xs)] font-medium\",\r\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\",\r\n \"border border-[var(--color-border)] rounded-full\",\r\n \"cursor-pointer hover:border-[var(--color-border-hover)]\",\r\n].join(\" \");\r\n","import React, {\r\n forwardRef,\r\n useState,\r\n useRef,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n type KeyboardEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n comboboxInputStyles,\r\n comboboxListStyles,\r\n comboboxItemStyles,\r\n comboboxItemActiveStyles,\r\n comboboxItemSelectedStyles,\r\n comboboxEmptyStyles,\r\n comboboxLabelStyles,\r\n comboboxChipStyles,\r\n} from \"./combobox.styles\";\r\n\r\nexport interface ComboboxOption {\r\n value: string;\r\n label: string;\r\n disabled?: boolean;\r\n /** Optional icon or element before label */\r\n icon?: ReactNode;\r\n}\r\n\r\nexport interface ComboboxGroup {\r\n label: string;\r\n options: ComboboxOption[];\r\n}\r\n\r\nexport interface ComboboxProps {\r\n /** Flat list of options */\r\n options?: ComboboxOption[];\r\n /** Grouped options — takes priority over `options` */\r\n groups?: ComboboxGroup[];\r\n /** Current value (string for single, string[] for multi) */\r\n value?: string | string[];\r\n /** Callback when value changes */\r\n onChange?: (value: string | string[]) => void;\r\n /** Input placeholder */\r\n placeholder?: string;\r\n /** Label text */\r\n label?: string;\r\n /** No results message */\r\n emptyMessage?: string;\r\n /** Allow multiple selections */\r\n multiple?: boolean;\r\n /** Allow creating new options on Enter */\r\n creatable?: boolean;\r\n /** Text for the create option (receives the search term) */\r\n createLabel?: (search: string) => string;\r\n /** Show loading spinner */\r\n loading?: boolean;\r\n /** Disable the combobox */\r\n disabled?: boolean;\r\n /** Additional class name */\r\n className?: string;\r\n}\r\n\r\nexport const Combobox = forwardRef<HTMLInputElement, ComboboxProps>(\r\n (\r\n {\r\n options = [],\r\n groups,\r\n value,\r\n onChange,\r\n placeholder = \"Search...\",\r\n label,\r\n emptyMessage = \"No results found.\",\r\n multiple = false,\r\n creatable = false,\r\n createLabel = (s) => `Create \"${s}\"`,\r\n loading = false,\r\n disabled,\r\n className,\r\n },\r\n ref\r\n ) => {\r\n const [open, setOpen] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const listRef = useRef<HTMLDivElement>(null);\r\n\r\n const allOptions = useMemo(() => {\r\n if (groups) return groups.flatMap((g) => g.options);\r\n return options;\r\n }, [groups, options]);\r\n\r\n const selectedValues = multiple\r\n ? (Array.isArray(value) ? value : [])\r\n : (typeof value === \"string\" ? [value] : []);\r\n\r\n const filterOptions = useCallback(\r\n (opts: ComboboxOption[]) =>\r\n search\r\n ? opts.filter((o) =>\r\n o.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n : opts,\r\n [search]\r\n );\r\n\r\n const filtered = useMemo(() => filterOptions(allOptions), [filterOptions, allOptions]);\r\n\r\n const filteredGroups = useMemo(() => {\r\n if (!groups) return null;\r\n return groups\r\n .map((g) => ({ ...g, options: filterOptions(g.options) }))\r\n .filter((g) => g.options.length > 0);\r\n }, [groups, filterOptions]);\r\n\r\n // Check if we should show the \"create\" option\r\n const showCreate = creatable && search.trim().length > 0 &&\r\n !allOptions.some((o) => o.label.toLowerCase() === search.toLowerCase());\r\n\r\n const totalItems = filtered.filter((o) => !o.disabled).length + (showCreate ? 1 : 0);\r\n\r\n const handleSelect = useCallback(\r\n (optValue: string) => {\r\n if (multiple) {\r\n const current = Array.isArray(value) ? value : [];\r\n const next = current.includes(optValue)\r\n ? current.filter((v) => v !== optValue)\r\n : [...current, optValue];\r\n onChange?.(next);\r\n } else {\r\n onChange?.(optValue);\r\n setSearch(allOptions.find((o) => o.value === optValue)?.label || optValue);\r\n setOpen(false);\r\n }\r\n },\r\n [multiple, value, onChange, allOptions]\r\n );\r\n\r\n const handleCreate = useCallback(() => {\r\n const newValue = search.trim();\r\n if (!newValue) return;\r\n handleSelect(newValue);\r\n if (!multiple) setSearch(newValue);\r\n }, [search, handleSelect, multiple]);\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.min(i + 1, totalItems - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.max(i - 1, 0));\r\n } else if (e.key === \"Enter\" && activeIndex >= 0) {\r\n e.preventDefault();\r\n const enabledItems = filtered.filter((o) => !o.disabled);\r\n if (activeIndex < enabledItems.length) {\r\n const opt = enabledItems[activeIndex];\r\n if (opt) handleSelect(opt.value);\r\n } else if (showCreate) {\r\n handleCreate();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setActiveIndex(-1);\r\n }, [search]);\r\n\r\n // Sync display value for single mode\r\n const displayValue = multiple\r\n ? search\r\n : search || (typeof value === \"string\" ? allOptions.find((o) => o.value === value)?.label || \"\" : \"\");\r\n\r\n let flatIndex = 0;\r\n\r\n const renderItem = (opt: ComboboxOption, idx: number) => (\r\n <div\r\n key={opt.value}\r\n role=\"option\"\r\n aria-selected={selectedValues.includes(opt.value)}\r\n aria-disabled={opt.disabled}\r\n className={cn(\r\n comboboxItemStyles,\r\n idx === activeIndex && comboboxItemActiveStyles,\r\n selectedValues.includes(opt.value) && comboboxItemSelectedStyles,\r\n opt.disabled && \"opacity-50 pointer-events-none\"\r\n )}\r\n onClick={() => !opt.disabled && handleSelect(opt.value)}\r\n onMouseEnter={() => setActiveIndex(idx)}\r\n >\r\n {multiple && (\r\n <div className={cn(\r\n \"h-4 w-4 rounded-[3px] border border-[var(--color-border)] flex items-center justify-center shrink-0\",\r\n selectedValues.includes(opt.value) && \"bg-[var(--color-primary)] border-[var(--color-primary)]\"\r\n )}>\r\n {selectedValues.includes(opt.value) && (\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\r\n <path d=\"M2 5L4 7L8 3\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n )}\r\n </div>\r\n )}\r\n {opt.icon && (\r\n <span className=\"shrink-0 w-5 h-5 flex items-center justify-center\">\r\n {opt.icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{opt.label}</span>\r\n {!multiple && selectedValues.includes(opt.value) && (\r\n <svg className=\"ml-auto shrink-0\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {label && <label className={comboboxLabelStyles}>{label}</label>}\r\n {multiple && selectedValues.length > 0 && (\r\n <div className=\"flex flex-wrap gap-1.5 mb-2\">\r\n {selectedValues.map((v) => {\r\n const opt = allOptions.find((o) => o.value === v);\r\n return (\r\n <span\r\n key={v}\r\n className={comboboxChipStyles}\r\n onClick={() => handleSelect(v)}\r\n >\r\n {opt?.label || v}\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </span>\r\n );\r\n })}\r\n </div>\r\n )}\r\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\r\n <PopoverPrimitive.Trigger asChild>\r\n <input\r\n ref={ref}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n placeholder={placeholder}\r\n value={displayValue}\r\n onChange={(e) => {\r\n setSearch(e.target.value);\r\n if (!open) setOpen(true);\r\n }}\r\n onFocus={() => setOpen(true)}\r\n onKeyDown={handleKeyDown}\r\n className={comboboxInputStyles}\r\n />\r\n </PopoverPrimitive.Trigger>\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={listRef}\r\n sideOffset={4}\r\n className={comboboxListStyles}\r\n onOpenAutoFocus={(e) => e.preventDefault()}\r\n >\r\n {loading ? (\r\n <div className=\"py-6 flex items-center justify-center gap-2 text-[var(--text-sm)] text-[var(--color-text-muted)]\">\r\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\r\n </svg>\r\n Loading...\r\n </div>\r\n ) : (\r\n <>\r\n {filteredGroups ? (\r\n filteredGroups.length === 0 && !showCreate ? (\r\n <div className={comboboxEmptyStyles}>{emptyMessage}</div>\r\n ) : (\r\n filteredGroups.map((group) => (\r\n <div key={group.label}>\r\n <div className=\"px-2.5 py-1.5 text-[var(--text-xs)] font-semibold uppercase tracking-wider text-[var(--color-text-muted)]\">\r\n {group.label}\r\n </div>\r\n {group.options.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })}\r\n </div>\r\n ))\r\n )\r\n ) : filtered.length === 0 && !showCreate ? (\r\n <div className={comboboxEmptyStyles}>{emptyMessage}</div>\r\n ) : (\r\n filtered.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })\r\n )}\r\n {showCreate && (\r\n <div\r\n className={cn(\r\n comboboxItemStyles,\r\n flatIndex === activeIndex && comboboxItemActiveStyles,\r\n \"text-[var(--color-primary)] font-medium\"\r\n )}\r\n onClick={handleCreate}\r\n onMouseEnter={() => setActiveIndex(flatIndex)}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" /><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\r\n </svg>\r\n {createLabel(search.trim())}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </PopoverPrimitive.Content>\r\n </PopoverPrimitive.Portal>\r\n </PopoverPrimitive.Root>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCombobox.displayName = \"Combobox\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const checkboxVariants = cva(\r\n [\r\n \"relative shrink-0 appearance-none cursor-pointer\",\r\n \"border border-[var(--color-border)]\",\r\n \"bg-[var(--color-surface)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"checked:bg-[var(--color-primary)] checked:border-[var(--color-primary)]\",\r\n \"checked:hover:bg-[var(--color-primary-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-4 w-4 rounded-[3px]\",\r\n md: \"h-[18px] w-[18px] rounded-[var(--radius-sm)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport const checkboxWrapperStyles = \"flex items-start gap-2.5\";\r\n\r\nexport const checkboxLabelStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-primary)] cursor-pointer select-none leading-tight\";\r\n\r\nexport const checkboxDescriptionStyles =\r\n \"text-[var(--text-xs)] text-[var(--color-text-muted)] mt-0.5\";\r\n\r\nexport const checkmarkStyles =\r\n \"absolute inset-0 flex items-center justify-center pointer-events-none text-[var(--color-primary-foreground)]\";\r\n","import React, { forwardRef, useEffect, useRef, type InputHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n checkboxVariants,\r\n checkboxWrapperStyles,\r\n checkboxLabelStyles,\r\n checkboxDescriptionStyles,\r\n checkmarkStyles,\r\n} from \"./checkbox.styles\";\r\n\r\nexport interface CheckboxProps\r\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\">,\r\n VariantProps<typeof checkboxVariants> {\r\n label?: string;\r\n description?: string;\r\n indeterminate?: boolean;\r\n}\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\r\n ({ className, size, label, description, indeterminate, id, ...props }, ref) => {\r\n const inputId = id || (label ? `cb-${label.toLowerCase().replace(/\\s+/g, \"-\")}` : undefined);\r\n const internalRef = useRef<HTMLInputElement>(null);\r\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || internalRef;\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.indeterminate = !!indeterminate;\r\n }\r\n }, [indeterminate, inputRef]);\r\n\r\n return (\r\n <div className={checkboxWrapperStyles}>\r\n <div className=\"relative flex items-center justify-center mt-0.5\">\r\n <input\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"checkbox\"\r\n className={cn(checkboxVariants({ size }), className)}\r\n {...props}\r\n />\r\n <div className={checkmarkStyles}>\r\n {indeterminate ? (\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\r\n <rect x=\"1\" y=\"4\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" className=\"opacity-0 [input:checked~div>&]:opacity-100 transition-opacity\">\r\n <path d=\"M2 5L4 7L8 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n )}\r\n </div>\r\n </div>\r\n {(label || description) && (\r\n <div>\r\n {label && (\r\n <label htmlFor={inputId} className={checkboxLabelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n {description && <p className={checkboxDescriptionStyles}>{description}</p>}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCheckbox.displayName = \"Checkbox\";\r\n","export const radioGroupStyles = \"flex flex-col gap-2.5\";\r\nexport const radioGroupHorizontalStyles = \"flex-row gap-4\";\r\n\r\nexport const radioWrapperStyles = \"flex items-start gap-2.5\";\r\n\r\nexport const radioInputStyles = [\r\n \"relative shrink-0 appearance-none cursor-pointer\",\r\n \"h-[18px] w-[18px] rounded-full\",\r\n \"border border-[var(--color-border)]\",\r\n \"bg-[var(--color-surface)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"checked:border-[var(--color-primary)] checked:bg-[var(--color-primary)]\",\r\n \"checked:hover:bg-[var(--color-primary-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n].join(\" \");\r\n\r\nexport const radioDotStyles =\r\n \"absolute inset-0 flex items-center justify-center pointer-events-none\";\r\n\r\nexport const radioLabelStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-primary)] cursor-pointer select-none leading-tight\";\r\n\r\nexport const radioDescriptionStyles =\r\n \"text-[var(--text-xs)] text-[var(--color-text-muted)] mt-0.5\";\r\n","import React, { forwardRef, createContext, useContext, type InputHTMLAttributes, type HTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n radioGroupStyles,\r\n radioGroupHorizontalStyles,\r\n radioWrapperStyles,\r\n radioInputStyles,\r\n radioDotStyles,\r\n radioLabelStyles,\r\n radioDescriptionStyles,\r\n} from \"./radio.styles\";\r\n\r\n/* ── Context ── */\r\ninterface RadioGroupContextValue {\r\n name?: string;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextValue>({});\r\n\r\n/* ── RadioGroup ── */\r\nexport interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\r\n name?: string;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n orientation?: \"vertical\" | \"horizontal\";\r\n disabled?: boolean;\r\n}\r\n\r\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\r\n ({ className, name, value, onChange, orientation = \"vertical\", disabled, children, ...props }, ref) => (\r\n <RadioGroupContext.Provider value={{ name, value, onChange, disabled }}>\r\n <div\r\n ref={ref}\r\n role=\"radiogroup\"\r\n className={cn(\r\n radioGroupStyles,\r\n orientation === \"horizontal\" && radioGroupHorizontalStyles,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </RadioGroupContext.Provider>\r\n )\r\n);\r\nRadioGroup.displayName = \"RadioGroup\";\r\n\r\n/* ── Radio ── */\r\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> {\r\n label?: string;\r\n description?: string;\r\n}\r\n\r\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\r\n ({ className, label, description, value, id, disabled: itemDisabled, ...props }, ref) => {\r\n const ctx = useContext(RadioGroupContext);\r\n const inputId = id || (label ? `radio-${label.toLowerCase().replace(/\\s+/g, \"-\")}` : undefined);\r\n const isDisabled = itemDisabled || ctx.disabled;\r\n\r\n return (\r\n <div className={radioWrapperStyles}>\r\n <div className=\"relative flex items-center justify-center mt-0.5\">\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type=\"radio\"\r\n name={ctx.name}\r\n value={value}\r\n checked={ctx.value !== undefined ? ctx.value === value : undefined}\r\n onChange={() => ctx.onChange?.(value as string)}\r\n disabled={isDisabled}\r\n className={cn(radioInputStyles, className)}\r\n {...props}\r\n />\r\n <div className={radioDotStyles}>\r\n <div className=\"h-2 w-2 rounded-full bg-white scale-0 transition-transform duration-150 [input:checked~div>&]:scale-100\" />\r\n </div>\r\n </div>\r\n {(label || description) && (\r\n <div>\r\n {label && (\r\n <label htmlFor={inputId} className={radioLabelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n {description && <p className={radioDescriptionStyles}>{description}</p>}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nRadio.displayName = \"Radio\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const switchTrackVariants = cva(\r\n [\r\n \"relative inline-flex shrink-0 cursor-pointer\",\r\n \"rounded-full border-2 border-transparent\",\r\n \"transition-colors duration-[var(--transition-base)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-5 w-9\",\r\n md: \"h-6 w-11\",\r\n },\r\n checked: {\r\n true: \"bg-[var(--color-primary)]\",\r\n false: \"bg-[var(--color-surface-raised)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n checked: false,\r\n },\r\n }\r\n);\r\n\r\nexport const switchThumbVariants = cva(\r\n [\r\n \"pointer-events-none inline-block rounded-full bg-white\",\r\n \"shadow-sm transition-transform duration-[var(--transition-base)]\",\r\n \"ring-0\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-4 w-4\",\r\n md: \"h-5 w-5\",\r\n },\r\n checked: {\r\n true: \"\",\r\n false: \"translate-x-0\",\r\n },\r\n },\r\n compoundVariants: [\r\n { size: \"sm\", checked: true, className: \"translate-x-4\" },\r\n { size: \"md\", checked: true, className: \"translate-x-5\" },\r\n ],\r\n defaultVariants: {\r\n size: \"md\",\r\n checked: false,\r\n },\r\n }\r\n);\r\n\r\nexport const switchWrapperStyles = \"flex items-center gap-3\";\r\n\r\nexport const switchLabelStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-primary)] cursor-pointer select-none\";\r\n\r\nexport const switchDescriptionStyles =\r\n \"text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n","import React, { forwardRef, type ButtonHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n switchTrackVariants,\r\n switchThumbVariants,\r\n switchWrapperStyles,\r\n switchLabelStyles,\r\n switchDescriptionStyles,\r\n} from \"./switch.styles\";\r\n\r\nexport interface SwitchProps\r\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n label?: string;\r\n description?: string;\r\n size?: \"sm\" | \"md\";\r\n}\r\n\r\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\r\n ({ className, checked = false, onChange, label, description, size = \"md\", disabled, id, ...props }, ref) => {\r\n const inputId = id || (label ? `switch-${label.toLowerCase().replace(/\\s+/g, \"-\")}` : undefined);\r\n\r\n return (\r\n <div className={switchWrapperStyles}>\r\n <button\r\n ref={ref}\r\n id={inputId}\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n switchTrackVariants({ size, checked }),\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className={switchThumbVariants({ size, checked })} />\r\n </button>\r\n {(label || description) && (\r\n <div>\r\n {label && (\r\n <label htmlFor={inputId} className={switchLabelStyles} onClick={() => !disabled && onChange?.(!checked)}>\r\n {label}\r\n </label>\r\n )}\r\n {description && <p className={switchDescriptionStyles}>{description}</p>}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSwitch.displayName = \"Switch\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface SeparatorProps extends HTMLAttributes<HTMLDivElement> {\r\n orientation?: \"horizontal\" | \"vertical\";\r\n decorative?: boolean;\r\n}\r\n\r\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\r\n ({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role={decorative ? \"none\" : \"separator\"}\r\n aria-orientation={!decorative ? orientation : undefined}\r\n className={cn(\r\n \"shrink-0 bg-[var(--color-border)]\",\r\n orientation === \"horizontal\" ? \"h-px w-full\" : \"w-px h-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\n\r\nSeparator.displayName = \"Separator\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const avatarVariants = cva(\r\n [\r\n \"relative inline-flex items-center justify-center shrink-0\",\r\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\",\r\n \"font-medium overflow-hidden\",\r\n \"border border-[var(--color-border)]\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n xs: \"h-6 w-6 text-[10px]\",\r\n sm: \"h-8 w-8 text-[var(--text-xs)]\",\r\n md: \"h-10 w-10 text-[var(--text-sm)]\",\r\n lg: \"h-12 w-12 text-[var(--text-base)]\",\r\n xl: \"h-16 w-16 text-[var(--text-lg)]\",\r\n },\r\n shape: {\r\n circle: \"rounded-full\",\r\n rounded: \"rounded-[var(--radius-md)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n shape: \"circle\",\r\n },\r\n }\r\n);\r\n\r\nexport const avatarImageStyles = \"h-full w-full object-cover\";\r\n\r\nexport const avatarStatusVariants = cva(\r\n [\r\n \"absolute bottom-0 right-0 block rounded-full ring-2 ring-[var(--color-bg)]\",\r\n ],\r\n {\r\n variants: {\r\n status: {\r\n online: \"bg-[var(--color-success)]\",\r\n offline: \"bg-[var(--color-text-muted)]\",\r\n busy: \"bg-[var(--color-danger)]\",\r\n away: \"bg-[var(--color-warning)]\",\r\n },\r\n size: {\r\n xs: \"h-1.5 w-1.5\",\r\n sm: \"h-2 w-2\",\r\n md: \"h-2.5 w-2.5\",\r\n lg: \"h-3 w-3\",\r\n xl: \"h-3.5 w-3.5\",\r\n },\r\n },\r\n defaultVariants: {\r\n status: \"online\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, useState, type ImgHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { avatarVariants, avatarImageStyles, avatarStatusVariants } from \"./avatar.styles\";\r\n\r\nexport interface AvatarProps\r\n extends Omit<ImgHTMLAttributes<HTMLImageElement>, \"size\">,\r\n VariantProps<typeof avatarVariants> {\r\n name?: string;\r\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\r\n}\r\n\r\nfunction getInitials(name: string): string {\r\n return name\r\n .split(\" \")\r\n .map((n) => n[0])\r\n .slice(0, 2)\r\n .join(\"\")\r\n .toUpperCase();\r\n}\r\n\r\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\r\n ({ className, src, alt, name, size = \"md\", shape, status, ...props }, ref) => {\r\n const [imgError, setImgError] = useState(false);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(avatarVariants({ size, shape }), className)}\r\n >\r\n {src && !imgError ? (\r\n <img\r\n src={src}\r\n alt={alt || name || \"Avatar\"}\r\n className={avatarImageStyles}\r\n onError={() => setImgError(true)}\r\n {...props}\r\n />\r\n ) : (\r\n <span>{name ? getInitials(name) : \"?\"}</span>\r\n )}\r\n {status && (\r\n <span className={avatarStatusVariants({ status, size })} />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAvatar.displayName = \"Avatar\";\r\n","export const tooltipContentStyles = [\r\n \"z-[var(--z-tooltip)]\",\r\n \"overflow-hidden rounded-[var(--radius)] px-3 py-1.5\",\r\n \"bg-[var(--color-slate-800)] text-[var(--color-text-primary)]\",\r\n \"text-[var(--text-xs)] font-medium\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-md\",\r\n \"animate-in fade-in-0 zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n].join(\" \");\r\n","import React, { type ReactNode } from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { tooltipContentStyles } from \"./tooltip.styles\";\r\n\r\nexport const TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nexport interface TooltipProps {\r\n children: ReactNode;\r\n content: ReactNode;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n delayDuration?: number;\r\n sideOffset?: number;\r\n}\r\n\r\nexport function Tooltip({\r\n children,\r\n content,\r\n side = \"top\",\r\n align = \"center\",\r\n delayDuration = 300,\r\n sideOffset = 6,\r\n}: TooltipProps) {\r\n return (\r\n <TooltipPrimitive.Root delayDuration={delayDuration}>\r\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\r\n <TooltipPrimitive.Portal>\r\n <TooltipPrimitive.Content\r\n side={side}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(tooltipContentStyles)}\r\n >\r\n {content}\r\n </TooltipPrimitive.Content>\r\n </TooltipPrimitive.Portal>\r\n </TooltipPrimitive.Root>\r\n );\r\n}\r\n\r\nTooltip.displayName = \"Tooltip\";\r\n","export const popoverContentStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-72 rounded-[var(--radius-md)] p-4\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"outline-none\",\r\n].join(\" \");\r\n","import React, { forwardRef } from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { popoverContentStyles } from \"./popover.styles\";\r\n\r\nexport const Popover = PopoverPrimitive.Root;\r\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\r\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\r\nexport const PopoverClose = PopoverPrimitive.Close;\r\n\r\nexport const PopoverContent = forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, sideOffset = 6, align = \"center\", ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n align={align}\r\n className={cn(popoverContentStyles, className)}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n));\r\n\r\nPopoverContent.displayName = \"PopoverContent\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const cardVariants = cva(\r\n [\r\n \"rounded-[var(--radius-lg)]\",\r\n \"transition-all duration-[var(--transition-base)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n elevated: [\r\n \"bg-[var(--color-surface)] border border-[var(--color-slate-800)]\",\r\n \"shadow-[var(--shadow-sm)]\",\r\n ],\r\n outlined: [\r\n \"bg-transparent border border-[var(--color-slate-700)]\",\r\n ],\r\n ghost: [\r\n \"bg-[var(--color-surface)]/50 border border-transparent\",\r\n ],\r\n glass: [\r\n \"bg-[var(--color-surface)]/70 backdrop-blur-md border border-[var(--color-overlay)]\",\r\n \"shadow-lg\",\r\n ],\r\n },\r\n hoverable: {\r\n true: \"hover:border-[var(--color-border-hover)] hover:shadow-[var(--shadow-lg)] cursor-pointer\",\r\n false: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"elevated\",\r\n hoverable: false,\r\n },\r\n }\r\n);\r\n\r\nexport const cardHeaderStyles =\r\n \"px-[var(--space-lg)] pt-[var(--space-lg)] pb-[var(--space-sm)]\";\r\n\r\nexport const cardBodyStyles =\r\n \"px-[var(--space-lg)] py-[var(--space-md)]\";\r\n\r\nexport const cardFooterStyles =\r\n \"px-[var(--space-lg)] pt-[var(--space-sm)] pb-[var(--space-lg)] border-t border-[var(--color-border)]\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n cardVariants,\r\n cardHeaderStyles,\r\n cardBodyStyles,\r\n cardFooterStyles,\r\n} from \"./card.styles\";\r\n\r\nexport interface CardProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> { }\r\n\r\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, variant, hoverable, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant, hoverable }), className)}\r\n {...props}\r\n />\r\n )\r\n);\r\nCard.displayName = \"Card\";\r\n\r\nexport const CardHeader = forwardRef<\r\n HTMLDivElement,\r\n HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(cardHeaderStyles, className)} {...props} />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nexport const CardBody = forwardRef<\r\n HTMLDivElement,\r\n HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(cardBodyStyles, className)} {...props} />\r\n));\r\nCardBody.displayName = \"CardBody\";\r\n\r\nexport const CardFooter = forwardRef<\r\n HTMLDivElement,\r\n HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(cardFooterStyles, className)} {...props} />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n","export const modalOverlayStyles = [\r\n \"fixed inset-0 z-[var(--z-overlay)] bg-black/60 backdrop-blur-sm\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\r\n].join(\" \");\r\n\r\nexport const modalContentStyles = [\r\n \"fixed left-1/2 top-1/2 z-[var(--z-modal)] -translate-x-1/2 -translate-y-1/2\",\r\n \"w-full max-w-lg\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-xl)] shadow-lg\",\r\n \"p-[var(--space-lg)]\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\r\n \"duration-200\",\r\n].join(\" \");\r\n\r\nexport const modalTitleStyles =\r\n \"text-[var(--text-lg)] font-semibold text-[var(--color-text-primary)]\";\r\n\r\nexport const modalDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)] mt-2\";\r\n\r\nexport const modalCloseStyles = [\r\n \"absolute right-4 top-4\",\r\n \"rounded-[var(--radius-sm)] p-1\",\r\n \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)]\",\r\n \"hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:ring-2 focus:ring-[var(--ring-color)]\",\r\n].join(\" \");\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport * as Dialog from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n modalOverlayStyles,\r\n modalContentStyles,\r\n modalTitleStyles,\r\n modalDescriptionStyles,\r\n modalCloseStyles,\r\n} from \"./modal.styles\";\r\n\r\n/* ── Root ── */\r\nexport const Modal = Dialog.Root;\r\nexport const ModalTrigger = Dialog.Trigger;\r\n\r\n/* ── Overlay ── */\r\nconst ModalOverlay = forwardRef<\r\n React.ElementRef<typeof Dialog.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof Dialog.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <Dialog.Overlay ref={ref} className={cn(modalOverlayStyles, className)} {...props} />\r\n));\r\nModalOverlay.displayName = \"ModalOverlay\";\r\n\r\n/* ── Content ── */\r\nexport interface ModalContentProps\r\n extends React.ComponentPropsWithoutRef<typeof Dialog.Content> {\r\n /** Show a close (X) button in the top right */\r\n showClose?: boolean;\r\n}\r\n\r\nexport const ModalContent = forwardRef<\r\n React.ElementRef<typeof Dialog.Content>,\r\n ModalContentProps\r\n>(({ className, children, showClose = true, ...props }, ref) => (\r\n <Dialog.Portal>\r\n <ModalOverlay />\r\n <Dialog.Content ref={ref} className={cn(modalContentStyles, className)} {...props}>\r\n {children}\r\n {showClose && (\r\n <Dialog.Close className={modalCloseStyles}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n <span className=\"sr-only\">Close</span>\r\n </Dialog.Close>\r\n )}\r\n </Dialog.Content>\r\n </Dialog.Portal>\r\n));\r\nModalContent.displayName = \"ModalContent\";\r\n\r\n/* ── Title ── */\r\nexport const ModalTitle = forwardRef<\r\n React.ElementRef<typeof Dialog.Title>,\r\n React.ComponentPropsWithoutRef<typeof Dialog.Title>\r\n>(({ className, ...props }, ref) => (\r\n <Dialog.Title ref={ref} className={cn(modalTitleStyles, className)} {...props} />\r\n));\r\nModalTitle.displayName = \"ModalTitle\";\r\n\r\n/* ── Description ── */\r\nexport const ModalDescription = forwardRef<\r\n React.ElementRef<typeof Dialog.Description>,\r\n React.ComponentPropsWithoutRef<typeof Dialog.Description>\r\n>(({ className, ...props }, ref) => (\r\n <Dialog.Description\r\n ref={ref}\r\n className={cn(modalDescriptionStyles, className)}\r\n {...props}\r\n />\r\n));\r\nModalDescription.displayName = \"ModalDescription\";\r\n\r\n/* ── Footer ── */\r\nexport const ModalFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex justify-end gap-[var(--space-sm)] mt-[var(--space-lg)]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\nModalFooter.displayName = \"ModalFooter\";\r\n","export const dropdownContentStyles = [\r\n \"z-[var(--z-dropdown)] min-w-[180px] overflow-hidden\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-md)] shadow-lg\",\r\n \"p-1\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n \"data-[side=top]:slide-in-from-bottom-2\",\r\n \"data-[side=bottom]:slide-in-from-top-2\",\r\n \"data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2\",\r\n].join(\" \");\r\n\r\nexport const dropdownItemStyles = [\r\n \"relative flex items-center gap-2\",\r\n \"rounded-[var(--radius-sm)] px-2 py-1.5\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"cursor-pointer select-none outline-none\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"data-[highlighted]:bg-[var(--color-surface-hover)] data-[highlighted]:text-[var(--color-text-primary)]\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n].join(\" \");\r\n\r\nexport const dropdownSeparatorStyles =\r\n \"my-1 h-px bg-[var(--color-border)]\";\r\n\r\nexport const dropdownLabelStyles =\r\n \"px-2 py-1.5 text-[var(--text-xs)] font-semibold text-[var(--color-text-muted)]\";\r\n","import React, { forwardRef } from \"react\";\r\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n dropdownContentStyles,\r\n dropdownItemStyles,\r\n dropdownSeparatorStyles,\r\n dropdownLabelStyles,\r\n} from \"./dropdown.styles\";\r\n\r\n/* ── Root & Trigger ── */\r\nexport const Dropdown = DropdownMenu.Root;\r\nexport const DropdownTrigger = DropdownMenu.Trigger;\r\nexport const DropdownGroup = DropdownMenu.Group;\r\n\r\n/* ── Content ── */\r\nexport const DropdownContent = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenu.Portal>\r\n <DropdownMenu.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(dropdownContentStyles, className)}\r\n {...props}\r\n />\r\n </DropdownMenu.Portal>\r\n));\r\nDropdownContent.displayName = \"DropdownContent\";\r\n\r\n/* ── Item ── */\r\nexport const DropdownItem = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Item>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenu.Item\r\n ref={ref}\r\n className={cn(dropdownItemStyles, className)}\r\n {...props}\r\n />\r\n));\r\nDropdownItem.displayName = \"DropdownItem\";\r\n\r\n/* ── Separator ── */\r\nexport const DropdownSeparator = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenu.Separator\r\n ref={ref}\r\n className={cn(dropdownSeparatorStyles, className)}\r\n {...props}\r\n />\r\n));\r\nDropdownSeparator.displayName = \"DropdownSeparator\";\r\n\r\n/* ── Label ── */\r\nexport const DropdownLabel = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Label>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenu.Label\r\n ref={ref}\r\n className={cn(dropdownLabelStyles, className)}\r\n {...props}\r\n />\r\n));\r\nDropdownLabel.displayName = \"DropdownLabel\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const badgeVariants = cva(\r\n [\r\n \"inline-flex items-center font-medium\",\r\n \"rounded-full whitespace-nowrap\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-[var(--color-slate-800)] text-[var(--color-slate-300)] border border-[var(--color-slate-700)]\",\r\n primary: \"bg-[var(--color-primary)]/10 text-[var(--color-primary-400)] border border-[var(--color-primary)]/20 shadow-[0_0_10px_-4px_var(--color-primary-500)]\",\r\n success: \"bg-[var(--color-success)]/10 text-[var(--color-success)] border border-[var(--color-success)]/20\",\r\n warning: \"bg-[var(--color-warning)]/10 text-[var(--color-warning)] border border-[var(--color-warning)]/20\",\r\n danger: \"bg-[var(--color-danger)]/10 text-[var(--color-danger)] border border-[var(--color-danger)]/20\",\r\n info: \"bg-[var(--color-info)]/10 text-[var(--color-info)] border border-[var(--color-info)]/20\",\r\n },\r\n size: {\r\n sm: \"px-2 py-0.5 text-[10px]\",\r\n md: \"px-2.5 py-0.5 text-[var(--text-xs)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { badgeVariants } from \"./badge.styles\";\r\n\r\nexport interface BadgeProps\r\n extends HTMLAttributes<HTMLSpanElement>,\r\n VariantProps<typeof badgeVariants> { }\r\n\r\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\r\n ({ className, variant, size, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n className={cn(badgeVariants({ variant, size }), className)}\r\n {...props}\r\n />\r\n )\r\n);\r\n\r\nBadge.displayName = \"Badge\";\r\n","export const tabsListStyles = [\r\n \"inline-flex items-center gap-1\",\r\n \"bg-[var(--color-bg-secondary)] p-1\",\r\n \"rounded-[var(--radius-md)]\",\r\n \"border border-[var(--color-border)]\",\r\n].join(\" \");\r\n\r\nexport const tabsTriggerStyles = [\r\n \"relative inline-flex items-center justify-center\",\r\n \"px-3 py-1.5\",\r\n \"text-[var(--text-sm)] font-medium\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"cursor-pointer select-none\",\r\n \"hover:text-[var(--color-text-secondary)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)]\",\r\n].join(\" \");\r\n\r\nexport const tabsTriggerActiveStyles = [\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"shadow-sm\",\r\n].join(\" \");\r\n\r\nexport const tabsContentStyles = [\r\n \"mt-[var(--space-md)]\",\r\n \"focus-visible:outline-none\",\r\n].join(\" \");\r\n","import React, {\r\n createContext,\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useState,\r\n type HTMLAttributes,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n tabsListStyles,\r\n tabsTriggerStyles,\r\n tabsTriggerActiveStyles,\r\n tabsContentStyles,\r\n} from \"./tabs.styles\";\r\n\r\n/* ── Context ── */\r\ninterface TabsContextValue {\r\n value: string;\r\n onValueChange: (value: string) => void;\r\n}\r\n\r\nconst TabsContext = createContext<TabsContextValue | null>(null);\r\n\r\nfunction useTabsContext() {\r\n const ctx = useContext(TabsContext);\r\n if (!ctx) throw new Error(\"Tabs compound components must be used within <Tabs>\");\r\n return ctx;\r\n}\r\n\r\n/* ── Root ── */\r\nexport interface TabsProps extends HTMLAttributes<HTMLDivElement> {\r\n /** Controlled value */\r\n value?: string;\r\n /** Default value (uncontrolled) */\r\n defaultValue?: string;\r\n /** Callback when active tab changes */\r\n onValueChange?: (value: string) => void;\r\n}\r\n\r\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(\r\n ({ value: controlledValue, defaultValue = \"\", onValueChange, className, children, ...props }, ref) => {\r\n const [internal, setInternal] = useState(defaultValue);\r\n const value = controlledValue ?? internal;\r\n\r\n const handleChange = useCallback(\r\n (v: string) => {\r\n setInternal(v);\r\n onValueChange?.(v);\r\n },\r\n [onValueChange]\r\n );\r\n\r\n return (\r\n <TabsContext.Provider value={{ value, onValueChange: handleChange }}>\r\n <div ref={ref} className={className} {...props}>\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n }\r\n);\r\nTabs.displayName = \"Tabs\";\r\n\r\n/* ── List ── */\r\nexport const TabsList = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} role=\"tablist\" className={cn(tabsListStyles, className)} {...props} />\r\n )\r\n);\r\nTabsList.displayName = \"TabsList\";\r\n\r\n/* ── Trigger ── */\r\nexport interface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {\r\n value: string;\r\n}\r\n\r\nexport const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\r\n ({ value, className, ...props }, ref) => {\r\n const ctx = useTabsContext();\r\n const isActive = ctx.value === value;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n role=\"tab\"\r\n type=\"button\"\r\n aria-selected={isActive}\r\n data-state={isActive ? \"active\" : \"inactive\"}\r\n className={cn(\r\n tabsTriggerStyles,\r\n isActive && tabsTriggerActiveStyles,\r\n className\r\n )}\r\n onClick={() => ctx.onValueChange(value)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nTabsTrigger.displayName = \"TabsTrigger\";\r\n\r\n/* ── Content ── */\r\nexport interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n}\r\n\r\nexport const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\r\n ({ value, className, children, ...props }, ref) => {\r\n const ctx = useTabsContext();\r\n if (ctx.value !== value) return null;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tabpanel\"\r\n data-state=\"active\"\r\n className={cn(tabsContentStyles, className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nTabsContent.displayName = \"TabsContent\";\r\n","export const tableWrapperStyles =\r\n \"w-full overflow-auto rounded-[var(--radius-lg)] border border-[var(--color-border)]\";\r\n\r\nexport const tableStyles =\r\n \"w-full caption-bottom text-[var(--text-sm)] border-collapse\";\r\n\r\nexport const theadStyles =\r\n \"bg-[var(--color-bg-secondary)]\";\r\n\r\nexport const tbodyStyles =\r\n \"[&_tr:last-child]:border-0\";\r\n\r\nexport const trStyles = [\r\n \"border-b border-[var(--color-border)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)]/50\",\r\n \"data-[state=selected]:bg-[var(--color-primary)]/5\",\r\n].join(\" \");\r\n\r\nexport const thStyles = [\r\n \"h-10 px-4 text-left align-middle\",\r\n \"font-medium text-[var(--color-text-muted)] text-[var(--text-xs)] uppercase tracking-wider\",\r\n \"[&:has([role=checkbox])]:pr-0\",\r\n].join(\" \");\r\n\r\nexport const tdStyles = [\r\n \"p-4 align-middle text-[var(--color-text-secondary)]\",\r\n \"[&:has([role=checkbox])]:pr-0\",\r\n].join(\" \");\r\n","import React, { forwardRef, type HTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n tableWrapperStyles,\r\n tableStyles,\r\n theadStyles,\r\n tbodyStyles,\r\n trStyles,\r\n thStyles,\r\n tdStyles,\r\n} from \"./table.styles\";\r\n\r\n/* ── Wrapper ── */\r\nexport const TableWrapper = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(tableWrapperStyles, className)} {...props} />\r\n )\r\n);\r\nTableWrapper.displayName = \"TableWrapper\";\r\n\r\n/* ── Table ── */\r\nexport const Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(\r\n ({ className, ...props }, ref) => (\r\n <TableWrapper>\r\n <table ref={ref} className={cn(tableStyles, className)} {...props} />\r\n </TableWrapper>\r\n )\r\n);\r\nTable.displayName = \"Table\";\r\n\r\n/* ── Thead ── */\r\nexport const Thead = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn(theadStyles, className)} {...props} />\r\n )\r\n);\r\nThead.displayName = \"Thead\";\r\n\r\n/* ── Tbody ── */\r\nexport const Tbody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} className={cn(tbodyStyles, className)} {...props} />\r\n )\r\n);\r\nTbody.displayName = \"Tbody\";\r\n\r\n/* ── Tr ── */\r\nexport const Tr = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tr ref={ref} className={cn(trStyles, className)} {...props} />\r\n )\r\n);\r\nTr.displayName = \"Tr\";\r\n\r\n/* ── Th ── */\r\nexport const Th = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <th ref={ref} className={cn(thStyles, className)} {...props} />\r\n )\r\n);\r\nTh.displayName = \"Th\";\r\n\r\n/* ── Td ── */\r\nexport const Td = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <td ref={ref} className={cn(tdStyles, className)} {...props} />\r\n )\r\n);\r\nTd.displayName = \"Td\";\r\n","export const sidebarStyles = [\r\n \"flex flex-col h-full\",\r\n \"bg-[var(--color-bg-secondary)] border-r border-[var(--color-border)]\",\r\n \"transition-all duration-[var(--transition-slow)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarExpandedStyles = \"w-[260px]\";\r\nexport const sidebarCollapsedStyles = \"w-[68px]\";\r\n\r\nexport const sidebarHeaderStyles = [\r\n \"flex items-center gap-3\",\r\n \"px-[var(--space-md)] h-14\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n\r\nexport const sidebarContentStyles =\r\n \"flex-1 overflow-y-auto py-[var(--space-sm)] px-[var(--space-sm)]\";\r\n\r\nexport const sidebarFooterStyles = [\r\n \"shrink-0\",\r\n \"px-[var(--space-md)] py-[var(--space-sm)]\",\r\n \"border-t border-[var(--color-border)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarSectionStyles =\r\n \"py-[var(--space-xs)]\";\r\n\r\nexport const sidebarSectionLabelStyles = [\r\n \"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider\",\r\n \"text-[var(--color-text-muted)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarItemStyles = [\r\n \"flex items-center gap-3\",\r\n \"w-full px-3 py-2\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"cursor-pointer select-none\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarItemActiveStyles = [\r\n \"bg-[var(--color-primary)]/10 text-[var(--color-primary-400)]\",\r\n \"hover:bg-[var(--color-primary)]/15\",\r\n].join(\" \");\r\n\r\nexport const sidebarToggleStyles = [\r\n \"flex items-center justify-center\",\r\n \"h-7 w-7 rounded-[var(--radius)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n","import React, {\r\n createContext,\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useState,\r\n type HTMLAttributes,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n sidebarStyles,\r\n sidebarExpandedStyles,\r\n sidebarCollapsedStyles,\r\n sidebarHeaderStyles,\r\n sidebarContentStyles,\r\n sidebarFooterStyles,\r\n sidebarSectionStyles,\r\n sidebarSectionLabelStyles,\r\n sidebarItemStyles,\r\n sidebarItemActiveStyles,\r\n sidebarToggleStyles,\r\n} from \"./sidebar.styles\";\r\n\r\n/* ── Context ── */\r\ninterface SidebarContextValue {\r\n collapsed: boolean;\r\n toggle: () => void;\r\n}\r\n\r\nconst SidebarContext = createContext<SidebarContextValue>({\r\n collapsed: false,\r\n toggle: () => { },\r\n});\r\n\r\nexport function useSidebar() {\r\n return useContext(SidebarContext);\r\n}\r\n\r\n/* ── Root ── */\r\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\r\n /** Controlled collapsed state */\r\n collapsed?: boolean;\r\n /** Default collapsed state (uncontrolled) */\r\n defaultCollapsed?: boolean;\r\n /** Callback on toggle */\r\n onCollapsedChange?: (collapsed: boolean) => void;\r\n}\r\n\r\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(\r\n (\r\n {\r\n collapsed: controlledCollapsed,\r\n defaultCollapsed = false,\r\n onCollapsedChange,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [internal, setInternal] = useState(defaultCollapsed);\r\n const collapsed = controlledCollapsed ?? internal;\r\n\r\n const toggle = useCallback(() => {\r\n const next = !collapsed;\r\n setInternal(next);\r\n onCollapsedChange?.(next);\r\n }, [collapsed, onCollapsedChange]);\r\n\r\n return (\r\n <SidebarContext.Provider value={{ collapsed, toggle }}>\r\n <aside\r\n ref={ref}\r\n className={cn(\r\n sidebarStyles,\r\n collapsed ? sidebarCollapsedStyles : sidebarExpandedStyles,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </aside>\r\n </SidebarContext.Provider>\r\n );\r\n }\r\n);\r\nSidebar.displayName = \"Sidebar\";\r\n\r\n/* ── Header ── */\r\nexport interface SidebarHeaderProps extends HTMLAttributes<HTMLDivElement> {\r\n logo?: ReactNode;\r\n}\r\n\r\nexport const SidebarHeader = forwardRef<HTMLDivElement, SidebarHeaderProps>(\r\n ({ className, logo, children, ...props }, ref) => {\r\n const { collapsed } = useSidebar();\r\n return (\r\n <div ref={ref} className={cn(sidebarHeaderStyles, className)} {...props}>\r\n {logo}\r\n {!collapsed && children}\r\n </div>\r\n );\r\n }\r\n);\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\n/* ── Content ── */\r\nexport const SidebarContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(sidebarContentStyles, className)} {...props} />\r\n )\r\n);\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\n/* ── Footer ── */\r\nexport const SidebarFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(sidebarFooterStyles, className)} {...props} />\r\n )\r\n);\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\n/* ── Section ── */\r\nexport interface SidebarSectionProps extends HTMLAttributes<HTMLDivElement> {\r\n label?: string;\r\n}\r\n\r\nexport const SidebarSection = forwardRef<HTMLDivElement, SidebarSectionProps>(\r\n ({ className, label, children, ...props }, ref) => {\r\n const { collapsed } = useSidebar();\r\n return (\r\n <div ref={ref} className={cn(sidebarSectionStyles, className)} {...props}>\r\n {label && !collapsed && (\r\n <div className={sidebarSectionLabelStyles}>{label}</div>\r\n )}\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nSidebarSection.displayName = \"SidebarSection\";\r\n\r\n/* ── Item ── */\r\nexport interface SidebarItemProps extends HTMLAttributes<HTMLButtonElement> {\r\n icon?: ReactNode;\r\n active?: boolean;\r\n}\r\n\r\nexport const SidebarItem = forwardRef<HTMLButtonElement, SidebarItemProps>(\r\n ({ className, icon, active, children, ...props }, ref) => {\r\n const { collapsed } = useSidebar();\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n className={cn(\r\n sidebarItemStyles,\r\n active && sidebarItemActiveStyles,\r\n collapsed && \"justify-center px-0\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {icon}\r\n {!collapsed && <span className=\"truncate\">{children}</span>}\r\n </button>\r\n );\r\n }\r\n);\r\nSidebarItem.displayName = \"SidebarItem\";\r\n\r\n/* ── Toggle Button ── */\r\nexport const SidebarToggle = forwardRef<HTMLButtonElement, HTMLAttributes<HTMLButtonElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { collapsed, toggle } = useSidebar();\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n onClick={toggle}\r\n className={cn(sidebarToggleStyles, className)}\r\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\r\n {...props}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={cn(\"transition-transform\", collapsed && \"rotate-180\")}\r\n >\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n </button>\r\n );\r\n }\r\n);\r\nSidebarToggle.displayName = \"SidebarToggle\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const statCardStyles = [\r\n \"rounded-[var(--radius-lg)] p-5\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"transition-all duration-[var(--transition-base)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n].join(\" \");\r\n\r\nexport const statCardTitleStyles =\r\n \"text-[var(--text-sm)] font-medium text-[var(--color-text-muted)]\";\r\n\r\nexport const statCardValueStyles =\r\n \"text-2xl font-semibold text-[var(--color-text-primary)] mt-1\";\r\n\r\nexport const statCardChangeVariants = cva(\r\n \"inline-flex items-center gap-1 text-[var(--text-xs)] font-medium mt-2\",\r\n {\r\n variants: {\r\n changeType: {\r\n positive: \"text-[var(--color-success)]\",\r\n negative: \"text-[var(--color-danger)]\",\r\n neutral: \"text-[var(--color-text-muted)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n changeType: \"neutral\",\r\n },\r\n }\r\n);\r\n\r\nexport const statCardIconStyles =\r\n \"h-10 w-10 rounded-[var(--radius-md)] bg-[var(--color-primary)]/10 text-[var(--color-primary-400)] flex items-center justify-center\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n statCardStyles,\r\n statCardTitleStyles,\r\n statCardValueStyles,\r\n statCardChangeVariants,\r\n statCardIconStyles,\r\n} from \"./stat-card.styles\";\r\n\r\nexport interface StatCardProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof statCardChangeVariants> {\r\n title: string;\r\n value: string | number;\r\n change?: string;\r\n changeType?: \"positive\" | \"negative\" | \"neutral\";\r\n icon?: ReactNode;\r\n}\r\n\r\nexport const StatCard = forwardRef<HTMLDivElement, StatCardProps>(\r\n ({ className, title, value, change, changeType = \"neutral\", icon, ...props }, ref) => (\r\n <div ref={ref} className={cn(statCardStyles, className)} {...props}>\r\n <div className=\"flex items-start justify-between\">\r\n <div>\r\n <p className={statCardTitleStyles}>{title}</p>\r\n <p className={statCardValueStyles}>{value}</p>\r\n {change && (\r\n <span className={statCardChangeVariants({ changeType })}>\r\n {changeType === \"positive\" && (\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"18 15 12 9 6 15\" />\r\n </svg>\r\n )}\r\n {changeType === \"negative\" && (\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n )}\r\n {change}\r\n </span>\r\n )}\r\n </div>\r\n {icon && <div className={statCardIconStyles}>{icon}</div>}\r\n </div>\r\n </div>\r\n )\r\n);\r\n\r\nStatCard.displayName = \"StatCard\";\r\n","export const emptyStateStyles = [\r\n \"flex flex-col items-center justify-center py-12 px-6 text-center\",\r\n].join(\" \");\r\n\r\nexport const emptyStateIconStyles =\r\n \"h-12 w-12 text-[var(--color-text-muted)] mb-4\";\r\n\r\nexport const emptyStateTitleStyles =\r\n \"text-[var(--text-base)] font-medium text-[var(--color-text-primary)] mb-1\";\r\n\r\nexport const emptyStateDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] max-w-sm mb-4\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n emptyStateStyles,\r\n emptyStateIconStyles,\r\n emptyStateTitleStyles,\r\n emptyStateDescriptionStyles,\r\n} from \"./empty-state.styles\";\r\n\r\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\r\n icon?: ReactNode;\r\n title: string;\r\n description?: string;\r\n action?: ReactNode;\r\n}\r\n\r\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\r\n ({ className, icon, title, description, action, ...props }, ref) => (\r\n <div ref={ref} className={cn(emptyStateStyles, className)} {...props}>\r\n {icon && <div className={emptyStateIconStyles}>{icon}</div>}\r\n <h3 className={emptyStateTitleStyles}>{title}</h3>\r\n {description && <p className={emptyStateDescriptionStyles}>{description}</p>}\r\n {action && <div>{action}</div>}\r\n </div>\r\n )\r\n);\r\n\r\nEmptyState.displayName = \"EmptyState\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const alertVariants = cva(\r\n [\r\n \"relative flex gap-3 p-4 rounded-[var(--radius-md)]\",\r\n \"border text-[var(--text-sm)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n info: \"bg-[var(--color-info)]/10 border-[var(--color-info)]/20 text-[var(--color-info)]\",\r\n success: \"bg-[var(--color-success)]/10 border-[var(--color-success)]/20 text-[var(--color-success)]\",\r\n warning: \"bg-[var(--color-warning)]/10 border-[var(--color-warning)]/20 text-[var(--color-warning)]\",\r\n danger: \"bg-[var(--color-danger)]/10 border-[var(--color-danger)]/20 text-[var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"info\",\r\n },\r\n }\r\n);\r\n\r\nexport const alertTitleStyles = \"font-semibold leading-tight\";\r\n\r\nexport const alertDescriptionStyles = \"text-[var(--text-sm)] opacity-80 mt-0.5\";\r\n\r\nexport const alertDismissStyles =\r\n \"absolute top-3 right-3 p-1 rounded-[var(--radius-sm)] opacity-60 hover:opacity-100 transition-opacity cursor-pointer\";\r\n\r\nexport const alertIconStyles = \"shrink-0 mt-0.5\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n alertVariants,\r\n alertTitleStyles,\r\n alertDescriptionStyles,\r\n alertDismissStyles,\r\n alertIconStyles,\r\n} from \"./alert.styles\";\r\n\r\nconst defaultIcons: Record<string, React.ReactNode> = {\r\n info: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" /><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n ),\r\n success: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" /><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" /><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n ),\r\n danger: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" /><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\r\n </svg>\r\n ),\r\n};\r\n\r\nexport interface AlertProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof alertVariants> {\r\n title?: string;\r\n description?: string;\r\n icon?: ReactNode;\r\n dismissible?: boolean;\r\n onDismiss?: () => void;\r\n action?: ReactNode;\r\n}\r\n\r\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\r\n ({ className, variant = \"info\", title, description, icon, dismissible, onDismiss, action, children, ...props }, ref) => (\r\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\r\n <div className={alertIconStyles}>\r\n {icon || defaultIcons[variant || \"info\"]}\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n {title && <p className={alertTitleStyles}>{title}</p>}\r\n {description && <p className={alertDescriptionStyles}>{description}</p>}\r\n {children}\r\n {action && <div className=\"mt-2\">{action}</div>}\r\n </div>\r\n {dismissible && (\r\n <button onClick={onDismiss} className={alertDismissStyles} aria-label=\"Dismiss\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n )\r\n);\r\n\r\nAlert.displayName = \"Alert\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const skeletonVariants = cva(\r\n \"animate-pulse bg-[var(--color-surface-raised)]\",\r\n {\r\n variants: {\r\n variant: {\r\n text: \"h-4 w-full rounded-[var(--radius-sm)]\",\r\n circle: \"rounded-full\",\r\n rect: \"rounded-[var(--radius)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"rect\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { skeletonVariants } from \"./skeleton.styles\";\r\n\r\nexport interface SkeletonProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof skeletonVariants> {\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nconst SkeletonBase = forwardRef<HTMLDivElement, SkeletonProps>(\r\n ({ className, variant, width, height, style, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(skeletonVariants({ variant }), className)}\r\n style={{ width, height, ...style }}\r\n {...props}\r\n />\r\n )\r\n);\r\nSkeletonBase.displayName = \"Skeleton\";\r\n\r\n/* ── Skeleton.Text ── */\r\ninterface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {\r\n lines?: number;\r\n lastLineWidth?: string;\r\n}\r\n\r\nconst SkeletonText: React.FC<SkeletonTextProps> = ({\r\n lines = 3,\r\n lastLineWidth = \"60%\",\r\n className,\r\n ...props\r\n}) => (\r\n <div className={cn(\"space-y-2.5\", className)} {...props}>\r\n {Array.from({ length: lines }).map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"h-4 rounded-[var(--radius-sm)] animate-pulse bg-[var(--color-surface-raised)]\"\r\n style={{ width: i === lines - 1 ? lastLineWidth : \"100%\" }}\r\n />\r\n ))}\r\n </div>\r\n);\r\nSkeletonText.displayName = \"SkeletonText\";\r\n\r\n/* ── Compose ── */\r\nexport const Skeleton = Object.assign(SkeletonBase, {\r\n Text: SkeletonText,\r\n});\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const progressTrackVariants = cva(\r\n \"relative w-full overflow-hidden rounded-full bg-[var(--color-surface-raised)]\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-1.5\",\r\n md: \"h-2.5\",\r\n lg: \"h-4\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport const progressBarVariants = cva(\r\n \"h-full rounded-full transition-all duration-500 ease-out\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-[var(--color-primary)]\",\r\n success: \"bg-[var(--color-success)]\",\r\n warning: \"bg-[var(--color-warning)]\",\r\n danger: \"bg-[var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport const progressLabelStyles =\r\n \"flex justify-between items-center mb-1.5 text-[var(--text-sm)] text-[var(--color-text-primary)]\";\r\n\r\nexport const progressValueStyles =\r\n \"text-[var(--text-xs)] font-medium text-[var(--color-text-secondary)]\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n progressTrackVariants,\r\n progressBarVariants,\r\n progressLabelStyles,\r\n progressValueStyles,\r\n} from \"./progress.styles\";\r\n\r\nexport interface ProgressProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof progressTrackVariants>,\r\n VariantProps<typeof progressBarVariants> {\r\n value?: number;\r\n max?: number;\r\n label?: string;\r\n showValue?: boolean;\r\n indeterminate?: boolean;\r\n}\r\n\r\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\r\n (\r\n {\r\n className,\r\n value = 0,\r\n max = 100,\r\n size,\r\n variant,\r\n label,\r\n showValue,\r\n indeterminate,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\r\n {(label || showValue) && (\r\n <div className={progressLabelStyles}>\r\n {label && (\r\n <span className=\"text-[var(--color-text-secondary)] font-medium\">{label}</span>\r\n )}\r\n {showValue && !indeterminate && (\r\n <span className={progressValueStyles}>{Math.round(percentage)}%</span>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n role=\"progressbar\"\r\n aria-valuenow={indeterminate ? undefined : value}\r\n aria-valuemin={0}\r\n aria-valuemax={max}\r\n className={progressTrackVariants({ size })}\r\n >\r\n <div\r\n className={cn(\r\n progressBarVariants({ variant }),\r\n indeterminate && \"w-1/3 animate-[progress-indeterminate_1.5s_ease-in-out_infinite]\"\r\n )}\r\n style={!indeterminate ? { width: `${percentage}%` } : undefined}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nProgress.displayName = \"Progress\";\r\n","export const paginationStyles =\r\n \"flex items-center gap-1\";\r\n\r\nexport const paginationButtonStyles = [\r\n \"inline-flex items-center justify-center\",\r\n \"h-9 min-w-[36px] px-3\",\r\n \"text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)] border border-transparent\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"disabled:opacity-40 disabled:pointer-events-none\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nexport const paginationButtonActiveStyles = [\r\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\r\n \"hover:bg-[var(--color-primary-hover)] hover:text-[var(--color-primary-foreground)]\",\r\n \"border-[var(--color-primary)]\",\r\n].join(\" \");\r\n\r\nexport const paginationEllipsisStyles =\r\n \"flex items-center justify-center h-9 w-9 text-[var(--color-text-muted)]\";\r\n\r\nexport const paginationInfoStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] mr-3\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n paginationStyles,\r\n paginationButtonStyles,\r\n paginationButtonActiveStyles,\r\n paginationEllipsisStyles,\r\n paginationInfoStyles,\r\n} from \"./pagination.styles\";\r\n\r\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {\r\n page: number;\r\n totalPages: number;\r\n onPageChange: (page: number) => void;\r\n siblingCount?: number;\r\n showInfo?: boolean;\r\n totalItems?: number;\r\n pageSize?: number;\r\n}\r\n\r\nfunction getPages(page: number, totalPages: number, siblingCount: number): (number | \"...\")[] {\r\n const totalNumbers = siblingCount * 2 + 5;\r\n if (totalNumbers >= totalPages) {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n }\r\n\r\n const leftSibling = Math.max(page - siblingCount, 1);\r\n const rightSibling = Math.min(page + siblingCount, totalPages);\r\n const showLeftDots = leftSibling > 2;\r\n const showRightDots = rightSibling < totalPages - 1;\r\n\r\n if (!showLeftDots && showRightDots) {\r\n const leftRange = 3 + 2 * siblingCount;\r\n const pages: (number | \"...\")[] = Array.from({ length: leftRange }, (_, i) => i + 1);\r\n return [...pages, \"...\", totalPages];\r\n }\r\n\r\n if (showLeftDots && !showRightDots) {\r\n const rightRange = 3 + 2 * siblingCount;\r\n const pages: (number | \"...\")[] = Array.from({ length: rightRange }, (_, i) => totalPages - rightRange + i + 1);\r\n return [1, \"...\", ...pages];\r\n }\r\n\r\n const middlePages: number[] = [];\r\n for (let i = leftSibling; i <= rightSibling; i++) middlePages.push(i);\r\n return [1, \"...\", ...middlePages, \"...\", totalPages];\r\n}\r\n\r\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\r\n (\r\n {\r\n className,\r\n page,\r\n totalPages,\r\n onPageChange,\r\n siblingCount = 1,\r\n showInfo,\r\n totalItems,\r\n pageSize,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const pages = getPages(page, totalPages, siblingCount);\r\n\r\n return (\r\n <nav ref={ref} aria-label=\"Pagination\" className={cn(\"flex items-center gap-2\", className)} {...props}>\r\n {showInfo && totalItems !== undefined && pageSize && (\r\n <span className={paginationInfoStyles}>\r\n {(page - 1) * pageSize + 1}-{Math.min(page * pageSize, totalItems)} of {totalItems}\r\n </span>\r\n )}\r\n <div className={paginationStyles}>\r\n <button\r\n className={paginationButtonStyles}\r\n onClick={() => onPageChange(page - 1)}\r\n disabled={page <= 1}\r\n aria-label=\"Previous page\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n </button>\r\n {pages.map((p, i) =>\r\n p === \"...\" ? (\r\n <span key={`dots-${i}`} className={paginationEllipsisStyles}>…</span>\r\n ) : (\r\n <button\r\n key={p}\r\n className={cn(\r\n paginationButtonStyles,\r\n p === page && paginationButtonActiveStyles\r\n )}\r\n onClick={() => onPageChange(p)}\r\n aria-current={p === page ? \"page\" : undefined}\r\n >\r\n {p}\r\n </button>\r\n )\r\n )}\r\n <button\r\n className={paginationButtonStyles}\r\n onClick={() => onPageChange(page + 1)}\r\n disabled={page >= totalPages}\r\n aria-label=\"Next page\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"9 18 15 12 9 6\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </nav>\r\n );\r\n }\r\n);\r\n\r\nPagination.displayName = \"Pagination\";\r\n","export const breadcrumbStyles =\r\n \"flex items-center gap-1.5 text-[var(--text-sm)]\";\r\n\r\nexport const breadcrumbItemStyles =\r\n \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors duration-[var(--transition-fast)] cursor-pointer inline-flex items-center gap-1.5\";\r\n\r\nexport const breadcrumbItemActiveStyles =\r\n \"text-[var(--color-text-primary)] pointer-events-none font-medium\";\r\n\r\nexport const breadcrumbSeparatorStyles =\r\n \"text-[var(--color-text-muted)]/50 select-none\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n breadcrumbStyles,\r\n breadcrumbItemStyles,\r\n breadcrumbItemActiveStyles,\r\n breadcrumbSeparatorStyles,\r\n} from \"./breadcrumb.styles\";\r\n\r\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\r\n separator?: ReactNode;\r\n}\r\n\r\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\r\n ({ className, separator = \"/\", children, ...props }, ref) => {\r\n const items = React.Children.toArray(children);\r\n\r\n return (\r\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn(breadcrumbStyles, className)} {...props}>\r\n {items.map((child, i) => (\r\n <React.Fragment key={i}>\r\n {child}\r\n {i < items.length - 1 && (\r\n <span className={breadcrumbSeparatorStyles} aria-hidden=\"true\">\r\n {separator}\r\n </span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </nav>\r\n );\r\n }\r\n);\r\nBreadcrumb.displayName = \"Breadcrumb\";\r\n\r\nexport interface BreadcrumbItemProps extends HTMLAttributes<HTMLAnchorElement> {\r\n href?: string;\r\n active?: boolean;\r\n icon?: ReactNode;\r\n}\r\n\r\nexport const BreadcrumbItem = forwardRef<HTMLAnchorElement, BreadcrumbItemProps>(\r\n ({ className, href, active, icon, children, ...props }, ref) => {\r\n const Comp = href && !active ? \"a\" : \"span\";\r\n return (\r\n <Comp\r\n ref={ref as any}\r\n href={href && !active ? href : undefined}\r\n aria-current={active ? \"page\" : undefined}\r\n className={cn(\r\n breadcrumbItemStyles,\r\n active && breadcrumbItemActiveStyles,\r\n className\r\n )}\r\n {...(props as any)}\r\n >\r\n {icon}\r\n {children}\r\n </Comp>\r\n );\r\n }\r\n);\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\r\n","import React, { createContext, useCallback, useContext, useEffect, useRef, useState, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Types ── */\r\nexport interface ToastData {\r\n id: string;\r\n title?: string;\r\n description?: string;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\r\n duration?: number;\r\n action?: ReactNode;\r\n}\r\n\r\ntype ToastInput = Omit<ToastData, \"id\">;\r\n\r\n/* ── Context ── */\r\ninterface ToastContextValue {\r\n toast: (input: ToastInput) => void;\r\n dismiss: (id: string) => void;\r\n}\r\n\r\nconst ToastContext = createContext<ToastContextValue>({\r\n toast: () => { },\r\n dismiss: () => { },\r\n});\r\n\r\nexport const useToast = () => useContext(ToastContext);\r\n\r\n/* ── Styles ── */\r\nconst containerStyles = \"fixed top-4 right-4 z-[var(--z-toast)] flex flex-col gap-2 w-[380px] max-w-[calc(100vw-2rem)]\";\r\n\r\nconst toastBase = [\r\n \"relative flex gap-3 items-start p-4 pr-10\",\r\n \"rounded-[var(--radius-md)]\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"shadow-[var(--shadow-lg)]\",\r\n \"text-[var(--text-sm)]\",\r\n \"animate-[toast-in_0.3s_ease-out]\",\r\n].join(\" \");\r\n\r\nconst variantMap: Record<string, string> = {\r\n default: \"border-[var(--color-border)]\",\r\n success: \"border-[var(--color-success)]/30\",\r\n warning: \"border-[var(--color-warning)]/30\",\r\n danger: \"border-[var(--color-danger)]/30\",\r\n};\r\n\r\nconst variantIconMap: Record<string, ReactNode> = {\r\n success: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-success)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0 mt-0.5\">\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-warning)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0 mt-0.5\">\r\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" /><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" /><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n ),\r\n danger: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-danger)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0 mt-0.5\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" /><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\r\n </svg>\r\n ),\r\n};\r\n\r\n/* ── Single Toast ── */\r\nfunction ToastItem({ data, onDismiss }: { data: ToastData; onDismiss: (id: string) => void }) {\r\n const [exiting, setExiting] = useState(false);\r\n const timerRef = useRef<ReturnType<typeof setTimeout>>();\r\n\r\n useEffect(() => {\r\n const dur = data.duration ?? 4000;\r\n if (dur > 0) {\r\n timerRef.current = setTimeout(() => {\r\n setExiting(true);\r\n setTimeout(() => onDismiss(data.id), 200);\r\n }, dur);\r\n }\r\n return () => clearTimeout(timerRef.current);\r\n }, [data.duration, data.id, onDismiss]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n toastBase,\r\n variantMap[data.variant || \"default\"],\r\n exiting && \"animate-[toast-out_0.2s_ease-in_forwards]\"\r\n )}\r\n role=\"alert\"\r\n >\r\n {data.variant && data.variant !== \"default\" && variantIconMap[data.variant]}\r\n <div className=\"flex-1 min-w-0\">\r\n {data.title && (\r\n <p className=\"font-medium text-[var(--color-text-primary)]\">{data.title}</p>\r\n )}\r\n {data.description && (\r\n <p className=\"text-[var(--color-text-secondary)] mt-0.5\">{data.description}</p>\r\n )}\r\n {data.action && <div className=\"mt-2\">{data.action}</div>}\r\n </div>\r\n <button\r\n onClick={() => {\r\n setExiting(true);\r\n setTimeout(() => onDismiss(data.id), 200);\r\n }}\r\n className=\"absolute top-3 right-3 text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors p-1\"\r\n aria-label=\"Dismiss\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\n/* ── Provider ── */\r\nexport function ToastProvider({ children }: { children: ReactNode }) {\r\n const [toasts, setToasts] = useState<ToastData[]>([]);\r\n\r\n const toast = useCallback((input: ToastInput) => {\r\n const id = Math.random().toString(36).slice(2, 9);\r\n setToasts((prev) => [...prev, { ...input, id }]);\r\n }, []);\r\n\r\n const dismiss = useCallback((id: string) => {\r\n setToasts((prev) => prev.filter((t) => t.id !== id));\r\n }, []);\r\n\r\n return (\r\n <ToastContext.Provider value={{ toast, dismiss }}>\r\n {children}\r\n {toasts.length > 0 && (\r\n <div className={containerStyles}>\r\n {toasts.map((t) => (\r\n <ToastItem key={t.id} data={t} onDismiss={dismiss} />\r\n ))}\r\n </div>\r\n )}\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nToastProvider.displayName = \"ToastProvider\";\r\n","import React, { useState, useEffect, useCallback, useRef, type KeyboardEvent as ReactKeyboardEvent, type ReactNode } from \"react\";\r\nimport * as Dialog from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Types ── */\r\nexport interface Command {\r\n id: string;\r\n label: string;\r\n icon?: ReactNode;\r\n shortcut?: string;\r\n group?: string;\r\n onAction: () => void;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n commands: Command[];\r\n placeholder?: string;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n emptyMessage?: string;\r\n}\r\n\r\n/* ── Styles ── */\r\nconst overlayStyles = \"fixed inset-0 z-[var(--z-modal)] bg-[var(--color-overlay)] backdrop-blur-sm\";\r\n\r\nconst contentStyles = [\r\n \"fixed top-[20%] left-1/2 -translate-x-1/2 z-[var(--z-modal)]\",\r\n \"w-full max-w-lg\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-lg)] shadow-[var(--shadow-lg)]\",\r\n \"overflow-hidden\",\r\n].join(\" \");\r\n\r\nconst inputStyles = [\r\n \"w-full bg-transparent text-[var(--color-text-primary)]\",\r\n \"px-4 py-3 text-[var(--text-base)]\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"focus:outline-none\",\r\n].join(\" \");\r\n\r\nconst listStyles = \"max-h-72 overflow-y-auto p-2\";\r\n\r\nconst groupLabelStyles =\r\n \"px-2 py-1.5 text-[var(--text-xs)] font-medium text-[var(--color-text-muted)] uppercase tracking-wider\";\r\n\r\nconst itemStyles = [\r\n \"flex items-center gap-3 w-full px-3 py-2.5\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)] cursor-pointer\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"outline-none\",\r\n].join(\" \");\r\n\r\nconst itemActiveStyles = \"bg-[var(--color-surface-hover)] text-[var(--color-text-primary)]\";\r\n\r\nconst shortcutStyles =\r\n \"ml-auto flex items-center gap-0.5 text-[10px] text-[var(--color-text-muted)]\";\r\n\r\nconst kbdStyles =\r\n \"px-1.5 py-0.5 rounded-[3px] bg-[var(--color-surface-raised)] border border-[var(--color-border)] font-mono\";\r\n\r\nconst emptyStyles = \"py-8 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\";\r\n\r\n/* ── Component ── */\r\nexport function CommandPalette({\r\n commands,\r\n placeholder = \"Type a command or search…\",\r\n open: controlledOpen,\r\n onOpenChange,\r\n emptyMessage = \"No results found.\",\r\n}: CommandPaletteProps) {\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const listRef = useRef<HTMLDivElement>(null);\r\n\r\n const isOpen = controlledOpen ?? internalOpen;\r\n const setOpen = onOpenChange ?? setInternalOpen;\r\n\r\n // Global keyboard shortcut\r\n useEffect(() => {\r\n const handler = (e: globalThis.KeyboardEvent) => {\r\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\r\n e.preventDefault();\r\n setOpen(!isOpen);\r\n }\r\n };\r\n window.addEventListener(\"keydown\", handler);\r\n return () => window.removeEventListener(\"keydown\", handler);\r\n }, [isOpen, setOpen]);\r\n\r\n // Filter commands\r\n const filtered = commands.filter((cmd) =>\r\n cmd.label.toLowerCase().includes(search.toLowerCase())\r\n );\r\n\r\n // Group commands\r\n const groups = new Map<string, Command[]>();\r\n filtered.forEach((cmd) => {\r\n const g = cmd.group || \"\";\r\n if (!groups.has(g)) groups.set(g, []);\r\n groups.get(g)!.push(cmd);\r\n });\r\n\r\n // Flat index for keyboard nav\r\n const flatItems = filtered;\r\n\r\n const handleKeyDown = useCallback(\r\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.min(i + 1, flatItems.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.max(i - 1, 0));\r\n } else if (e.key === \"Enter\" && flatItems[activeIndex]) {\r\n e.preventDefault();\r\n flatItems[activeIndex].onAction();\r\n setOpen(false);\r\n setSearch(\"\");\r\n }\r\n },\r\n [activeIndex, flatItems, setOpen]\r\n );\r\n\r\n useEffect(() => {\r\n setActiveIndex(0);\r\n }, [search]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) setSearch(\"\");\r\n }, [isOpen]);\r\n\r\n let itemIndex = -1;\r\n\r\n return (\r\n <Dialog.Root open={isOpen} onOpenChange={setOpen}>\r\n <Dialog.Portal>\r\n <Dialog.Overlay className={overlayStyles} />\r\n <Dialog.Content className={contentStyles} aria-label=\"Command palette\">\r\n <div className=\"flex items-center gap-2 px-4\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-text-muted)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" /><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\r\n </svg>\r\n <input\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n className={inputStyles}\r\n autoFocus\r\n />\r\n </div>\r\n <div ref={listRef} className={listStyles}>\r\n {filtered.length === 0 ? (\r\n <div className={emptyStyles}>{emptyMessage}</div>\r\n ) : (\r\n Array.from(groups.entries()).map(([group, cmds]) => (\r\n <div key={group}>\r\n {group && <div className={groupLabelStyles}>{group}</div>}\r\n {cmds.map((cmd) => {\r\n itemIndex++;\r\n const idx = itemIndex;\r\n return (\r\n <button\r\n key={cmd.id}\r\n type=\"button\"\r\n className={cn(\r\n itemStyles,\r\n idx === activeIndex && itemActiveStyles\r\n )}\r\n onClick={() => {\r\n cmd.onAction();\r\n setOpen(false);\r\n setSearch(\"\");\r\n }}\r\n onMouseEnter={() => setActiveIndex(idx)}\r\n >\r\n {cmd.icon && <span className=\"shrink-0 text-[var(--color-text-muted)]\">{cmd.icon}</span>}\r\n <span className=\"truncate\">{cmd.label}</span>\r\n {cmd.shortcut && (\r\n <span className={shortcutStyles}>\r\n {cmd.shortcut.split(\"+\").map((key, i) => (\r\n <kbd key={i} className={kbdStyles}>{key}</kbd>\r\n ))}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ))\r\n )}\r\n </div>\r\n </Dialog.Content>\r\n </Dialog.Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n\r\nCommandPalette.displayName = \"CommandPalette\";\r\n","import React, { forwardRef, useState, useMemo, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Types ── */\r\nexport interface DataTableColumn<T = any> {\r\n key: string;\r\n header: string;\r\n render?: (value: any, row: T, index: number) => ReactNode;\r\n sortable?: boolean;\r\n width?: string;\r\n align?: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport interface DataTableProps<T = any> extends HTMLAttributes<HTMLDivElement> {\r\n columns: DataTableColumn<T>[];\r\n data: T[];\r\n sortable?: boolean;\r\n onSort?: (key: string, direction: \"asc\" | \"desc\") => void;\r\n selectable?: boolean;\r\n selectedRows?: Set<number>;\r\n onSelectionChange?: (selected: Set<number>) => void;\r\n emptyMessage?: string;\r\n stickyHeader?: boolean;\r\n}\r\n\r\n/* ── Styles ── */\r\nconst wrapperStyles = \"w-full overflow-auto rounded-[var(--radius-lg)] border border-[var(--color-border)]\";\r\nconst tableStyles = \"w-full border-collapse\";\r\nconst thStyles = [\r\n \"px-4 py-3 text-left text-[var(--text-xs)] font-medium text-[var(--color-text-muted)]\",\r\n \"uppercase tracking-wider bg-[var(--color-bg-secondary)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n].join(\" \");\r\nconst tdStyles = [\r\n \"px-4 py-3 text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n].join(\" \");\r\nconst trHoverStyles =\r\n \"hover:bg-[var(--color-surface-hover)] transition-colors duration-[var(--transition-fast)]\";\r\nconst trSelectedStyles = \"bg-[var(--color-primary)]/5\";\r\nconst sortButtonStyles =\r\n \"inline-flex items-center gap-1 cursor-pointer hover:text-[var(--color-text-primary)] transition-colors\";\r\nconst checkboxStyles = [\r\n \"h-4 w-4 rounded-[3px] cursor-pointer appearance-none\",\r\n \"border border-[var(--color-border)] bg-[var(--color-surface)]\",\r\n \"checked:bg-[var(--color-primary)] checked:border-[var(--color-primary)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n].join(\" \");\r\nconst emptyRowStyles = \"px-4 py-12 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\";\r\n\r\n/* ── Component ── */\r\nfunction DataTableInner<T extends Record<string, any>>(\r\n {\r\n className,\r\n columns,\r\n data,\r\n sortable = false,\r\n onSort,\r\n selectable = false,\r\n selectedRows: controlledSelected,\r\n onSelectionChange,\r\n emptyMessage = \"No data available.\",\r\n stickyHeader = false,\r\n ...props\r\n }: DataTableProps<T>,\r\n ref: React.Ref<HTMLDivElement>\r\n) {\r\n const [internalSort, setInternalSort] = useState<{ key: string; dir: \"asc\" | \"desc\" } | null>(null);\r\n const [internalSelected, setInternalSelected] = useState<Set<number>>(new Set());\r\n\r\n const selected = controlledSelected ?? internalSelected;\r\n const setSelected = onSelectionChange ?? setInternalSelected;\r\n\r\n const sortedData = useMemo(() => {\r\n if (!internalSort || onSort) return data;\r\n return [...data].sort((a, b) => {\r\n const aVal = a[internalSort.key];\r\n const bVal = b[internalSort.key];\r\n const cmp = aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\r\n return internalSort.dir === \"asc\" ? cmp : -cmp;\r\n });\r\n }, [data, internalSort, onSort]);\r\n\r\n const handleSort = (key: string) => {\r\n const newDir = internalSort?.key === key && internalSort.dir === \"asc\" ? \"desc\" : \"asc\";\r\n setInternalSort({ key, dir: newDir });\r\n onSort?.(key, newDir);\r\n };\r\n\r\n const toggleRow = (i: number) => {\r\n const next = new Set(selected);\r\n if (next.has(i)) next.delete(i);\r\n else next.add(i);\r\n setSelected(next);\r\n };\r\n\r\n const toggleAll = () => {\r\n if (selected.size === data.length) setSelected(new Set());\r\n else setSelected(new Set(data.map((_, i) => i)));\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn(wrapperStyles, className)} {...props}>\r\n <table className={tableStyles}>\r\n <thead className={stickyHeader ? \"sticky top-0 z-10\" : undefined}>\r\n <tr>\r\n {selectable && (\r\n <th className={cn(thStyles, \"w-12\")}>\r\n <input\r\n type=\"checkbox\"\r\n checked={data.length > 0 && selected.size === data.length}\r\n onChange={toggleAll}\r\n className={checkboxStyles}\r\n />\r\n </th>\r\n )}\r\n {columns.map((col) => (\r\n <th\r\n key={col.key}\r\n className={cn(thStyles, col.align === \"center\" && \"text-center\", col.align === \"right\" && \"text-right\")}\r\n style={col.width ? { width: col.width } : undefined}\r\n >\r\n {(sortable || col.sortable) ? (\r\n <button type=\"button\" className={sortButtonStyles} onClick={() => handleSort(col.key)}>\r\n {col.header}\r\n <span className=\"inline-flex flex-col\">\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" className={cn(\"opacity-30\", internalSort?.key === col.key && internalSort.dir === \"asc\" && \"opacity-100\")}>\r\n <path d=\"M4 1L7 5H1L4 1Z\" fill=\"currentColor\" />\r\n </svg>\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" className={cn(\"-mt-0.5 opacity-30\", internalSort?.key === col.key && internalSort.dir === \"desc\" && \"opacity-100\")}>\r\n <path d=\"M4 7L1 3H7L4 7Z\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n </button>\r\n ) : (\r\n col.header\r\n )}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData.length === 0 ? (\r\n <tr>\r\n <td colSpan={columns.length + (selectable ? 1 : 0)} className={emptyRowStyles}>\r\n {emptyMessage}\r\n </td>\r\n </tr>\r\n ) : (\r\n sortedData.map((row, i) => (\r\n <tr\r\n key={i}\r\n className={cn(trHoverStyles, selected.has(i) && trSelectedStyles)}\r\n >\r\n {selectable && (\r\n <td className={tdStyles}>\r\n <input\r\n type=\"checkbox\"\r\n checked={selected.has(i)}\r\n onChange={() => toggleRow(i)}\r\n className={checkboxStyles}\r\n />\r\n </td>\r\n )}\r\n {columns.map((col) => (\r\n <td\r\n key={col.key}\r\n className={cn(tdStyles, col.align === \"center\" && \"text-center\", col.align === \"right\" && \"text-right\")}\r\n >\r\n {col.render\r\n ? col.render(row[col.key], row, i)\r\n : row[col.key]}\r\n </td>\r\n ))}\r\n </tr>\r\n ))\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport const DataTable = forwardRef(DataTableInner) as <T extends Record<string, any>>(\r\n props: DataTableProps<T> & { ref?: React.Ref<HTMLDivElement> }\r\n) => React.ReactElement;\r\n\r\n(DataTable as any).displayName = \"DataTable\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Styles ── */\r\nconst stepsHorizontalStyles = \"flex items-start gap-0\";\r\nconst stepsVerticalStyles = \"flex flex-col gap-0\";\r\n\r\nconst stepWrapperHorizontalStyles = \"flex items-center flex-1\";\r\nconst stepWrapperVerticalStyles = \"flex items-start gap-3\";\r\n\r\nconst stepCircleBase = [\r\n \"flex items-center justify-center shrink-0\",\r\n \"h-8 w-8 rounded-full text-[var(--text-xs)] font-medium\",\r\n \"border-2 transition-all duration-[var(--transition-base)]\",\r\n].join(\" \");\r\n\r\nconst stepCircleComplete =\r\n \"bg-[var(--color-primary)] border-[var(--color-primary)] text-[var(--color-primary-foreground)]\";\r\nconst stepCircleCurrent =\r\n \"border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-primary)]/10\";\r\nconst stepCircleUpcoming =\r\n \"border-[var(--color-border)] text-[var(--color-text-muted)] bg-[var(--color-surface)]\";\r\n\r\nconst connectorHorizontalStyles =\r\n \"flex-1 h-0.5 mx-2 transition-colors duration-[var(--transition-base)]\";\r\nconst connectorVerticalStyles =\r\n \"w-0.5 ml-[15px] min-h-[24px] transition-colors duration-[var(--transition-base)]\";\r\nconst connectorComplete = \"bg-[var(--color-primary)]\";\r\nconst connectorIncomplete = \"bg-[var(--color-border)]\";\r\n\r\nconst stepTitleStyles = \"text-[var(--text-sm)] font-medium text-[var(--color-text-primary)]\";\r\nconst stepDescriptionStyles = \"text-[var(--text-xs)] text-[var(--color-text-muted)] mt-0.5\";\r\n\r\n/* ── Types ── */\r\nexport interface StepData {\r\n title: string;\r\n description?: string;\r\n icon?: ReactNode;\r\n}\r\n\r\nexport interface StepsProps extends HTMLAttributes<HTMLDivElement> {\r\n steps: StepData[];\r\n current: number;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\n/* ── Component ── */\r\nexport const Steps = forwardRef<HTMLDivElement, StepsProps>(\r\n ({ className, steps, current, orientation = \"horizontal\", ...props }, ref) => {\r\n const isHorizontal = orientation === \"horizontal\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n isHorizontal ? stepsHorizontalStyles : stepsVerticalStyles,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {steps.map((step, i) => {\r\n const status = i < current ? \"complete\" : i === current ? \"current\" : \"upcoming\";\r\n const isLast = i === steps.length - 1;\r\n\r\n if (isHorizontal) {\r\n return (\r\n <React.Fragment key={i}>\r\n <div className=\"flex flex-col items-center gap-2 min-w-0\">\r\n <div\r\n className={cn(\r\n stepCircleBase,\r\n status === \"complete\" && stepCircleComplete,\r\n status === \"current\" && stepCircleCurrent,\r\n status === \"upcoming\" && stepCircleUpcoming\r\n )}\r\n >\r\n {status === \"complete\" ? (\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n ) : (\r\n step.icon || i + 1\r\n )}\r\n </div>\r\n <div className=\"text-center\">\r\n <p className={stepTitleStyles}>{step.title}</p>\r\n {step.description && (\r\n <p className={stepDescriptionStyles}>{step.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n {!isLast && (\r\n <div className={cn(\r\n connectorHorizontalStyles,\r\n \"mt-4\",\r\n i < current ? connectorComplete : connectorIncomplete\r\n )} />\r\n )}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n // Vertical\r\n return (\r\n <React.Fragment key={i}>\r\n <div className={stepWrapperVerticalStyles}>\r\n <div\r\n className={cn(\r\n stepCircleBase,\r\n status === \"complete\" && stepCircleComplete,\r\n status === \"current\" && stepCircleCurrent,\r\n status === \"upcoming\" && stepCircleUpcoming\r\n )}\r\n >\r\n {status === \"complete\" ? (\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n ) : (\r\n step.icon || i + 1\r\n )}\r\n </div>\r\n <div className=\"pt-1\">\r\n <p className={stepTitleStyles}>{step.title}</p>\r\n {step.description && (\r\n <p className={stepDescriptionStyles}>{step.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n {!isLast && (\r\n <div className={cn(\r\n connectorVerticalStyles,\r\n i < current ? connectorComplete : connectorIncomplete\r\n )} />\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSteps.displayName = \"Steps\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Styles ── */\r\nconst shellStyles = \"flex h-screen w-full overflow-hidden bg-[var(--color-bg)]\";\r\nconst mainStyles = \"flex-1 flex flex-col overflow-hidden\";\r\nconst contentStyles = \"flex-1 overflow-auto\";\r\n\r\n/* ── Component ── */\r\nexport interface AppShellProps extends HTMLAttributes<HTMLDivElement> {\r\n sidebar?: ReactNode;\r\n navbar?: ReactNode;\r\n}\r\n\r\nexport const AppShell = forwardRef<HTMLDivElement, AppShellProps>(\r\n ({ className, sidebar, navbar, children, ...props }, ref) => (\r\n <div ref={ref} className={cn(shellStyles, className)} {...props}>\r\n {sidebar}\r\n <div className={mainStyles}>\r\n {navbar}\r\n <main className={contentStyles}>{children}</main>\r\n </div>\r\n </div>\r\n )\r\n);\r\n\r\nAppShell.displayName = \"AppShell\";\r\n","export const pageHeaderStyles = [\r\n \"flex items-start justify-between gap-4 pb-6\",\r\n].join(\" \");\r\n\r\nexport const pageHeaderTitleStyles =\r\n \"text-xl font-semibold text-[var(--color-text-primary)] tracking-tight\";\r\n\r\nexport const pageHeaderDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] mt-1\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { pageHeaderStyles, pageHeaderTitleStyles, pageHeaderDescriptionStyles } from \"./page-header.styles\";\r\n\r\nexport interface PageHeaderProps extends HTMLAttributes<HTMLDivElement> {\r\n title: string;\r\n description?: string;\r\n breadcrumbs?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport const PageHeader = forwardRef<HTMLDivElement, PageHeaderProps>(\r\n ({ className, title, description, breadcrumbs, actions, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\r\n {breadcrumbs && <div className=\"mb-3\">{breadcrumbs}</div>}\r\n <div className={pageHeaderStyles}>\r\n <div className=\"min-w-0\">\r\n <h1 className={pageHeaderTitleStyles}>{title}</h1>\r\n {description && <p className={pageHeaderDescriptionStyles}>{description}</p>}\r\n </div>\r\n {actions && <div className=\"flex items-center gap-2 shrink-0\">{actions}</div>}\r\n </div>\r\n </div>\r\n )\r\n);\r\n\r\nPageHeader.displayName = \"PageHeader\";\r\n","export const navbarStyles = [\r\n \"flex items-center justify-between h-14 px-6\",\r\n \"bg-[var(--color-surface)] border-b border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { navbarStyles } from \"./navbar.styles\";\r\n\r\nexport interface NavbarProps extends HTMLAttributes<HTMLElement> {\r\n leftContent?: ReactNode;\r\n centerContent?: ReactNode;\r\n rightContent?: ReactNode;\r\n}\r\n\r\nexport const Navbar = forwardRef<HTMLElement, NavbarProps>(\r\n ({ className, leftContent, centerContent, rightContent, children, ...props }, ref) => (\r\n <header ref={ref} className={cn(navbarStyles, className)} {...props}>\r\n <div className=\"flex items-center gap-3\">{leftContent}</div>\r\n <div className=\"flex-1 flex items-center justify-center\">{centerContent}</div>\r\n <div className=\"flex items-center gap-3\">{rightContent}</div>\r\n </header>\r\n )\r\n);\r\n\r\nNavbar.displayName = \"Navbar\";\r\n","export const drawerOverlayStyles = [\r\n \"fixed inset-0 z-[var(--z-overlay)]\",\r\n \"bg-[var(--color-overlay)]\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\r\n].join(\" \");\r\n\r\nexport const drawerContentBase = [\r\n \"fixed z-[var(--z-modal)] bg-[var(--color-surface)]\",\r\n \"border-[var(--color-border)]\",\r\n \"shadow-lg flex flex-col\",\r\n \"focus:outline-none\",\r\n].join(\" \");\r\n\r\nexport const drawerSides: Record<string, string> = {\r\n right: \"inset-y-0 right-0 border-l data-[state=open]:animate-in data-[state=open]:slide-in-from-right data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right\",\r\n left: \"inset-y-0 left-0 border-r data-[state=open]:animate-in data-[state=open]:slide-in-from-left data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left\",\r\n top: \"inset-x-0 top-0 border-b data-[state=open]:animate-in data-[state=open]:slide-in-from-top data-[state=closed]:animate-out data-[state=closed]:slide-out-to-top\",\r\n bottom: \"inset-x-0 bottom-0 border-t data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom\",\r\n};\r\n\r\nexport const drawerSizes: Record<string, Record<string, string>> = {\r\n right: { sm: \"w-[320px]\", md: \"w-[420px]\", lg: \"w-[560px]\", xl: \"w-[720px]\", full: \"w-screen\" },\r\n left: { sm: \"w-[320px]\", md: \"w-[420px]\", lg: \"w-[560px]\", xl: \"w-[720px]\", full: \"w-screen\" },\r\n top: { sm: \"h-[200px]\", md: \"h-[320px]\", lg: \"h-[480px]\", xl: \"h-[640px]\", full: \"h-screen\" },\r\n bottom: { sm: \"h-[200px]\", md: \"h-[320px]\", lg: \"h-[480px]\", xl: \"h-[640px]\", full: \"h-screen\" },\r\n};\r\n\r\nexport const drawerHeaderStyles = [\r\n \"flex items-center justify-between px-6 py-4\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n\r\nexport const drawerTitleStyles =\r\n \"text-lg font-semibold text-[var(--color-text-primary)]\";\r\n\r\nexport const drawerDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] mt-1\";\r\n\r\nexport const drawerBodyStyles =\r\n \"flex-1 overflow-y-auto p-6\";\r\n\r\nexport const drawerFooterStyles = [\r\n \"flex items-center justify-end gap-3 px-6 py-4\",\r\n \"border-t border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n\r\nexport const drawerCloseStyles = [\r\n \"p-1.5 rounded-[var(--radius)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n","import React, { forwardRef, type ReactNode } from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n drawerOverlayStyles,\r\n drawerContentBase,\r\n drawerSides,\r\n drawerSizes,\r\n drawerHeaderStyles,\r\n drawerTitleStyles,\r\n drawerDescriptionStyles,\r\n drawerBodyStyles,\r\n drawerFooterStyles,\r\n drawerCloseStyles,\r\n} from \"./drawer.styles\";\r\n\r\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\r\nexport type DrawerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport interface DrawerProps {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: ReactNode;\r\n}\r\n\r\nexport interface DrawerContentProps {\r\n children: ReactNode;\r\n side?: DrawerSide;\r\n size?: DrawerSize;\r\n className?: string;\r\n}\r\n\r\n/* Root */\r\nexport const Drawer = ({ children, ...props }: DrawerProps) => (\r\n <DialogPrimitive.Root {...props}>{children}</DialogPrimitive.Root>\r\n);\r\n\r\n/* Trigger */\r\nexport const DrawerTrigger = DialogPrimitive.Trigger;\r\n\r\n/* Close */\r\nexport const DrawerClose = DialogPrimitive.Close;\r\n\r\n/* Content */\r\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\r\n ({ children, side = \"right\", size = \"md\", className }, ref) => (\r\n <DialogPrimitive.Portal>\r\n <DialogPrimitive.Overlay className={drawerOverlayStyles} />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n drawerContentBase,\r\n drawerSides[side],\r\n drawerSizes[side]?.[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </DialogPrimitive.Content>\r\n </DialogPrimitive.Portal>\r\n )\r\n);\r\nDrawerContent.displayName = \"DrawerContent\";\r\n\r\n/* Header */\r\nexport const DrawerHeader = ({\r\n children,\r\n className,\r\n onClose,\r\n}: {\r\n children: ReactNode;\r\n className?: string;\r\n onClose?: () => void;\r\n}) => (\r\n <div className={cn(drawerHeaderStyles, className)}>\r\n <div>{children}</div>\r\n {onClose !== undefined ? (\r\n <button type=\"button\" onClick={onClose} className={drawerCloseStyles}>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n ) : (\r\n <DialogPrimitive.Close className={drawerCloseStyles}>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </DialogPrimitive.Close>\r\n )}\r\n </div>\r\n);\r\n\r\n/* Title */\r\nexport const DrawerTitle = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <DialogPrimitive.Title className={cn(drawerTitleStyles, className)}>\r\n {children}\r\n </DialogPrimitive.Title>\r\n);\r\n\r\n/* Description */\r\nexport const DrawerDescription = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <DialogPrimitive.Description className={cn(drawerDescriptionStyles, className)}>\r\n {children}\r\n </DialogPrimitive.Description>\r\n);\r\n\r\n/* Body */\r\nexport const DrawerBody = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <div className={cn(drawerBodyStyles, className)}>{children}</div>\r\n);\r\n\r\n/* Footer */\r\nexport const DrawerFooter = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <div className={cn(drawerFooterStyles, className)}>{children}</div>\r\n);\r\n\r\nDrawer.displayName = \"Drawer\";\r\n","export const accordionStyles =\r\n \"divide-y divide-[var(--color-border)] border border-[var(--color-border)] rounded-[var(--radius-lg)] overflow-hidden\";\r\n\r\nexport const accordionItemStyles =\r\n \"bg-[var(--color-surface)]\";\r\n\r\nexport const accordionTriggerStyles = [\r\n \"flex items-center justify-between w-full\",\r\n \"px-4 py-3\",\r\n \"text-[var(--text-sm)] font-medium text-[var(--color-text-primary)]\",\r\n \"hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer select-none\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-inset\",\r\n].join(\" \");\r\n\r\nexport const accordionContentStyles = [\r\n \"px-4 pb-4 pt-0\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n].join(\" \");\r\n\r\nexport const accordionChevronStyles = [\r\n \"shrink-0 text-[var(--color-text-muted)]\",\r\n \"transition-transform duration-200\",\r\n].join(\" \");\r\n","import React, { useState, useCallback, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n accordionStyles,\r\n accordionItemStyles,\r\n accordionTriggerStyles,\r\n accordionContentStyles,\r\n accordionChevronStyles,\r\n} from \"./accordion.styles\";\r\n\r\nexport interface AccordionItemData {\r\n value: string;\r\n trigger: ReactNode;\r\n content: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface AccordionProps {\r\n /** Accordion items */\r\n items: AccordionItemData[];\r\n /** 'single' allows one open at a time, 'multiple' allows many */\r\n type?: \"single\" | \"multiple\";\r\n /** Default open item value(s) */\r\n defaultValue?: string | string[];\r\n /** Additional className for the root */\r\n className?: string;\r\n}\r\n\r\nexport function Accordion({\r\n items,\r\n type = \"single\",\r\n defaultValue,\r\n className,\r\n}: AccordionProps) {\r\n const [openItems, setOpenItems] = useState<Set<string>>(() => {\r\n if (!defaultValue) return new Set();\r\n return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);\r\n });\r\n\r\n const toggle = useCallback(\r\n (value: string) => {\r\n setOpenItems((prev) => {\r\n const next = new Set(prev);\r\n if (next.has(value)) {\r\n next.delete(value);\r\n } else {\r\n if (type === \"single\") {\r\n next.clear();\r\n }\r\n next.add(value);\r\n }\r\n return next;\r\n });\r\n },\r\n [type]\r\n );\r\n\r\n return (\r\n <div className={cn(accordionStyles, className)}>\r\n {items.map((item) => {\r\n const isOpen = openItems.has(item.value);\r\n return (\r\n <div key={item.value} className={accordionItemStyles}>\r\n <button\r\n type=\"button\"\r\n onClick={() => !item.disabled && toggle(item.value)}\r\n disabled={item.disabled}\r\n aria-expanded={isOpen}\r\n className={cn(\r\n accordionTriggerStyles,\r\n item.disabled && \"opacity-50 cursor-not-allowed\"\r\n )}\r\n >\r\n <span>{item.trigger}</span>\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={cn(\r\n accordionChevronStyles,\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </button>\r\n <div\r\n className=\"overflow-hidden transition-all duration-200\"\r\n style={{\r\n maxHeight: isOpen ? \"1000px\" : \"0px\",\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n >\r\n <div className={accordionContentStyles}>\r\n {item.content}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nAccordion.displayName = \"Accordion\";\r\n","export const sliderTrackStyles = [\r\n \"relative w-full rounded-full cursor-pointer\",\r\n \"bg-[var(--color-surface-raised)]\",\r\n].join(\" \");\r\n\r\nexport const sliderTrackSizes: Record<string, string> = {\r\n sm: \"h-1\",\r\n md: \"h-2\",\r\n lg: \"h-3\",\r\n};\r\n\r\nexport const sliderFillStyles =\r\n \"absolute left-0 top-0 h-full rounded-full bg-[var(--color-primary)] transition-all duration-75\";\r\n\r\nexport const sliderThumbStyles = [\r\n \"absolute top-1/2 -translate-y-1/2 -translate-x-1/2\",\r\n \"rounded-full bg-white border-2 border-[var(--color-primary)]\",\r\n \"shadow-sm cursor-grab active:cursor-grabbing\",\r\n \"transition-shadow duration-[var(--transition-fast)]\",\r\n \"hover:shadow-[0_0_0_4px_var(--color-primary)]/20\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n].join(\" \");\r\n\r\nexport const sliderThumbSizes: Record<string, string> = {\r\n sm: \"h-3.5 w-3.5\",\r\n md: \"h-5 w-5\",\r\n lg: \"h-6 w-6\",\r\n};\r\n\r\nexport const sliderLabelStyles =\r\n \"flex justify-between items-center mb-2 text-[var(--text-sm)] text-[var(--color-text-primary)]\";\r\n\r\nexport const sliderValueStyles =\r\n \"text-[var(--text-xs)] font-medium text-[var(--color-text-secondary)] tabular-nums\";\r\n","import React, { useCallback, useRef, useState, useEffect } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n sliderTrackStyles,\r\n sliderTrackSizes,\r\n sliderFillStyles,\r\n sliderThumbStyles,\r\n sliderThumbSizes,\r\n sliderLabelStyles,\r\n sliderValueStyles,\r\n} from \"./slider.styles\";\r\n\r\nexport interface SliderProps {\r\n /** Current value */\r\n value?: number;\r\n /** Callback when value changes */\r\n onChange?: (value: number) => void;\r\n /** Minimum value */\r\n min?: number;\r\n /** Maximum value */\r\n max?: number;\r\n /** Step increment */\r\n step?: number;\r\n /** Label text */\r\n label?: string;\r\n /** Show the current value */\r\n showValue?: boolean;\r\n /** Format the displayed value */\r\n formatValue?: (value: number) => string;\r\n /** Component size */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n /** Disable the slider */\r\n disabled?: boolean;\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nexport function Slider({\r\n value = 0,\r\n onChange,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n label,\r\n showValue = false,\r\n formatValue = (v) => String(v),\r\n size = \"md\",\r\n disabled = false,\r\n className,\r\n}: SliderProps) {\r\n const trackRef = useRef<HTMLDivElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n const clamp = (val: number) => Math.min(max, Math.max(min, val));\r\n const snap = (val: number) => Math.round((val - min) / step) * step + min;\r\n const percent = ((clamp(value) - min) / (max - min)) * 100;\r\n\r\n const getValueFromPosition = useCallback(\r\n (clientX: number) => {\r\n const track = trackRef.current;\r\n if (!track) return value;\r\n const rect = track.getBoundingClientRect();\r\n const fraction = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\r\n return snap(clamp(min + fraction * (max - min)));\r\n },\r\n [min, max, step, value]\r\n );\r\n\r\n const handlePointerDown = useCallback(\r\n (e: React.PointerEvent) => {\r\n if (disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n const newValue = getValueFromPosition(e.clientX);\r\n if (newValue !== value) onChange?.(newValue);\r\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\r\n },\r\n [disabled, getValueFromPosition, onChange, value]\r\n );\r\n\r\n const handlePointerMove = useCallback(\r\n (e: React.PointerEvent) => {\r\n if (!isDragging || disabled) return;\r\n const newValue = getValueFromPosition(e.clientX);\r\n if (newValue !== value) onChange?.(newValue);\r\n },\r\n [isDragging, disabled, getValueFromPosition, onChange, value]\r\n );\r\n\r\n const handlePointerUp = useCallback(() => {\r\n setIsDragging(false);\r\n }, []);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: React.KeyboardEvent) => {\r\n if (disabled) return;\r\n let newValue = value;\r\n switch (e.key) {\r\n case \"ArrowRight\":\r\n case \"ArrowUp\":\r\n newValue = clamp(value + step);\r\n break;\r\n case \"ArrowLeft\":\r\n case \"ArrowDown\":\r\n newValue = clamp(value - step);\r\n break;\r\n case \"Home\":\r\n newValue = min;\r\n break;\r\n case \"End\":\r\n newValue = max;\r\n break;\r\n default:\r\n return;\r\n }\r\n e.preventDefault();\r\n onChange?.(newValue);\r\n },\r\n [disabled, value, step, min, max, onChange]\r\n );\r\n\r\n return (\r\n <div className={cn(\"w-full\", disabled && \"opacity-50 pointer-events-none\", className)}>\r\n {(label || showValue) && (\r\n <div className={sliderLabelStyles}>\r\n {label && <span>{label}</span>}\r\n {showValue && <span className={sliderValueStyles}>{formatValue(clamp(value))}</span>}\r\n </div>\r\n )}\r\n <div\r\n ref={trackRef}\r\n className={cn(sliderTrackStyles, sliderTrackSizes[size])}\r\n onPointerDown={handlePointerDown}\r\n onPointerMove={handlePointerMove}\r\n onPointerUp={handlePointerUp}\r\n >\r\n <div\r\n className={sliderFillStyles}\r\n style={{ width: `${percent}%` }}\r\n />\r\n <div\r\n role=\"slider\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={clamp(value)}\r\n aria-label={label}\r\n className={cn(sliderThumbStyles, sliderThumbSizes[size])}\r\n style={{ left: `${percent}%` }}\r\n onKeyDown={handleKeyDown}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nSlider.displayName = \"Slider\";\r\n","import React, { type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface AvatarGroupProps {\r\n children: ReactNode;\r\n /** Maximum avatars to show before +N */\r\n max?: number;\r\n /** Size matches Avatar sizes */\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nconst sizeMap: Record<string, { dimension: string; text: string; overlap: string }> = {\r\n xs: { dimension: \"h-6 w-6\", text: \"text-[10px]\", overlap: \"-ml-1.5\" },\r\n sm: { dimension: \"h-8 w-8\", text: \"text-[var(--text-xs)]\", overlap: \"-ml-2\" },\r\n md: { dimension: \"h-10 w-10\", text: \"text-[var(--text-sm)]\", overlap: \"-ml-2.5\" },\r\n lg: { dimension: \"h-12 w-12\", text: \"text-[var(--text-sm)]\", overlap: \"-ml-3\" },\r\n xl: { dimension: \"h-16 w-16\", text: \"text-[var(--text-base)]\", overlap: \"-ml-4\" },\r\n};\r\n\r\nexport function AvatarGroup({ children, max = 5, size = \"md\", className }: AvatarGroupProps) {\r\n const childArray = React.Children.toArray(children);\r\n const visible = childArray.slice(0, max);\r\n const overflow = childArray.length - max;\r\n const s = sizeMap[size] || sizeMap.md;\r\n\r\n return (\r\n <div className={cn(\"flex items-center\", className)}>\r\n {visible.map((child, i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n i > 0 && s.overlap,\r\n \"ring-2 ring-[var(--color-bg)] rounded-full\"\r\n )}\r\n >\r\n {child}\r\n </div>\r\n ))}\r\n {overflow > 0 && (\r\n <div\r\n className={cn(\r\n s.overlap,\r\n s.dimension,\r\n s.text,\r\n \"inline-flex items-center justify-center\",\r\n \"rounded-full font-medium\",\r\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\",\r\n \"border-2 border-[var(--color-bg)]\",\r\n )}\r\n >\r\n +{overflow}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nAvatarGroup.displayName = \"AvatarGroup\";\r\n","import React, { type ReactNode } from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface ConfirmDialogProps {\r\n /** Whether the dialog is open */\r\n open?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Title text */\r\n title: string;\r\n /** Description text */\r\n description?: string;\r\n /** Confirm button text */\r\n confirmText?: string;\r\n /** Cancel button text */\r\n cancelText?: string;\r\n /** Variant for the confirm button */\r\n variant?: \"danger\" | \"primary\";\r\n /** Callback when confirmed */\r\n onConfirm?: () => void;\r\n /** Callback when cancelled */\r\n onCancel?: () => void;\r\n /** Trigger element (if controlled via trigger instead of open/onOpenChange) */\r\n trigger?: ReactNode;\r\n /** Whether action is in progress */\r\n loading?: boolean;\r\n}\r\n\r\nconst overlayStyles = [\r\n \"fixed inset-0 z-[var(--z-overlay)]\",\r\n \"bg-[var(--color-overlay)]\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\r\n].join(\" \");\r\n\r\nconst contentStyles = [\r\n \"fixed left-1/2 top-1/2 z-[var(--z-modal)]\",\r\n \"-translate-x-1/2 -translate-y-1/2\",\r\n \"w-full max-w-md p-6\",\r\n \"rounded-[var(--radius-lg)]\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n \"focus:outline-none\",\r\n].join(\" \");\r\n\r\nconst titleStyles = \"text-lg font-semibold text-[var(--color-text-primary)]\";\r\n\r\nconst descriptionStyles =\r\n \"mt-2 text-[var(--text-sm)] text-[var(--color-text-muted)] leading-relaxed\";\r\n\r\nconst actionsStyles = \"mt-6 flex items-center justify-end gap-3\";\r\n\r\nconst cancelBtnStyles = [\r\n \"inline-flex items-center justify-center h-9 px-4\",\r\n \"text-[var(--text-sm)] font-medium\",\r\n \"rounded-[var(--radius)]\",\r\n \"bg-transparent border border-[var(--color-border)]\",\r\n \"text-[var(--color-text-secondary)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nconst confirmBtnBase = [\r\n \"inline-flex items-center justify-center h-9 px-4\",\r\n \"text-[var(--text-sm)] font-medium\",\r\n \"rounded-[var(--radius)]\",\r\n \"text-white\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nconst confirmBtnVariants: Record<string, string> = {\r\n danger: \"bg-[var(--color-danger)] hover:bg-[var(--color-danger)]/90\",\r\n primary: \"bg-[var(--color-primary)] hover:bg-[var(--color-primary-hover)]\",\r\n};\r\n\r\nexport function ConfirmDialog({\r\n open,\r\n onOpenChange,\r\n title,\r\n description,\r\n confirmText = \"Confirm\",\r\n cancelText = \"Cancel\",\r\n variant = \"danger\",\r\n onConfirm,\r\n onCancel,\r\n trigger,\r\n loading = false,\r\n}: ConfirmDialogProps) {\r\n return (\r\n <AlertDialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\r\n {trigger && (\r\n <AlertDialogPrimitive.Trigger asChild>\r\n {trigger}\r\n </AlertDialogPrimitive.Trigger>\r\n )}\r\n <AlertDialogPrimitive.Portal>\r\n <AlertDialogPrimitive.Overlay className={overlayStyles} />\r\n <AlertDialogPrimitive.Content className={contentStyles}>\r\n <AlertDialogPrimitive.Title className={titleStyles}>\r\n {title}\r\n </AlertDialogPrimitive.Title>\r\n {description && (\r\n <AlertDialogPrimitive.Description className={descriptionStyles}>\r\n {description}\r\n </AlertDialogPrimitive.Description>\r\n )}\r\n <div className={actionsStyles}>\r\n <AlertDialogPrimitive.Cancel\r\n className={cancelBtnStyles}\r\n onClick={onCancel}\r\n >\r\n {cancelText}\r\n </AlertDialogPrimitive.Cancel>\r\n <AlertDialogPrimitive.Action\r\n className={cn(confirmBtnBase, confirmBtnVariants[variant])}\r\n onClick={onConfirm}\r\n disabled={loading}\r\n >\r\n {loading && (\r\n <svg className=\"animate-spin h-4 w-4 mr-2\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\r\n </svg>\r\n )}\r\n {confirmText}\r\n </AlertDialogPrimitive.Action>\r\n </div>\r\n </AlertDialogPrimitive.Content>\r\n </AlertDialogPrimitive.Portal>\r\n </AlertDialogPrimitive.Root>\r\n );\r\n}\r\n\r\nConfirmDialog.displayName = \"ConfirmDialog\";\r\n"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/theme-provider/theme-provider.tsx","../src/components/button/button.styles.ts","../src/components/button/button.tsx","../src/components/input/input.styles.ts","../src/components/input/input.tsx","../src/components/textarea/textarea.styles.ts","../src/components/textarea/textarea.tsx","../src/components/select/select.styles.ts","../src/components/select/select.tsx","../src/components/combobox/combobox.styles.ts","../src/components/combobox/combobox.tsx","../src/components/checkbox/checkbox.styles.ts","../src/components/checkbox/checkbox.tsx","../src/components/radio/radio.styles.ts","../src/components/radio/radio.tsx","../src/components/switch/switch.styles.ts","../src/components/switch/switch.tsx","../src/components/separator/separator.tsx","../src/components/avatar/avatar.styles.ts","../src/components/avatar/avatar.tsx","../src/components/tooltip/tooltip.styles.ts","../src/components/tooltip/tooltip.tsx","../src/components/popover/popover.styles.ts","../src/components/popover/popover.tsx","../src/components/card/card.styles.ts","../src/components/card/card.tsx","../src/components/modal/modal.styles.ts","../src/components/modal/modal.tsx","../src/components/dropdown/dropdown.styles.ts","../src/components/dropdown/dropdown.tsx","../src/components/badge/badge.styles.ts","../src/components/badge/badge.tsx","../src/components/tabs/tabs.styles.ts","../src/components/tabs/tabs.tsx","../src/components/table/table.styles.ts","../src/components/table/table.tsx","../src/components/sidebar/sidebar.styles.ts","../src/components/sidebar/sidebar.tsx","../src/components/stat-card/stat-card.styles.ts","../src/components/stat-card/stat-card.tsx","../src/components/empty-state/empty-state.styles.ts","../src/components/empty-state/empty-state.tsx","../src/components/alert/alert.styles.ts","../src/components/alert/alert.tsx","../src/components/skeleton/skeleton.styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/progress/progress.styles.ts","../src/components/progress/progress.tsx","../src/components/pagination/pagination.styles.ts","../src/components/pagination/pagination.tsx","../src/components/breadcrumb/breadcrumb.styles.ts","../src/components/breadcrumb/breadcrumb.tsx","../src/components/toast/toast.tsx","../src/components/command-palette/command-palette.tsx","../src/components/data-table/data-table.tsx","../src/components/steps/steps.tsx","../src/components/app-shell/app-shell.tsx","../src/components/page-header/page-header.styles.ts","../src/components/page-header/page-header.tsx","../src/components/navbar/navbar.styles.ts","../src/components/navbar/navbar.tsx","../src/components/drawer/drawer.styles.ts","../src/components/drawer/drawer.tsx","../src/components/accordion/accordion.styles.ts","../src/components/accordion/accordion.tsx","../src/components/slider/slider.styles.ts","../src/components/slider/slider.tsx","../src/components/avatar/avatar-group.tsx","../src/components/confirm-dialog/confirm-dialog.tsx","../src/components/toggle/toggle.styles.ts","../src/components/toggle/toggle.tsx","../src/components/spinner/spinner.tsx","../src/components/collapsible/collapsible.tsx","../src/components/hover-card/hover-card.tsx","../src/components/calendar/calendar.styles.ts","../src/components/calendar/calendar.tsx","../src/components/date-picker/date-picker.tsx"],"names":["React","cva","forwardRef","jsxs","jsx","labelStyles","helperStyles","errorStyles","useEffect","useState","useRef","useMemo","useCallback","flatIndex","PopoverPrimitive","PopoverPrimitive2","Fragment","createContext","useContext","Dialog","Dialog2","tableStyles","thStyles","tdStyles","contentStyles","overlayStyles","sizeMap","Spinner","PopoverPrimitive4"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\n/**\r\n * Merge class names with Tailwind conflict resolution.\r\n * Combines clsx conditional logic with tailwind-merge deduplication.\r\n */\r\nexport function cn(...inputs: ClassValue[]): string {\r\n return twMerge(clsx(inputs));\r\n}\r\n","import React, {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\n\r\nexport type Theme = \"light\" | \"dark\" | \"system\";\r\n\r\ninterface ThemeContextValue {\r\n /** The current theme setting ('light', 'dark', or 'system') */\r\n theme: Theme;\r\n /** The resolved theme after evaluating system preference */\r\n resolvedTheme: \"light\" | \"dark\";\r\n /** Set a specific theme */\r\n setTheme: (theme: Theme) => void;\r\n /** Toggle between light and dark */\r\n toggleTheme: () => void;\r\n}\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\r\n\r\nexport interface ThemeProviderProps {\r\n children: React.ReactNode;\r\n /** Default theme if nothing is stored. Defaults to 'system'. */\r\n defaultTheme?: Theme;\r\n /** localStorage key for persistence. Defaults to 'rizhel-theme'. */\r\n storageKey?: string;\r\n /** Force a specific theme, ignoring stored/default value. */\r\n forcedTheme?: \"light\" | \"dark\";\r\n}\r\n\r\nfunction getSystemTheme(): \"light\" | \"dark\" {\r\n if (typeof window === \"undefined\") return \"dark\";\r\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\r\n ? \"dark\"\r\n : \"light\";\r\n}\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"system\",\r\n storageKey = \"rizhel-theme\",\r\n forcedTheme,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<Theme>(() => {\r\n if (forcedTheme) return forcedTheme;\r\n if (typeof window === \"undefined\") return defaultTheme;\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") {\r\n return stored;\r\n }\r\n } catch {\r\n // localStorage not available\r\n }\r\n return defaultTheme;\r\n });\r\n\r\n const resolvedTheme = useMemo<\"light\" | \"dark\">(() => {\r\n if (forcedTheme) return forcedTheme;\r\n if (theme === \"system\") return getSystemTheme();\r\n return theme;\r\n }, [theme, forcedTheme]);\r\n\r\n const setTheme = useCallback(\r\n (newTheme: Theme) => {\r\n if (forcedTheme) return;\r\n setThemeState(newTheme);\r\n try {\r\n localStorage.setItem(storageKey, newTheme);\r\n } catch {\r\n // localStorage not available\r\n }\r\n },\r\n [forcedTheme, storageKey]\r\n );\r\n\r\n const toggleTheme = useCallback(() => {\r\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\r\n }, [resolvedTheme, setTheme]);\r\n\r\n // Apply the .dark class to <html>\r\n useEffect(() => {\r\n const root = document.documentElement;\r\n if (resolvedTheme === \"dark\") {\r\n root.classList.add(\"dark\");\r\n } else {\r\n root.classList.remove(\"dark\");\r\n }\r\n }, [resolvedTheme]);\r\n\r\n // Listen for system preference changes when theme === 'system'\r\n useEffect(() => {\r\n if (theme !== \"system\") return;\r\n const mql = window.matchMedia(\"(prefers-color-scheme: dark)\");\r\n const handler = () => setThemeState(\"system\"); // triggers re-resolve\r\n mql.addEventListener(\"change\", handler);\r\n return () => mql.removeEventListener(\"change\", handler);\r\n }, [theme]);\r\n\r\n const value = useMemo(\r\n () => ({ theme, resolvedTheme, setTheme, toggleTheme }),\r\n [theme, resolvedTheme, setTheme, toggleTheme]\r\n );\r\n\r\n return React.createElement(ThemeContext.Provider, { value }, children);\r\n}\r\n\r\n/**\r\n * Hook to access the current theme and theme controls.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { theme, resolvedTheme, toggleTheme } = useTheme();\r\n * ```\r\n */\r\nexport function useTheme(): ThemeContextValue {\r\n const context = useContext(ThemeContext);\r\n if (!context) {\r\n throw new Error(\"useTheme must be used within a <ThemeProvider>\");\r\n }\r\n return context;\r\n}\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const buttonVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center gap-2\",\r\n \"font-medium whitespace-nowrap select-none\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n \"active:scale-[0.98]\",\r\n \"cursor-pointer\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n primary: [\r\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\r\n \"hover:bg-[var(--color-primary-hover)]\",\r\n \"shadow-[0_1px_2px_0_rgba(0,0,0,0.4),0_0_0_1px_rgba(255,255,255,0.1)_inset]\",\r\n \"hover:shadow-[0_0_20px_-5px_var(--color-primary-500),0_0_0_1px_rgba(255,255,255,0.1)_inset]\",\r\n \"transition-all duration-300\",\r\n ],\r\n secondary: [\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-slate-700)] shadow-sm\",\r\n \"hover:bg-[var(--color-slate-800)] hover:border-[var(--color-slate-600)]\",\r\n ],\r\n ghost: [\r\n \"text-[var(--color-text-secondary)]\",\r\n \"hover:bg-[var(--color-slate-800)/50] hover:text-[var(--color-text-primary)]\",\r\n ],\r\n danger: [\r\n \"bg-[var(--color-danger)] text-white shadow-sm\",\r\n \"hover:brightness-110 hover:shadow-[0_0_15px_-3px_var(--color-danger)]\",\r\n ],\r\n },\r\n size: {\r\n sm: \"h-8 px-3 text-[var(--text-xs)] rounded-[var(--radius-sm)]\",\r\n md: \"h-10 px-4 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n lg: \"h-12 px-6 text-[var(--text-base)] rounded-[var(--radius-md)]\",\r\n icon: \"h-10 w-10 rounded-[var(--radius)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"primary\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, type ButtonHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { buttonVariants } from \"./button.styles\";\r\n\r\nexport interface ButtonProps\r\n extends ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n /** Show a loading spinner and disable the button */\r\n loading?: boolean;\r\n}\r\n\r\nconst Spinner = () => (\r\n <svg\r\n className=\"animate-spin h-4 w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <circle\r\n className=\"opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, loading, disabled, children, ...props }, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n className={cn(buttonVariants({ variant, size }), className)}\r\n disabled={disabled || loading}\r\n {...props}\r\n >\r\n {loading && <Spinner />}\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const inputVariants = cva(\r\n [\r\n \"w-full bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-slate-700)] shadow-sm\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)] focus:shadow-[0_0_0_1px_var(--color-primary),0_0_15px_-3px_var(--color-primary-500)]\",\r\n \"hover:border-[var(--color-slate-600)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)]\",\r\n ],\r\n {\r\n variants: {\r\n inputSize: {\r\n sm: \"h-8 px-3 text-[var(--text-xs)] rounded-[var(--radius-sm)]\",\r\n md: \"h-10 px-3 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n lg: \"h-12 px-4 text-[var(--text-base)] rounded-[var(--radius-md)]\",\r\n },\r\n state: {\r\n default: \"\",\r\n error: \"border-[var(--color-danger)] focus:ring-[var(--color-danger)] focus:shadow-[0_0_0_1px_var(--color-danger),0_0_15px_-3px_var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n inputSize: \"md\",\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport const labelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const helperStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n\r\nexport const errorStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n","import React, { forwardRef, type InputHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { inputVariants, labelStyles, helperStyles, errorStyles } from \"./input.styles\";\r\n\r\nexport interface InputProps\r\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\r\n VariantProps<typeof inputVariants> {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Helper text displayed below the input */\r\n helperText?: string;\r\n /** Error message — also sets error styling */\r\n error?: string;\r\n /** Content rendered at the start of the input */\r\n startIcon?: React.ReactNode;\r\n /** Content rendered at the end of the input */\r\n endIcon?: React.ReactNode;\r\n /** Callback to clear the input value — shows a clear (×) button when provided and input has value */\r\n onClear?: () => void;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n className,\r\n inputSize,\r\n state,\r\n label,\r\n helperText,\r\n error,\r\n startIcon,\r\n endIcon,\r\n onClear,\r\n id,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const inputId = id || (label ? label.toLowerCase().replace(/\\s+/g, \"-\") : undefined);\r\n const effectiveState = error ? \"error\" : state;\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label htmlFor={inputId} className={labelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {startIcon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-[var(--color-text-muted)]\">\r\n {startIcon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n className={cn(\r\n inputVariants({ inputSize, state: effectiveState }),\r\n startIcon && \"pl-9\",\r\n (endIcon || onClear) && \"pr-9\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n {onClear && props.value ? (\r\n <button\r\n type=\"button\"\r\n tabIndex={-1}\r\n onClick={onClear}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors cursor-pointer p-0.5 rounded-[var(--radius-sm)]\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n ) : endIcon ? (\r\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--color-text-muted)]\">\r\n {endIcon}\r\n </div>\r\n ) : null}\r\n </div>\r\n {error && <p className={errorStyles}>{error}</p>}\r\n {!error && helperText && <p className={helperStyles}>{helperText}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const textareaVariants = cva(\r\n [\r\n \"w-full bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)]\",\r\n \"resize-y min-h-[80px]\",\r\n ],\r\n {\r\n variants: {\r\n inputSize: {\r\n sm: \"px-3 py-2 text-[var(--text-xs)] rounded-[var(--radius-sm)]\",\r\n md: \"px-3 py-2.5 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n lg: \"px-4 py-3 text-[var(--text-base)] rounded-[var(--radius-md)]\",\r\n },\r\n state: {\r\n default: \"\",\r\n error: \"border-[var(--color-danger)] focus:ring-[var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n inputSize: \"md\",\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport const labelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const helperStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n\r\nexport const errorStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n\r\nexport const counterStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)] text-right\";\r\n","import React, { forwardRef, useEffect, useRef, type TextareaHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { textareaVariants, labelStyles, helperStyles, errorStyles, counterStyles } from \"./textarea.styles\";\r\n\r\nexport interface TextareaProps\r\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">,\r\n VariantProps<typeof textareaVariants> {\r\n label?: string;\r\n helperText?: string;\r\n error?: string;\r\n autoResize?: boolean;\r\n showCount?: boolean;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n (\r\n {\r\n className,\r\n inputSize,\r\n state,\r\n label,\r\n helperText,\r\n error,\r\n autoResize,\r\n showCount,\r\n maxLength,\r\n id,\r\n value,\r\n defaultValue,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const inputId = id || (label ? label.toLowerCase().replace(/\\s+/g, \"-\") : undefined);\r\n const effectiveState = error ? \"error\" : state;\r\n const internalRef = useRef<HTMLTextAreaElement>(null);\r\n const textareaRef = (ref as React.RefObject<HTMLTextAreaElement>) || internalRef;\r\n\r\n useEffect(() => {\r\n if (autoResize && textareaRef.current) {\r\n const el = textareaRef.current;\r\n el.style.height = \"auto\";\r\n el.style.height = el.scrollHeight + \"px\";\r\n }\r\n }, [autoResize, value, defaultValue, textareaRef]);\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (autoResize) {\r\n e.target.style.height = \"auto\";\r\n e.target.style.height = e.target.scrollHeight + \"px\";\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const currentLength = typeof value === \"string\" ? value.length : 0;\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label htmlFor={inputId} className={labelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n <textarea\r\n ref={textareaRef}\r\n id={inputId}\r\n className={cn(\r\n textareaVariants({ inputSize, state: effectiveState }),\r\n autoResize && \"resize-none overflow-hidden\",\r\n className\r\n )}\r\n value={value}\r\n defaultValue={defaultValue}\r\n maxLength={maxLength}\r\n onChange={handleChange}\r\n rows={props.rows || 3}\r\n {...props}\r\n />\r\n <div className=\"flex justify-between\">\r\n <div>\r\n {error && <p className={errorStyles}>{error}</p>}\r\n {!error && helperText && <p className={helperStyles}>{helperText}</p>}\r\n </div>\r\n {showCount && maxLength && (\r\n <p className={counterStyles}>\r\n {currentLength}/{maxLength}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n","export const selectTriggerStyles = [\r\n \"flex items-center justify-between w-full\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)] cursor-pointer\",\r\n].join(\" \");\r\n\r\nexport const selectTriggerSizes: Record<string, string> = {\r\n sm: \"h-8 px-3 text-[var(--text-xs)] rounded-[var(--radius-sm)] gap-2\",\r\n md: \"h-10 px-3 text-[var(--text-sm)] rounded-[var(--radius)] gap-2\",\r\n lg: \"h-12 px-4 text-[var(--text-base)] rounded-[var(--radius-md)] gap-3\",\r\n};\r\n\r\nexport const selectContentStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-[var(--radix-popover-trigger-width)] overflow-hidden\",\r\n \"rounded-[var(--radius-md)]\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"animate-in fade-in-0 zoom-in-[0.98]\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.98]\",\r\n].join(\" \");\r\n\r\nexport const selectSearchStyles = [\r\n \"w-full bg-transparent text-[var(--color-text-primary)]\",\r\n \"text-[var(--text-sm)] px-3 py-2.5\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"focus:outline-none\",\r\n \"font-[var(--font-sans)]\",\r\n].join(\" \");\r\n\r\nexport const selectItemStyles = [\r\n \"relative flex items-center gap-2 w-full\",\r\n \"px-3 py-2 cursor-pointer select-none\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius-sm)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"outline-none\",\r\n].join(\" \");\r\n\r\nexport const selectItemActiveStyles =\r\n \"bg-[var(--color-surface-hover)] text-[var(--color-text-primary)]\";\r\n\r\nexport const selectItemSelectedStyles =\r\n \"text-[var(--color-primary-400)] font-medium\";\r\n\r\nexport const selectGroupLabelStyles = [\r\n \"px-3 py-1.5\",\r\n \"text-[var(--text-xs)] font-semibold uppercase tracking-wider\",\r\n \"text-[var(--color-text-muted)]\",\r\n].join(\" \");\r\n\r\nexport const selectPlaceholderStyles =\r\n \"text-[var(--color-text-muted)]\";\r\n\r\nexport const selectClearStyles = [\r\n \"shrink-0 p-0.5 rounded-[var(--radius-sm)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n].join(\" \");\r\n\r\nexport const selectLabelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const selectHelperStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n\r\nexport const selectErrorStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n\r\nexport const selectErrorTriggerStyles =\r\n \"border-[var(--color-danger)] focus:ring-[var(--color-danger)]\";\r\n","import React, {\r\n forwardRef,\r\n useState,\r\n useRef,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n type KeyboardEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n selectTriggerStyles,\r\n selectTriggerSizes,\r\n selectContentStyles,\r\n selectSearchStyles,\r\n selectItemStyles,\r\n selectItemActiveStyles,\r\n selectItemSelectedStyles,\r\n selectGroupLabelStyles,\r\n selectPlaceholderStyles,\r\n selectClearStyles,\r\n selectLabelStyles,\r\n selectHelperStyles,\r\n selectErrorStyles,\r\n selectErrorTriggerStyles,\r\n} from \"./select.styles\";\r\n\r\nexport interface SelectOption {\r\n value: string;\r\n label: string;\r\n disabled?: boolean;\r\n /** Optional icon or element to render before the label */\r\n icon?: ReactNode;\r\n /** Optional description text below the label */\r\n description?: string;\r\n}\r\n\r\nexport interface SelectGroup {\r\n label: string;\r\n options: SelectOption[];\r\n}\r\n\r\nexport interface SelectProps {\r\n /** Flat list of options */\r\n options?: SelectOption[];\r\n /** Grouped options — takes priority over `options` */\r\n groups?: SelectGroup[];\r\n /** Currently selected value */\r\n value?: string;\r\n /** Callback when value changes */\r\n onChange?: (value: string) => void;\r\n /** Placeholder text shown when nothing is selected */\r\n placeholder?: string;\r\n /** Label above the select */\r\n label?: string;\r\n /** Helper text below the select */\r\n helperText?: string;\r\n /** Error message — activates error styling */\r\n error?: string;\r\n /** No search results text */\r\n emptyMessage?: string;\r\n /** Enable search filtering */\r\n searchable?: boolean;\r\n /** Search input placeholder */\r\n searchPlaceholder?: string;\r\n /** Allow clearing the selected value */\r\n clearable?: boolean;\r\n /** Component size */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n /** Disable the select */\r\n disabled?: boolean;\r\n /** Additional class name */\r\n className?: string;\r\n /** Custom option renderer */\r\n renderOption?: (option: SelectOption, isSelected: boolean) => ReactNode;\r\n}\r\n\r\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\r\n (\r\n {\r\n options = [],\r\n groups,\r\n value,\r\n onChange,\r\n placeholder = \"Select an option...\",\r\n label,\r\n helperText,\r\n error,\r\n emptyMessage = \"No results found.\",\r\n searchable = false,\r\n searchPlaceholder = \"Search...\",\r\n clearable = false,\r\n size = \"md\",\r\n disabled,\r\n className,\r\n renderOption,\r\n },\r\n ref\r\n ) => {\r\n const [open, setOpen] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const searchRef = useRef<HTMLInputElement>(null);\r\n const listRef = useRef<HTMLDivElement>(null);\r\n\r\n // Build flat list from groups or options\r\n const allOptions = useMemo(() => {\r\n if (groups) {\r\n return groups.flatMap((g) => g.options);\r\n }\r\n return options;\r\n }, [groups, options]);\r\n\r\n // Filter options\r\n const filterOptions = useCallback(\r\n (opts: SelectOption[]) =>\r\n search\r\n ? opts.filter((o) =>\r\n o.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n : opts,\r\n [search]\r\n );\r\n\r\n const filteredAll = useMemo(() => filterOptions(allOptions), [filterOptions, allOptions]);\r\n\r\n const filteredGroups = useMemo(() => {\r\n if (!groups) return null;\r\n return groups\r\n .map((g) => ({\r\n ...g,\r\n options: filterOptions(g.options),\r\n }))\r\n .filter((g) => g.options.length > 0);\r\n }, [groups, filterOptions]);\r\n\r\n const selectedOption = allOptions.find((o) => o.value === value);\r\n\r\n const handleSelect = useCallback(\r\n (optValue: string) => {\r\n onChange?.(optValue);\r\n setOpen(false);\r\n setSearch(\"\");\r\n },\r\n [onChange]\r\n );\r\n\r\n const handleClear = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onChange?.(\"\");\r\n setSearch(\"\");\r\n },\r\n [onChange]\r\n );\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement | HTMLButtonElement>) => {\r\n const items = filteredAll.filter((o) => !o.disabled);\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n if (!open) {\r\n setOpen(true);\r\n return;\r\n }\r\n setActiveIndex((i) => Math.min(i + 1, items.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.max(i - 1, 0));\r\n } else if (e.key === \"Enter\" && activeIndex >= 0) {\r\n e.preventDefault();\r\n const opt = items[activeIndex];\r\n if (opt) handleSelect(opt.value);\r\n } else if (e.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setActiveIndex(-1);\r\n }, [search]);\r\n\r\n // Focus search input when dropdown opens\r\n useEffect(() => {\r\n if (open && searchable) {\r\n // Small delay to let the popover render\r\n const timer = setTimeout(() => searchRef.current?.focus(), 50);\r\n return () => clearTimeout(timer);\r\n }\r\n }, [open, searchable]);\r\n\r\n const renderItem = (opt: SelectOption, flatIndex: number) => {\r\n const isSelected = opt.value === value;\r\n\r\n return (\r\n <div\r\n key={opt.value}\r\n role=\"option\"\r\n aria-selected={isSelected}\r\n aria-disabled={opt.disabled}\r\n className={cn(\r\n selectItemStyles,\r\n flatIndex === activeIndex && selectItemActiveStyles,\r\n isSelected && selectItemSelectedStyles,\r\n opt.disabled && \"opacity-50 pointer-events-none\"\r\n )}\r\n onClick={() => !opt.disabled && handleSelect(opt.value)}\r\n onMouseEnter={() => setActiveIndex(flatIndex)}\r\n >\r\n {renderOption ? (\r\n renderOption(opt, isSelected)\r\n ) : (\r\n <>\r\n {opt.icon && (\r\n <span className=\"shrink-0 w-5 h-5 flex items-center justify-center\">\r\n {opt.icon}\r\n </span>\r\n )}\r\n <div className=\"flex-1 min-w-0\">\r\n <span className=\"block truncate\">{opt.label}</span>\r\n {opt.description && (\r\n <span className=\"block text-[var(--text-xs)] text-[var(--color-text-muted)] truncate\">\r\n {opt.description}\r\n </span>\r\n )}\r\n </div>\r\n {isSelected && (\r\n <svg\r\n className=\"ml-auto shrink-0 text-[var(--color-primary)]\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n // Build flat index counter for keyboard nav across groups\r\n let flatIndex = 0;\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {label && <label className={selectLabelStyles}>{label}</label>}\r\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\r\n <PopoverPrimitive.Trigger asChild>\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n onKeyDown={!searchable ? handleKeyDown : undefined}\r\n className={cn(\r\n selectTriggerStyles,\r\n selectTriggerSizes[size],\r\n error && selectErrorTriggerStyles\r\n )}\r\n >\r\n {selectedOption ? (\r\n <span className=\"flex items-center gap-2 min-w-0 truncate\">\r\n {selectedOption.icon && (\r\n <span className=\"shrink-0 w-5 h-5 flex items-center justify-center\">\r\n {selectedOption.icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{selectedOption.label}</span>\r\n </span>\r\n ) : (\r\n <span className={selectPlaceholderStyles}>{placeholder}</span>\r\n )}\r\n <div className=\"flex items-center gap-1 shrink-0\">\r\n {clearable && value && (\r\n <span\r\n role=\"button\"\r\n tabIndex={-1}\r\n onClick={handleClear}\r\n className={selectClearStyles}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </span>\r\n )}\r\n <svg\r\n className={cn(\r\n \"shrink-0 text-[var(--color-text-muted)] transition-transform duration-200\",\r\n open && \"rotate-180\"\r\n )}\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </div>\r\n </button>\r\n </PopoverPrimitive.Trigger>\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={listRef}\r\n sideOffset={4}\r\n className={selectContentStyles}\r\n onOpenAutoFocus={(e) => e.preventDefault()}\r\n >\r\n {searchable && (\r\n <input\r\n ref={searchRef}\r\n type=\"text\"\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n className={selectSearchStyles}\r\n />\r\n )}\r\n <div className=\"p-1 max-h-60 overflow-auto\" role=\"listbox\">\r\n {filteredGroups ? (\r\n filteredGroups.length === 0 ? (\r\n <div className=\"py-6 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\">\r\n {emptyMessage}\r\n </div>\r\n ) : (\r\n filteredGroups.map((group) => (\r\n <div key={group.label}>\r\n <div className={selectGroupLabelStyles}>\r\n {group.label}\r\n </div>\r\n {group.options.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })}\r\n </div>\r\n ))\r\n )\r\n ) : filteredAll.length === 0 ? (\r\n <div className=\"py-6 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\">\r\n {emptyMessage}\r\n </div>\r\n ) : (\r\n filteredAll.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })\r\n )}\r\n </div>\r\n </PopoverPrimitive.Content>\r\n </PopoverPrimitive.Portal>\r\n </PopoverPrimitive.Root>\r\n {error && <p className={selectErrorStyles}>{error}</p>}\r\n {!error && helperText && <p className={selectHelperStyles}>{helperText}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSelect.displayName = \"Select\";\r\n","export const comboboxInputStyles = [\r\n \"w-full bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"font-[var(--font-sans)]\",\r\n \"h-10 px-3 text-[var(--text-sm)] rounded-[var(--radius)]\",\r\n].join(\" \");\r\n\r\nexport const comboboxListStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-[var(--radix-popover-trigger-width)] max-h-60 overflow-auto\",\r\n \"rounded-[var(--radius-md)] p-1\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n].join(\" \");\r\n\r\nexport const comboboxItemStyles = [\r\n \"flex items-center gap-2 w-full px-2.5 py-2\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius-sm)] cursor-pointer\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"outline-none\",\r\n].join(\" \");\r\n\r\nexport const comboboxItemActiveStyles =\r\n \"bg-[var(--color-surface-hover)] text-[var(--color-text-primary)]\";\r\n\r\nexport const comboboxItemSelectedStyles =\r\n \"text-[var(--color-primary-400)]\";\r\n\r\nexport const comboboxEmptyStyles =\r\n \"py-6 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\";\r\n\r\nexport const comboboxLabelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nexport const comboboxChipStyles = [\r\n \"inline-flex items-center gap-1 px-2 py-0.5\",\r\n \"text-[var(--text-xs)] font-medium\",\r\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\",\r\n \"border border-[var(--color-border)] rounded-full\",\r\n \"cursor-pointer hover:border-[var(--color-border-hover)]\",\r\n].join(\" \");\r\n","import React, {\r\n forwardRef,\r\n useState,\r\n useRef,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n type KeyboardEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n comboboxInputStyles,\r\n comboboxListStyles,\r\n comboboxItemStyles,\r\n comboboxItemActiveStyles,\r\n comboboxItemSelectedStyles,\r\n comboboxEmptyStyles,\r\n comboboxLabelStyles,\r\n comboboxChipStyles,\r\n} from \"./combobox.styles\";\r\n\r\nexport interface ComboboxOption {\r\n value: string;\r\n label: string;\r\n disabled?: boolean;\r\n /** Optional icon or element before label */\r\n icon?: ReactNode;\r\n}\r\n\r\nexport interface ComboboxGroup {\r\n label: string;\r\n options: ComboboxOption[];\r\n}\r\n\r\nexport interface ComboboxProps {\r\n /** Flat list of options */\r\n options?: ComboboxOption[];\r\n /** Grouped options — takes priority over `options` */\r\n groups?: ComboboxGroup[];\r\n /** Current value (string for single, string[] for multi) */\r\n value?: string | string[];\r\n /** Callback when value changes */\r\n onChange?: (value: string | string[]) => void;\r\n /** Input placeholder */\r\n placeholder?: string;\r\n /** Label text */\r\n label?: string;\r\n /** No results message */\r\n emptyMessage?: string;\r\n /** Allow multiple selections */\r\n multiple?: boolean;\r\n /** Allow creating new options on Enter */\r\n creatable?: boolean;\r\n /** Text for the create option (receives the search term) */\r\n createLabel?: (search: string) => string;\r\n /** Show loading spinner */\r\n loading?: boolean;\r\n /** Disable the combobox */\r\n disabled?: boolean;\r\n /** Additional class name */\r\n className?: string;\r\n}\r\n\r\nexport const Combobox = forwardRef<HTMLInputElement, ComboboxProps>(\r\n (\r\n {\r\n options = [],\r\n groups,\r\n value,\r\n onChange,\r\n placeholder = \"Search...\",\r\n label,\r\n emptyMessage = \"No results found.\",\r\n multiple = false,\r\n creatable = false,\r\n createLabel = (s) => `Create \"${s}\"`,\r\n loading = false,\r\n disabled,\r\n className,\r\n },\r\n ref\r\n ) => {\r\n const [open, setOpen] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const listRef = useRef<HTMLDivElement>(null);\r\n\r\n const allOptions = useMemo(() => {\r\n if (groups) return groups.flatMap((g) => g.options);\r\n return options;\r\n }, [groups, options]);\r\n\r\n const selectedValues = multiple\r\n ? (Array.isArray(value) ? value : [])\r\n : (typeof value === \"string\" ? [value] : []);\r\n\r\n const filterOptions = useCallback(\r\n (opts: ComboboxOption[]) =>\r\n search\r\n ? opts.filter((o) =>\r\n o.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n : opts,\r\n [search]\r\n );\r\n\r\n const filtered = useMemo(() => filterOptions(allOptions), [filterOptions, allOptions]);\r\n\r\n const filteredGroups = useMemo(() => {\r\n if (!groups) return null;\r\n return groups\r\n .map((g) => ({ ...g, options: filterOptions(g.options) }))\r\n .filter((g) => g.options.length > 0);\r\n }, [groups, filterOptions]);\r\n\r\n // Check if we should show the \"create\" option\r\n const showCreate = creatable && search.trim().length > 0 &&\r\n !allOptions.some((o) => o.label.toLowerCase() === search.toLowerCase());\r\n\r\n const totalItems = filtered.filter((o) => !o.disabled).length + (showCreate ? 1 : 0);\r\n\r\n const handleSelect = useCallback(\r\n (optValue: string) => {\r\n if (multiple) {\r\n const current = Array.isArray(value) ? value : [];\r\n const next = current.includes(optValue)\r\n ? current.filter((v) => v !== optValue)\r\n : [...current, optValue];\r\n onChange?.(next);\r\n } else {\r\n onChange?.(optValue);\r\n setSearch(allOptions.find((o) => o.value === optValue)?.label || optValue);\r\n setOpen(false);\r\n }\r\n },\r\n [multiple, value, onChange, allOptions]\r\n );\r\n\r\n const handleCreate = useCallback(() => {\r\n const newValue = search.trim();\r\n if (!newValue) return;\r\n handleSelect(newValue);\r\n if (!multiple) setSearch(newValue);\r\n }, [search, handleSelect, multiple]);\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.min(i + 1, totalItems - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.max(i - 1, 0));\r\n } else if (e.key === \"Enter\" && activeIndex >= 0) {\r\n e.preventDefault();\r\n const enabledItems = filtered.filter((o) => !o.disabled);\r\n if (activeIndex < enabledItems.length) {\r\n const opt = enabledItems[activeIndex];\r\n if (opt) handleSelect(opt.value);\r\n } else if (showCreate) {\r\n handleCreate();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setActiveIndex(-1);\r\n }, [search]);\r\n\r\n // Sync display value for single mode\r\n const displayValue = multiple\r\n ? search\r\n : search || (typeof value === \"string\" ? allOptions.find((o) => o.value === value)?.label || \"\" : \"\");\r\n\r\n let flatIndex = 0;\r\n\r\n const renderItem = (opt: ComboboxOption, idx: number) => (\r\n <div\r\n key={opt.value}\r\n role=\"option\"\r\n aria-selected={selectedValues.includes(opt.value)}\r\n aria-disabled={opt.disabled}\r\n className={cn(\r\n comboboxItemStyles,\r\n idx === activeIndex && comboboxItemActiveStyles,\r\n selectedValues.includes(opt.value) && comboboxItemSelectedStyles,\r\n opt.disabled && \"opacity-50 pointer-events-none\"\r\n )}\r\n onClick={() => !opt.disabled && handleSelect(opt.value)}\r\n onMouseEnter={() => setActiveIndex(idx)}\r\n >\r\n {multiple && (\r\n <div className={cn(\r\n \"h-4 w-4 rounded-[3px] border border-[var(--color-border)] flex items-center justify-center shrink-0\",\r\n selectedValues.includes(opt.value) && \"bg-[var(--color-primary)] border-[var(--color-primary)]\"\r\n )}>\r\n {selectedValues.includes(opt.value) && (\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\r\n <path d=\"M2 5L4 7L8 3\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n )}\r\n </div>\r\n )}\r\n {opt.icon && (\r\n <span className=\"shrink-0 w-5 h-5 flex items-center justify-center\">\r\n {opt.icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{opt.label}</span>\r\n {!multiple && selectedValues.includes(opt.value) && (\r\n <svg className=\"ml-auto shrink-0\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {label && <label className={comboboxLabelStyles}>{label}</label>}\r\n {multiple && selectedValues.length > 0 && (\r\n <div className=\"flex flex-wrap gap-1.5 mb-2\">\r\n {selectedValues.map((v) => {\r\n const opt = allOptions.find((o) => o.value === v);\r\n return (\r\n <span\r\n key={v}\r\n className={comboboxChipStyles}\r\n onClick={() => handleSelect(v)}\r\n >\r\n {opt?.label || v}\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </span>\r\n );\r\n })}\r\n </div>\r\n )}\r\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\r\n <PopoverPrimitive.Trigger asChild>\r\n <input\r\n ref={ref}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n placeholder={placeholder}\r\n value={displayValue}\r\n onChange={(e) => {\r\n setSearch(e.target.value);\r\n if (!open) setOpen(true);\r\n }}\r\n onFocus={() => setOpen(true)}\r\n onKeyDown={handleKeyDown}\r\n className={comboboxInputStyles}\r\n />\r\n </PopoverPrimitive.Trigger>\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={listRef}\r\n sideOffset={4}\r\n className={comboboxListStyles}\r\n onOpenAutoFocus={(e) => e.preventDefault()}\r\n >\r\n {loading ? (\r\n <div className=\"py-6 flex items-center justify-center gap-2 text-[var(--text-sm)] text-[var(--color-text-muted)]\">\r\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\r\n </svg>\r\n Loading...\r\n </div>\r\n ) : (\r\n <>\r\n {filteredGroups ? (\r\n filteredGroups.length === 0 && !showCreate ? (\r\n <div className={comboboxEmptyStyles}>{emptyMessage}</div>\r\n ) : (\r\n filteredGroups.map((group) => (\r\n <div key={group.label}>\r\n <div className=\"px-2.5 py-1.5 text-[var(--text-xs)] font-semibold uppercase tracking-wider text-[var(--color-text-muted)]\">\r\n {group.label}\r\n </div>\r\n {group.options.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })}\r\n </div>\r\n ))\r\n )\r\n ) : filtered.length === 0 && !showCreate ? (\r\n <div className={comboboxEmptyStyles}>{emptyMessage}</div>\r\n ) : (\r\n filtered.map((opt) => {\r\n const item = renderItem(opt, flatIndex);\r\n flatIndex++;\r\n return item;\r\n })\r\n )}\r\n {showCreate && (\r\n <div\r\n className={cn(\r\n comboboxItemStyles,\r\n flatIndex === activeIndex && comboboxItemActiveStyles,\r\n \"text-[var(--color-primary)] font-medium\"\r\n )}\r\n onClick={handleCreate}\r\n onMouseEnter={() => setActiveIndex(flatIndex)}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" /><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\r\n </svg>\r\n {createLabel(search.trim())}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </PopoverPrimitive.Content>\r\n </PopoverPrimitive.Portal>\r\n </PopoverPrimitive.Root>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCombobox.displayName = \"Combobox\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const checkboxVariants = cva(\r\n [\r\n \"relative shrink-0 appearance-none cursor-pointer\",\r\n \"border border-[var(--color-border)]\",\r\n \"bg-[var(--color-surface)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"checked:bg-[var(--color-primary)] checked:border-[var(--color-primary)]\",\r\n \"checked:hover:bg-[var(--color-primary-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-4 w-4 rounded-[3px]\",\r\n md: \"h-[18px] w-[18px] rounded-[var(--radius-sm)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport const checkboxWrapperStyles = \"flex items-start gap-2.5\";\r\n\r\nexport const checkboxLabelStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-primary)] cursor-pointer select-none leading-tight\";\r\n\r\nexport const checkboxDescriptionStyles =\r\n \"text-[var(--text-xs)] text-[var(--color-text-muted)] mt-0.5\";\r\n\r\nexport const checkmarkStyles =\r\n \"absolute inset-0 flex items-center justify-center pointer-events-none text-[var(--color-primary-foreground)]\";\r\n","import React, { forwardRef, useEffect, useRef, type InputHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n checkboxVariants,\r\n checkboxWrapperStyles,\r\n checkboxLabelStyles,\r\n checkboxDescriptionStyles,\r\n checkmarkStyles,\r\n} from \"./checkbox.styles\";\r\n\r\nexport interface CheckboxProps\r\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\">,\r\n VariantProps<typeof checkboxVariants> {\r\n label?: string;\r\n description?: string;\r\n indeterminate?: boolean;\r\n}\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\r\n ({ className, size, label, description, indeterminate, id, ...props }, ref) => {\r\n const inputId = id || (label ? `cb-${label.toLowerCase().replace(/\\s+/g, \"-\")}` : undefined);\r\n const internalRef = useRef<HTMLInputElement>(null);\r\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || internalRef;\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.indeterminate = !!indeterminate;\r\n }\r\n }, [indeterminate, inputRef]);\r\n\r\n return (\r\n <div className={checkboxWrapperStyles}>\r\n <div className=\"relative flex items-center justify-center mt-0.5\">\r\n <input\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"checkbox\"\r\n className={cn(checkboxVariants({ size }), className)}\r\n {...props}\r\n />\r\n <div className={checkmarkStyles}>\r\n {indeterminate ? (\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\r\n <rect x=\"1\" y=\"4\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" className=\"opacity-0 [input:checked~div>&]:opacity-100 transition-opacity\">\r\n <path d=\"M2 5L4 7L8 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n )}\r\n </div>\r\n </div>\r\n {(label || description) && (\r\n <div>\r\n {label && (\r\n <label htmlFor={inputId} className={checkboxLabelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n {description && <p className={checkboxDescriptionStyles}>{description}</p>}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCheckbox.displayName = \"Checkbox\";\r\n","export const radioGroupStyles = \"flex flex-col gap-2.5\";\r\nexport const radioGroupHorizontalStyles = \"flex-row gap-4\";\r\n\r\nexport const radioWrapperStyles = \"flex items-start gap-2.5\";\r\n\r\nexport const radioInputStyles = [\r\n \"relative shrink-0 appearance-none cursor-pointer\",\r\n \"h-[18px] w-[18px] rounded-full\",\r\n \"border border-[var(--color-border)]\",\r\n \"bg-[var(--color-surface)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"checked:border-[var(--color-primary)] checked:bg-[var(--color-primary)]\",\r\n \"checked:hover:bg-[var(--color-primary-hover)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n].join(\" \");\r\n\r\nexport const radioDotStyles =\r\n \"absolute inset-0 flex items-center justify-center pointer-events-none\";\r\n\r\nexport const radioLabelStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-primary)] cursor-pointer select-none leading-tight\";\r\n\r\nexport const radioDescriptionStyles =\r\n \"text-[var(--text-xs)] text-[var(--color-text-muted)] mt-0.5\";\r\n","import React, { forwardRef, createContext, useContext, type InputHTMLAttributes, type HTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n radioGroupStyles,\r\n radioGroupHorizontalStyles,\r\n radioWrapperStyles,\r\n radioInputStyles,\r\n radioDotStyles,\r\n radioLabelStyles,\r\n radioDescriptionStyles,\r\n} from \"./radio.styles\";\r\n\r\n/* ── Context ── */\r\ninterface RadioGroupContextValue {\r\n name?: string;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextValue>({});\r\n\r\n/* ── RadioGroup ── */\r\nexport interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\r\n name?: string;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n orientation?: \"vertical\" | \"horizontal\";\r\n disabled?: boolean;\r\n}\r\n\r\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\r\n ({ className, name, value, onChange, orientation = \"vertical\", disabled, children, ...props }, ref) => (\r\n <RadioGroupContext.Provider value={{ name, value, onChange, disabled }}>\r\n <div\r\n ref={ref}\r\n role=\"radiogroup\"\r\n className={cn(\r\n radioGroupStyles,\r\n orientation === \"horizontal\" && radioGroupHorizontalStyles,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </RadioGroupContext.Provider>\r\n )\r\n);\r\nRadioGroup.displayName = \"RadioGroup\";\r\n\r\n/* ── Radio ── */\r\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> {\r\n label?: string;\r\n description?: string;\r\n}\r\n\r\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\r\n ({ className, label, description, value, id, disabled: itemDisabled, ...props }, ref) => {\r\n const ctx = useContext(RadioGroupContext);\r\n const inputId = id || (label ? `radio-${label.toLowerCase().replace(/\\s+/g, \"-\")}` : undefined);\r\n const isDisabled = itemDisabled || ctx.disabled;\r\n\r\n return (\r\n <div className={radioWrapperStyles}>\r\n <div className=\"relative flex items-center justify-center mt-0.5\">\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type=\"radio\"\r\n name={ctx.name}\r\n value={value}\r\n checked={ctx.value !== undefined ? ctx.value === value : undefined}\r\n onChange={() => ctx.onChange?.(value as string)}\r\n disabled={isDisabled}\r\n className={cn(radioInputStyles, className)}\r\n {...props}\r\n />\r\n <div className={radioDotStyles}>\r\n <div className=\"h-2 w-2 rounded-full bg-white scale-0 transition-transform duration-150 [input:checked~div>&]:scale-100\" />\r\n </div>\r\n </div>\r\n {(label || description) && (\r\n <div>\r\n {label && (\r\n <label htmlFor={inputId} className={radioLabelStyles}>\r\n {label}\r\n </label>\r\n )}\r\n {description && <p className={radioDescriptionStyles}>{description}</p>}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nRadio.displayName = \"Radio\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const switchTrackVariants = cva(\r\n [\r\n \"relative inline-flex shrink-0 cursor-pointer\",\r\n \"rounded-full border-2 border-transparent\",\r\n \"transition-colors duration-[var(--transition-base)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-5 w-9\",\r\n md: \"h-6 w-11\",\r\n },\r\n checked: {\r\n true: \"bg-[var(--color-primary)]\",\r\n false: \"bg-[var(--color-surface-raised)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n checked: false,\r\n },\r\n }\r\n);\r\n\r\nexport const switchThumbVariants = cva(\r\n [\r\n \"pointer-events-none inline-block rounded-full bg-white\",\r\n \"shadow-sm transition-transform duration-[var(--transition-base)]\",\r\n \"ring-0\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-4 w-4\",\r\n md: \"h-5 w-5\",\r\n },\r\n checked: {\r\n true: \"\",\r\n false: \"translate-x-0\",\r\n },\r\n },\r\n compoundVariants: [\r\n { size: \"sm\", checked: true, className: \"translate-x-4\" },\r\n { size: \"md\", checked: true, className: \"translate-x-5\" },\r\n ],\r\n defaultVariants: {\r\n size: \"md\",\r\n checked: false,\r\n },\r\n }\r\n);\r\n\r\nexport const switchWrapperStyles = \"flex items-center gap-3\";\r\n\r\nexport const switchLabelStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-primary)] cursor-pointer select-none\";\r\n\r\nexport const switchDescriptionStyles =\r\n \"text-[var(--text-xs)] text-[var(--color-text-muted)]\";\r\n","import React, { forwardRef, type ButtonHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n switchTrackVariants,\r\n switchThumbVariants,\r\n switchWrapperStyles,\r\n switchLabelStyles,\r\n switchDescriptionStyles,\r\n} from \"./switch.styles\";\r\n\r\nexport interface SwitchProps\r\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n label?: string;\r\n description?: string;\r\n size?: \"sm\" | \"md\";\r\n}\r\n\r\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\r\n ({ className, checked = false, onChange, label, description, size = \"md\", disabled, id, ...props }, ref) => {\r\n const inputId = id || (label ? `switch-${label.toLowerCase().replace(/\\s+/g, \"-\")}` : undefined);\r\n\r\n return (\r\n <div className={switchWrapperStyles}>\r\n <button\r\n ref={ref}\r\n id={inputId}\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n switchTrackVariants({ size, checked }),\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className={switchThumbVariants({ size, checked })} />\r\n </button>\r\n {(label || description) && (\r\n <div>\r\n {label && (\r\n <label htmlFor={inputId} className={switchLabelStyles} onClick={() => !disabled && onChange?.(!checked)}>\r\n {label}\r\n </label>\r\n )}\r\n {description && <p className={switchDescriptionStyles}>{description}</p>}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSwitch.displayName = \"Switch\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface SeparatorProps extends HTMLAttributes<HTMLDivElement> {\r\n orientation?: \"horizontal\" | \"vertical\";\r\n decorative?: boolean;\r\n}\r\n\r\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\r\n ({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role={decorative ? \"none\" : \"separator\"}\r\n aria-orientation={!decorative ? orientation : undefined}\r\n className={cn(\r\n \"shrink-0 bg-[var(--color-border)]\",\r\n orientation === \"horizontal\" ? \"h-px w-full\" : \"w-px h-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\n\r\nSeparator.displayName = \"Separator\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const avatarVariants = cva(\r\n [\r\n \"relative inline-flex items-center justify-center shrink-0\",\r\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\",\r\n \"font-medium overflow-hidden\",\r\n \"border border-[var(--color-border)]\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n xs: \"h-6 w-6 text-[10px]\",\r\n sm: \"h-8 w-8 text-[var(--text-xs)]\",\r\n md: \"h-10 w-10 text-[var(--text-sm)]\",\r\n lg: \"h-12 w-12 text-[var(--text-base)]\",\r\n xl: \"h-16 w-16 text-[var(--text-lg)]\",\r\n },\r\n shape: {\r\n circle: \"rounded-full\",\r\n rounded: \"rounded-[var(--radius-md)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n shape: \"circle\",\r\n },\r\n }\r\n);\r\n\r\nexport const avatarImageStyles = \"h-full w-full object-cover\";\r\n\r\nexport const avatarStatusVariants = cva(\r\n [\r\n \"absolute bottom-0 right-0 block rounded-full ring-2 ring-[var(--color-bg)]\",\r\n ],\r\n {\r\n variants: {\r\n status: {\r\n online: \"bg-[var(--color-success)]\",\r\n offline: \"bg-[var(--color-text-muted)]\",\r\n busy: \"bg-[var(--color-danger)]\",\r\n away: \"bg-[var(--color-warning)]\",\r\n },\r\n size: {\r\n xs: \"h-1.5 w-1.5\",\r\n sm: \"h-2 w-2\",\r\n md: \"h-2.5 w-2.5\",\r\n lg: \"h-3 w-3\",\r\n xl: \"h-3.5 w-3.5\",\r\n },\r\n },\r\n defaultVariants: {\r\n status: \"online\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, useState, type ImgHTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { avatarVariants, avatarImageStyles, avatarStatusVariants } from \"./avatar.styles\";\r\n\r\nexport interface AvatarProps\r\n extends Omit<ImgHTMLAttributes<HTMLImageElement>, \"size\">,\r\n VariantProps<typeof avatarVariants> {\r\n name?: string;\r\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\r\n}\r\n\r\nfunction getInitials(name: string): string {\r\n return name\r\n .split(\" \")\r\n .map((n) => n[0])\r\n .slice(0, 2)\r\n .join(\"\")\r\n .toUpperCase();\r\n}\r\n\r\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\r\n ({ className, src, alt, name, size = \"md\", shape, status, ...props }, ref) => {\r\n const [imgError, setImgError] = useState(false);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(avatarVariants({ size, shape }), className)}\r\n >\r\n {src && !imgError ? (\r\n <img\r\n src={src}\r\n alt={alt || name || \"Avatar\"}\r\n className={avatarImageStyles}\r\n onError={() => setImgError(true)}\r\n {...props}\r\n />\r\n ) : (\r\n <span>{name ? getInitials(name) : \"?\"}</span>\r\n )}\r\n {status && (\r\n <span className={avatarStatusVariants({ status, size })} />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAvatar.displayName = \"Avatar\";\r\n","export const tooltipContentStyles = [\r\n \"z-[var(--z-tooltip)]\",\r\n \"overflow-hidden rounded-[var(--radius)] px-3 py-1.5\",\r\n \"bg-[var(--color-slate-800)] text-[var(--color-text-primary)]\",\r\n \"text-[var(--text-xs)] font-medium\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-md\",\r\n \"animate-in fade-in-0 zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n].join(\" \");\r\n","import React, { type ReactNode } from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { tooltipContentStyles } from \"./tooltip.styles\";\r\n\r\nexport const TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nexport interface TooltipProps {\r\n children: ReactNode;\r\n content: ReactNode;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n delayDuration?: number;\r\n sideOffset?: number;\r\n}\r\n\r\nexport function Tooltip({\r\n children,\r\n content,\r\n side = \"top\",\r\n align = \"center\",\r\n delayDuration = 300,\r\n sideOffset = 6,\r\n}: TooltipProps) {\r\n return (\r\n <TooltipPrimitive.Root delayDuration={delayDuration}>\r\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\r\n <TooltipPrimitive.Portal>\r\n <TooltipPrimitive.Content\r\n side={side}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(tooltipContentStyles)}\r\n >\r\n {content}\r\n </TooltipPrimitive.Content>\r\n </TooltipPrimitive.Portal>\r\n </TooltipPrimitive.Root>\r\n );\r\n}\r\n\r\nTooltip.displayName = \"Tooltip\";\r\n","export const popoverContentStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-72 rounded-[var(--radius-md)] p-4\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"outline-none\",\r\n].join(\" \");\r\n","import React, { forwardRef } from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { popoverContentStyles } from \"./popover.styles\";\r\n\r\nexport const Popover = PopoverPrimitive.Root;\r\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\r\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\r\nexport const PopoverClose = PopoverPrimitive.Close;\r\n\r\nexport const PopoverContent = forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, sideOffset = 6, align = \"center\", ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n align={align}\r\n className={cn(popoverContentStyles, className)}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n));\r\n\r\nPopoverContent.displayName = \"PopoverContent\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const cardVariants = cva(\r\n [\r\n \"rounded-[var(--radius-lg)]\",\r\n \"transition-all duration-[var(--transition-base)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n elevated: [\r\n \"bg-[var(--color-surface)] border border-[var(--color-slate-800)]\",\r\n \"shadow-[var(--shadow-sm)]\",\r\n ],\r\n outlined: [\r\n \"bg-transparent border border-[var(--color-slate-700)]\",\r\n ],\r\n ghost: [\r\n \"bg-[var(--color-surface)]/50 border border-transparent\",\r\n ],\r\n glass: [\r\n \"bg-[var(--color-surface)]/70 backdrop-blur-md border border-[var(--color-overlay)]\",\r\n \"shadow-lg\",\r\n ],\r\n },\r\n hoverable: {\r\n true: \"hover:border-[var(--color-border-hover)] hover:shadow-[var(--shadow-lg)] cursor-pointer\",\r\n false: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"elevated\",\r\n hoverable: false,\r\n },\r\n }\r\n);\r\n\r\nexport const cardHeaderStyles =\r\n \"px-[var(--space-lg)] pt-[var(--space-lg)] pb-[var(--space-sm)]\";\r\n\r\nexport const cardBodyStyles =\r\n \"px-[var(--space-lg)] py-[var(--space-md)]\";\r\n\r\nexport const cardFooterStyles =\r\n \"px-[var(--space-lg)] pt-[var(--space-sm)] pb-[var(--space-lg)] border-t border-[var(--color-border)]\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n cardVariants,\r\n cardHeaderStyles,\r\n cardBodyStyles,\r\n cardFooterStyles,\r\n} from \"./card.styles\";\r\n\r\nexport interface CardProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> { }\r\n\r\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, variant, hoverable, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant, hoverable }), className)}\r\n {...props}\r\n />\r\n )\r\n);\r\nCard.displayName = \"Card\";\r\n\r\nexport const CardHeader = forwardRef<\r\n HTMLDivElement,\r\n HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(cardHeaderStyles, className)} {...props} />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nexport const CardBody = forwardRef<\r\n HTMLDivElement,\r\n HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(cardBodyStyles, className)} {...props} />\r\n));\r\nCardBody.displayName = \"CardBody\";\r\n\r\nexport const CardFooter = forwardRef<\r\n HTMLDivElement,\r\n HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(cardFooterStyles, className)} {...props} />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n","export const modalOverlayStyles = [\r\n \"fixed inset-0 z-[var(--z-overlay)] bg-black/60 backdrop-blur-sm\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\r\n].join(\" \");\r\n\r\nexport const modalContentStyles = [\r\n \"fixed left-1/2 top-1/2 z-[var(--z-modal)] -translate-x-1/2 -translate-y-1/2\",\r\n \"w-full max-w-lg\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-xl)] shadow-lg\",\r\n \"p-[var(--space-lg)]\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\r\n \"duration-200\",\r\n].join(\" \");\r\n\r\nexport const modalTitleStyles =\r\n \"text-[var(--text-lg)] font-semibold text-[var(--color-text-primary)]\";\r\n\r\nexport const modalDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)] mt-2\";\r\n\r\nexport const modalCloseStyles = [\r\n \"absolute right-4 top-4\",\r\n \"rounded-[var(--radius-sm)] p-1\",\r\n \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)]\",\r\n \"hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"focus:outline-none focus:ring-2 focus:ring-[var(--ring-color)]\",\r\n].join(\" \");\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport * as Dialog from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n modalOverlayStyles,\r\n modalContentStyles,\r\n modalTitleStyles,\r\n modalDescriptionStyles,\r\n modalCloseStyles,\r\n} from \"./modal.styles\";\r\n\r\n/* ── Root ── */\r\nexport const Modal = Dialog.Root;\r\nexport const ModalTrigger = Dialog.Trigger;\r\n\r\n/* ── Overlay ── */\r\nconst ModalOverlay = forwardRef<\r\n React.ElementRef<typeof Dialog.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof Dialog.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <Dialog.Overlay ref={ref} className={cn(modalOverlayStyles, className)} {...props} />\r\n));\r\nModalOverlay.displayName = \"ModalOverlay\";\r\n\r\n/* ── Content ── */\r\nexport interface ModalContentProps\r\n extends React.ComponentPropsWithoutRef<typeof Dialog.Content> {\r\n /** Show a close (X) button in the top right */\r\n showClose?: boolean;\r\n}\r\n\r\nexport const ModalContent = forwardRef<\r\n React.ElementRef<typeof Dialog.Content>,\r\n ModalContentProps\r\n>(({ className, children, showClose = true, ...props }, ref) => (\r\n <Dialog.Portal>\r\n <ModalOverlay />\r\n <Dialog.Content ref={ref} className={cn(modalContentStyles, className)} {...props}>\r\n {children}\r\n {showClose && (\r\n <Dialog.Close className={modalCloseStyles}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n <span className=\"sr-only\">Close</span>\r\n </Dialog.Close>\r\n )}\r\n </Dialog.Content>\r\n </Dialog.Portal>\r\n));\r\nModalContent.displayName = \"ModalContent\";\r\n\r\n/* ── Title ── */\r\nexport const ModalTitle = forwardRef<\r\n React.ElementRef<typeof Dialog.Title>,\r\n React.ComponentPropsWithoutRef<typeof Dialog.Title>\r\n>(({ className, ...props }, ref) => (\r\n <Dialog.Title ref={ref} className={cn(modalTitleStyles, className)} {...props} />\r\n));\r\nModalTitle.displayName = \"ModalTitle\";\r\n\r\n/* ── Description ── */\r\nexport const ModalDescription = forwardRef<\r\n React.ElementRef<typeof Dialog.Description>,\r\n React.ComponentPropsWithoutRef<typeof Dialog.Description>\r\n>(({ className, ...props }, ref) => (\r\n <Dialog.Description\r\n ref={ref}\r\n className={cn(modalDescriptionStyles, className)}\r\n {...props}\r\n />\r\n));\r\nModalDescription.displayName = \"ModalDescription\";\r\n\r\n/* ── Footer ── */\r\nexport const ModalFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex justify-end gap-[var(--space-sm)] mt-[var(--space-lg)]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\nModalFooter.displayName = \"ModalFooter\";\r\n","export const dropdownContentStyles = [\r\n \"z-[var(--z-dropdown)] min-w-[180px] overflow-hidden\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-md)] shadow-lg\",\r\n \"p-1\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n \"data-[side=top]:slide-in-from-bottom-2\",\r\n \"data-[side=bottom]:slide-in-from-top-2\",\r\n \"data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2\",\r\n].join(\" \");\r\n\r\nexport const dropdownItemStyles = [\r\n \"relative flex items-center gap-2\",\r\n \"rounded-[var(--radius-sm)] px-2 py-1.5\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"cursor-pointer select-none outline-none\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"data-[highlighted]:bg-[var(--color-surface-hover)] data-[highlighted]:text-[var(--color-text-primary)]\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n].join(\" \");\r\n\r\nexport const dropdownSeparatorStyles =\r\n \"my-1 h-px bg-[var(--color-border)]\";\r\n\r\nexport const dropdownLabelStyles =\r\n \"px-2 py-1.5 text-[var(--text-xs)] font-semibold text-[var(--color-text-muted)]\";\r\n","import React, { forwardRef } from \"react\";\r\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n dropdownContentStyles,\r\n dropdownItemStyles,\r\n dropdownSeparatorStyles,\r\n dropdownLabelStyles,\r\n} from \"./dropdown.styles\";\r\n\r\n/* ── Root & Trigger ── */\r\nexport const Dropdown = DropdownMenu.Root;\r\nexport const DropdownTrigger = DropdownMenu.Trigger;\r\nexport const DropdownGroup = DropdownMenu.Group;\r\n\r\n/* ── Content ── */\r\nexport const DropdownContent = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenu.Portal>\r\n <DropdownMenu.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(dropdownContentStyles, className)}\r\n {...props}\r\n />\r\n </DropdownMenu.Portal>\r\n));\r\nDropdownContent.displayName = \"DropdownContent\";\r\n\r\n/* ── Item ── */\r\nexport const DropdownItem = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Item>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenu.Item\r\n ref={ref}\r\n className={cn(dropdownItemStyles, className)}\r\n {...props}\r\n />\r\n));\r\nDropdownItem.displayName = \"DropdownItem\";\r\n\r\n/* ── Separator ── */\r\nexport const DropdownSeparator = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenu.Separator\r\n ref={ref}\r\n className={cn(dropdownSeparatorStyles, className)}\r\n {...props}\r\n />\r\n));\r\nDropdownSeparator.displayName = \"DropdownSeparator\";\r\n\r\n/* ── Label ── */\r\nexport const DropdownLabel = forwardRef<\r\n React.ElementRef<typeof DropdownMenu.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Label>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenu.Label\r\n ref={ref}\r\n className={cn(dropdownLabelStyles, className)}\r\n {...props}\r\n />\r\n));\r\nDropdownLabel.displayName = \"DropdownLabel\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const badgeVariants = cva(\r\n [\r\n \"inline-flex items-center font-medium\",\r\n \"rounded-full whitespace-nowrap\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-[var(--color-slate-800)] text-[var(--color-slate-300)] border border-[var(--color-slate-700)]\",\r\n primary: \"bg-[var(--color-primary)]/10 text-[var(--color-primary-400)] border border-[var(--color-primary)]/20 shadow-[0_0_10px_-4px_var(--color-primary-500)]\",\r\n success: \"bg-[var(--color-success)]/10 text-[var(--color-success)] border border-[var(--color-success)]/20\",\r\n warning: \"bg-[var(--color-warning)]/10 text-[var(--color-warning)] border border-[var(--color-warning)]/20\",\r\n danger: \"bg-[var(--color-danger)]/10 text-[var(--color-danger)] border border-[var(--color-danger)]/20\",\r\n info: \"bg-[var(--color-info)]/10 text-[var(--color-info)] border border-[var(--color-info)]/20\",\r\n },\r\n size: {\r\n sm: \"px-2 py-0.5 text-[10px]\",\r\n md: \"px-2.5 py-0.5 text-[var(--text-xs)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { badgeVariants } from \"./badge.styles\";\r\n\r\nexport interface BadgeProps\r\n extends HTMLAttributes<HTMLSpanElement>,\r\n VariantProps<typeof badgeVariants> { }\r\n\r\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\r\n ({ className, variant, size, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n className={cn(badgeVariants({ variant, size }), className)}\r\n {...props}\r\n />\r\n )\r\n);\r\n\r\nBadge.displayName = \"Badge\";\r\n","export const tabsListStyles = [\r\n \"inline-flex items-center gap-1\",\r\n \"bg-[var(--color-bg-secondary)] p-1\",\r\n \"rounded-[var(--radius-md)]\",\r\n \"border border-[var(--color-border)]\",\r\n].join(\" \");\r\n\r\nexport const tabsTriggerStyles = [\r\n \"relative inline-flex items-center justify-center\",\r\n \"px-3 py-1.5\",\r\n \"text-[var(--text-sm)] font-medium\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"cursor-pointer select-none\",\r\n \"hover:text-[var(--color-text-secondary)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)]\",\r\n].join(\" \");\r\n\r\nexport const tabsTriggerActiveStyles = [\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"shadow-sm\",\r\n].join(\" \");\r\n\r\nexport const tabsContentStyles = [\r\n \"mt-[var(--space-md)]\",\r\n \"focus-visible:outline-none\",\r\n].join(\" \");\r\n","import React, {\r\n createContext,\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useState,\r\n type HTMLAttributes,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n tabsListStyles,\r\n tabsTriggerStyles,\r\n tabsTriggerActiveStyles,\r\n tabsContentStyles,\r\n} from \"./tabs.styles\";\r\n\r\n/* ── Context ── */\r\ninterface TabsContextValue {\r\n value: string;\r\n onValueChange: (value: string) => void;\r\n}\r\n\r\nconst TabsContext = createContext<TabsContextValue | null>(null);\r\n\r\nfunction useTabsContext() {\r\n const ctx = useContext(TabsContext);\r\n if (!ctx) throw new Error(\"Tabs compound components must be used within <Tabs>\");\r\n return ctx;\r\n}\r\n\r\n/* ── Root ── */\r\nexport interface TabsProps extends HTMLAttributes<HTMLDivElement> {\r\n /** Controlled value */\r\n value?: string;\r\n /** Default value (uncontrolled) */\r\n defaultValue?: string;\r\n /** Callback when active tab changes */\r\n onValueChange?: (value: string) => void;\r\n}\r\n\r\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(\r\n ({ value: controlledValue, defaultValue = \"\", onValueChange, className, children, ...props }, ref) => {\r\n const [internal, setInternal] = useState(defaultValue);\r\n const value = controlledValue ?? internal;\r\n\r\n const handleChange = useCallback(\r\n (v: string) => {\r\n setInternal(v);\r\n onValueChange?.(v);\r\n },\r\n [onValueChange]\r\n );\r\n\r\n return (\r\n <TabsContext.Provider value={{ value, onValueChange: handleChange }}>\r\n <div ref={ref} className={className} {...props}>\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n }\r\n);\r\nTabs.displayName = \"Tabs\";\r\n\r\n/* ── List ── */\r\nexport const TabsList = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} role=\"tablist\" className={cn(tabsListStyles, className)} {...props} />\r\n )\r\n);\r\nTabsList.displayName = \"TabsList\";\r\n\r\n/* ── Trigger ── */\r\nexport interface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {\r\n value: string;\r\n}\r\n\r\nexport const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\r\n ({ value, className, ...props }, ref) => {\r\n const ctx = useTabsContext();\r\n const isActive = ctx.value === value;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n role=\"tab\"\r\n type=\"button\"\r\n aria-selected={isActive}\r\n data-state={isActive ? \"active\" : \"inactive\"}\r\n className={cn(\r\n tabsTriggerStyles,\r\n isActive && tabsTriggerActiveStyles,\r\n className\r\n )}\r\n onClick={() => ctx.onValueChange(value)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nTabsTrigger.displayName = \"TabsTrigger\";\r\n\r\n/* ── Content ── */\r\nexport interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n}\r\n\r\nexport const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\r\n ({ value, className, children, ...props }, ref) => {\r\n const ctx = useTabsContext();\r\n if (ctx.value !== value) return null;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tabpanel\"\r\n data-state=\"active\"\r\n className={cn(tabsContentStyles, className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nTabsContent.displayName = \"TabsContent\";\r\n","export const tableWrapperStyles =\r\n \"w-full overflow-auto rounded-[var(--radius-lg)] border border-[var(--color-border)]\";\r\n\r\nexport const tableStyles =\r\n \"w-full caption-bottom text-[var(--text-sm)] border-collapse\";\r\n\r\nexport const theadStyles =\r\n \"bg-[var(--color-bg-secondary)]\";\r\n\r\nexport const tbodyStyles =\r\n \"[&_tr:last-child]:border-0\";\r\n\r\nexport const trStyles = [\r\n \"border-b border-[var(--color-border)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)]/50\",\r\n \"data-[state=selected]:bg-[var(--color-primary)]/5\",\r\n].join(\" \");\r\n\r\nexport const thStyles = [\r\n \"h-10 px-4 text-left align-middle\",\r\n \"font-medium text-[var(--color-text-muted)] text-[var(--text-xs)] uppercase tracking-wider\",\r\n \"[&:has([role=checkbox])]:pr-0\",\r\n].join(\" \");\r\n\r\nexport const tdStyles = [\r\n \"p-4 align-middle text-[var(--color-text-secondary)]\",\r\n \"[&:has([role=checkbox])]:pr-0\",\r\n].join(\" \");\r\n","import React, { forwardRef, type HTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n tableWrapperStyles,\r\n tableStyles,\r\n theadStyles,\r\n tbodyStyles,\r\n trStyles,\r\n thStyles,\r\n tdStyles,\r\n} from \"./table.styles\";\r\n\r\n/* ── Wrapper ── */\r\nexport const TableWrapper = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(tableWrapperStyles, className)} {...props} />\r\n )\r\n);\r\nTableWrapper.displayName = \"TableWrapper\";\r\n\r\n/* ── Table ── */\r\nexport const Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(\r\n ({ className, ...props }, ref) => (\r\n <TableWrapper>\r\n <table ref={ref} className={cn(tableStyles, className)} {...props} />\r\n </TableWrapper>\r\n )\r\n);\r\nTable.displayName = \"Table\";\r\n\r\n/* ── Thead ── */\r\nexport const Thead = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn(theadStyles, className)} {...props} />\r\n )\r\n);\r\nThead.displayName = \"Thead\";\r\n\r\n/* ── Tbody ── */\r\nexport const Tbody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} className={cn(tbodyStyles, className)} {...props} />\r\n )\r\n);\r\nTbody.displayName = \"Tbody\";\r\n\r\n/* ── Tr ── */\r\nexport const Tr = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tr ref={ref} className={cn(trStyles, className)} {...props} />\r\n )\r\n);\r\nTr.displayName = \"Tr\";\r\n\r\n/* ── Th ── */\r\nexport const Th = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <th ref={ref} className={cn(thStyles, className)} {...props} />\r\n )\r\n);\r\nTh.displayName = \"Th\";\r\n\r\n/* ── Td ── */\r\nexport const Td = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <td ref={ref} className={cn(tdStyles, className)} {...props} />\r\n )\r\n);\r\nTd.displayName = \"Td\";\r\n","export const sidebarStyles = [\r\n \"flex flex-col h-full\",\r\n \"bg-[var(--color-bg-secondary)] border-r border-[var(--color-border)]\",\r\n \"transition-all duration-[var(--transition-slow)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarExpandedStyles = \"w-[260px]\";\r\nexport const sidebarCollapsedStyles = \"w-[68px]\";\r\n\r\nexport const sidebarHeaderStyles = [\r\n \"flex items-center gap-3\",\r\n \"px-[var(--space-md)] h-14\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n\r\nexport const sidebarContentStyles =\r\n \"flex-1 overflow-y-auto py-[var(--space-sm)] px-[var(--space-sm)]\";\r\n\r\nexport const sidebarFooterStyles = [\r\n \"shrink-0\",\r\n \"px-[var(--space-md)] py-[var(--space-sm)]\",\r\n \"border-t border-[var(--color-border)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarSectionStyles =\r\n \"py-[var(--space-xs)]\";\r\n\r\nexport const sidebarSectionLabelStyles = [\r\n \"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider\",\r\n \"text-[var(--color-text-muted)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarItemStyles = [\r\n \"flex items-center gap-3\",\r\n \"w-full px-3 py-2\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"cursor-pointer select-none\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n].join(\" \");\r\n\r\nexport const sidebarItemActiveStyles = [\r\n \"bg-[var(--color-primary)]/10 text-[var(--color-primary-400)]\",\r\n \"hover:bg-[var(--color-primary)]/15\",\r\n].join(\" \");\r\n\r\nexport const sidebarToggleStyles = [\r\n \"flex items-center justify-center\",\r\n \"h-7 w-7 rounded-[var(--radius)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n","import React, {\r\n createContext,\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useState,\r\n type HTMLAttributes,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n sidebarStyles,\r\n sidebarExpandedStyles,\r\n sidebarCollapsedStyles,\r\n sidebarHeaderStyles,\r\n sidebarContentStyles,\r\n sidebarFooterStyles,\r\n sidebarSectionStyles,\r\n sidebarSectionLabelStyles,\r\n sidebarItemStyles,\r\n sidebarItemActiveStyles,\r\n sidebarToggleStyles,\r\n} from \"./sidebar.styles\";\r\n\r\n/* ── Context ── */\r\ninterface SidebarContextValue {\r\n collapsed: boolean;\r\n toggle: () => void;\r\n}\r\n\r\nconst SidebarContext = createContext<SidebarContextValue>({\r\n collapsed: false,\r\n toggle: () => { },\r\n});\r\n\r\nexport function useSidebar() {\r\n return useContext(SidebarContext);\r\n}\r\n\r\n/* ── Root ── */\r\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\r\n /** Controlled collapsed state */\r\n collapsed?: boolean;\r\n /** Default collapsed state (uncontrolled) */\r\n defaultCollapsed?: boolean;\r\n /** Callback on toggle */\r\n onCollapsedChange?: (collapsed: boolean) => void;\r\n}\r\n\r\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(\r\n (\r\n {\r\n collapsed: controlledCollapsed,\r\n defaultCollapsed = false,\r\n onCollapsedChange,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [internal, setInternal] = useState(defaultCollapsed);\r\n const collapsed = controlledCollapsed ?? internal;\r\n\r\n const toggle = useCallback(() => {\r\n const next = !collapsed;\r\n setInternal(next);\r\n onCollapsedChange?.(next);\r\n }, [collapsed, onCollapsedChange]);\r\n\r\n return (\r\n <SidebarContext.Provider value={{ collapsed, toggle }}>\r\n <aside\r\n ref={ref}\r\n className={cn(\r\n sidebarStyles,\r\n collapsed ? sidebarCollapsedStyles : sidebarExpandedStyles,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </aside>\r\n </SidebarContext.Provider>\r\n );\r\n }\r\n);\r\nSidebar.displayName = \"Sidebar\";\r\n\r\n/* ── Header ── */\r\nexport interface SidebarHeaderProps extends HTMLAttributes<HTMLDivElement> {\r\n logo?: ReactNode;\r\n}\r\n\r\nexport const SidebarHeader = forwardRef<HTMLDivElement, SidebarHeaderProps>(\r\n ({ className, logo, children, ...props }, ref) => {\r\n const { collapsed } = useSidebar();\r\n return (\r\n <div ref={ref} className={cn(sidebarHeaderStyles, className)} {...props}>\r\n {logo}\r\n {!collapsed && children}\r\n </div>\r\n );\r\n }\r\n);\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\n/* ── Content ── */\r\nexport const SidebarContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(sidebarContentStyles, className)} {...props} />\r\n )\r\n);\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\n/* ── Footer ── */\r\nexport const SidebarFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(sidebarFooterStyles, className)} {...props} />\r\n )\r\n);\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\n/* ── Section ── */\r\nexport interface SidebarSectionProps extends HTMLAttributes<HTMLDivElement> {\r\n label?: string;\r\n}\r\n\r\nexport const SidebarSection = forwardRef<HTMLDivElement, SidebarSectionProps>(\r\n ({ className, label, children, ...props }, ref) => {\r\n const { collapsed } = useSidebar();\r\n return (\r\n <div ref={ref} className={cn(sidebarSectionStyles, className)} {...props}>\r\n {label && !collapsed && (\r\n <div className={sidebarSectionLabelStyles}>{label}</div>\r\n )}\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nSidebarSection.displayName = \"SidebarSection\";\r\n\r\n/* ── Item ── */\r\nexport interface SidebarItemProps extends HTMLAttributes<HTMLButtonElement> {\r\n icon?: ReactNode;\r\n active?: boolean;\r\n}\r\n\r\nexport const SidebarItem = forwardRef<HTMLButtonElement, SidebarItemProps>(\r\n ({ className, icon, active, children, ...props }, ref) => {\r\n const { collapsed } = useSidebar();\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n className={cn(\r\n sidebarItemStyles,\r\n active && sidebarItemActiveStyles,\r\n collapsed && \"justify-center px-0\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {icon}\r\n {!collapsed && <span className=\"truncate\">{children}</span>}\r\n </button>\r\n );\r\n }\r\n);\r\nSidebarItem.displayName = \"SidebarItem\";\r\n\r\n/* ── Toggle Button ── */\r\nexport const SidebarToggle = forwardRef<HTMLButtonElement, HTMLAttributes<HTMLButtonElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { collapsed, toggle } = useSidebar();\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n onClick={toggle}\r\n className={cn(sidebarToggleStyles, className)}\r\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\r\n {...props}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={cn(\"transition-transform\", collapsed && \"rotate-180\")}\r\n >\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n </button>\r\n );\r\n }\r\n);\r\nSidebarToggle.displayName = \"SidebarToggle\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const statCardStyles = [\r\n \"rounded-[var(--radius-lg)] p-5\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"transition-all duration-[var(--transition-base)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n].join(\" \");\r\n\r\nexport const statCardTitleStyles =\r\n \"text-[var(--text-sm)] font-medium text-[var(--color-text-muted)]\";\r\n\r\nexport const statCardValueStyles =\r\n \"text-2xl font-semibold text-[var(--color-text-primary)] mt-1\";\r\n\r\nexport const statCardChangeVariants = cva(\r\n \"inline-flex items-center gap-1 text-[var(--text-xs)] font-medium mt-2\",\r\n {\r\n variants: {\r\n changeType: {\r\n positive: \"text-[var(--color-success)]\",\r\n negative: \"text-[var(--color-danger)]\",\r\n neutral: \"text-[var(--color-text-muted)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n changeType: \"neutral\",\r\n },\r\n }\r\n);\r\n\r\nexport const statCardIconStyles =\r\n \"h-10 w-10 rounded-[var(--radius-md)] bg-[var(--color-primary)]/10 text-[var(--color-primary-400)] flex items-center justify-center\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n statCardStyles,\r\n statCardTitleStyles,\r\n statCardValueStyles,\r\n statCardChangeVariants,\r\n statCardIconStyles,\r\n} from \"./stat-card.styles\";\r\n\r\nexport interface StatCardProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof statCardChangeVariants> {\r\n title: string;\r\n value: string | number;\r\n change?: string;\r\n changeType?: \"positive\" | \"negative\" | \"neutral\";\r\n icon?: ReactNode;\r\n}\r\n\r\nexport const StatCard = forwardRef<HTMLDivElement, StatCardProps>(\r\n ({ className, title, value, change, changeType = \"neutral\", icon, ...props }, ref) => (\r\n <div ref={ref} className={cn(statCardStyles, className)} {...props}>\r\n <div className=\"flex items-start justify-between\">\r\n <div>\r\n <p className={statCardTitleStyles}>{title}</p>\r\n <p className={statCardValueStyles}>{value}</p>\r\n {change && (\r\n <span className={statCardChangeVariants({ changeType })}>\r\n {changeType === \"positive\" && (\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"18 15 12 9 6 15\" />\r\n </svg>\r\n )}\r\n {changeType === \"negative\" && (\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n )}\r\n {change}\r\n </span>\r\n )}\r\n </div>\r\n {icon && <div className={statCardIconStyles}>{icon}</div>}\r\n </div>\r\n </div>\r\n )\r\n);\r\n\r\nStatCard.displayName = \"StatCard\";\r\n","export const emptyStateStyles = [\r\n \"flex flex-col items-center justify-center py-12 px-6 text-center\",\r\n].join(\" \");\r\n\r\nexport const emptyStateIconStyles =\r\n \"h-12 w-12 text-[var(--color-text-muted)] mb-4\";\r\n\r\nexport const emptyStateTitleStyles =\r\n \"text-[var(--text-base)] font-medium text-[var(--color-text-primary)] mb-1\";\r\n\r\nexport const emptyStateDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] max-w-sm mb-4\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n emptyStateStyles,\r\n emptyStateIconStyles,\r\n emptyStateTitleStyles,\r\n emptyStateDescriptionStyles,\r\n} from \"./empty-state.styles\";\r\n\r\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\r\n icon?: ReactNode;\r\n title: string;\r\n description?: string;\r\n action?: ReactNode;\r\n}\r\n\r\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\r\n ({ className, icon, title, description, action, ...props }, ref) => (\r\n <div ref={ref} className={cn(emptyStateStyles, className)} {...props}>\r\n {icon && <div className={emptyStateIconStyles}>{icon}</div>}\r\n <h3 className={emptyStateTitleStyles}>{title}</h3>\r\n {description && <p className={emptyStateDescriptionStyles}>{description}</p>}\r\n {action && <div>{action}</div>}\r\n </div>\r\n )\r\n);\r\n\r\nEmptyState.displayName = \"EmptyState\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const alertVariants = cva(\r\n [\r\n \"relative flex gap-3 p-4 rounded-[var(--radius-md)]\",\r\n \"border text-[var(--text-sm)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n info: \"bg-[var(--color-info)]/10 border-[var(--color-info)]/20 text-[var(--color-info)]\",\r\n success: \"bg-[var(--color-success)]/10 border-[var(--color-success)]/20 text-[var(--color-success)]\",\r\n warning: \"bg-[var(--color-warning)]/10 border-[var(--color-warning)]/20 text-[var(--color-warning)]\",\r\n danger: \"bg-[var(--color-danger)]/10 border-[var(--color-danger)]/20 text-[var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"info\",\r\n },\r\n }\r\n);\r\n\r\nexport const alertTitleStyles = \"font-semibold leading-tight\";\r\n\r\nexport const alertDescriptionStyles = \"text-[var(--text-sm)] opacity-80 mt-0.5\";\r\n\r\nexport const alertDismissStyles =\r\n \"absolute top-3 right-3 p-1 rounded-[var(--radius-sm)] opacity-60 hover:opacity-100 transition-opacity cursor-pointer\";\r\n\r\nexport const alertIconStyles = \"shrink-0 mt-0.5\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n alertVariants,\r\n alertTitleStyles,\r\n alertDescriptionStyles,\r\n alertDismissStyles,\r\n alertIconStyles,\r\n} from \"./alert.styles\";\r\n\r\nconst defaultIcons: Record<string, React.ReactNode> = {\r\n info: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" /><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n ),\r\n success: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" /><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" /><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n ),\r\n danger: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" /><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\r\n </svg>\r\n ),\r\n};\r\n\r\nexport interface AlertProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof alertVariants> {\r\n title?: string;\r\n description?: string;\r\n icon?: ReactNode;\r\n dismissible?: boolean;\r\n onDismiss?: () => void;\r\n action?: ReactNode;\r\n}\r\n\r\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\r\n ({ className, variant = \"info\", title, description, icon, dismissible, onDismiss, action, children, ...props }, ref) => (\r\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\r\n <div className={alertIconStyles}>\r\n {icon || defaultIcons[variant || \"info\"]}\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n {title && <p className={alertTitleStyles}>{title}</p>}\r\n {description && <p className={alertDescriptionStyles}>{description}</p>}\r\n {children}\r\n {action && <div className=\"mt-2\">{action}</div>}\r\n </div>\r\n {dismissible && (\r\n <button onClick={onDismiss} className={alertDismissStyles} aria-label=\"Dismiss\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n )\r\n);\r\n\r\nAlert.displayName = \"Alert\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const skeletonVariants = cva(\r\n \"animate-pulse bg-[var(--color-surface-raised)]\",\r\n {\r\n variants: {\r\n variant: {\r\n text: \"h-4 w-full rounded-[var(--radius-sm)]\",\r\n circle: \"rounded-full\",\r\n rect: \"rounded-[var(--radius)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"rect\",\r\n },\r\n }\r\n);\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { skeletonVariants } from \"./skeleton.styles\";\r\n\r\nexport interface SkeletonProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof skeletonVariants> {\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nconst SkeletonBase = forwardRef<HTMLDivElement, SkeletonProps>(\r\n ({ className, variant, width, height, style, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(skeletonVariants({ variant }), className)}\r\n style={{ width, height, ...style }}\r\n {...props}\r\n />\r\n )\r\n);\r\nSkeletonBase.displayName = \"Skeleton\";\r\n\r\n/* ── Skeleton.Text ── */\r\ninterface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {\r\n lines?: number;\r\n lastLineWidth?: string;\r\n}\r\n\r\nconst SkeletonText: React.FC<SkeletonTextProps> = ({\r\n lines = 3,\r\n lastLineWidth = \"60%\",\r\n className,\r\n ...props\r\n}) => (\r\n <div className={cn(\"space-y-2.5\", className)} {...props}>\r\n {Array.from({ length: lines }).map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"h-4 rounded-[var(--radius-sm)] animate-pulse bg-[var(--color-surface-raised)]\"\r\n style={{ width: i === lines - 1 ? lastLineWidth : \"100%\" }}\r\n />\r\n ))}\r\n </div>\r\n);\r\nSkeletonText.displayName = \"SkeletonText\";\r\n\r\n/* ── Compose ── */\r\nexport const Skeleton = Object.assign(SkeletonBase, {\r\n Text: SkeletonText,\r\n});\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const progressTrackVariants = cva(\r\n \"relative w-full overflow-hidden rounded-full bg-[var(--color-surface-raised)]\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-1.5\",\r\n md: \"h-2.5\",\r\n lg: \"h-4\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport const progressBarVariants = cva(\r\n \"h-full rounded-full transition-all duration-500 ease-out\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-[var(--color-primary)]\",\r\n success: \"bg-[var(--color-success)]\",\r\n warning: \"bg-[var(--color-warning)]\",\r\n danger: \"bg-[var(--color-danger)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport const progressLabelStyles =\r\n \"flex justify-between items-center mb-1.5 text-[var(--text-sm)] text-[var(--color-text-primary)]\";\r\n\r\nexport const progressValueStyles =\r\n \"text-[var(--text-xs)] font-medium text-[var(--color-text-secondary)]\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n progressTrackVariants,\r\n progressBarVariants,\r\n progressLabelStyles,\r\n progressValueStyles,\r\n} from \"./progress.styles\";\r\n\r\nexport interface ProgressProps\r\n extends HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof progressTrackVariants>,\r\n VariantProps<typeof progressBarVariants> {\r\n value?: number;\r\n max?: number;\r\n label?: string;\r\n showValue?: boolean;\r\n indeterminate?: boolean;\r\n}\r\n\r\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\r\n (\r\n {\r\n className,\r\n value = 0,\r\n max = 100,\r\n size,\r\n variant,\r\n label,\r\n showValue,\r\n indeterminate,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\r\n {(label || showValue) && (\r\n <div className={progressLabelStyles}>\r\n {label && (\r\n <span className=\"text-[var(--color-text-secondary)] font-medium\">{label}</span>\r\n )}\r\n {showValue && !indeterminate && (\r\n <span className={progressValueStyles}>{Math.round(percentage)}%</span>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n role=\"progressbar\"\r\n aria-valuenow={indeterminate ? undefined : value}\r\n aria-valuemin={0}\r\n aria-valuemax={max}\r\n className={progressTrackVariants({ size })}\r\n >\r\n <div\r\n className={cn(\r\n progressBarVariants({ variant }),\r\n indeterminate && \"w-1/3 animate-[progress-indeterminate_1.5s_ease-in-out_infinite]\"\r\n )}\r\n style={!indeterminate ? { width: `${percentage}%` } : undefined}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nProgress.displayName = \"Progress\";\r\n","export const paginationStyles =\r\n \"flex items-center gap-1\";\r\n\r\nexport const paginationButtonStyles = [\r\n \"inline-flex items-center justify-center\",\r\n \"h-9 min-w-[36px] px-3\",\r\n \"text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)] border border-transparent\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"disabled:opacity-40 disabled:pointer-events-none\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nexport const paginationButtonActiveStyles = [\r\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\r\n \"hover:bg-[var(--color-primary-hover)] hover:text-[var(--color-primary-foreground)]\",\r\n \"border-[var(--color-primary)]\",\r\n].join(\" \");\r\n\r\nexport const paginationEllipsisStyles =\r\n \"flex items-center justify-center h-9 w-9 text-[var(--color-text-muted)]\";\r\n\r\nexport const paginationInfoStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] mr-3\";\r\n","import React, { forwardRef, type HTMLAttributes } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n paginationStyles,\r\n paginationButtonStyles,\r\n paginationButtonActiveStyles,\r\n paginationEllipsisStyles,\r\n paginationInfoStyles,\r\n} from \"./pagination.styles\";\r\n\r\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {\r\n page: number;\r\n totalPages: number;\r\n onPageChange: (page: number) => void;\r\n siblingCount?: number;\r\n showInfo?: boolean;\r\n totalItems?: number;\r\n pageSize?: number;\r\n}\r\n\r\nfunction getPages(page: number, totalPages: number, siblingCount: number): (number | \"...\")[] {\r\n const totalNumbers = siblingCount * 2 + 5;\r\n if (totalNumbers >= totalPages) {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n }\r\n\r\n const leftSibling = Math.max(page - siblingCount, 1);\r\n const rightSibling = Math.min(page + siblingCount, totalPages);\r\n const showLeftDots = leftSibling > 2;\r\n const showRightDots = rightSibling < totalPages - 1;\r\n\r\n if (!showLeftDots && showRightDots) {\r\n const leftRange = 3 + 2 * siblingCount;\r\n const pages: (number | \"...\")[] = Array.from({ length: leftRange }, (_, i) => i + 1);\r\n return [...pages, \"...\", totalPages];\r\n }\r\n\r\n if (showLeftDots && !showRightDots) {\r\n const rightRange = 3 + 2 * siblingCount;\r\n const pages: (number | \"...\")[] = Array.from({ length: rightRange }, (_, i) => totalPages - rightRange + i + 1);\r\n return [1, \"...\", ...pages];\r\n }\r\n\r\n const middlePages: number[] = [];\r\n for (let i = leftSibling; i <= rightSibling; i++) middlePages.push(i);\r\n return [1, \"...\", ...middlePages, \"...\", totalPages];\r\n}\r\n\r\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\r\n (\r\n {\r\n className,\r\n page,\r\n totalPages,\r\n onPageChange,\r\n siblingCount = 1,\r\n showInfo,\r\n totalItems,\r\n pageSize,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const pages = getPages(page, totalPages, siblingCount);\r\n\r\n return (\r\n <nav ref={ref} aria-label=\"Pagination\" className={cn(\"flex items-center gap-2\", className)} {...props}>\r\n {showInfo && totalItems !== undefined && pageSize && (\r\n <span className={paginationInfoStyles}>\r\n {(page - 1) * pageSize + 1}-{Math.min(page * pageSize, totalItems)} of {totalItems}\r\n </span>\r\n )}\r\n <div className={paginationStyles}>\r\n <button\r\n className={paginationButtonStyles}\r\n onClick={() => onPageChange(page - 1)}\r\n disabled={page <= 1}\r\n aria-label=\"Previous page\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n </button>\r\n {pages.map((p, i) =>\r\n p === \"...\" ? (\r\n <span key={`dots-${i}`} className={paginationEllipsisStyles}>…</span>\r\n ) : (\r\n <button\r\n key={p}\r\n className={cn(\r\n paginationButtonStyles,\r\n p === page && paginationButtonActiveStyles\r\n )}\r\n onClick={() => onPageChange(p)}\r\n aria-current={p === page ? \"page\" : undefined}\r\n >\r\n {p}\r\n </button>\r\n )\r\n )}\r\n <button\r\n className={paginationButtonStyles}\r\n onClick={() => onPageChange(page + 1)}\r\n disabled={page >= totalPages}\r\n aria-label=\"Next page\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"9 18 15 12 9 6\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </nav>\r\n );\r\n }\r\n);\r\n\r\nPagination.displayName = \"Pagination\";\r\n","export const breadcrumbStyles =\r\n \"flex items-center gap-1.5 text-[var(--text-sm)]\";\r\n\r\nexport const breadcrumbItemStyles =\r\n \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors duration-[var(--transition-fast)] cursor-pointer inline-flex items-center gap-1.5\";\r\n\r\nexport const breadcrumbItemActiveStyles =\r\n \"text-[var(--color-text-primary)] pointer-events-none font-medium\";\r\n\r\nexport const breadcrumbSeparatorStyles =\r\n \"text-[var(--color-text-muted)]/50 select-none\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n breadcrumbStyles,\r\n breadcrumbItemStyles,\r\n breadcrumbItemActiveStyles,\r\n breadcrumbSeparatorStyles,\r\n} from \"./breadcrumb.styles\";\r\n\r\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\r\n separator?: ReactNode;\r\n}\r\n\r\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\r\n ({ className, separator = \"/\", children, ...props }, ref) => {\r\n const items = React.Children.toArray(children);\r\n\r\n return (\r\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn(breadcrumbStyles, className)} {...props}>\r\n {items.map((child, i) => (\r\n <React.Fragment key={i}>\r\n {child}\r\n {i < items.length - 1 && (\r\n <span className={breadcrumbSeparatorStyles} aria-hidden=\"true\">\r\n {separator}\r\n </span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </nav>\r\n );\r\n }\r\n);\r\nBreadcrumb.displayName = \"Breadcrumb\";\r\n\r\nexport interface BreadcrumbItemProps extends HTMLAttributes<HTMLAnchorElement> {\r\n href?: string;\r\n active?: boolean;\r\n icon?: ReactNode;\r\n}\r\n\r\nexport const BreadcrumbItem = forwardRef<HTMLAnchorElement, BreadcrumbItemProps>(\r\n ({ className, href, active, icon, children, ...props }, ref) => {\r\n const Comp = href && !active ? \"a\" : \"span\";\r\n return (\r\n <Comp\r\n ref={ref as any}\r\n href={href && !active ? href : undefined}\r\n aria-current={active ? \"page\" : undefined}\r\n className={cn(\r\n breadcrumbItemStyles,\r\n active && breadcrumbItemActiveStyles,\r\n className\r\n )}\r\n {...(props as any)}\r\n >\r\n {icon}\r\n {children}\r\n </Comp>\r\n );\r\n }\r\n);\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\r\n","import React, { createContext, useCallback, useContext, useEffect, useRef, useState, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Types ── */\r\nexport interface ToastData {\r\n id: string;\r\n title?: string;\r\n description?: string;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\r\n duration?: number;\r\n action?: ReactNode;\r\n}\r\n\r\ntype ToastInput = Omit<ToastData, \"id\">;\r\n\r\n/* ── Context ── */\r\ninterface ToastContextValue {\r\n toast: (input: ToastInput) => void;\r\n dismiss: (id: string) => void;\r\n}\r\n\r\nconst ToastContext = createContext<ToastContextValue>({\r\n toast: () => { },\r\n dismiss: () => { },\r\n});\r\n\r\nexport const useToast = () => useContext(ToastContext);\r\n\r\n/* ── Styles ── */\r\nconst containerStyles = \"fixed top-4 right-4 z-[var(--z-toast)] flex flex-col gap-2 w-[380px] max-w-[calc(100vw-2rem)]\";\r\n\r\nconst toastBase = [\r\n \"relative flex gap-3 items-start p-4 pr-10\",\r\n \"rounded-[var(--radius-md)]\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"shadow-[var(--shadow-lg)]\",\r\n \"text-[var(--text-sm)]\",\r\n \"animate-[toast-in_0.3s_ease-out]\",\r\n].join(\" \");\r\n\r\nconst variantMap: Record<string, string> = {\r\n default: \"border-[var(--color-border)]\",\r\n success: \"border-[var(--color-success)]/30\",\r\n warning: \"border-[var(--color-warning)]/30\",\r\n danger: \"border-[var(--color-danger)]/30\",\r\n};\r\n\r\nconst variantIconMap: Record<string, ReactNode> = {\r\n success: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-success)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0 mt-0.5\">\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-warning)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0 mt-0.5\">\r\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" /><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" /><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n ),\r\n danger: (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-danger)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0 mt-0.5\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" /><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\r\n </svg>\r\n ),\r\n};\r\n\r\n/* ── Single Toast ── */\r\nfunction ToastItem({ data, onDismiss }: { data: ToastData; onDismiss: (id: string) => void }) {\r\n const [exiting, setExiting] = useState(false);\r\n const timerRef = useRef<ReturnType<typeof setTimeout>>();\r\n\r\n useEffect(() => {\r\n const dur = data.duration ?? 4000;\r\n if (dur > 0) {\r\n timerRef.current = setTimeout(() => {\r\n setExiting(true);\r\n setTimeout(() => onDismiss(data.id), 200);\r\n }, dur);\r\n }\r\n return () => clearTimeout(timerRef.current);\r\n }, [data.duration, data.id, onDismiss]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n toastBase,\r\n variantMap[data.variant || \"default\"],\r\n exiting && \"animate-[toast-out_0.2s_ease-in_forwards]\"\r\n )}\r\n role=\"alert\"\r\n >\r\n {data.variant && data.variant !== \"default\" && variantIconMap[data.variant]}\r\n <div className=\"flex-1 min-w-0\">\r\n {data.title && (\r\n <p className=\"font-medium text-[var(--color-text-primary)]\">{data.title}</p>\r\n )}\r\n {data.description && (\r\n <p className=\"text-[var(--color-text-secondary)] mt-0.5\">{data.description}</p>\r\n )}\r\n {data.action && <div className=\"mt-2\">{data.action}</div>}\r\n </div>\r\n <button\r\n onClick={() => {\r\n setExiting(true);\r\n setTimeout(() => onDismiss(data.id), 200);\r\n }}\r\n className=\"absolute top-3 right-3 text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors p-1\"\r\n aria-label=\"Dismiss\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\n/* ── Provider ── */\r\nexport function ToastProvider({ children }: { children: ReactNode }) {\r\n const [toasts, setToasts] = useState<ToastData[]>([]);\r\n\r\n const toast = useCallback((input: ToastInput) => {\r\n const id = Math.random().toString(36).slice(2, 9);\r\n setToasts((prev) => [...prev, { ...input, id }]);\r\n }, []);\r\n\r\n const dismiss = useCallback((id: string) => {\r\n setToasts((prev) => prev.filter((t) => t.id !== id));\r\n }, []);\r\n\r\n return (\r\n <ToastContext.Provider value={{ toast, dismiss }}>\r\n {children}\r\n {toasts.length > 0 && (\r\n <div className={containerStyles}>\r\n {toasts.map((t) => (\r\n <ToastItem key={t.id} data={t} onDismiss={dismiss} />\r\n ))}\r\n </div>\r\n )}\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nToastProvider.displayName = \"ToastProvider\";\r\n","import React, { useState, useEffect, useCallback, useRef, type KeyboardEvent as ReactKeyboardEvent, type ReactNode } from \"react\";\r\nimport * as Dialog from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Types ── */\r\nexport interface Command {\r\n id: string;\r\n label: string;\r\n icon?: ReactNode;\r\n shortcut?: string;\r\n group?: string;\r\n onAction: () => void;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n commands: Command[];\r\n placeholder?: string;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n emptyMessage?: string;\r\n}\r\n\r\n/* ── Styles ── */\r\nconst overlayStyles = \"fixed inset-0 z-[var(--z-modal)] bg-[var(--color-overlay)] backdrop-blur-sm\";\r\n\r\nconst contentStyles = [\r\n \"fixed top-[20%] left-1/2 -translate-x-1/2 z-[var(--z-modal)]\",\r\n \"w-full max-w-lg\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-lg)] shadow-[var(--shadow-lg)]\",\r\n \"overflow-hidden\",\r\n].join(\" \");\r\n\r\nconst inputStyles = [\r\n \"w-full bg-transparent text-[var(--color-text-primary)]\",\r\n \"px-4 py-3 text-[var(--text-base)]\",\r\n \"placeholder:text-[var(--color-text-muted)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"focus:outline-none\",\r\n].join(\" \");\r\n\r\nconst listStyles = \"max-h-72 overflow-y-auto p-2\";\r\n\r\nconst groupLabelStyles =\r\n \"px-2 py-1.5 text-[var(--text-xs)] font-medium text-[var(--color-text-muted)] uppercase tracking-wider\";\r\n\r\nconst itemStyles = [\r\n \"flex items-center gap-3 w-full px-3 py-2.5\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)] cursor-pointer\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"outline-none\",\r\n].join(\" \");\r\n\r\nconst itemActiveStyles = \"bg-[var(--color-surface-hover)] text-[var(--color-text-primary)]\";\r\n\r\nconst shortcutStyles =\r\n \"ml-auto flex items-center gap-0.5 text-[10px] text-[var(--color-text-muted)]\";\r\n\r\nconst kbdStyles =\r\n \"px-1.5 py-0.5 rounded-[3px] bg-[var(--color-surface-raised)] border border-[var(--color-border)] font-mono\";\r\n\r\nconst emptyStyles = \"py-8 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\";\r\n\r\n/* ── Component ── */\r\nexport function CommandPalette({\r\n commands,\r\n placeholder = \"Type a command or search…\",\r\n open: controlledOpen,\r\n onOpenChange,\r\n emptyMessage = \"No results found.\",\r\n}: CommandPaletteProps) {\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const listRef = useRef<HTMLDivElement>(null);\r\n\r\n const isOpen = controlledOpen ?? internalOpen;\r\n const setOpen = onOpenChange ?? setInternalOpen;\r\n\r\n // Global keyboard shortcut\r\n useEffect(() => {\r\n const handler = (e: globalThis.KeyboardEvent) => {\r\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\r\n e.preventDefault();\r\n setOpen(!isOpen);\r\n }\r\n };\r\n window.addEventListener(\"keydown\", handler);\r\n return () => window.removeEventListener(\"keydown\", handler);\r\n }, [isOpen, setOpen]);\r\n\r\n // Filter commands\r\n const filtered = commands.filter((cmd) =>\r\n cmd.label.toLowerCase().includes(search.toLowerCase())\r\n );\r\n\r\n // Group commands\r\n const groups = new Map<string, Command[]>();\r\n filtered.forEach((cmd) => {\r\n const g = cmd.group || \"\";\r\n if (!groups.has(g)) groups.set(g, []);\r\n groups.get(g)!.push(cmd);\r\n });\r\n\r\n // Flat index for keyboard nav\r\n const flatItems = filtered;\r\n\r\n const handleKeyDown = useCallback(\r\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.min(i + 1, flatItems.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((i) => Math.max(i - 1, 0));\r\n } else if (e.key === \"Enter\" && flatItems[activeIndex]) {\r\n e.preventDefault();\r\n flatItems[activeIndex].onAction();\r\n setOpen(false);\r\n setSearch(\"\");\r\n }\r\n },\r\n [activeIndex, flatItems, setOpen]\r\n );\r\n\r\n useEffect(() => {\r\n setActiveIndex(0);\r\n }, [search]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) setSearch(\"\");\r\n }, [isOpen]);\r\n\r\n let itemIndex = -1;\r\n\r\n return (\r\n <Dialog.Root open={isOpen} onOpenChange={setOpen}>\r\n <Dialog.Portal>\r\n <Dialog.Overlay className={overlayStyles} />\r\n <Dialog.Content className={contentStyles} aria-label=\"Command palette\">\r\n <div className=\"flex items-center gap-2 px-4\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--color-text-muted)\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"shrink-0\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" /><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\r\n </svg>\r\n <input\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n className={inputStyles}\r\n autoFocus\r\n />\r\n </div>\r\n <div ref={listRef} className={listStyles}>\r\n {filtered.length === 0 ? (\r\n <div className={emptyStyles}>{emptyMessage}</div>\r\n ) : (\r\n Array.from(groups.entries()).map(([group, cmds]) => (\r\n <div key={group}>\r\n {group && <div className={groupLabelStyles}>{group}</div>}\r\n {cmds.map((cmd) => {\r\n itemIndex++;\r\n const idx = itemIndex;\r\n return (\r\n <button\r\n key={cmd.id}\r\n type=\"button\"\r\n className={cn(\r\n itemStyles,\r\n idx === activeIndex && itemActiveStyles\r\n )}\r\n onClick={() => {\r\n cmd.onAction();\r\n setOpen(false);\r\n setSearch(\"\");\r\n }}\r\n onMouseEnter={() => setActiveIndex(idx)}\r\n >\r\n {cmd.icon && <span className=\"shrink-0 text-[var(--color-text-muted)]\">{cmd.icon}</span>}\r\n <span className=\"truncate\">{cmd.label}</span>\r\n {cmd.shortcut && (\r\n <span className={shortcutStyles}>\r\n {cmd.shortcut.split(\"+\").map((key, i) => (\r\n <kbd key={i} className={kbdStyles}>{key}</kbd>\r\n ))}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ))\r\n )}\r\n </div>\r\n </Dialog.Content>\r\n </Dialog.Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n\r\nCommandPalette.displayName = \"CommandPalette\";\r\n","import React, { forwardRef, useState, useMemo, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Types ── */\r\nexport interface DataTableColumn<T = any> {\r\n key: string;\r\n header: string;\r\n render?: (value: any, row: T, index: number) => ReactNode;\r\n sortable?: boolean;\r\n width?: string;\r\n align?: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport interface DataTableProps<T = any> extends HTMLAttributes<HTMLDivElement> {\r\n columns: DataTableColumn<T>[];\r\n data: T[];\r\n sortable?: boolean;\r\n onSort?: (key: string, direction: \"asc\" | \"desc\") => void;\r\n selectable?: boolean;\r\n selectedRows?: Set<number>;\r\n onSelectionChange?: (selected: Set<number>) => void;\r\n emptyMessage?: string;\r\n stickyHeader?: boolean;\r\n}\r\n\r\n/* ── Styles ── */\r\nconst wrapperStyles = \"w-full overflow-auto rounded-[var(--radius-lg)] border border-[var(--color-border)]\";\r\nconst tableStyles = \"w-full border-collapse\";\r\nconst thStyles = [\r\n \"px-4 py-3 text-left text-[var(--text-xs)] font-medium text-[var(--color-text-muted)]\",\r\n \"uppercase tracking-wider bg-[var(--color-bg-secondary)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n].join(\" \");\r\nconst tdStyles = [\r\n \"px-4 py-3 text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n \"border-b border-[var(--color-border)]\",\r\n].join(\" \");\r\nconst trHoverStyles =\r\n \"hover:bg-[var(--color-surface-hover)] transition-colors duration-[var(--transition-fast)]\";\r\nconst trSelectedStyles = \"bg-[var(--color-primary)]/5\";\r\nconst sortButtonStyles =\r\n \"inline-flex items-center gap-1 cursor-pointer hover:text-[var(--color-text-primary)] transition-colors\";\r\nconst checkboxStyles = [\r\n \"h-4 w-4 rounded-[3px] cursor-pointer appearance-none\",\r\n \"border border-[var(--color-border)] bg-[var(--color-surface)]\",\r\n \"checked:bg-[var(--color-primary)] checked:border-[var(--color-primary)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n].join(\" \");\r\nconst emptyRowStyles = \"px-4 py-12 text-center text-[var(--text-sm)] text-[var(--color-text-muted)]\";\r\n\r\n/* ── Component ── */\r\nfunction DataTableInner<T extends Record<string, any>>(\r\n {\r\n className,\r\n columns,\r\n data,\r\n sortable = false,\r\n onSort,\r\n selectable = false,\r\n selectedRows: controlledSelected,\r\n onSelectionChange,\r\n emptyMessage = \"No data available.\",\r\n stickyHeader = false,\r\n ...props\r\n }: DataTableProps<T>,\r\n ref: React.Ref<HTMLDivElement>\r\n) {\r\n const [internalSort, setInternalSort] = useState<{ key: string; dir: \"asc\" | \"desc\" } | null>(null);\r\n const [internalSelected, setInternalSelected] = useState<Set<number>>(new Set());\r\n\r\n const selected = controlledSelected ?? internalSelected;\r\n const setSelected = onSelectionChange ?? setInternalSelected;\r\n\r\n const sortedData = useMemo(() => {\r\n if (!internalSort || onSort) return data;\r\n return [...data].sort((a, b) => {\r\n const aVal = a[internalSort.key];\r\n const bVal = b[internalSort.key];\r\n const cmp = aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\r\n return internalSort.dir === \"asc\" ? cmp : -cmp;\r\n });\r\n }, [data, internalSort, onSort]);\r\n\r\n const handleSort = (key: string) => {\r\n const newDir = internalSort?.key === key && internalSort.dir === \"asc\" ? \"desc\" : \"asc\";\r\n setInternalSort({ key, dir: newDir });\r\n onSort?.(key, newDir);\r\n };\r\n\r\n const toggleRow = (i: number) => {\r\n const next = new Set(selected);\r\n if (next.has(i)) next.delete(i);\r\n else next.add(i);\r\n setSelected(next);\r\n };\r\n\r\n const toggleAll = () => {\r\n if (selected.size === data.length) setSelected(new Set());\r\n else setSelected(new Set(data.map((_, i) => i)));\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn(wrapperStyles, className)} {...props}>\r\n <table className={tableStyles}>\r\n <thead className={stickyHeader ? \"sticky top-0 z-10\" : undefined}>\r\n <tr>\r\n {selectable && (\r\n <th className={cn(thStyles, \"w-12\")}>\r\n <input\r\n type=\"checkbox\"\r\n checked={data.length > 0 && selected.size === data.length}\r\n onChange={toggleAll}\r\n className={checkboxStyles}\r\n />\r\n </th>\r\n )}\r\n {columns.map((col) => (\r\n <th\r\n key={col.key}\r\n className={cn(thStyles, col.align === \"center\" && \"text-center\", col.align === \"right\" && \"text-right\")}\r\n style={col.width ? { width: col.width } : undefined}\r\n >\r\n {(sortable || col.sortable) ? (\r\n <button type=\"button\" className={sortButtonStyles} onClick={() => handleSort(col.key)}>\r\n {col.header}\r\n <span className=\"inline-flex flex-col\">\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" className={cn(\"opacity-30\", internalSort?.key === col.key && internalSort.dir === \"asc\" && \"opacity-100\")}>\r\n <path d=\"M4 1L7 5H1L4 1Z\" fill=\"currentColor\" />\r\n </svg>\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" className={cn(\"-mt-0.5 opacity-30\", internalSort?.key === col.key && internalSort.dir === \"desc\" && \"opacity-100\")}>\r\n <path d=\"M4 7L1 3H7L4 7Z\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n </button>\r\n ) : (\r\n col.header\r\n )}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData.length === 0 ? (\r\n <tr>\r\n <td colSpan={columns.length + (selectable ? 1 : 0)} className={emptyRowStyles}>\r\n {emptyMessage}\r\n </td>\r\n </tr>\r\n ) : (\r\n sortedData.map((row, i) => (\r\n <tr\r\n key={i}\r\n className={cn(trHoverStyles, selected.has(i) && trSelectedStyles)}\r\n >\r\n {selectable && (\r\n <td className={tdStyles}>\r\n <input\r\n type=\"checkbox\"\r\n checked={selected.has(i)}\r\n onChange={() => toggleRow(i)}\r\n className={checkboxStyles}\r\n />\r\n </td>\r\n )}\r\n {columns.map((col) => (\r\n <td\r\n key={col.key}\r\n className={cn(tdStyles, col.align === \"center\" && \"text-center\", col.align === \"right\" && \"text-right\")}\r\n >\r\n {col.render\r\n ? col.render(row[col.key], row, i)\r\n : row[col.key]}\r\n </td>\r\n ))}\r\n </tr>\r\n ))\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport const DataTable = forwardRef(DataTableInner) as <T extends Record<string, any>>(\r\n props: DataTableProps<T> & { ref?: React.Ref<HTMLDivElement> }\r\n) => React.ReactElement;\r\n\r\n(DataTable as any).displayName = \"DataTable\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Styles ── */\r\nconst stepsHorizontalStyles = \"flex items-start gap-0\";\r\nconst stepsVerticalStyles = \"flex flex-col gap-0\";\r\n\r\nconst stepWrapperHorizontalStyles = \"flex items-center flex-1\";\r\nconst stepWrapperVerticalStyles = \"flex items-start gap-3\";\r\n\r\nconst stepCircleBase = [\r\n \"flex items-center justify-center shrink-0\",\r\n \"h-8 w-8 rounded-full text-[var(--text-xs)] font-medium\",\r\n \"border-2 transition-all duration-[var(--transition-base)]\",\r\n].join(\" \");\r\n\r\nconst stepCircleComplete =\r\n \"bg-[var(--color-primary)] border-[var(--color-primary)] text-[var(--color-primary-foreground)]\";\r\nconst stepCircleCurrent =\r\n \"border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-primary)]/10\";\r\nconst stepCircleUpcoming =\r\n \"border-[var(--color-border)] text-[var(--color-text-muted)] bg-[var(--color-surface)]\";\r\n\r\nconst connectorHorizontalStyles =\r\n \"flex-1 h-0.5 mx-2 transition-colors duration-[var(--transition-base)]\";\r\nconst connectorVerticalStyles =\r\n \"w-0.5 ml-[15px] min-h-[24px] transition-colors duration-[var(--transition-base)]\";\r\nconst connectorComplete = \"bg-[var(--color-primary)]\";\r\nconst connectorIncomplete = \"bg-[var(--color-border)]\";\r\n\r\nconst stepTitleStyles = \"text-[var(--text-sm)] font-medium text-[var(--color-text-primary)]\";\r\nconst stepDescriptionStyles = \"text-[var(--text-xs)] text-[var(--color-text-muted)] mt-0.5\";\r\n\r\n/* ── Types ── */\r\nexport interface StepData {\r\n title: string;\r\n description?: string;\r\n icon?: ReactNode;\r\n}\r\n\r\nexport interface StepsProps extends HTMLAttributes<HTMLDivElement> {\r\n steps: StepData[];\r\n current: number;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\n/* ── Component ── */\r\nexport const Steps = forwardRef<HTMLDivElement, StepsProps>(\r\n ({ className, steps, current, orientation = \"horizontal\", ...props }, ref) => {\r\n const isHorizontal = orientation === \"horizontal\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n isHorizontal ? stepsHorizontalStyles : stepsVerticalStyles,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {steps.map((step, i) => {\r\n const status = i < current ? \"complete\" : i === current ? \"current\" : \"upcoming\";\r\n const isLast = i === steps.length - 1;\r\n\r\n if (isHorizontal) {\r\n return (\r\n <React.Fragment key={i}>\r\n <div className=\"flex flex-col items-center gap-2 min-w-0\">\r\n <div\r\n className={cn(\r\n stepCircleBase,\r\n status === \"complete\" && stepCircleComplete,\r\n status === \"current\" && stepCircleCurrent,\r\n status === \"upcoming\" && stepCircleUpcoming\r\n )}\r\n >\r\n {status === \"complete\" ? (\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n ) : (\r\n step.icon || i + 1\r\n )}\r\n </div>\r\n <div className=\"text-center\">\r\n <p className={stepTitleStyles}>{step.title}</p>\r\n {step.description && (\r\n <p className={stepDescriptionStyles}>{step.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n {!isLast && (\r\n <div className={cn(\r\n connectorHorizontalStyles,\r\n \"mt-4\",\r\n i < current ? connectorComplete : connectorIncomplete\r\n )} />\r\n )}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n // Vertical\r\n return (\r\n <React.Fragment key={i}>\r\n <div className={stepWrapperVerticalStyles}>\r\n <div\r\n className={cn(\r\n stepCircleBase,\r\n status === \"complete\" && stepCircleComplete,\r\n status === \"current\" && stepCircleCurrent,\r\n status === \"upcoming\" && stepCircleUpcoming\r\n )}\r\n >\r\n {status === \"complete\" ? (\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n ) : (\r\n step.icon || i + 1\r\n )}\r\n </div>\r\n <div className=\"pt-1\">\r\n <p className={stepTitleStyles}>{step.title}</p>\r\n {step.description && (\r\n <p className={stepDescriptionStyles}>{step.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n {!isLast && (\r\n <div className={cn(\r\n connectorVerticalStyles,\r\n i < current ? connectorComplete : connectorIncomplete\r\n )} />\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSteps.displayName = \"Steps\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/* ── Styles ── */\r\nconst shellStyles = \"flex h-screen w-full overflow-hidden bg-[var(--color-bg)]\";\r\nconst mainStyles = \"flex-1 flex flex-col overflow-hidden\";\r\nconst contentStyles = \"flex-1 overflow-auto\";\r\n\r\n/* ── Component ── */\r\nexport interface AppShellProps extends HTMLAttributes<HTMLDivElement> {\r\n sidebar?: ReactNode;\r\n navbar?: ReactNode;\r\n}\r\n\r\nexport const AppShell = forwardRef<HTMLDivElement, AppShellProps>(\r\n ({ className, sidebar, navbar, children, ...props }, ref) => (\r\n <div ref={ref} className={cn(shellStyles, className)} {...props}>\r\n {sidebar}\r\n <div className={mainStyles}>\r\n {navbar}\r\n <main className={contentStyles}>{children}</main>\r\n </div>\r\n </div>\r\n )\r\n);\r\n\r\nAppShell.displayName = \"AppShell\";\r\n","export const pageHeaderStyles = [\r\n \"flex items-start justify-between gap-4 pb-6\",\r\n].join(\" \");\r\n\r\nexport const pageHeaderTitleStyles =\r\n \"text-xl font-semibold text-[var(--color-text-primary)] tracking-tight\";\r\n\r\nexport const pageHeaderDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] mt-1\";\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { pageHeaderStyles, pageHeaderTitleStyles, pageHeaderDescriptionStyles } from \"./page-header.styles\";\r\n\r\nexport interface PageHeaderProps extends HTMLAttributes<HTMLDivElement> {\r\n title: string;\r\n description?: string;\r\n breadcrumbs?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport const PageHeader = forwardRef<HTMLDivElement, PageHeaderProps>(\r\n ({ className, title, description, breadcrumbs, actions, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\r\n {breadcrumbs && <div className=\"mb-3\">{breadcrumbs}</div>}\r\n <div className={pageHeaderStyles}>\r\n <div className=\"min-w-0\">\r\n <h1 className={pageHeaderTitleStyles}>{title}</h1>\r\n {description && <p className={pageHeaderDescriptionStyles}>{description}</p>}\r\n </div>\r\n {actions && <div className=\"flex items-center gap-2 shrink-0\">{actions}</div>}\r\n </div>\r\n </div>\r\n )\r\n);\r\n\r\nPageHeader.displayName = \"PageHeader\";\r\n","export const navbarStyles = [\r\n \"flex items-center justify-between h-14 px-6\",\r\n \"bg-[var(--color-surface)] border-b border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n","import React, { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { navbarStyles } from \"./navbar.styles\";\r\n\r\nexport interface NavbarProps extends HTMLAttributes<HTMLElement> {\r\n leftContent?: ReactNode;\r\n centerContent?: ReactNode;\r\n rightContent?: ReactNode;\r\n}\r\n\r\nexport const Navbar = forwardRef<HTMLElement, NavbarProps>(\r\n ({ className, leftContent, centerContent, rightContent, children, ...props }, ref) => (\r\n <header ref={ref} className={cn(navbarStyles, className)} {...props}>\r\n <div className=\"flex items-center gap-3\">{leftContent}</div>\r\n <div className=\"flex-1 flex items-center justify-center\">{centerContent}</div>\r\n <div className=\"flex items-center gap-3\">{rightContent}</div>\r\n </header>\r\n )\r\n);\r\n\r\nNavbar.displayName = \"Navbar\";\r\n","export const drawerOverlayStyles = [\r\n \"fixed inset-0 z-[var(--z-overlay)]\",\r\n \"bg-[var(--color-overlay)]\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\r\n].join(\" \");\r\n\r\nexport const drawerContentBase = [\r\n \"fixed z-[var(--z-modal)] bg-[var(--color-surface)]\",\r\n \"border-[var(--color-border)]\",\r\n \"shadow-lg flex flex-col\",\r\n \"focus:outline-none\",\r\n].join(\" \");\r\n\r\nexport const drawerSides: Record<string, string> = {\r\n right: \"inset-y-0 right-0 border-l data-[state=open]:animate-in data-[state=open]:slide-in-from-right data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right\",\r\n left: \"inset-y-0 left-0 border-r data-[state=open]:animate-in data-[state=open]:slide-in-from-left data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left\",\r\n top: \"inset-x-0 top-0 border-b data-[state=open]:animate-in data-[state=open]:slide-in-from-top data-[state=closed]:animate-out data-[state=closed]:slide-out-to-top\",\r\n bottom: \"inset-x-0 bottom-0 border-t data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom\",\r\n};\r\n\r\nexport const drawerSizes: Record<string, Record<string, string>> = {\r\n right: { sm: \"w-[320px]\", md: \"w-[420px]\", lg: \"w-[560px]\", xl: \"w-[720px]\", full: \"w-screen\" },\r\n left: { sm: \"w-[320px]\", md: \"w-[420px]\", lg: \"w-[560px]\", xl: \"w-[720px]\", full: \"w-screen\" },\r\n top: { sm: \"h-[200px]\", md: \"h-[320px]\", lg: \"h-[480px]\", xl: \"h-[640px]\", full: \"h-screen\" },\r\n bottom: { sm: \"h-[200px]\", md: \"h-[320px]\", lg: \"h-[480px]\", xl: \"h-[640px]\", full: \"h-screen\" },\r\n};\r\n\r\nexport const drawerHeaderStyles = [\r\n \"flex items-center justify-between px-6 py-4\",\r\n \"border-b border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n\r\nexport const drawerTitleStyles =\r\n \"text-lg font-semibold text-[var(--color-text-primary)]\";\r\n\r\nexport const drawerDescriptionStyles =\r\n \"text-[var(--text-sm)] text-[var(--color-text-muted)] mt-1\";\r\n\r\nexport const drawerBodyStyles =\r\n \"flex-1 overflow-y-auto p-6\";\r\n\r\nexport const drawerFooterStyles = [\r\n \"flex items-center justify-end gap-3 px-6 py-4\",\r\n \"border-t border-[var(--color-border)]\",\r\n \"shrink-0\",\r\n].join(\" \");\r\n\r\nexport const drawerCloseStyles = [\r\n \"p-1.5 rounded-[var(--radius)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n","import React, { forwardRef, type ReactNode } from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n drawerOverlayStyles,\r\n drawerContentBase,\r\n drawerSides,\r\n drawerSizes,\r\n drawerHeaderStyles,\r\n drawerTitleStyles,\r\n drawerDescriptionStyles,\r\n drawerBodyStyles,\r\n drawerFooterStyles,\r\n drawerCloseStyles,\r\n} from \"./drawer.styles\";\r\n\r\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\r\nexport type DrawerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport interface DrawerProps {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: ReactNode;\r\n}\r\n\r\nexport interface DrawerContentProps {\r\n children: ReactNode;\r\n side?: DrawerSide;\r\n size?: DrawerSize;\r\n className?: string;\r\n}\r\n\r\n/* Root */\r\nexport const Drawer = ({ children, ...props }: DrawerProps) => (\r\n <DialogPrimitive.Root {...props}>{children}</DialogPrimitive.Root>\r\n);\r\n\r\n/* Trigger */\r\nexport const DrawerTrigger = DialogPrimitive.Trigger;\r\n\r\n/* Close */\r\nexport const DrawerClose = DialogPrimitive.Close;\r\n\r\n/* Content */\r\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\r\n ({ children, side = \"right\", size = \"md\", className }, ref) => (\r\n <DialogPrimitive.Portal>\r\n <DialogPrimitive.Overlay className={drawerOverlayStyles} />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n drawerContentBase,\r\n drawerSides[side],\r\n drawerSizes[side]?.[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </DialogPrimitive.Content>\r\n </DialogPrimitive.Portal>\r\n )\r\n);\r\nDrawerContent.displayName = \"DrawerContent\";\r\n\r\n/* Header */\r\nexport const DrawerHeader = ({\r\n children,\r\n className,\r\n onClose,\r\n}: {\r\n children: ReactNode;\r\n className?: string;\r\n onClose?: () => void;\r\n}) => (\r\n <div className={cn(drawerHeaderStyles, className)}>\r\n <div>{children}</div>\r\n {onClose !== undefined ? (\r\n <button type=\"button\" onClick={onClose} className={drawerCloseStyles}>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n ) : (\r\n <DialogPrimitive.Close className={drawerCloseStyles}>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </DialogPrimitive.Close>\r\n )}\r\n </div>\r\n);\r\n\r\n/* Title */\r\nexport const DrawerTitle = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <DialogPrimitive.Title className={cn(drawerTitleStyles, className)}>\r\n {children}\r\n </DialogPrimitive.Title>\r\n);\r\n\r\n/* Description */\r\nexport const DrawerDescription = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <DialogPrimitive.Description className={cn(drawerDescriptionStyles, className)}>\r\n {children}\r\n </DialogPrimitive.Description>\r\n);\r\n\r\n/* Body */\r\nexport const DrawerBody = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <div className={cn(drawerBodyStyles, className)}>{children}</div>\r\n);\r\n\r\n/* Footer */\r\nexport const DrawerFooter = ({ children, className }: { children: ReactNode; className?: string }) => (\r\n <div className={cn(drawerFooterStyles, className)}>{children}</div>\r\n);\r\n\r\nDrawer.displayName = \"Drawer\";\r\n","export const accordionStyles =\r\n \"divide-y divide-[var(--color-border)] border border-[var(--color-border)] rounded-[var(--radius-lg)] overflow-hidden\";\r\n\r\nexport const accordionItemStyles =\r\n \"bg-[var(--color-surface)]\";\r\n\r\nexport const accordionTriggerStyles = [\r\n \"flex items-center justify-between w-full\",\r\n \"px-4 py-3\",\r\n \"text-[var(--text-sm)] font-medium text-[var(--color-text-primary)]\",\r\n \"hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer select-none\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-inset\",\r\n].join(\" \");\r\n\r\nexport const accordionContentStyles = [\r\n \"px-4 pb-4 pt-0\",\r\n \"text-[var(--text-sm)] text-[var(--color-text-secondary)]\",\r\n].join(\" \");\r\n\r\nexport const accordionChevronStyles = [\r\n \"shrink-0 text-[var(--color-text-muted)]\",\r\n \"transition-transform duration-200\",\r\n].join(\" \");\r\n","import React, { useState, useCallback, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n accordionStyles,\r\n accordionItemStyles,\r\n accordionTriggerStyles,\r\n accordionContentStyles,\r\n accordionChevronStyles,\r\n} from \"./accordion.styles\";\r\n\r\nexport interface AccordionItemData {\r\n value: string;\r\n trigger: ReactNode;\r\n content: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface AccordionProps {\r\n /** Accordion items */\r\n items: AccordionItemData[];\r\n /** 'single' allows one open at a time, 'multiple' allows many */\r\n type?: \"single\" | \"multiple\";\r\n /** Default open item value(s) */\r\n defaultValue?: string | string[];\r\n /** Additional className for the root */\r\n className?: string;\r\n}\r\n\r\nexport function Accordion({\r\n items,\r\n type = \"single\",\r\n defaultValue,\r\n className,\r\n}: AccordionProps) {\r\n const [openItems, setOpenItems] = useState<Set<string>>(() => {\r\n if (!defaultValue) return new Set();\r\n return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);\r\n });\r\n\r\n const toggle = useCallback(\r\n (value: string) => {\r\n setOpenItems((prev) => {\r\n const next = new Set(prev);\r\n if (next.has(value)) {\r\n next.delete(value);\r\n } else {\r\n if (type === \"single\") {\r\n next.clear();\r\n }\r\n next.add(value);\r\n }\r\n return next;\r\n });\r\n },\r\n [type]\r\n );\r\n\r\n return (\r\n <div className={cn(accordionStyles, className)}>\r\n {items.map((item) => {\r\n const isOpen = openItems.has(item.value);\r\n return (\r\n <div key={item.value} className={accordionItemStyles}>\r\n <button\r\n type=\"button\"\r\n onClick={() => !item.disabled && toggle(item.value)}\r\n disabled={item.disabled}\r\n aria-expanded={isOpen}\r\n className={cn(\r\n accordionTriggerStyles,\r\n item.disabled && \"opacity-50 cursor-not-allowed\"\r\n )}\r\n >\r\n <span>{item.trigger}</span>\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={cn(\r\n accordionChevronStyles,\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </button>\r\n <div\r\n className=\"overflow-hidden transition-all duration-200\"\r\n style={{\r\n maxHeight: isOpen ? \"1000px\" : \"0px\",\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n >\r\n <div className={accordionContentStyles}>\r\n {item.content}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nAccordion.displayName = \"Accordion\";\r\n","export const sliderTrackStyles = [\r\n \"relative w-full rounded-full cursor-pointer\",\r\n \"bg-[var(--color-surface-raised)]\",\r\n].join(\" \");\r\n\r\nexport const sliderTrackSizes: Record<string, string> = {\r\n sm: \"h-1\",\r\n md: \"h-2\",\r\n lg: \"h-3\",\r\n};\r\n\r\nexport const sliderFillStyles =\r\n \"absolute left-0 top-0 h-full rounded-full bg-[var(--color-primary)] transition-all duration-75\";\r\n\r\nexport const sliderThumbStyles = [\r\n \"absolute top-1/2 -translate-y-1/2 -translate-x-1/2\",\r\n \"rounded-full bg-white border-2 border-[var(--color-primary)]\",\r\n \"shadow-sm cursor-grab active:cursor-grabbing\",\r\n \"transition-shadow duration-[var(--transition-fast)]\",\r\n \"hover:shadow-[0_0_0_4px_var(--color-primary)]/20\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n].join(\" \");\r\n\r\nexport const sliderThumbSizes: Record<string, string> = {\r\n sm: \"h-3.5 w-3.5\",\r\n md: \"h-5 w-5\",\r\n lg: \"h-6 w-6\",\r\n};\r\n\r\nexport const sliderLabelStyles =\r\n \"flex justify-between items-center mb-2 text-[var(--text-sm)] text-[var(--color-text-primary)]\";\r\n\r\nexport const sliderValueStyles =\r\n \"text-[var(--text-xs)] font-medium text-[var(--color-text-secondary)] tabular-nums\";\r\n","import React, { useCallback, useRef, useState, useEffect } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n sliderTrackStyles,\r\n sliderTrackSizes,\r\n sliderFillStyles,\r\n sliderThumbStyles,\r\n sliderThumbSizes,\r\n sliderLabelStyles,\r\n sliderValueStyles,\r\n} from \"./slider.styles\";\r\n\r\nexport interface SliderProps {\r\n /** Current value */\r\n value?: number;\r\n /** Callback when value changes */\r\n onChange?: (value: number) => void;\r\n /** Minimum value */\r\n min?: number;\r\n /** Maximum value */\r\n max?: number;\r\n /** Step increment */\r\n step?: number;\r\n /** Label text */\r\n label?: string;\r\n /** Show the current value */\r\n showValue?: boolean;\r\n /** Format the displayed value */\r\n formatValue?: (value: number) => string;\r\n /** Component size */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n /** Disable the slider */\r\n disabled?: boolean;\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nexport function Slider({\r\n value = 0,\r\n onChange,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n label,\r\n showValue = false,\r\n formatValue = (v) => String(v),\r\n size = \"md\",\r\n disabled = false,\r\n className,\r\n}: SliderProps) {\r\n const trackRef = useRef<HTMLDivElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n const clamp = (val: number) => Math.min(max, Math.max(min, val));\r\n const snap = (val: number) => Math.round((val - min) / step) * step + min;\r\n const percent = ((clamp(value) - min) / (max - min)) * 100;\r\n\r\n const getValueFromPosition = useCallback(\r\n (clientX: number) => {\r\n const track = trackRef.current;\r\n if (!track) return value;\r\n const rect = track.getBoundingClientRect();\r\n const fraction = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\r\n return snap(clamp(min + fraction * (max - min)));\r\n },\r\n [min, max, step, value]\r\n );\r\n\r\n const handlePointerDown = useCallback(\r\n (e: React.PointerEvent) => {\r\n if (disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n const newValue = getValueFromPosition(e.clientX);\r\n if (newValue !== value) onChange?.(newValue);\r\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\r\n },\r\n [disabled, getValueFromPosition, onChange, value]\r\n );\r\n\r\n const handlePointerMove = useCallback(\r\n (e: React.PointerEvent) => {\r\n if (!isDragging || disabled) return;\r\n const newValue = getValueFromPosition(e.clientX);\r\n if (newValue !== value) onChange?.(newValue);\r\n },\r\n [isDragging, disabled, getValueFromPosition, onChange, value]\r\n );\r\n\r\n const handlePointerUp = useCallback(() => {\r\n setIsDragging(false);\r\n }, []);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: React.KeyboardEvent) => {\r\n if (disabled) return;\r\n let newValue = value;\r\n switch (e.key) {\r\n case \"ArrowRight\":\r\n case \"ArrowUp\":\r\n newValue = clamp(value + step);\r\n break;\r\n case \"ArrowLeft\":\r\n case \"ArrowDown\":\r\n newValue = clamp(value - step);\r\n break;\r\n case \"Home\":\r\n newValue = min;\r\n break;\r\n case \"End\":\r\n newValue = max;\r\n break;\r\n default:\r\n return;\r\n }\r\n e.preventDefault();\r\n onChange?.(newValue);\r\n },\r\n [disabled, value, step, min, max, onChange]\r\n );\r\n\r\n return (\r\n <div className={cn(\"w-full\", disabled && \"opacity-50 pointer-events-none\", className)}>\r\n {(label || showValue) && (\r\n <div className={sliderLabelStyles}>\r\n {label && <span>{label}</span>}\r\n {showValue && <span className={sliderValueStyles}>{formatValue(clamp(value))}</span>}\r\n </div>\r\n )}\r\n <div\r\n ref={trackRef}\r\n className={cn(sliderTrackStyles, sliderTrackSizes[size])}\r\n onPointerDown={handlePointerDown}\r\n onPointerMove={handlePointerMove}\r\n onPointerUp={handlePointerUp}\r\n >\r\n <div\r\n className={sliderFillStyles}\r\n style={{ width: `${percent}%` }}\r\n />\r\n <div\r\n role=\"slider\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={clamp(value)}\r\n aria-label={label}\r\n className={cn(sliderThumbStyles, sliderThumbSizes[size])}\r\n style={{ left: `${percent}%` }}\r\n onKeyDown={handleKeyDown}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nSlider.displayName = \"Slider\";\r\n","import React, { type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface AvatarGroupProps {\r\n children: ReactNode;\r\n /** Maximum avatars to show before +N */\r\n max?: number;\r\n /** Size matches Avatar sizes */\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nconst sizeMap: Record<string, { dimension: string; text: string; overlap: string }> = {\r\n xs: { dimension: \"h-6 w-6\", text: \"text-[10px]\", overlap: \"-ml-1.5\" },\r\n sm: { dimension: \"h-8 w-8\", text: \"text-[var(--text-xs)]\", overlap: \"-ml-2\" },\r\n md: { dimension: \"h-10 w-10\", text: \"text-[var(--text-sm)]\", overlap: \"-ml-2.5\" },\r\n lg: { dimension: \"h-12 w-12\", text: \"text-[var(--text-sm)]\", overlap: \"-ml-3\" },\r\n xl: { dimension: \"h-16 w-16\", text: \"text-[var(--text-base)]\", overlap: \"-ml-4\" },\r\n};\r\n\r\nexport function AvatarGroup({ children, max = 5, size = \"md\", className }: AvatarGroupProps) {\r\n const childArray = React.Children.toArray(children);\r\n const visible = childArray.slice(0, max);\r\n const overflow = childArray.length - max;\r\n const s = sizeMap[size] || sizeMap.md;\r\n\r\n return (\r\n <div className={cn(\"flex items-center\", className)}>\r\n {visible.map((child, i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n i > 0 && s.overlap,\r\n \"ring-2 ring-[var(--color-bg)] rounded-full\"\r\n )}\r\n >\r\n {child}\r\n </div>\r\n ))}\r\n {overflow > 0 && (\r\n <div\r\n className={cn(\r\n s.overlap,\r\n s.dimension,\r\n s.text,\r\n \"inline-flex items-center justify-center\",\r\n \"rounded-full font-medium\",\r\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\",\r\n \"border-2 border-[var(--color-bg)]\",\r\n )}\r\n >\r\n +{overflow}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nAvatarGroup.displayName = \"AvatarGroup\";\r\n","import React, { type ReactNode } from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface ConfirmDialogProps {\r\n /** Whether the dialog is open */\r\n open?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Title text */\r\n title: string;\r\n /** Description text */\r\n description?: string;\r\n /** Confirm button text */\r\n confirmText?: string;\r\n /** Cancel button text */\r\n cancelText?: string;\r\n /** Variant for the confirm button */\r\n variant?: \"danger\" | \"primary\";\r\n /** Callback when confirmed */\r\n onConfirm?: () => void;\r\n /** Callback when cancelled */\r\n onCancel?: () => void;\r\n /** Trigger element (if controlled via trigger instead of open/onOpenChange) */\r\n trigger?: ReactNode;\r\n /** Whether action is in progress */\r\n loading?: boolean;\r\n}\r\n\r\nconst overlayStyles = [\r\n \"fixed inset-0 z-[var(--z-overlay)]\",\r\n \"bg-[var(--color-overlay)]\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\r\n].join(\" \");\r\n\r\nconst contentStyles = [\r\n \"fixed left-1/2 top-1/2 z-[var(--z-modal)]\",\r\n \"-translate-x-1/2 -translate-y-1/2\",\r\n \"w-full max-w-md p-6\",\r\n \"rounded-[var(--radius-lg)]\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n \"focus:outline-none\",\r\n].join(\" \");\r\n\r\nconst titleStyles = \"text-lg font-semibold text-[var(--color-text-primary)]\";\r\n\r\nconst descriptionStyles =\r\n \"mt-2 text-[var(--text-sm)] text-[var(--color-text-muted)] leading-relaxed\";\r\n\r\nconst actionsStyles = \"mt-6 flex items-center justify-end gap-3\";\r\n\r\nconst cancelBtnStyles = [\r\n \"inline-flex items-center justify-center h-9 px-4\",\r\n \"text-[var(--text-sm)] font-medium\",\r\n \"rounded-[var(--radius)]\",\r\n \"bg-transparent border border-[var(--color-border)]\",\r\n \"text-[var(--color-text-secondary)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nconst confirmBtnBase = [\r\n \"inline-flex items-center justify-center h-9 px-4\",\r\n \"text-[var(--text-sm)] font-medium\",\r\n \"rounded-[var(--radius)]\",\r\n \"text-white\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nconst confirmBtnVariants: Record<string, string> = {\r\n danger: \"bg-[var(--color-danger)] hover:bg-[var(--color-danger)]/90\",\r\n primary: \"bg-[var(--color-primary)] hover:bg-[var(--color-primary-hover)]\",\r\n};\r\n\r\nexport function ConfirmDialog({\r\n open,\r\n onOpenChange,\r\n title,\r\n description,\r\n confirmText = \"Confirm\",\r\n cancelText = \"Cancel\",\r\n variant = \"danger\",\r\n onConfirm,\r\n onCancel,\r\n trigger,\r\n loading = false,\r\n}: ConfirmDialogProps) {\r\n return (\r\n <AlertDialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\r\n {trigger && (\r\n <AlertDialogPrimitive.Trigger asChild>\r\n {trigger}\r\n </AlertDialogPrimitive.Trigger>\r\n )}\r\n <AlertDialogPrimitive.Portal>\r\n <AlertDialogPrimitive.Overlay className={overlayStyles} />\r\n <AlertDialogPrimitive.Content className={contentStyles}>\r\n <AlertDialogPrimitive.Title className={titleStyles}>\r\n {title}\r\n </AlertDialogPrimitive.Title>\r\n {description && (\r\n <AlertDialogPrimitive.Description className={descriptionStyles}>\r\n {description}\r\n </AlertDialogPrimitive.Description>\r\n )}\r\n <div className={actionsStyles}>\r\n <AlertDialogPrimitive.Cancel\r\n className={cancelBtnStyles}\r\n onClick={onCancel}\r\n >\r\n {cancelText}\r\n </AlertDialogPrimitive.Cancel>\r\n <AlertDialogPrimitive.Action\r\n className={cn(confirmBtnBase, confirmBtnVariants[variant])}\r\n onClick={onConfirm}\r\n disabled={loading}\r\n >\r\n {loading && (\r\n <svg className=\"animate-spin h-4 w-4 mr-2\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\r\n </svg>\r\n )}\r\n {confirmText}\r\n </AlertDialogPrimitive.Action>\r\n </div>\r\n </AlertDialogPrimitive.Content>\r\n </AlertDialogPrimitive.Portal>\r\n </AlertDialogPrimitive.Root>\r\n );\r\n}\r\n\r\nConfirmDialog.displayName = \"ConfirmDialog\";\r\n","import { cva } from \"class-variance-authority\";\r\n\r\nexport const toggleVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center gap-2\",\r\n \"font-medium text-[var(--color-text-secondary)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring-color)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n \"cursor-pointer select-none\",\r\n \"data-[state=on]:bg-[var(--color-surface-raised)] data-[state=on]:text-[var(--color-text-primary)]\",\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline: \"border border-[var(--color-border)] bg-transparent data-[state=on]:bg-[var(--color-surface-hover)]\",\r\n },\r\n size: {\r\n sm: \"h-8 px-2 text-[var(--text-xs)]\",\r\n md: \"h-9 px-3 text-[var(--text-sm)]\",\r\n lg: \"h-10 px-4 text-[var(--text-sm)]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport const toggleGroupStyles =\r\n \"inline-flex items-center gap-1 rounded-[var(--radius)] bg-[var(--color-surface)] border border-[var(--color-border)] p-1\";\r\n","import React, { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\r\nimport type { VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { toggleVariants, toggleGroupStyles } from \"./toggle.styles\";\r\n\r\n/* ─── Toggle ─── */\r\n\r\nexport interface ToggleProps\r\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\">,\r\n VariantProps<typeof toggleVariants> {\r\n /** Whether the toggle is pressed */\r\n pressed?: boolean;\r\n /** Callback when pressed state changes */\r\n onPressedChange?: (pressed: boolean) => void;\r\n}\r\n\r\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\r\n ({ className, variant, size, pressed, onPressedChange, children, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={pressed}\r\n data-state={pressed ? \"on\" : \"off\"}\r\n onClick={() => onPressedChange?.(!pressed)}\r\n className={cn(toggleVariants({ variant, size }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n )\r\n);\r\nToggle.displayName = \"Toggle\";\r\n\r\n/* ─── ToggleGroup ─── */\r\n\r\nexport interface ToggleGroupProps {\r\n /** Type: single allows one active, multiple allows many */\r\n type?: \"single\" | \"multiple\";\r\n /** Current value(s) */\r\n value?: string | string[];\r\n /** Callback when value changes */\r\n onValueChange?: (value: string | string[]) => void;\r\n /** Toggle variant */\r\n variant?: VariantProps<typeof toggleVariants>[\"variant\"];\r\n /** Toggle size */\r\n size?: VariantProps<typeof toggleVariants>[\"size\"];\r\n /** Items: value + label/icon */\r\n children: ReactNode;\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nexport interface ToggleGroupItemProps\r\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"value\">,\r\n VariantProps<typeof toggleVariants> {\r\n value: string;\r\n}\r\n\r\nexport function ToggleGroup({\r\n type = \"single\",\r\n value,\r\n onValueChange,\r\n variant,\r\n size,\r\n children,\r\n className,\r\n}: ToggleGroupProps) {\r\n const selected = Array.isArray(value) ? value : value ? [value] : [];\r\n\r\n const handleToggle = (itemValue: string) => {\r\n if (type === \"single\") {\r\n onValueChange?.(itemValue === (value as string) ? \"\" : itemValue);\r\n } else {\r\n const next = selected.includes(itemValue)\r\n ? selected.filter((v) => v !== itemValue)\r\n : [...selected, itemValue];\r\n onValueChange?.(next);\r\n }\r\n };\r\n\r\n return (\r\n <div role=\"group\" className={cn(toggleGroupStyles, className)}>\r\n {React.Children.map(children, (child) => {\r\n if (!React.isValidElement<ToggleGroupItemProps>(child)) return child;\r\n const itemValue = child.props.value;\r\n const isPressed = selected.includes(itemValue);\r\n return React.cloneElement(child, {\r\n ...child.props,\r\n variant: child.props.variant ?? variant,\r\n size: child.props.size ?? size,\r\n \"data-state\": isPressed ? \"on\" : \"off\",\r\n \"aria-checked\": isPressed,\r\n onClick: () => handleToggle(itemValue),\r\n } as any);\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport const ToggleGroupItem = forwardRef<HTMLButtonElement, ToggleGroupItemProps>(\r\n ({ className, variant, size, children, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n className={cn(toggleVariants({ variant, size }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n )\r\n);\r\nToggleGroupItem.displayName = \"ToggleGroupItem\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface SpinnerProps {\r\n /** Spinner size */\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nconst sizeMap: Record<string, string> = {\r\n xs: \"h-3 w-3\",\r\n sm: \"h-4 w-4\",\r\n md: \"h-6 w-6\",\r\n lg: \"h-8 w-8\",\r\n xl: \"h-12 w-12\",\r\n};\r\n\r\nexport function Spinner({ size = \"md\", className }: SpinnerProps) {\r\n return (\r\n <svg\r\n className={cn(\"animate-spin text-[var(--color-primary)]\", sizeMap[size], className)}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n role=\"status\"\r\n aria-label=\"Loading\"\r\n >\r\n <circle\r\n className=\"opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nSpinner.displayName = \"Spinner\";\r\n","import React, { useState, type ReactNode } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface CollapsibleProps {\r\n /** Whether the collapsible is open */\r\n open?: boolean;\r\n /** Default open state (uncontrolled) */\r\n defaultOpen?: boolean;\r\n /** Callback when open changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Additional className */\r\n className?: string;\r\n children: ReactNode;\r\n}\r\n\r\nexport interface CollapsibleTriggerProps {\r\n children: ReactNode;\r\n className?: string;\r\n asChild?: boolean;\r\n}\r\n\r\nexport interface CollapsibleContentProps {\r\n children: ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Collapsible({\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n className,\r\n children,\r\n}: CollapsibleProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n const next = !isOpen;\r\n if (!isControlled) setInternalOpen(next);\r\n onOpenChange?.(next);\r\n };\r\n\r\n return (\r\n <div className={className} data-state={isOpen ? \"open\" : \"closed\"}>\r\n {React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) return child;\r\n if ((child.type as any).displayName === \"CollapsibleTrigger\") {\r\n return React.cloneElement(child as React.ReactElement<any>, { onClick: toggle });\r\n }\r\n if ((child.type as any).displayName === \"CollapsibleContent\") {\r\n return React.cloneElement(child as React.ReactElement<any>, { \"data-open\": isOpen });\r\n }\r\n return child;\r\n })}\r\n </div>\r\n );\r\n}\r\nCollapsible.displayName = \"Collapsible\";\r\n\r\nexport function CollapsibleTrigger({ children, className, onClick, ...props }: CollapsibleTriggerProps & { onClick?: () => void }) {\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={onClick}\r\n className={cn(\"cursor-pointer\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\nCollapsibleTrigger.displayName = \"CollapsibleTrigger\";\r\n\r\nexport function CollapsibleContent({ children, className, ...props }: CollapsibleContentProps & { \"data-open\"?: boolean }) {\r\n const isOpen = (props as any)[\"data-open\"];\r\n return (\r\n <div\r\n className={cn(\r\n \"overflow-hidden transition-all duration-200\",\r\n className\r\n )}\r\n style={{\r\n maxHeight: isOpen ? \"2000px\" : \"0px\",\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\nCollapsibleContent.displayName = \"CollapsibleContent\";\r\n","import React, { type ReactNode } from \"react\";\r\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface HoverCardProps {\r\n children: ReactNode;\r\n openDelay?: number;\r\n closeDelay?: number;\r\n}\r\n\r\nexport interface HoverCardContentProps {\r\n children: ReactNode;\r\n className?: string;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n sideOffset?: number;\r\n}\r\n\r\nconst contentStyles = [\r\n \"z-[var(--z-popover)]\",\r\n \"w-64 rounded-[var(--radius-lg)] p-4\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"shadow-lg\",\r\n \"animate-in fade-in-0 zoom-in-95\",\r\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2\",\r\n \"data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2\",\r\n \"data-[side=top]:slide-in-from-bottom-2\",\r\n].join(\" \");\r\n\r\nexport const HoverCard = ({ children, openDelay = 200, closeDelay = 100 }: HoverCardProps) => (\r\n <HoverCardPrimitive.Root openDelay={openDelay} closeDelay={closeDelay}>\r\n {children}\r\n </HoverCardPrimitive.Root>\r\n);\r\n\r\nexport const HoverCardTrigger = HoverCardPrimitive.Trigger;\r\n\r\nexport const HoverCardContent = ({\r\n children,\r\n className,\r\n side = \"bottom\",\r\n align = \"center\",\r\n sideOffset = 4,\r\n}: HoverCardContentProps) => (\r\n <HoverCardPrimitive.Portal>\r\n <HoverCardPrimitive.Content\r\n side={side}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(contentStyles, className)}\r\n >\r\n {children}\r\n </HoverCardPrimitive.Content>\r\n </HoverCardPrimitive.Portal>\r\n);\r\n\r\nHoverCard.displayName = \"HoverCard\";\r\nHoverCardContent.displayName = \"HoverCardContent\";\r\n","export const calendarStyles = [\r\n \"inline-block p-3\",\r\n \"bg-[var(--color-surface)] border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius-lg)]\",\r\n].join(\" \");\r\n\r\nexport const calendarHeaderStyles =\r\n \"flex items-center justify-between mb-2\";\r\n\r\nexport const calendarNavBtnStyles = [\r\n \"inline-flex items-center justify-center h-7 w-7\",\r\n \"rounded-[var(--radius)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nexport const calendarTitleStyles =\r\n \"text-[var(--text-sm)] font-semibold text-[var(--color-text-primary)]\";\r\n\r\nexport const calendarGridStyles =\r\n \"w-full border-collapse\";\r\n\r\nexport const calendarWeekdayStyles =\r\n \"h-8 w-8 text-center text-[var(--text-xs)] font-medium text-[var(--color-text-muted)]\";\r\n\r\nexport const calendarDayBaseStyles = [\r\n \"h-8 w-8 text-center text-[var(--text-sm)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n \"cursor-pointer select-none\",\r\n].join(\" \");\r\n\r\nexport const calendarDayDefaultStyles =\r\n \"text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]\";\r\n\r\nexport const calendarDaySelectedStyles =\r\n \"bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary-hover)]\";\r\n\r\nexport const calendarDayTodayStyles =\r\n \"font-bold text-[var(--color-primary)]\";\r\n\r\nexport const calendarDayOutsideStyles =\r\n \"text-[var(--color-text-muted)] opacity-50\";\r\n\r\nexport const calendarDayDisabledStyles =\r\n \"text-[var(--color-text-muted)] opacity-30 pointer-events-none\";\r\n","import React, { useState, useMemo, useCallback } from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n calendarStyles,\r\n calendarHeaderStyles,\r\n calendarNavBtnStyles,\r\n calendarTitleStyles,\r\n calendarGridStyles,\r\n calendarWeekdayStyles,\r\n calendarDayBaseStyles,\r\n calendarDayDefaultStyles,\r\n calendarDaySelectedStyles,\r\n calendarDayTodayStyles,\r\n calendarDayOutsideStyles,\r\n calendarDayDisabledStyles,\r\n} from \"./calendar.styles\";\r\n\r\nexport interface CalendarProps {\r\n /** Currently selected date */\r\n value?: Date;\r\n /** Callback when a date is selected */\r\n onChange?: (date: Date) => void;\r\n /** Minimum selectable date */\r\n minDate?: Date;\r\n /** Maximum selectable date */\r\n maxDate?: Date;\r\n /** Locale for month/day names */\r\n locale?: string;\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nconst WEEKDAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\r\n\r\nfunction getDaysInMonth(year: number, month: number): number {\r\n return new Date(year, month + 1, 0).getDate();\r\n}\r\n\r\nfunction getFirstDayOfMonth(year: number, month: number): number {\r\n return new Date(year, month, 1).getDay();\r\n}\r\n\r\nfunction isSameDay(a: Date, b: Date): boolean {\r\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n}\r\n\r\nexport function Calendar({\r\n value,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n locale = \"en-US\",\r\n className,\r\n}: CalendarProps) {\r\n const today = new Date();\r\n const [viewYear, setViewYear] = useState(value?.getFullYear() ?? today.getFullYear());\r\n const [viewMonth, setViewMonth] = useState(value?.getMonth() ?? today.getMonth());\r\n\r\n const monthLabel = useMemo(() => {\r\n const date = new Date(viewYear, viewMonth);\r\n return date.toLocaleDateString(locale, { month: \"long\", year: \"numeric\" });\r\n }, [viewYear, viewMonth, locale]);\r\n\r\n const prevMonth = useCallback(() => {\r\n if (viewMonth === 0) {\r\n setViewMonth(11);\r\n setViewYear((y) => y - 1);\r\n } else {\r\n setViewMonth((m) => m - 1);\r\n }\r\n }, [viewMonth]);\r\n\r\n const nextMonth = useCallback(() => {\r\n if (viewMonth === 11) {\r\n setViewMonth(0);\r\n setViewYear((y) => y + 1);\r\n } else {\r\n setViewMonth((m) => m + 1);\r\n }\r\n }, [viewMonth]);\r\n\r\n const days = useMemo(() => {\r\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\r\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\r\n const daysInPrevMonth = getDaysInMonth(viewYear, viewMonth - 1);\r\n\r\n const cells: Array<{ date: Date; isOutside: boolean }> = [];\r\n\r\n // Previous month's trailing days\r\n for (let i = firstDay - 1; i >= 0; i--) {\r\n cells.push({\r\n date: new Date(viewYear, viewMonth - 1, daysInPrevMonth - i),\r\n isOutside: true,\r\n });\r\n }\r\n\r\n // Current month\r\n for (let d = 1; d <= daysInMonth; d++) {\r\n cells.push({\r\n date: new Date(viewYear, viewMonth, d),\r\n isOutside: false,\r\n });\r\n }\r\n\r\n // Next month's leading days\r\n const remaining = 42 - cells.length; // 6 rows × 7\r\n for (let d = 1; d <= remaining; d++) {\r\n cells.push({\r\n date: new Date(viewYear, viewMonth + 1, d),\r\n isOutside: true,\r\n });\r\n }\r\n\r\n return cells;\r\n }, [viewYear, viewMonth]);\r\n\r\n const isDisabled = (date: Date) => {\r\n if (minDate && date < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return true;\r\n if (maxDate && date > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return true;\r\n return false;\r\n };\r\n\r\n const weeks: Array<typeof days> = [];\r\n for (let i = 0; i < days.length; i += 7) {\r\n weeks.push(days.slice(i, i + 7));\r\n }\r\n\r\n return (\r\n <div className={cn(calendarStyles, className)}>\r\n <div className={calendarHeaderStyles}>\r\n <button type=\"button\" onClick={prevMonth} className={calendarNavBtnStyles}>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n </button>\r\n <span className={calendarTitleStyles}>{monthLabel}</span>\r\n <button type=\"button\" onClick={nextMonth} className={calendarNavBtnStyles}>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <polyline points=\"9 18 15 12 9 6\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <table className={calendarGridStyles}>\r\n <thead>\r\n <tr>\r\n {WEEKDAYS.map((d) => (\r\n <th key={d} className={calendarWeekdayStyles}>{d}</th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {weeks.map((week, wi) => (\r\n <tr key={wi}>\r\n {week.map(({ date, isOutside }, di) => {\r\n const selected = value && isSameDay(date, value);\r\n const isToday = isSameDay(date, today);\r\n const disabled = isDisabled(date);\r\n\r\n return (\r\n <td\r\n key={di}\r\n onClick={() => !disabled && !isOutside && onChange?.(date)}\r\n className={cn(\r\n calendarDayBaseStyles,\r\n isOutside && calendarDayOutsideStyles,\r\n disabled && calendarDayDisabledStyles,\r\n !isOutside && !disabled && !selected && calendarDayDefaultStyles,\r\n selected && calendarDaySelectedStyles,\r\n isToday && !selected && calendarDayTodayStyles,\r\n )}\r\n >\r\n {date.getDate()}\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nCalendar.displayName = \"Calendar\";\r\n","import React, { useState, useMemo } from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Calendar, type CalendarProps } from \"../calendar/calendar\";\r\n\r\nexport interface DatePickerProps extends Omit<CalendarProps, \"className\"> {\r\n /** Placeholder text */\r\n placeholder?: string;\r\n /** Format the display value */\r\n formatDate?: (date: Date) => string;\r\n /** Label */\r\n label?: string;\r\n /** Error message */\r\n error?: string;\r\n /** Clearable */\r\n clearable?: boolean;\r\n /** Disable */\r\n disabled?: boolean;\r\n /** Additional className */\r\n className?: string;\r\n}\r\n\r\nconst triggerStyles = [\r\n \"flex items-center justify-between w-full\",\r\n \"h-10 px-3 text-[var(--text-sm)]\",\r\n \"bg-[var(--color-surface)] text-[var(--color-text-primary)]\",\r\n \"border border-[var(--color-border)]\",\r\n \"rounded-[var(--radius)]\",\r\n \"transition-all duration-[var(--transition-fast)]\",\r\n \"hover:border-[var(--color-border-hover)]\",\r\n \"focus:outline-none focus:border-[var(--color-primary)] focus:ring-1 focus:ring-[var(--color-primary)]\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"cursor-pointer\",\r\n].join(\" \");\r\n\r\nconst placeholderStyles = \"text-[var(--color-text-muted)]\";\r\n\r\nconst labelStyles =\r\n \"block text-[var(--text-sm)] font-medium text-[var(--color-text-secondary)] mb-1.5\";\r\n\r\nconst errorTextStyles =\r\n \"mt-1.5 text-[var(--text-xs)] text-[var(--color-danger)]\";\r\n\r\nconst clearBtnStyles = [\r\n \"shrink-0 p-0.5 rounded-[var(--radius-sm)]\",\r\n \"text-[var(--color-text-muted)]\",\r\n \"hover:text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)]\",\r\n \"transition-colors duration-[var(--transition-fast)]\",\r\n].join(\" \");\r\n\r\nconst defaultFormat = (date: Date) =>\r\n date.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" });\r\n\r\nexport function DatePicker({\r\n value,\r\n onChange,\r\n placeholder = \"Pick a date...\",\r\n formatDate = defaultFormat,\r\n label,\r\n error,\r\n clearable = false,\r\n disabled = false,\r\n minDate,\r\n maxDate,\r\n locale,\r\n className,\r\n}: DatePickerProps) {\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleSelect = (date: Date) => {\r\n onChange?.(date);\r\n setOpen(false);\r\n };\r\n\r\n const handleClear = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onChange?.(undefined as any);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {label && <label className={labelStyles}>{label}</label>}\r\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\r\n <PopoverPrimitive.Trigger asChild>\r\n <button\r\n type=\"button\"\r\n disabled={disabled}\r\n className={cn(triggerStyles, error && \"border-[var(--color-danger)] focus:ring-[var(--color-danger)]\")}\r\n >\r\n <span className=\"flex items-center gap-2\">\r\n <svg className=\"shrink-0 text-[var(--color-text-muted)]\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\r\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\r\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\r\n </svg>\r\n {value ? (\r\n <span>{formatDate(value)}</span>\r\n ) : (\r\n <span className={placeholderStyles}>{placeholder}</span>\r\n )}\r\n </span>\r\n <div className=\"flex items-center gap-1 shrink-0\">\r\n {clearable && value && (\r\n <span role=\"button\" tabIndex={-1} onClick={handleClear} className={clearBtnStyles}>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </span>\r\n )}\r\n </div>\r\n </button>\r\n </PopoverPrimitive.Trigger>\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n sideOffset={4}\r\n className=\"z-[var(--z-popover)] animate-in fade-in-0 zoom-in-95\"\r\n onOpenAutoFocus={(e) => e.preventDefault()}\r\n >\r\n <Calendar\r\n value={value}\r\n onChange={handleSelect}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n />\r\n </PopoverPrimitive.Content>\r\n </PopoverPrimitive.Portal>\r\n </PopoverPrimitive.Root>\r\n {error && <p className={errorTextStyles}>{error}</p>}\r\n </div>\r\n );\r\n}\r\n\r\nDatePicker.displayName = \"DatePicker\";\r\n"]}