react-18-ui-library 0.1.0
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/README.md +202 -0
- package/dist/components/actions/CopyButton/CopyButton.d.ts +14 -0
- package/dist/components/actions/CopyButton/index.d.ts +2 -0
- package/dist/components/display/Avatar/Avatar.d.ts +21 -0
- package/dist/components/display/Avatar/index.d.ts +2 -0
- package/dist/components/display/Badge/Badge.d.ts +20 -0
- package/dist/components/display/Badge/index.d.ts +2 -0
- package/dist/components/display/Box/Box.d.ts +18 -0
- package/dist/components/display/Box/index.d.ts +2 -0
- package/dist/components/display/Card/Card.d.ts +11 -0
- package/dist/components/display/Card/index.d.ts +2 -0
- package/dist/components/display/Collapsible/Collapsible.d.ts +15 -0
- package/dist/components/display/Collapsible/index.d.ts +2 -0
- package/dist/components/display/DataTable/DataTable.d.ts +46 -0
- package/dist/components/display/EmptyState/EmptyState.d.ts +10 -0
- package/dist/components/display/EmptyState/index.d.ts +2 -0
- package/dist/components/display/Icon/Icon.d.ts +9 -0
- package/dist/components/display/Icon/index.d.ts +2 -0
- package/dist/components/display/Image/Image.d.ts +15 -0
- package/dist/components/display/Image/index.d.ts +2 -0
- package/dist/components/display/List/List.d.ts +24 -0
- package/dist/components/display/List/index.d.ts +2 -0
- package/dist/components/display/MarkdownReader/MarkdownReader.d.ts +7 -0
- package/dist/components/display/SVG/SVG.d.ts +18 -0
- package/dist/components/display/SVG/index.d.ts +2 -0
- package/dist/components/display/Stat/Stat.d.ts +13 -0
- package/dist/components/display/Stat/index.d.ts +2 -0
- package/dist/components/display/Table/Table.d.ts +31 -0
- package/dist/components/display/Table/index.d.ts +2 -0
- package/dist/components/display/Tag/Tag.d.ts +16 -0
- package/dist/components/display/Tag/index.d.ts +2 -0
- package/dist/components/display/Timeline/Timeline.d.ts +15 -0
- package/dist/components/display/Timeline/index.d.ts +2 -0
- package/dist/components/display/TreeView/TreeView.d.ts +23 -0
- package/dist/components/display/TreeView/index.d.ts +2 -0
- package/dist/components/feedback/Alert/Alert.d.ts +15 -0
- package/dist/components/feedback/Alert/index.d.ts +2 -0
- package/dist/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +18 -0
- package/dist/components/feedback/ErrorBoundary/index.d.ts +2 -0
- package/dist/components/feedback/FullScreenLoader/FullScreenLoader.d.ts +27 -0
- package/dist/components/feedback/ProgressBar/ProgressBar.d.ts +15 -0
- package/dist/components/feedback/ProgressBar/index.d.ts +2 -0
- package/dist/components/feedback/Skeleton/Skeleton.d.ts +16 -0
- package/dist/components/feedback/Skeleton/index.d.ts +2 -0
- package/dist/components/feedback/Spinner/Spinner.d.ts +9 -0
- package/dist/components/feedback/Spinner/index.d.ts +2 -0
- package/dist/components/feedback/Toast/Toast.d.ts +7 -0
- package/dist/components/feedback/Toast/index.d.ts +2 -0
- package/dist/components/forms/FileUpload/FileUpload.d.ts +24 -0
- package/dist/components/forms/FileUpload/index.d.ts +2 -0
- package/dist/components/forms/FormField/FormField.d.ts +12 -0
- package/dist/components/forms/FormField/index.d.ts +2 -0
- package/dist/components/forms/JSONForm/FormValidator.d.ts +157 -0
- package/dist/components/forms/JSONForm/JSONForm.d.ts +53 -0
- package/dist/components/forms/JSONForm/index.d.ts +4 -0
- package/dist/components/inputs/Button/Button.d.ts +15 -0
- package/dist/components/inputs/Button/index.d.ts +2 -0
- package/dist/components/inputs/Checkbox/Checkbox.d.ts +14 -0
- package/dist/components/inputs/Checkbox/index.d.ts +2 -0
- package/dist/components/inputs/ChipSelect/ChipSelect.d.ts +24 -0
- package/dist/components/inputs/DatePicker/DatePicker.d.ts +39 -0
- package/dist/components/inputs/DatePicker/index.d.ts +2 -0
- package/dist/components/inputs/IconButton/IconButton.d.ts +14 -0
- package/dist/components/inputs/IconButton/index.d.ts +2 -0
- package/dist/components/inputs/MultiSelect/MultiSelect.d.ts +35 -0
- package/dist/components/inputs/MultiSelect/index.d.ts +2 -0
- package/dist/components/inputs/NumberInput/NumberInput.d.ts +23 -0
- package/dist/components/inputs/NumberInput/index.d.ts +2 -0
- package/dist/components/inputs/OTPInput/OTPInput.d.ts +18 -0
- package/dist/components/inputs/OTPInput/index.d.ts +2 -0
- package/dist/components/inputs/PhoneInput/PhoneInput.d.ts +35 -0
- package/dist/components/inputs/PhoneInput/index.d.ts +2 -0
- package/dist/components/inputs/Radio/Radio.d.ts +20 -0
- package/dist/components/inputs/Radio/index.d.ts +2 -0
- package/dist/components/inputs/Rating/Rating.d.ts +19 -0
- package/dist/components/inputs/Rating/index.d.ts +2 -0
- package/dist/components/inputs/SearchSelect/SearchSelect.d.ts +39 -0
- package/dist/components/inputs/Select/Select.d.ts +25 -0
- package/dist/components/inputs/Select/index.d.ts +2 -0
- package/dist/components/inputs/Slider/Slider.d.ts +20 -0
- package/dist/components/inputs/Slider/index.d.ts +2 -0
- package/dist/components/inputs/Switch/Switch.d.ts +14 -0
- package/dist/components/inputs/Switch/index.d.ts +2 -0
- package/dist/components/inputs/TagInput/TagInput.d.ts +17 -0
- package/dist/components/inputs/TextArea/TextArea.d.ts +18 -0
- package/dist/components/inputs/TextArea/index.d.ts +2 -0
- package/dist/components/inputs/TextField/TextField.d.ts +21 -0
- package/dist/components/inputs/TextField/index.d.ts +2 -0
- package/dist/components/layout/AppShell/AppShell.d.ts +12 -0
- package/dist/components/layout/AppShell/index.d.ts +2 -0
- package/dist/components/layout/Container/Container.d.ts +8 -0
- package/dist/components/layout/Container/index.d.ts +2 -0
- package/dist/components/layout/Divider/Divider.d.ts +10 -0
- package/dist/components/layout/Divider/index.d.ts +2 -0
- package/dist/components/layout/Grid/Grid.d.ts +13 -0
- package/dist/components/layout/Grid/index.d.ts +2 -0
- package/dist/components/layout/Navbar/Navbar.d.ts +19 -0
- package/dist/components/layout/Navbar/index.d.ts +2 -0
- package/dist/components/layout/Sidebar/Sidebar.d.ts +24 -0
- package/dist/components/layout/Sidebar/index.d.ts +2 -0
- package/dist/components/layout/Spacer/Spacer.d.ts +6 -0
- package/dist/components/layout/Spacer/index.d.ts +2 -0
- package/dist/components/layout/Stack/Stack.d.ts +14 -0
- package/dist/components/layout/Stack/index.d.ts +2 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts +13 -0
- package/dist/components/navigation/Breadcrumb/index.d.ts +2 -0
- package/dist/components/navigation/Pagination/Pagination.d.ts +10 -0
- package/dist/components/navigation/Pagination/index.d.ts +2 -0
- package/dist/components/navigation/StepIndicator/StepIndicator.d.ts +15 -0
- package/dist/components/navigation/StepIndicator/index.d.ts +2 -0
- package/dist/components/navigation/Tabs/Tabs.d.ts +25 -0
- package/dist/components/navigation/Tabs/index.d.ts +2 -0
- package/dist/components/overlay/CommandPalette/CommandPalette.d.ts +35 -0
- package/dist/components/overlay/CommandPalette/index.d.ts +2 -0
- package/dist/components/overlay/ConfirmDialog/ConfirmDialog.d.ts +20 -0
- package/dist/components/overlay/ContextMenu/ContextMenu.d.ts +19 -0
- package/dist/components/overlay/ContextMenu/index.d.ts +2 -0
- package/dist/components/overlay/Drawer/Drawer.d.ts +18 -0
- package/dist/components/overlay/Drawer/index.d.ts +2 -0
- package/dist/components/overlay/Modal/Modal.d.ts +17 -0
- package/dist/components/overlay/Modal/index.d.ts +2 -0
- package/dist/components/overlay/Popover/Popover.d.ts +15 -0
- package/dist/components/overlay/Popover/index.d.ts +2 -0
- package/dist/components/overlay/Tooltip/Tooltip.d.ts +13 -0
- package/dist/components/overlay/Tooltip/index.d.ts +2 -0
- package/dist/components/typography/Code/Code.d.ts +11 -0
- package/dist/components/typography/Code/index.d.ts +2 -0
- package/dist/components/typography/Heading/Heading.d.ts +12 -0
- package/dist/components/typography/Heading/index.d.ts +2 -0
- package/dist/components/typography/Kbd/Kbd.d.ts +8 -0
- package/dist/components/typography/Kbd/index.d.ts +2 -0
- package/dist/components/typography/Label/Label.d.ts +8 -0
- package/dist/components/typography/Label/index.d.ts +2 -0
- package/dist/components/typography/Link/Link.d.ts +9 -0
- package/dist/components/typography/Link/index.d.ts +2 -0
- package/dist/components/typography/Text/Text.d.ts +16 -0
- package/dist/components/typography/Text/index.d.ts +2 -0
- package/dist/hooks/useClickOutside.d.ts +2 -0
- package/dist/hooks/useClipboard.d.ts +11 -0
- package/dist/hooks/useDebounce.d.ts +1 -0
- package/dist/hooks/useIntersectionObserver.d.ts +5 -0
- package/dist/hooks/useKeyboard.d.ts +9 -0
- package/dist/hooks/useLocalStorage.d.ts +1 -0
- package/dist/hooks/useMediaQuery.d.ts +1 -0
- package/dist/hooks/useTheme.d.ts +4 -0
- package/dist/hooks/useToast.d.ts +16 -0
- package/dist/hooks/useWindowSize.d.ts +8 -0
- package/dist/index.cjs.js +3639 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +1587 -0
- package/dist/index.esm.js +3512 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/theme/ThemeProvider.d.ts +59 -0
- package/dist/utils/cn.d.ts +2 -0
- package/package.json +112 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/theme/ThemeProvider.tsx","../src/hooks/useTheme.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useClickOutside.ts","../src/hooks/useDebounce.ts","../src/hooks/useToast.ts","../src/hooks/useLocalStorage.ts","../src/hooks/useClipboard.ts","../src/hooks/useWindowSize.ts","../src/hooks/useIntersectionObserver.ts","../src/hooks/useKeyboard.ts","../src/utils/cn.ts","../src/components/layout/Navbar/Navbar.tsx","../src/components/layout/Sidebar/Sidebar.tsx","../src/components/layout/AppShell/AppShell.tsx","../src/components/layout/Container/Container.tsx","../src/components/layout/Stack/Stack.tsx","../src/components/layout/Grid/Grid.tsx","../src/components/layout/Divider/Divider.tsx","../src/components/layout/Spacer/Spacer.tsx","../src/components/navigation/Breadcrumb/Breadcrumb.tsx","../src/components/navigation/Tabs/Tabs.tsx","../src/components/navigation/Pagination/Pagination.tsx","../src/components/navigation/StepIndicator/StepIndicator.tsx","../src/components/inputs/Button/Button.tsx","../src/components/inputs/IconButton/IconButton.tsx","../src/components/inputs/TextField/TextField.tsx","../src/components/inputs/TextArea/TextArea.tsx","../src/components/inputs/Select/Select.tsx","../src/components/inputs/Checkbox/Checkbox.tsx","../src/components/inputs/Radio/Radio.tsx","../src/components/inputs/Switch/Switch.tsx","../src/components/inputs/SearchSelect/SearchSelect.tsx","../src/components/inputs/ChipSelect/ChipSelect.tsx","../src/components/inputs/TagInput/TagInput.tsx","../src/components/inputs/Slider/Slider.tsx","../src/components/inputs/NumberInput/NumberInput.tsx","../src/components/inputs/PhoneInput/PhoneInput.tsx","../src/components/inputs/OTPInput/OTPInput.tsx","../src/components/inputs/Rating/Rating.tsx","../src/components/inputs/MultiSelect/MultiSelect.tsx","../src/components/inputs/DatePicker/DatePicker.tsx","../src/components/forms/FormField/FormField.tsx","../src/components/forms/JSONForm/JSONForm.tsx","../src/components/forms/JSONForm/FormValidator.ts","../src/components/forms/FileUpload/FileUpload.tsx","../src/components/display/Card/Card.tsx","../src/components/display/Box/Box.tsx","../src/components/display/Image/Image.tsx","../src/components/display/Avatar/Avatar.tsx","../src/components/display/Badge/Badge.tsx","../src/components/display/Tag/Tag.tsx","../src/components/display/Icon/Icon.tsx","../src/components/display/SVG/SVG.tsx","../src/components/display/Table/Table.tsx","../src/components/display/DataTable/DataTable.tsx","../src/components/display/List/List.tsx","../src/components/display/Timeline/Timeline.tsx","../src/components/display/Stat/Stat.tsx","../src/components/display/EmptyState/EmptyState.tsx","../src/components/display/MarkdownReader/MarkdownReader.tsx","../src/components/display/Collapsible/Collapsible.tsx","../src/components/display/TreeView/TreeView.tsx","../src/components/feedback/Alert/Alert.tsx","../src/components/feedback/Toast/Toast.tsx","../src/components/feedback/Spinner/Spinner.tsx","../src/components/feedback/Skeleton/Skeleton.tsx","../src/components/feedback/ProgressBar/ProgressBar.tsx","../src/components/feedback/ErrorBoundary/ErrorBoundary.tsx","../src/components/feedback/FullScreenLoader/FullScreenLoader.tsx","../src/components/overlay/Modal/Modal.tsx","../src/components/overlay/Drawer/Drawer.tsx","../src/components/overlay/Tooltip/Tooltip.tsx","../src/components/overlay/Popover/Popover.tsx","../src/components/overlay/ContextMenu/ContextMenu.tsx","../src/components/overlay/ConfirmDialog/ConfirmDialog.tsx","../src/components/typography/Kbd/Kbd.tsx","../src/components/overlay/CommandPalette/CommandPalette.tsx","../src/components/typography/Heading/Heading.tsx","../src/components/typography/Text/Text.tsx","../src/components/typography/Label/Label.tsx","../src/components/typography/Code/Code.tsx","../src/components/typography/Link/Link.tsx","../src/components/actions/CopyButton/CopyButton.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, type ReactNode } from 'react'\nimport './defaultTokens.css'\n\nexport interface ThemeTokens {\n colorPrimary?: string\n colorPrimaryHover?: string\n colorPrimaryForeground?: string\n colorSecondary?: string\n colorSecondaryHover?: string\n colorSecondaryForeground?: string\n colorBackground?: string\n colorSurface?: string\n colorSurfaceHover?: string\n colorBorder?: string\n colorBorderFocus?: string\n colorText?: string\n colorTextMuted?: string\n colorTextDisabled?: string\n colorError?: string\n colorErrorBg?: string\n colorSuccess?: string\n colorSuccessBg?: string\n colorWarning?: string\n colorWarningBg?: string\n colorInfo?: string\n colorInfoBg?: string\n colorOverlay?: string\n colorNavbar?: string\n colorSidebar?: string\n colorSidebarText?: string\n colorSidebarActive?: string\n colorSidebarActiveBg?: string\n radiusSm?: string\n radiusMd?: string\n radiusLg?: string\n radiusXl?: string\n fontFamilyBase?: string\n fontFamilyMono?: string\n shadowSm?: string\n shadowMd?: string\n shadowLg?: string\n shadowXl?: string\n transitionFast?: string\n transitionSpeed?: string\n transitionSlow?: string\n navbarHeight?: string\n sidebarWidth?: string\n sidebarCollapsedWidth?: string\n}\n\nconst TOKEN_MAP: Record<keyof ThemeTokens, string> = {\n colorPrimary: '--color-primary',\n colorPrimaryHover: '--color-primary-hover',\n colorPrimaryForeground: '--color-primary-foreground',\n colorSecondary: '--color-secondary',\n colorSecondaryHover: '--color-secondary-hover',\n colorSecondaryForeground: '--color-secondary-foreground',\n colorBackground: '--color-background',\n colorSurface: '--color-surface',\n colorSurfaceHover: '--color-surface-hover',\n colorBorder: '--color-border',\n colorBorderFocus: '--color-border-focus',\n colorText: '--color-text',\n colorTextMuted: '--color-text-muted',\n colorTextDisabled: '--color-text-disabled',\n colorError: '--color-error',\n colorErrorBg: '--color-error-bg',\n colorSuccess: '--color-success',\n colorSuccessBg: '--color-success-bg',\n colorWarning: '--color-warning',\n colorWarningBg: '--color-warning-bg',\n colorInfo: '--color-info',\n colorInfoBg: '--color-info-bg',\n colorOverlay: '--color-overlay',\n colorNavbar: '--color-navbar',\n colorSidebar: '--color-sidebar',\n colorSidebarText: '--color-sidebar-text',\n colorSidebarActive: '--color-sidebar-active',\n colorSidebarActiveBg: '--color-sidebar-active-bg',\n radiusSm: '--radius-sm',\n radiusMd: '--radius-md',\n radiusLg: '--radius-lg',\n radiusXl: '--radius-xl',\n fontFamilyBase: '--font-family-base',\n fontFamilyMono: '--font-family-mono',\n shadowSm: '--shadow-sm',\n shadowMd: '--shadow-md',\n shadowLg: '--shadow-lg',\n shadowXl: '--shadow-xl',\n transitionFast: '--transition-fast',\n transitionSpeed: '--transition-speed',\n transitionSlow: '--transition-slow',\n navbarHeight: '--navbar-height',\n sidebarWidth: '--sidebar-width',\n sidebarCollapsedWidth: '--sidebar-collapsed-width',\n}\n\ninterface ThemeContextValue {\n tokens: ThemeTokens\n setToken: (key: keyof ThemeTokens, value: string) => void\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({\n tokens: {},\n setToken: () => undefined,\n})\n\nexport interface ThemeProviderProps {\n tokens?: ThemeTokens\n children: ReactNode\n}\n\nexport function ThemeProvider({ tokens = {}, children }: ThemeProviderProps) {\n useEffect(() => {\n const root = document.documentElement\n Object.entries(tokens).forEach(([key, value]) => {\n if (value !== undefined) {\n const cssVar = TOKEN_MAP[key as keyof ThemeTokens]\n if (cssVar) root.style.setProperty(cssVar, value)\n }\n })\n }, [tokens])\n\n const setToken = (key: keyof ThemeTokens, value: string) => {\n const cssVar = TOKEN_MAP[key]\n if (cssVar) document.documentElement.style.setProperty(cssVar, value)\n }\n\n return (\n <ThemeContext.Provider value={{ tokens, setToken }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\nexport function useThemeContext() {\n return useContext(ThemeContext)\n}\n","import { useCallback } from 'react'\n\nexport function useTheme() {\n const getToken = useCallback((token: string): string => {\n if (typeof window === 'undefined') return ''\n return getComputedStyle(document.documentElement).getPropertyValue(token).trim()\n }, [])\n\n const setToken = useCallback((token: string, value: string) => {\n if (typeof window === 'undefined') return\n document.documentElement.style.setProperty(token, value)\n }, [])\n\n return { getToken, setToken }\n}\n","import { useState, useEffect } from 'react'\n\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === 'undefined') return false\n return window.matchMedia(query).matches\n })\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n const mediaQuery = window.matchMedia(query)\n const handler = (e: MediaQueryListEvent) => setMatches(e.matches)\n mediaQuery.addEventListener('change', handler)\n setMatches(mediaQuery.matches)\n return () => mediaQuery.removeEventListener('change', handler)\n }, [query])\n\n return matches\n}\n","import { useEffect, type RefObject } from 'react'\n\nexport function useClickOutside<T extends HTMLElement>(\n ref: RefObject<T>,\n handler: (event: MouseEvent | TouchEvent) => void,\n enabled = true\n) {\n useEffect(() => {\n if (!enabled) return\n const listener = (event: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(event.target as Node)) return\n handler(event)\n }\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler, enabled])\n}\n","import { useState, useEffect } from 'react'\n\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay)\n return () => clearTimeout(timer)\n }, [value, delay])\n\n return debouncedValue\n}\n","import { useState, useCallback } from 'react'\n\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error'\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n\nexport interface Toast {\n id: string\n title?: string\n description?: string\n variant?: ToastVariant\n duration?: number\n}\n\nexport interface UseToastReturn {\n toasts: Toast[]\n toast: (options: Omit<Toast, 'id'>) => string\n dismiss: (id: string) => void\n dismissAll: () => void\n}\n\nlet toastCounter = 0\n\nexport function useToast(): UseToastReturn {\n const [toasts, setToasts] = useState<Toast[]>([])\n\n const toast = useCallback((options: Omit<Toast, 'id'>): string => {\n const id = `toast-${++toastCounter}`\n const newToast: Toast = { id, duration: 5000, variant: 'info', ...options }\n setToasts((prev) => [...prev, newToast])\n\n if (newToast.duration && newToast.duration > 0) {\n setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id))\n }, newToast.duration)\n }\n\n return id\n }, [])\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id))\n }, [])\n\n const dismissAll = useCallback(() => {\n setToasts([])\n }, [])\n\n return { toasts, toast, dismiss, dismissAll }\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nexport function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n const [storedValue, setStoredValue] = useState<T>(() => {\n try {\n const item = window.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n } catch {\n return initialValue\n }\n })\n\n const setValue = useCallback((value: T | ((prev: T) => T)) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue) : value\n setStoredValue(valueToStore)\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n } catch {\n // ignore write errors\n }\n }, [key, storedValue])\n\n const removeValue = useCallback(() => {\n try {\n window.localStorage.removeItem(key)\n setStoredValue(initialValue)\n } catch {\n // ignore\n }\n }, [key, initialValue])\n\n useEffect(() => {\n const handler = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue) as T)\n } catch {\n // ignore\n }\n }\n }\n window.addEventListener('storage', handler)\n return () => window.removeEventListener('storage', handler)\n }, [key])\n\n return [storedValue, setValue, removeValue]\n}\n","import { useState, useCallback } from 'react'\n\nexport interface UseClipboardOptions {\n timeout?: number\n onSuccess?: (value: string) => void\n onError?: (error: Error) => void\n}\n\nexport interface UseClipboardReturn {\n copied: boolean\n copy: (value: string) => Promise<void>\n reset: () => void\n}\n\nexport function useClipboard(options: UseClipboardOptions = {}): UseClipboardReturn {\n const { timeout = 2000, onSuccess, onError } = options\n const [copied, setCopied] = useState(false)\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null)\n\n const reset = useCallback(() => {\n setCopied(false)\n if (timeoutId) clearTimeout(timeoutId)\n }, [timeoutId])\n\n const copy = useCallback(async (value: string) => {\n try {\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(value)\n } else {\n const el = document.createElement('textarea')\n el.value = value\n el.style.position = 'fixed'\n el.style.opacity = '0'\n document.body.appendChild(el)\n el.select()\n document.execCommand('copy')\n document.body.removeChild(el)\n }\n setCopied(true)\n onSuccess?.(value)\n const id = setTimeout(() => setCopied(false), timeout)\n setTimeoutId(id)\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to copy')\n onError?.(error)\n }\n }, [timeout, onSuccess, onError])\n\n return { copied, copy, reset }\n}\n","import { useState, useEffect } from 'react'\n\nexport interface WindowSize {\n width: number\n height: number\n isMobile: boolean\n isTablet: boolean\n isDesktop: boolean\n}\n\nexport function useWindowSize(): WindowSize {\n const [size, setSize] = useState<WindowSize>(() => {\n if (typeof window === 'undefined') {\n return { width: 0, height: 0, isMobile: false, isTablet: false, isDesktop: true }\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: window.innerWidth < 768,\n isTablet: window.innerWidth >= 768 && window.innerWidth < 1024,\n isDesktop: window.innerWidth >= 1024,\n }\n })\n\n useEffect(() => {\n const handler = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: window.innerWidth < 768,\n isTablet: window.innerWidth >= 768 && window.innerWidth < 1024,\n isDesktop: window.innerWidth >= 1024,\n })\n }\n window.addEventListener('resize', handler)\n return () => window.removeEventListener('resize', handler)\n }, [])\n\n return size\n}\n","import { useState, useEffect, useRef, RefObject } from 'react'\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean\n}\n\nexport function useIntersectionObserver<T extends Element>(\n options: UseIntersectionObserverOptions = {}\n): [RefObject<T>, boolean, IntersectionObserverEntry | null] {\n const { freezeOnceVisible = false, ...observerOptions } = options\n const ref = useRef<T>(null)\n const [entry, setEntry] = useState<IntersectionObserverEntry | null>(null)\n\n const isVisible = entry?.isIntersecting ?? false\n const frozen = isVisible && freezeOnceVisible\n\n useEffect(() => {\n const el = ref.current\n if (!el || frozen) return\n\n const observer = new IntersectionObserver(([e]) => setEntry(e), observerOptions)\n observer.observe(el)\n return () => observer.disconnect()\n }, [frozen, observerOptions.root, observerOptions.rootMargin, observerOptions.threshold])\n\n return [ref, isVisible, entry]\n}\n","import { useEffect, useCallback } from 'react'\n\nexport type KeyboardModifier = 'ctrl' | 'meta' | 'shift' | 'alt'\n\nexport interface KeyboardShortcut {\n key: string\n modifiers?: KeyboardModifier[]\n handler: (event: KeyboardEvent) => void\n enabled?: boolean\n preventDefault?: boolean\n}\n\nexport function useKeyboard(shortcuts: KeyboardShortcut | KeyboardShortcut[]) {\n const shortcutList = Array.isArray(shortcuts) ? shortcuts : [shortcuts]\n\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n for (const shortcut of shortcutList) {\n if (shortcut.enabled === false) continue\n\n const keyMatch = e.key.toLowerCase() === shortcut.key.toLowerCase()\n const modifiers = shortcut.modifiers ?? []\n\n const ctrlMatch = modifiers.includes('ctrl') ? e.ctrlKey : !e.ctrlKey || modifiers.length === 0\n const metaMatch = modifiers.includes('meta') ? e.metaKey : !e.metaKey || modifiers.length === 0\n const shiftMatch = modifiers.includes('shift') ? e.shiftKey : !e.shiftKey\n const altMatch = modifiers.includes('alt') ? e.altKey : !e.altKey\n\n const modMatch = modifiers.every((mod) => {\n if (mod === 'ctrl') return e.ctrlKey\n if (mod === 'meta') return e.metaKey\n if (mod === 'shift') return e.shiftKey\n if (mod === 'alt') return e.altKey\n return false\n })\n\n const noExtraModifiers =\n (e.ctrlKey === modifiers.includes('ctrl')) &&\n (e.metaKey === modifiers.includes('meta')) &&\n (e.shiftKey === modifiers.includes('shift')) &&\n (e.altKey === modifiers.includes('alt'))\n\n if (keyMatch && modMatch && noExtraModifiers) {\n if (shortcut.preventDefault !== false) e.preventDefault()\n shortcut.handler(e)\n }\n }\n }, [shortcutList])\n\n useEffect(() => {\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [handleKeyDown])\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import React, { useState } from 'react'\nimport { Menu, X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface NavbarLink {\n label: string\n href?: string\n onClick?: () => void\n active?: boolean\n icon?: React.ReactNode\n}\n\nexport interface NavbarProps {\n logo?: React.ReactNode\n links?: NavbarLink[]\n actions?: React.ReactNode\n sticky?: boolean\n fixed?: boolean\n bordered?: boolean\n className?: string\n onMenuToggle?: (open: boolean) => void\n}\n\nexport function Navbar({\n logo,\n links = [],\n actions,\n sticky = false,\n fixed = false,\n bordered = true,\n className,\n onMenuToggle,\n}: NavbarProps) {\n const [mobileOpen, setMobileOpen] = useState(false)\n\n const handleMenuToggle = () => {\n const next = !mobileOpen\n setMobileOpen(next)\n onMenuToggle?.(next)\n }\n\n return (\n <header\n className={cn(\n 'w-full bg-navbar font-base',\n sticky && 'sticky top-0',\n fixed && 'fixed top-0 left-0 right-0',\n bordered && 'border-b border-border',\n 'z-navbar',\n className\n )}\n style={{ height: 'var(--navbar-height)' }}\n >\n <div className=\"flex items-center justify-between h-full px-4 md:px-6\">\n {/* Logo */}\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\n\n {/* Desktop Links */}\n {links.length > 0 && (\n <nav className=\"hidden md:flex items-center gap-1 ml-6\">\n {links.map((link, i) => (\n <a\n key={i}\n href={link.href}\n onClick={link.onClick}\n className={cn(\n 'flex items-center gap-1.5 px-3 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer',\n link.active\n ? 'bg-primary text-primary-foreground'\n : 'text-text-muted hover:text-text hover:bg-surface-hover'\n )}\n >\n {link.icon && <span className=\"flex-shrink-0\">{link.icon}</span>}\n {link.label}\n </a>\n ))}\n </nav>\n )}\n\n {/* Spacer */}\n <div className=\"flex-1\" />\n\n {/* Actions */}\n {actions && (\n <div className=\"hidden md:flex items-center gap-2\">{actions}</div>\n )}\n\n {/* Mobile hamburger */}\n <button\n type=\"button\"\n className=\"md:hidden p-2 rounded-md text-text-muted hover:text-text hover:bg-surface-hover transition-colors\"\n onClick={handleMenuToggle}\n aria-label=\"Toggle menu\"\n >\n {mobileOpen ? <X size={20} /> : <Menu size={20} />}\n </button>\n </div>\n\n {/* Mobile Menu */}\n {mobileOpen && (\n <div className=\"md:hidden border-t border-border bg-navbar px-4 pb-4\">\n <nav className=\"flex flex-col gap-1 mt-2\">\n {links.map((link, i) => (\n <a\n key={i}\n href={link.href}\n onClick={() => {\n link.onClick?.()\n setMobileOpen(false)\n }}\n className={cn(\n 'flex items-center gap-1.5 px-3 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer',\n link.active\n ? 'bg-primary text-primary-foreground'\n : 'text-text-muted hover:text-text hover:bg-surface-hover'\n )}\n >\n {link.icon && <span className=\"flex-shrink-0\">{link.icon}</span>}\n {link.label}\n </a>\n ))}\n </nav>\n {actions && <div className=\"flex items-center gap-2 mt-3\">{actions}</div>}\n </div>\n )}\n </header>\n )\n}\n","import React, { useState } from 'react'\nimport { ChevronLeft, ChevronRight, ChevronDown } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface SidebarItem {\n id: string\n label: string\n icon?: React.ReactNode\n href?: string\n onClick?: () => void\n active?: boolean\n badge?: string | number\n children?: SidebarItem[]\n}\n\nexport interface SidebarProps {\n items?: SidebarItem[]\n collapsed?: boolean\n defaultCollapsed?: boolean\n onCollapsedChange?: (collapsed: boolean) => void\n header?: React.ReactNode\n footer?: React.ReactNode\n overlay?: boolean\n open?: boolean\n onClose?: () => void\n className?: string\n}\n\nfunction SidebarItemComponent({\n item,\n collapsed,\n depth = 0,\n}: {\n item: SidebarItem\n collapsed: boolean\n depth?: number\n}) {\n const [expanded, setExpanded] = useState(false)\n const hasChildren = item.children && item.children.length > 0\n\n const handleClick = () => {\n if (hasChildren) setExpanded((v) => !v)\n item.onClick?.()\n }\n\n return (\n <li>\n <a\n href={item.href}\n onClick={handleClick}\n title={collapsed ? item.label : undefined}\n className={cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md cursor-pointer transition-colors text-sm',\n 'text-sidebar-text hover:bg-sidebar-active-bg hover:text-white',\n item.active && 'bg-sidebar-active-bg text-white',\n depth > 0 && 'ml-4',\n collapsed && 'justify-center px-2'\n )}\n >\n {item.icon && (\n <span className=\"flex-shrink-0 w-5 h-5 flex items-center justify-center\">\n {item.icon}\n </span>\n )}\n {!collapsed && (\n <>\n <span className=\"flex-1 truncate\">{item.label}</span>\n {item.badge !== undefined && (\n <span className=\"ml-auto text-xs bg-primary text-primary-foreground rounded-full px-1.5 py-0.5 min-w-[1.25rem] text-center\">\n {item.badge}\n </span>\n )}\n {hasChildren && (\n <span className=\"ml-auto\">\n {expanded ? <ChevronDown size={14} /> : <ChevronRight size={14} />}\n </span>\n )}\n </>\n )}\n </a>\n {hasChildren && expanded && !collapsed && (\n <ul className=\"mt-1 space-y-1\">\n {item.children!.map((child) => (\n <SidebarItemComponent\n key={child.id}\n item={child}\n collapsed={collapsed}\n depth={depth + 1}\n />\n ))}\n </ul>\n )}\n </li>\n )\n}\n\nexport function Sidebar({\n items = [],\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n header,\n footer,\n overlay = false,\n open = true,\n onClose,\n className,\n}: SidebarProps) {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed)\n const collapsed = controlledCollapsed ?? internalCollapsed\n\n const toggleCollapsed = () => {\n const next = !collapsed\n setInternalCollapsed(next)\n onCollapsedChange?.(next)\n }\n\n return (\n <>\n {overlay && open && (\n <div\n className=\"fixed inset-0 bg-overlay md:hidden\"\n style={{ zIndex: 'calc(var(--z-sidebar) - 1)' }}\n onClick={onClose}\n />\n )}\n <aside\n className={cn(\n 'flex flex-col h-full bg-sidebar transition-all duration-300',\n collapsed\n ? 'w-[var(--sidebar-collapsed-width)]'\n : 'w-[var(--sidebar-width)]',\n overlay && 'fixed top-0 left-0 bottom-0',\n overlay && !open && '-translate-x-full',\n 'z-sidebar',\n className\n )}\n >\n {/* Header */}\n {header && (\n <div className={cn('flex-shrink-0 p-4', collapsed && 'px-2')}>\n {header}\n </div>\n )}\n\n {/* Nav Items */}\n <nav className=\"flex-1 overflow-y-auto py-2 px-2\">\n <ul className=\"space-y-1\">\n {items.map((item) => (\n <SidebarItemComponent\n key={item.id}\n item={item}\n collapsed={collapsed}\n />\n ))}\n </ul>\n </nav>\n\n {/* Footer */}\n {footer && (\n <div className={cn('flex-shrink-0 p-4 border-t border-border/20', collapsed && 'px-2')}>\n {footer}\n </div>\n )}\n\n {/* Collapse Toggle */}\n <button\n type=\"button\"\n onClick={toggleCollapsed}\n className=\"flex-shrink-0 flex items-center justify-center h-10 border-t border-border/20 text-sidebar-text hover:text-white hover:bg-sidebar-active-bg transition-colors\"\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n >\n {collapsed ? <ChevronRight size={16} /> : <ChevronLeft size={16} />}\n </button>\n </aside>\n </>\n )\n}\n","import React, { useState } from 'react'\nimport { cn } from '../../../utils/cn'\nimport { Navbar, type NavbarProps } from '../Navbar/Navbar'\nimport { Sidebar, type SidebarProps } from '../Sidebar/Sidebar'\n\nexport interface AppShellProps {\n navbar?: NavbarProps\n sidebar?: SidebarProps\n children: React.ReactNode\n defaultSidebarCollapsed?: boolean\n className?: string\n contentClassName?: string\n}\n\nexport function AppShell({\n navbar,\n sidebar,\n children,\n defaultSidebarCollapsed = false,\n className,\n contentClassName,\n}: AppShellProps) {\n const [sidebarCollapsed, setSidebarCollapsed] = useState(defaultSidebarCollapsed)\n const [mobileSidebarOpen, setMobileSidebarOpen] = useState(false)\n\n return (\n <div className={cn('flex flex-col h-screen bg-background', className)}>\n {/* Navbar */}\n {navbar && (\n <Navbar\n {...navbar}\n sticky\n onMenuToggle={(open) => setMobileSidebarOpen(open)}\n />\n )}\n\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Sidebar — desktop */}\n {sidebar && (\n <>\n <div className=\"hidden md:flex flex-shrink-0\">\n <Sidebar\n {...sidebar}\n collapsed={sidebarCollapsed}\n onCollapsedChange={setSidebarCollapsed}\n />\n </div>\n {/* Sidebar — mobile overlay */}\n <div className=\"md:hidden\">\n <Sidebar\n {...sidebar}\n overlay\n open={mobileSidebarOpen}\n onClose={() => setMobileSidebarOpen(false)}\n />\n </div>\n </>\n )}\n\n {/* Main content */}\n <main\n className={cn(\n 'flex-1 overflow-auto bg-background',\n contentClassName\n )}\n >\n {children}\n </main>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: ContainerSize\n centered?: boolean\n padded?: boolean\n}\n\nconst sizeClasses: Record<ContainerSize, string> = {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n full: 'max-w-full',\n}\n\nexport function Container({\n size = 'xl',\n centered = true,\n padded = true,\n className,\n children,\n ...props\n}: ContainerProps) {\n return (\n <div\n className={cn(\n 'w-full',\n sizeClasses[size],\n centered && 'mx-auto',\n padded && 'px-4 md:px-6 lg:px-8',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type StackDirection = 'row' | 'col'\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline'\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\nexport type StackGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: StackDirection\n align?: StackAlign\n justify?: StackJustify\n gap?: StackGap\n wrap?: boolean\n inline?: boolean\n}\n\nconst gapClasses: Record<StackGap, string> = {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n}\n\nconst alignClasses: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n}\n\nconst justifyClasses: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nexport function Stack({\n direction = 'col',\n align = 'stretch',\n justify = 'start',\n gap = 'md',\n wrap = false,\n inline = false,\n className,\n children,\n ...props\n}: StackProps) {\n return (\n <div\n className={cn(\n inline ? 'inline-flex' : 'flex',\n direction === 'row' ? 'flex-row' : 'flex-col',\n alignClasses[align],\n justifyClasses[justify],\n gapClasses[gap],\n wrap && 'flex-wrap',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\nexport type GridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n cols?: GridCols\n smCols?: GridCols\n mdCols?: GridCols\n lgCols?: GridCols\n gap?: GridGap\n autoFill?: boolean\n minColWidth?: string\n}\n\nconst colClasses: Record<GridCols, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 7: 'grid-cols-7',\n 8: 'grid-cols-8',\n 9: 'grid-cols-9',\n 10: 'grid-cols-10',\n 11: 'grid-cols-11',\n 12: 'grid-cols-12',\n}\n\nconst smColClasses: Record<GridCols, string> = {\n 1: 'sm:grid-cols-1', 2: 'sm:grid-cols-2', 3: 'sm:grid-cols-3',\n 4: 'sm:grid-cols-4', 5: 'sm:grid-cols-5', 6: 'sm:grid-cols-6',\n 7: 'sm:grid-cols-7', 8: 'sm:grid-cols-8', 9: 'sm:grid-cols-9',\n 10: 'sm:grid-cols-10', 11: 'sm:grid-cols-11', 12: 'sm:grid-cols-12',\n}\n\nconst mdColClasses: Record<GridCols, string> = {\n 1: 'md:grid-cols-1', 2: 'md:grid-cols-2', 3: 'md:grid-cols-3',\n 4: 'md:grid-cols-4', 5: 'md:grid-cols-5', 6: 'md:grid-cols-6',\n 7: 'md:grid-cols-7', 8: 'md:grid-cols-8', 9: 'md:grid-cols-9',\n 10: 'md:grid-cols-10', 11: 'md:grid-cols-11', 12: 'md:grid-cols-12',\n}\n\nconst lgColClasses: Record<GridCols, string> = {\n 1: 'lg:grid-cols-1', 2: 'lg:grid-cols-2', 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4', 5: 'lg:grid-cols-5', 6: 'lg:grid-cols-6',\n 7: 'lg:grid-cols-7', 8: 'lg:grid-cols-8', 9: 'lg:grid-cols-9',\n 10: 'lg:grid-cols-10', 11: 'lg:grid-cols-11', 12: 'lg:grid-cols-12',\n}\n\nconst gapClasses: Record<GridGap, string> = {\n none: 'gap-0', xs: 'gap-1', sm: 'gap-2', md: 'gap-4', lg: 'gap-6', xl: 'gap-8',\n}\n\nexport function Grid({\n cols = 1,\n smCols,\n mdCols,\n lgCols,\n gap = 'md',\n autoFill = false,\n minColWidth = '200px',\n className,\n style,\n children,\n ...props\n}: GridProps) {\n return (\n <div\n className={cn(\n 'grid',\n !autoFill && colClasses[cols],\n !autoFill && smCols && smColClasses[smCols],\n !autoFill && mdCols && mdColClasses[mdCols],\n !autoFill && lgCols && lgColClasses[lgCols],\n gapClasses[gap],\n className\n )}\n style={autoFill ? { gridTemplateColumns: `repeat(auto-fill, minmax(${minColWidth}, 1fr))`, ...style } : style}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical'\n label?: React.ReactNode\n labelPosition?: 'left' | 'center' | 'right'\n className?: string\n style?: React.CSSProperties\n id?: string\n}\n\nexport function Divider({\n orientation = 'horizontal',\n label,\n labelPosition = 'center',\n className,\n style,\n id,\n}: DividerProps) {\n if (orientation === 'vertical') {\n return (\n <div\n className={cn('inline-block self-stretch w-px bg-border mx-2', className)}\n style={style}\n id={id}\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n )\n }\n\n if (label) {\n return (\n <div\n className={cn(\n 'flex items-center gap-3 w-full my-2',\n labelPosition === 'left' && 'flex-row',\n labelPosition === 'right' && 'flex-row-reverse',\n className\n )}\n style={style}\n id={id}\n role=\"separator\"\n >\n {labelPosition !== 'left' && <div className=\"flex-1 h-px bg-border\" />}\n <span className=\"text-xs text-text-muted whitespace-nowrap px-1\">{label}</span>\n {labelPosition !== 'right' && <div className=\"flex-1 h-px bg-border\" />}\n </div>\n )\n }\n\n return (\n <hr\n className={cn('border-0 border-t border-border my-2 w-full', className)}\n style={style}\n id={id}\n role=\"separator\"\n />\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface SpacerProps {\n size?: number | string\n axis?: 'horizontal' | 'vertical' | 'both'\n className?: string\n}\n\nexport function Spacer({ size = 4, axis = 'vertical', className }: SpacerProps) {\n const sizeValue = typeof size === 'number' ? `${size * 0.25}rem` : size\n\n return (\n <span\n className={cn('block', className)}\n style={{\n width: axis === 'horizontal' || axis === 'both' ? sizeValue : undefined,\n height: axis === 'vertical' || axis === 'both' ? sizeValue : undefined,\n minWidth: axis === 'horizontal' || axis === 'both' ? sizeValue : undefined,\n minHeight: axis === 'vertical' || axis === 'both' ? sizeValue : undefined,\n }}\n aria-hidden=\"true\"\n />\n )\n}\n","import React from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n onClick?: () => void\n}\n\nexport interface BreadcrumbProps {\n items: BreadcrumbItem[]\n separator?: React.ReactNode\n maxItems?: number\n className?: string\n}\n\nexport function Breadcrumb({\n items,\n separator = <ChevronRight size={14} />,\n maxItems,\n className,\n}: BreadcrumbProps) {\n let displayItems = items\n let truncated = false\n\n if (maxItems && items.length > maxItems) {\n truncated = true\n displayItems = [\n items[0],\n { label: '...', href: undefined },\n ...items.slice(-(maxItems - 2)),\n ]\n }\n\n return (\n <nav aria-label=\"Breadcrumb\" className={cn('flex items-center', className)}>\n <ol className=\"flex items-center gap-1 flex-wrap\">\n {displayItems.map((item, i) => {\n const isLast = i === displayItems.length - 1\n const isEllipsis = truncated && item.label === '...'\n\n return (\n <li key={i} className=\"flex items-center gap-1\">\n {i > 0 && (\n <span className=\"text-text-muted flex items-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n {isLast || isEllipsis ? (\n <span\n className={cn(\n 'text-sm',\n isLast ? 'text-text font-medium' : 'text-text-muted'\n )}\n aria-current={isLast ? 'page' : undefined}\n >\n {item.label}\n </span>\n ) : (\n <a\n href={item.href}\n onClick={item.onClick}\n className=\"text-sm text-text-muted hover:text-text transition-colors cursor-pointer\"\n >\n {item.label}\n </a>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n","import React from 'react'\nimport * as RadixTabs from '@radix-ui/react-tabs'\nimport { cn } from '../../../utils/cn'\n\nexport type TabsVariant = 'underline' | 'pill' | 'card'\n\nexport interface TabItem {\n value: string\n label: string\n icon?: React.ReactNode\n disabled?: boolean\n badge?: string | number\n}\n\nexport interface TabsProps {\n items: TabItem[]\n defaultValue?: string\n value?: string\n onValueChange?: (value: string) => void\n variant?: TabsVariant\n children?: React.ReactNode\n className?: string\n listClassName?: string\n}\n\nexport function Tabs({\n items,\n defaultValue,\n value,\n onValueChange,\n variant = 'underline',\n children,\n className,\n listClassName,\n}: TabsProps) {\n return (\n <RadixTabs.Root\n defaultValue={defaultValue ?? items[0]?.value}\n value={value}\n onValueChange={onValueChange}\n className={cn('w-full', className)}\n >\n <RadixTabs.List\n className={cn(\n 'flex',\n variant === 'underline' && 'border-b border-border gap-0',\n variant === 'pill' && 'bg-surface rounded-lg p-1 gap-1 w-fit',\n variant === 'card' && 'border-b border-border gap-0',\n listClassName\n )}\n >\n {items.map((item) => (\n <RadixTabs.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={cn(\n 'flex items-center gap-2 text-sm font-medium transition-colors outline-none cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n variant === 'underline' && [\n 'px-4 py-2.5 border-b-2 border-transparent -mb-px',\n 'text-text-muted hover:text-text hover:border-border',\n 'data-[state=active]:text-primary data-[state=active]:border-primary',\n ],\n variant === 'pill' && [\n 'px-3 py-1.5 rounded-md',\n 'text-text-muted hover:text-text hover:bg-surface-hover',\n 'data-[state=active]:bg-primary data-[state=active]:text-primary-foreground',\n ],\n variant === 'card' && [\n 'px-4 py-2.5 border border-transparent border-b-0 rounded-t-md -mb-px',\n 'text-text-muted hover:text-text hover:bg-surface-hover',\n 'data-[state=active]:bg-surface data-[state=active]:text-text data-[state=active]:border-border',\n ]\n )}\n >\n {item.icon && <span className=\"w-4 h-4 flex items-center\">{item.icon}</span>}\n {item.label}\n {item.badge !== undefined && (\n <span className=\"ml-1 text-xs bg-primary/10 text-primary rounded-full px-1.5 py-0.5 min-w-[1.25rem] text-center\">\n {item.badge}\n </span>\n )}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n {children}\n </RadixTabs.Root>\n )\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n}: {\n value: string\n children: React.ReactNode\n className?: string\n}) {\n return (\n <RadixTabs.Content\n value={value}\n className={cn('outline-none mt-4', className)}\n >\n {children}\n </RadixTabs.Content>\n )\n}\n","import React from 'react'\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface PaginationProps {\n page: number\n pageSize?: number\n total: number\n siblingCount?: number\n showFirstLast?: boolean\n onPageChange: (page: number) => void\n className?: string\n}\n\nfunction range(start: number, end: number) {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n\nexport function Pagination({\n page,\n pageSize = 10,\n total,\n siblingCount = 1,\n showFirstLast = true,\n onPageChange,\n className,\n}: PaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n\n const pages = React.useMemo(() => {\n const totalPageNumbers = siblingCount * 2 + 5\n if (totalPages <= totalPageNumbers) return range(1, totalPages)\n\n const leftSibling = Math.max(page - siblingCount, 1)\n const rightSibling = Math.min(page + siblingCount, totalPages)\n const showLeftDots = leftSibling > 2\n const showRightDots = rightSibling < totalPages - 1\n\n if (!showLeftDots && showRightDots) {\n const leftRange = range(1, 3 + siblingCount * 2)\n return [...leftRange, '...', totalPages]\n }\n if (showLeftDots && !showRightDots) {\n const rightRange = range(totalPages - (2 + siblingCount * 2), totalPages)\n return [1, '...', ...rightRange]\n }\n return [1, '...', ...range(leftSibling, rightSibling), '...', totalPages]\n }, [page, siblingCount, totalPages])\n\n const btnBase = 'flex items-center justify-center w-8 h-8 rounded-md text-sm font-medium transition-colors'\n const btnActive = 'bg-primary text-primary-foreground'\n const btnInactive = 'text-text-muted hover:bg-surface-hover hover:text-text'\n const btnDisabled = 'opacity-40 cursor-not-allowed pointer-events-none'\n\n return (\n <nav aria-label=\"Pagination\" className={cn('flex items-center gap-1', className)}>\n {showFirstLast && (\n <button\n type=\"button\"\n onClick={() => onPageChange(1)}\n disabled={page === 1}\n className={cn(btnBase, page === 1 ? btnDisabled : btnInactive)}\n aria-label=\"First page\"\n >\n <ChevronsLeft size={14} />\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => onPageChange(page - 1)}\n disabled={page === 1}\n className={cn(btnBase, page === 1 ? btnDisabled : btnInactive)}\n aria-label=\"Previous page\"\n >\n <ChevronLeft size={14} />\n </button>\n\n {pages.map((p, i) =>\n p === '...' ? (\n <span key={`dots-${i}`} className=\"flex items-center justify-center w-8 h-8 text-text-muted text-sm\">\n …\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n onClick={() => onPageChange(p as number)}\n className={cn(btnBase, page === p ? btnActive : btnInactive)}\n aria-label={`Page ${p}`}\n aria-current={page === p ? 'page' : undefined}\n >\n {p}\n </button>\n )\n )}\n\n <button\n type=\"button\"\n onClick={() => onPageChange(page + 1)}\n disabled={page === totalPages}\n className={cn(btnBase, page === totalPages ? btnDisabled : btnInactive)}\n aria-label=\"Next page\"\n >\n <ChevronRight size={14} />\n </button>\n {showFirstLast && (\n <button\n type=\"button\"\n onClick={() => onPageChange(totalPages)}\n disabled={page === totalPages}\n className={cn(btnBase, page === totalPages ? btnDisabled : btnInactive)}\n aria-label=\"Last page\"\n >\n <ChevronsRight size={14} />\n </button>\n )}\n </nav>\n )\n}\n","import React from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type StepStatus = 'completed' | 'current' | 'upcoming'\n\nexport interface Step {\n id: string\n label: string\n description?: string\n icon?: React.ReactNode\n}\n\nexport interface StepIndicatorProps {\n steps: Step[]\n currentStep: number\n orientation?: 'horizontal' | 'vertical'\n className?: string\n}\n\nexport function StepIndicator({\n steps,\n currentStep,\n orientation = 'horizontal',\n className,\n}: StepIndicatorProps) {\n const getStatus = (index: number): StepStatus => {\n if (index < currentStep) return 'completed'\n if (index === currentStep) return 'current'\n return 'upcoming'\n }\n\n return (\n <ol\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center' : 'flex-col',\n className\n )}\n >\n {steps.map((step, index) => {\n const status = getStatus(index)\n const isLast = index === steps.length - 1\n\n return (\n <li\n key={step.id}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-col items-center flex-1' : 'flex-row items-start'\n )}\n >\n <div\n className={cn(\n 'flex items-center',\n orientation === 'horizontal' ? 'w-full' : 'flex-col'\n )}\n >\n {/* Step circle */}\n <div\n className={cn(\n 'flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-colors',\n status === 'completed' && 'bg-primary border-primary text-primary-foreground',\n status === 'current' && 'bg-surface border-primary text-primary',\n status === 'upcoming' && 'bg-surface border-border text-text-muted'\n )}\n >\n {status === 'completed' ? (\n <Check size={14} />\n ) : step.icon ? (\n step.icon\n ) : (\n <span>{index + 1}</span>\n )}\n </div>\n\n {/* Connector line */}\n {!isLast && (\n <div\n className={cn(\n 'transition-colors',\n orientation === 'horizontal' ? 'flex-1 h-0.5 mx-2' : 'w-0.5 h-8 my-1 ml-3.5',\n index < currentStep ? 'bg-primary' : 'bg-border'\n )}\n />\n )}\n </div>\n\n {/* Label */}\n <div\n className={cn(\n orientation === 'horizontal' ? 'text-center mt-2' : 'ml-3 pb-6',\n isLast && orientation === 'vertical' && 'pb-0'\n )}\n >\n <p\n className={cn(\n 'text-sm font-medium',\n status === 'current' && 'text-primary',\n status === 'completed' && 'text-text',\n status === 'upcoming' && 'text-text-muted'\n )}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-xs text-text-muted mt-0.5\">{step.description}</p>\n )}\n </div>\n </li>\n )\n })}\n </ol>\n )\n}\n","import React from 'react'\nimport { Loader2 } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../../utils/cn'\n\nconst buttonVariants = cva(\n [\n 'inline-flex items-center justify-center gap-2 font-medium rounded-md',\n 'transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'select-none cursor-pointer',\n ],\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary-hover',\n outline: 'border border-border bg-transparent text-text hover:bg-surface-hover',\n ghost: 'bg-transparent text-text hover:bg-surface-hover',\n danger: 'bg-error text-white hover:opacity-90',\n success: 'bg-success text-white hover:opacity-90',\n link: 'bg-transparent text-primary underline-offset-4 hover:underline p-0 h-auto',\n },\n size: {\n xs: 'h-7 px-2.5 text-xs',\n sm: 'h-8 px-3 text-sm',\n md: 'h-9 px-4 text-sm',\n lg: 'h-10 px-5 text-base',\n xl: 'h-12 px-6 text-base',\n },\n fullWidth: {\n true: 'w-full',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n loading?: boolean\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n asChild?: boolean\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant,\n size,\n fullWidth,\n loading = false,\n leftIcon,\n rightIcon,\n disabled,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n className={cn(buttonVariants({ variant, size, fullWidth }), className)}\n {...props}\n >\n {loading ? (\n <Loader2 size={16} className=\"animate-spin\" />\n ) : (\n leftIcon && <span className=\"flex-shrink-0\">{leftIcon}</span>\n )}\n {children}\n {!loading && rightIcon && <span className=\"flex-shrink-0\">{rightIcon}</span>}\n </button>\n )\n }\n)\n\nButton.displayName = 'Button'\n\nexport { buttonVariants }\n","import React from 'react'\nimport { Loader2 } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../../utils/cn'\n\nconst iconButtonVariants = cva(\n [\n 'inline-flex items-center justify-center rounded-md',\n 'transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'select-none cursor-pointer flex-shrink-0',\n ],\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary-hover',\n outline: 'border border-border bg-transparent text-text hover:bg-surface-hover',\n ghost: 'bg-transparent text-text-muted hover:bg-surface-hover hover:text-text',\n danger: 'bg-error text-white hover:opacity-90',\n },\n size: {\n xs: 'w-6 h-6',\n sm: 'w-7 h-7',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n xl: 'w-12 h-12',\n },\n rounded: {\n true: 'rounded-full',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'ghost',\n size: 'md',\n rounded: false,\n },\n }\n)\n\nexport interface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n icon: React.ReactNode\n loading?: boolean\n 'aria-label': string\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ variant, size, rounded, loading = false, icon, disabled, className, ...props }, ref) => {\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n className={cn(iconButtonVariants({ variant, size, rounded }), className)}\n {...props}\n >\n {loading ? <Loader2 size={14} className=\"animate-spin\" /> : icon}\n </button>\n )\n }\n)\n\nIconButton.displayName = 'IconButton'\n","import React, { useState, useId } from 'react'\nimport { Eye, EyeOff, X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type TextFieldSize = 'sm' | 'md' | 'lg'\n\nexport interface TextFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n label?: string\n helperText?: string\n error?: string\n size?: TextFieldSize\n prefixIcon?: React.ReactNode\n prefixImage?: string\n prefixText?: string\n suffixIcon?: React.ReactNode\n suffixImage?: string\n suffixText?: string\n clearable?: boolean\n onClear?: () => void\n fullWidth?: boolean\n showMaxLength?: boolean\n containerClassName?: string\n inputClassName?: string\n}\n\nconst sizeClasses: Record<TextFieldSize, { input: string; icon: string; adornment: string }> = {\n sm: { input: 'h-8 text-sm px-2.5', icon: 'w-8', adornment: 'text-xs' },\n md: { input: 'h-9 text-sm px-3', icon: 'w-9', adornment: 'text-sm' },\n lg: { input: 'h-11 text-base px-4', icon: 'w-11', adornment: 'text-base' },\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n error,\n size = 'md',\n prefixIcon,\n prefixImage,\n prefixText,\n suffixIcon,\n suffixImage,\n suffixText,\n clearable = false,\n onClear,\n fullWidth = false,\n showMaxLength = false,\n containerClassName,\n inputClassName,\n type = 'text',\n value,\n onChange,\n disabled,\n required,\n id: externalId,\n ...props\n },\n ref\n ) => {\n const generatedId = useId()\n const id = externalId ?? generatedId\n const [showPassword, setShowPassword] = useState(false)\n const isPassword = type === 'password'\n const inputType = isPassword ? (showPassword ? 'text' : 'password') : type\n\n const hasPrefix = !!(prefixIcon || prefixImage || prefixText)\n const hasSuffix = !!(suffixIcon || suffixImage || suffixText || clearable || isPassword)\n const sz = sizeClasses[size]\n\n const hasValue = value !== undefined ? String(value).length > 0 : false\n const charCount = value !== undefined ? String(value).length : 0\n const maxLen = props.maxLength\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', containerClassName)}>\n {label && (\n <label\n htmlFor={id}\n className=\"text-sm font-medium text-text\"\n >\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n\n <div className={cn('relative flex items-center', fullWidth && 'w-full')}>\n {/* Prefix */}\n {hasPrefix && (\n <div\n className={cn(\n 'absolute left-0 flex items-center justify-center h-full border-r border-border bg-surface-hover rounded-l-md',\n sz.icon,\n 'text-text-muted',\n sz.adornment\n )}\n >\n {prefixImage ? (\n <img src={prefixImage} alt=\"\" className=\"w-4 h-4 object-contain\" />\n ) : prefixIcon ? (\n <span className=\"flex items-center justify-center w-4 h-4\">{prefixIcon}</span>\n ) : (\n <span className=\"px-2 whitespace-nowrap\">{prefixText}</span>\n )}\n </div>\n )}\n\n <input\n ref={ref}\n id={id}\n type={inputType}\n value={value}\n onChange={onChange}\n disabled={disabled}\n required={required}\n className={cn(\n 'w-full rounded-md border bg-surface text-text placeholder:text-text-muted',\n 'transition-colors outline-none',\n 'focus:border-border-focus focus:ring-2 focus:ring-border-focus/20',\n 'disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-surface-hover',\n error ? 'border-error focus:border-error focus:ring-error/20' : 'border-border',\n sz.input,\n hasPrefix && 'pl-[calc(var(--prefix-width,2.25rem)+0.5rem)]',\n hasSuffix && 'pr-[calc(var(--suffix-width,2.25rem)+0.5rem)]',\n inputClassName\n )}\n style={{\n paddingLeft: hasPrefix ? `calc(${sz.icon.replace('w-', '')}*0.25rem + 0.75rem)` : undefined,\n paddingRight: hasSuffix ? `calc(${sz.icon.replace('w-', '')}*0.25rem + 0.75rem)` : undefined,\n }}\n aria-invalid={!!error}\n aria-describedby={error ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n {...props}\n />\n\n {/* Suffix */}\n {hasSuffix && (\n <div\n className={cn(\n 'absolute right-0 flex items-center justify-center h-full gap-1 pr-2',\n 'text-text-muted',\n sz.adornment\n )}\n >\n {suffixImage ? (\n <img src={suffixImage} alt=\"\" className=\"w-4 h-4 object-contain\" />\n ) : suffixIcon ? (\n <span className=\"flex items-center justify-center w-4 h-4\">{suffixIcon}</span>\n ) : suffixText ? (\n <span className=\"whitespace-nowrap border-l border-border pl-2\">{suffixText}</span>\n ) : null}\n\n {clearable && hasValue && !disabled && (\n <button\n type=\"button\"\n onClick={onClear}\n className=\"flex items-center justify-center w-4 h-4 rounded-full hover:bg-surface-hover transition-colors\"\n aria-label=\"Clear input\"\n >\n <X size={12} />\n </button>\n )}\n\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((v) => !v)}\n className=\"flex items-center justify-center w-4 h-4 hover:text-text transition-colors\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? <EyeOff size={14} /> : <Eye size={14} />}\n </button>\n )}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div>\n {error && (\n <p id={`${id}-error`} className=\"text-xs text-error\" role=\"alert\">\n {error}\n </p>\n )}\n {!error && helperText && (\n <p id={`${id}-helper`} className=\"text-xs text-text-muted\">\n {helperText}\n </p>\n )}\n </div>\n {showMaxLength && maxLen !== undefined && (\n <p className={cn('text-xs text-text-muted ml-auto', charCount >= maxLen && 'text-error')}>\n {charCount}/{maxLen}\n </p>\n )}\n </div>\n </div>\n )\n }\n)\n\nTextField.displayName = 'TextField'\n","import React, { useId, useRef, useEffect } from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface TextAreaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'prefix'> {\n label?: string\n helperText?: string\n error?: string\n prefixIcon?: React.ReactNode\n prefixImage?: string\n suffixIcon?: React.ReactNode\n suffixImage?: string\n autoResize?: boolean\n showCharCount?: boolean\n showMaxLength?: boolean\n maxLength?: number\n fullWidth?: boolean\n containerClassName?: string\n textareaClassName?: string\n}\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n label,\n helperText,\n error,\n prefixIcon,\n prefixImage,\n suffixIcon,\n suffixImage,\n autoResize = false,\n showCharCount = false,\n showMaxLength = false,\n maxLength,\n fullWidth = false,\n containerClassName,\n textareaClassName,\n value,\n onChange,\n disabled,\n required,\n rows = 3,\n id: externalId,\n ...props\n },\n ref\n ) => {\n const generatedId = useId()\n const id = externalId ?? generatedId\n const internalRef = useRef<HTMLTextAreaElement>(null)\n const resolvedRef = (ref as React.RefObject<HTMLTextAreaElement>) ?? internalRef\n\n const charCount = value !== undefined ? String(value).length : 0\n const hasPrefix = !!(prefixIcon || prefixImage)\n const hasSuffix = !!(suffixIcon || suffixImage)\n\n useEffect(() => {\n if (!autoResize || !resolvedRef.current) return\n const el = resolvedRef.current\n el.style.height = 'auto'\n el.style.height = `${el.scrollHeight}px`\n }, [value, autoResize, resolvedRef])\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', containerClassName)}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n\n <div className={cn('relative', fullWidth && 'w-full')}>\n {hasPrefix && (\n <div className=\"absolute top-2.5 left-0 flex items-center justify-center w-9 text-text-muted\">\n {prefixImage ? (\n <img src={prefixImage} alt=\"\" className=\"w-4 h-4 object-contain\" />\n ) : (\n <span className=\"flex items-center justify-center w-4 h-4\">{prefixIcon}</span>\n )}\n </div>\n )}\n\n <textarea\n ref={resolvedRef}\n id={id}\n value={value}\n onChange={onChange}\n disabled={disabled}\n required={required}\n rows={rows}\n maxLength={maxLength}\n className={cn(\n 'w-full rounded-md border bg-surface text-text placeholder:text-text-muted text-sm',\n 'transition-colors outline-none resize-y py-2 px-3',\n 'focus:border-border-focus focus:ring-2 focus:ring-border-focus/20',\n 'disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-surface-hover',\n error ? 'border-error focus:border-error focus:ring-error/20' : 'border-border',\n hasPrefix && 'pl-9',\n hasSuffix && 'pr-9',\n autoResize && 'resize-none overflow-hidden',\n textareaClassName\n )}\n aria-invalid={!!error}\n aria-describedby={error ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n {...props}\n />\n\n {hasSuffix && (\n <div className=\"absolute top-2.5 right-2 flex items-center justify-center text-text-muted\">\n {suffixImage ? (\n <img src={suffixImage} alt=\"\" className=\"w-4 h-4 object-contain\" />\n ) : (\n <span className=\"flex items-center justify-center w-4 h-4\">{suffixIcon}</span>\n )}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div>\n {error && (\n <p id={`${id}-error`} className=\"text-xs text-error\" role=\"alert\">\n {error}\n </p>\n )}\n {!error && helperText && (\n <p id={`${id}-helper`} className=\"text-xs text-text-muted\">\n {helperText}\n </p>\n )}\n </div>\n {(showCharCount || showMaxLength) && (\n <p className={cn('text-xs text-text-muted ml-auto', maxLength && charCount >= maxLength && 'text-error')}>\n {charCount}{maxLength ? `/${maxLength}` : ''}\n </p>\n )}\n </div>\n </div>\n )\n }\n)\n\nTextArea.displayName = 'TextArea'\n","import React, { useId } from 'react'\nimport * as RadixSelect from '@radix-ui/react-select'\nimport { ChevronDown, ChevronUp, Check } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectGroup {\n label: string\n options: SelectOption[]\n}\n\nexport interface SelectProps {\n options?: SelectOption[]\n groups?: SelectGroup[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n label?: string\n helperText?: string\n error?: string\n disabled?: boolean\n required?: boolean\n fullWidth?: boolean\n className?: string\n}\n\nexport function Select({\n options = [],\n groups = [],\n value,\n defaultValue,\n onValueChange,\n placeholder = 'Select an option',\n label,\n helperText,\n error,\n disabled,\n required,\n fullWidth = false,\n className,\n}: SelectProps) {\n const id = useId()\n\n const renderOption = (opt: SelectOption) => (\n <RadixSelect.Item\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n className={cn(\n 'flex items-center gap-2 px-3 py-2 text-sm rounded-md cursor-pointer outline-none',\n 'text-text hover:bg-surface-hover focus:bg-surface-hover',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n 'data-[highlighted]:bg-primary/10 data-[highlighted]:text-primary'\n )}\n >\n <RadixSelect.ItemText>{opt.label}</RadixSelect.ItemText>\n <RadixSelect.ItemIndicator className=\"ml-auto\">\n <Check size={14} />\n </RadixSelect.ItemIndicator>\n </RadixSelect.Item>\n )\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', className)}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n\n <RadixSelect.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n >\n <RadixSelect.Trigger\n id={id}\n className={cn(\n 'flex items-center justify-between gap-2 h-9 px-3 w-full rounded-md border bg-surface text-sm',\n 'transition-colors outline-none cursor-pointer',\n 'focus:border-border-focus focus:ring-2 focus:ring-border-focus/20',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'data-[placeholder]:text-text-muted',\n error ? 'border-error' : 'border-border',\n fullWidth && 'w-full'\n )}\n aria-invalid={!!error}\n >\n <RadixSelect.Value placeholder={placeholder} />\n <RadixSelect.Icon>\n <ChevronDown size={14} className=\"text-text-muted\" />\n </RadixSelect.Icon>\n </RadixSelect.Trigger>\n\n <RadixSelect.Portal>\n <RadixSelect.Content\n className={cn(\n 'z-dropdown bg-surface border border-border rounded-md shadow-lg overflow-hidden',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n position=\"popper\"\n sideOffset={4}\n >\n <RadixSelect.ScrollUpButton className=\"flex items-center justify-center py-1 text-text-muted\">\n <ChevronUp size={14} />\n </RadixSelect.ScrollUpButton>\n\n <RadixSelect.Viewport className=\"p-1 max-h-60\">\n {groups.length > 0\n ? groups.map((group) => (\n <RadixSelect.Group key={group.label}>\n <RadixSelect.Label className=\"px-3 py-1.5 text-xs font-semibold text-text-muted uppercase tracking-wide\">\n {group.label}\n </RadixSelect.Label>\n {group.options.map(renderOption)}\n </RadixSelect.Group>\n ))\n : options.map(renderOption)}\n </RadixSelect.Viewport>\n\n <RadixSelect.ScrollDownButton className=\"flex items-center justify-center py-1 text-text-muted\">\n <ChevronDown size={14} />\n </RadixSelect.ScrollDownButton>\n </RadixSelect.Content>\n </RadixSelect.Portal>\n </RadixSelect.Root>\n\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useId } from 'react'\nimport * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface CheckboxProps {\n label?: string\n description?: string\n checked?: boolean | 'indeterminate'\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean | 'indeterminate') => void\n disabled?: boolean\n required?: boolean\n error?: string\n size?: 'sm' | 'md' | 'lg'\n className?: string\n id?: string\n}\n\nconst sizeMap = {\n sm: { box: 'w-3.5 h-3.5', icon: 10, label: 'text-sm' },\n md: { box: 'w-4 h-4', icon: 12, label: 'text-sm' },\n lg: { box: 'w-5 h-5', icon: 14, label: 'text-base' },\n}\n\nexport function Checkbox({\n label,\n description,\n checked,\n defaultChecked,\n onCheckedChange,\n disabled,\n required,\n error,\n size = 'md',\n className,\n id: externalId,\n}: CheckboxProps) {\n const generatedId = useId()\n const id = externalId ?? generatedId\n const sz = sizeMap[size]\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n <div className=\"flex items-start gap-2\">\n <RadixCheckbox.Root\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n required={required}\n className={cn(\n 'flex-shrink-0 flex items-center justify-center rounded border-2 transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n sz.box,\n checked === true || checked === 'indeterminate'\n ? 'bg-primary border-primary'\n : 'bg-surface border-border hover:border-primary'\n )}\n >\n <RadixCheckbox.Indicator>\n {checked === 'indeterminate' ? (\n <Minus size={sz.icon} className=\"text-primary-foreground\" />\n ) : (\n <Check size={sz.icon} className=\"text-primary-foreground\" />\n )}\n </RadixCheckbox.Indicator>\n </RadixCheckbox.Root>\n\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'font-medium text-text cursor-pointer leading-tight',\n sz.label,\n disabled && 'opacity-50 cursor-not-allowed'\n )}\n >\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n {description && (\n <p className=\"text-xs text-text-muted mt-0.5\">{description}</p>\n )}\n </div>\n )}\n </div>\n {error && <p className=\"text-xs text-error ml-6\" role=\"alert\">{error}</p>}\n </div>\n )\n}\n","import React, { useId } from 'react'\nimport * as RadixRadio from '@radix-ui/react-radio-group'\nimport { cn } from '../../../utils/cn'\n\nexport interface RadioOption {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n label?: string\n error?: string\n disabled?: boolean\n required?: boolean\n size?: 'sm' | 'md' | 'lg'\n className?: string\n}\n\nconst sizeMap = {\n sm: { radio: 'w-3.5 h-3.5', dot: 'w-1.5 h-1.5', label: 'text-sm' },\n md: { radio: 'w-4 h-4', dot: 'w-2 h-2', label: 'text-sm' },\n lg: { radio: 'w-5 h-5', dot: 'w-2.5 h-2.5', label: 'text-base' },\n}\n\nexport function RadioGroup({\n options,\n value,\n defaultValue,\n onValueChange,\n orientation = 'vertical',\n label,\n error,\n disabled,\n required,\n size = 'md',\n className,\n}: RadioGroupProps) {\n const groupId = useId()\n const sz = sizeMap[size]\n\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n {label && (\n <p className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </p>\n )}\n <RadixRadio.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n orientation={orientation}\n className={cn(\n 'flex gap-3',\n orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap'\n )}\n aria-label={label}\n >\n {options.map((opt) => {\n const id = `${groupId}-${opt.value}`\n return (\n <div key={opt.value} className=\"flex items-start gap-2\">\n <RadixRadio.Item\n id={id}\n value={opt.value}\n disabled={opt.disabled}\n className={cn(\n 'flex-shrink-0 flex items-center justify-center rounded-full border-2 transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n sz.radio,\n 'border-border bg-surface hover:border-primary',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-surface'\n )}\n >\n <RadixRadio.Indicator\n className={cn('rounded-full bg-primary', sz.dot)}\n />\n </RadixRadio.Item>\n <div className=\"flex flex-col\">\n <label\n htmlFor={id}\n className={cn(\n 'font-medium text-text cursor-pointer leading-tight',\n sz.label,\n opt.disabled && 'opacity-50 cursor-not-allowed'\n )}\n >\n {opt.label}\n </label>\n {opt.description && (\n <p className=\"text-xs text-text-muted mt-0.5\">{opt.description}</p>\n )}\n </div>\n </div>\n )\n })}\n </RadixRadio.Root>\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n </div>\n )\n}\n","import React, { useId } from 'react'\nimport * as RadixSwitch from '@radix-ui/react-switch'\nimport { cn } from '../../../utils/cn'\n\nexport interface SwitchProps {\n label?: string\n description?: string\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n required?: boolean\n size?: 'sm' | 'md' | 'lg'\n labelPosition?: 'left' | 'right'\n className?: string\n id?: string\n}\n\nconst sizeMap = {\n sm: { root: 'w-8 h-4', thumb: 'w-3 h-3 data-[state=checked]:translate-x-4', label: 'text-sm' },\n md: { root: 'w-10 h-5', thumb: 'w-4 h-4 data-[state=checked]:translate-x-5', label: 'text-sm' },\n lg: { root: 'w-12 h-6', thumb: 'w-5 h-5 data-[state=checked]:translate-x-6', label: 'text-base' },\n}\n\nexport function Switch({\n label,\n description,\n checked,\n defaultChecked,\n onCheckedChange,\n disabled,\n required,\n size = 'md',\n labelPosition = 'right',\n className,\n id: externalId,\n}: SwitchProps) {\n const generatedId = useId()\n const id = externalId ?? generatedId\n const sz = sizeMap[size]\n\n const switchEl = (\n <RadixSwitch.Root\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n required={required}\n className={cn(\n 'relative inline-flex flex-shrink-0 items-center rounded-full border-2 border-transparent',\n 'transition-colors cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'bg-border data-[state=checked]:bg-primary',\n sz.root\n )}\n >\n <RadixSwitch.Thumb\n className={cn(\n 'block rounded-full bg-white shadow-sm transition-transform translate-x-0',\n sz.thumb\n )}\n />\n </RadixSwitch.Root>\n )\n\n if (!label && !description) return switchEl\n\n return (\n <div className={cn('flex items-start gap-3', className)}>\n {labelPosition === 'left' && (\n <div className=\"flex flex-col flex-1\">\n {label && (\n <label\n htmlFor={id}\n className={cn('font-medium text-text cursor-pointer', sz.label, disabled && 'opacity-50 cursor-not-allowed')}\n >\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n {description && <p className=\"text-xs text-text-muted\">{description}</p>}\n </div>\n )}\n\n {switchEl}\n\n {labelPosition === 'right' && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={id}\n className={cn('font-medium text-text cursor-pointer', sz.label, disabled && 'opacity-50 cursor-not-allowed')}\n >\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n {description && <p className=\"text-xs text-text-muted\">{description}</p>}\n </div>\n )}\n </div>\n )\n}\n","import React, { useState, useRef, useEffect, useId, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\nimport { ChevronDown, Check, X, Search } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface SearchSelectOption {\n value: string\n label: string\n disabled?: boolean\n icon?: React.ReactNode\n}\n\nexport interface SearchSelectGroup {\n label: string\n options: SearchSelectOption[]\n}\n\ninterface SearchSelectBaseProps {\n options?: SearchSelectOption[]\n groups?: SearchSelectGroup[]\n placeholder?: string\n searchPlaceholder?: string\n label?: string\n helperText?: string\n error?: string\n disabled?: boolean\n required?: boolean\n clearable?: boolean\n fullWidth?: boolean\n className?: string\n maxSelected?: number\n}\n\nexport interface SearchSelectSingleProps extends SearchSelectBaseProps {\n multiple?: false\n value?: string\n onChange?: (value: string) => void\n}\n\nexport interface SearchSelectMultiProps extends SearchSelectBaseProps {\n multiple: true\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nexport type SearchSelectProps = SearchSelectSingleProps | SearchSelectMultiProps\n\nfunction flattenOptions(\n options: SearchSelectOption[] = [],\n groups: SearchSelectGroup[] = []\n): SearchSelectOption[] {\n return [...options, ...groups.flatMap((g) => g.options)]\n}\n\nexport function SearchSelect(props: SearchSelectProps) {\n const {\n options = [],\n groups = [],\n placeholder = 'Select…',\n searchPlaceholder = 'Search…',\n label,\n helperText,\n error,\n disabled = false,\n required = false,\n clearable = true,\n fullWidth = false,\n className,\n maxSelected,\n } = props\n\n const id = useId()\n const [open, setOpen] = useState(false)\n const [query, setQuery] = useState('')\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const chipsRowRef = useRef<HTMLDivElement>(null)\n const searchRef = useRef<HTMLInputElement>(null)\n const [dropdownStyle, setDropdownStyle] = useState<React.CSSProperties>({})\n const [visibleCount, setVisibleCount] = useState<number>(Infinity)\n const measureRef = useRef<HTMLDivElement>(null)\n const rafRef = useRef<number>(0)\n\n const allOptions = flattenOptions(options, groups)\n\n const selectedValues: string[] = props.multiple\n ? (props.value ?? [])\n : props.value\n ? [props.value]\n : []\n\n const filtered = allOptions.filter((o) =>\n o.label.toLowerCase().includes(query.toLowerCase())\n )\n\n const filteredGroups: SearchSelectGroup[] =\n groups.length > 0\n ? groups\n .map((g) => ({\n ...g,\n options: g.options.filter((o) =>\n o.label.toLowerCase().includes(query.toLowerCase())\n ),\n }))\n .filter((g) => g.options.length > 0)\n : []\n\n const isSelected = (val: string) => selectedValues.includes(val)\n\n const toggle = useCallback(\n (val: string) => {\n if (props.multiple) {\n const current = props.value ?? []\n const next = current.includes(val)\n ? current.filter((v) => v !== val)\n : maxSelected && current.length >= maxSelected\n ? current\n : [...current, val]\n props.onChange?.(next)\n } else {\n props.onChange?.(val)\n setOpen(false)\n setQuery('')\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.multiple, props.value, maxSelected]\n )\n\n const removeChip = (val: string, e: React.MouseEvent) => {\n e.stopPropagation()\n if (props.multiple) {\n props.onChange?.((props.value ?? []).filter((v) => v !== val))\n }\n }\n\n const clearAll = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (props.multiple) {\n props.onChange?.([])\n } else {\n props.onChange?.('')\n }\n }\n\n const updateDropdownPosition = useCallback(() => {\n if (!triggerRef.current) return\n const rect = triggerRef.current.getBoundingClientRect()\n const spaceBelow = window.innerHeight - rect.bottom\n const spaceAbove = rect.top\n const openUpward = spaceBelow < 260 && spaceAbove > spaceBelow\n setDropdownStyle({\n position: 'fixed',\n top: openUpward ? undefined : rect.bottom + 4,\n bottom: openUpward ? window.innerHeight - rect.top + 4 : undefined,\n left: rect.left,\n width: rect.width,\n zIndex: 9999,\n })\n }, [])\n\n useEffect(() => {\n if (open) {\n updateDropdownPosition()\n setTimeout(() => searchRef.current?.focus(), 10)\n } else {\n setQuery('')\n }\n }, [open, updateDropdownPosition])\n\n useEffect(() => {\n if (!open) return\n const onScroll = () => updateDropdownPosition()\n const onResize = () => updateDropdownPosition()\n window.addEventListener('scroll', onScroll, true)\n window.addEventListener('resize', onResize)\n return () => {\n window.removeEventListener('scroll', onScroll, true)\n window.removeEventListener('resize', onResize)\n }\n }, [open, updateDropdownPosition])\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current && !containerRef.current.contains(e.target as Node) &&\n !(e.target as Element).closest('[data-searchselect-dropdown]')\n ) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handler)\n return () => document.removeEventListener('mousedown', handler)\n }, [])\n\n const selectedLabels = selectedValues\n .map((v) => allOptions.find((o) => o.value === v))\n .filter(Boolean) as SearchSelectOption[]\n\n const hasValue = selectedValues.length > 0\n\n // Measure from the off-screen clone (measureRef) — never mutates the visible DOM\n const recalcVisibleCount = useCallback(() => {\n if (!measureRef.current || !triggerRef.current || !props.multiple) return\n const chips = Array.from(measureRef.current.querySelectorAll<HTMLElement>('[data-chip-measure]'))\n if (chips.length === 0) { setVisibleCount(Infinity); return }\n\n // Available width = trigger width minus actions area (clear btn + chevron ~52px) minus padding (~24px)\n const triggerW = triggerRef.current.offsetWidth\n const ACTIONS_W = 56\n const PADDING = 24\n const MORE_BADGE_W = 60\n const GAP = 4\n const available = triggerW - ACTIONS_W - PADDING\n\n let used = 0\n let count = 0\n for (let i = 0; i < chips.length; i++) {\n const chipW = chips[i].offsetWidth + GAP\n const isLast = i === chips.length - 1\n // If this is the last chip, no badge needed — just check if it fits\n const spaceNeeded = isLast ? chipW : chipW + (i === 0 ? 0 : MORE_BADGE_W)\n if (used + chipW <= available - (isLast ? 0 : MORE_BADGE_W)) {\n used += chipW\n count++\n } else {\n break\n }\n }\n setVisibleCount(Math.max(1, count))\n }, [props.multiple])\n\n // Re-measure whenever selection changes or trigger resizes\n useEffect(() => {\n if (!props.multiple) return\n cancelAnimationFrame(rafRef.current)\n rafRef.current = requestAnimationFrame(recalcVisibleCount)\n return () => cancelAnimationFrame(rafRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedValues.join(','), recalcVisibleCount])\n\n useEffect(() => {\n if (!props.multiple || !triggerRef.current) return\n const ro = new ResizeObserver(() => {\n cancelAnimationFrame(rafRef.current)\n rafRef.current = requestAnimationFrame(recalcVisibleCount)\n })\n ro.observe(triggerRef.current)\n return () => ro.disconnect()\n }, [props.multiple, recalcVisibleCount])\n\n const renderOption = (opt: SearchSelectOption) => (\n <button\n key={opt.value}\n type=\"button\"\n disabled={opt.disabled || (!isSelected(opt.value) && !!maxSelected && selectedValues.length >= maxSelected)}\n onClick={() => toggle(opt.value)}\n className={cn(\n 'flex items-center gap-2 w-full px-3 py-2 text-sm rounded-md text-left outline-none transition-colors',\n 'hover:bg-surface-hover focus:bg-surface-hover',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n isSelected(opt.value) && 'bg-primary/10 text-primary font-medium'\n )}\n >\n {opt.icon && <span className=\"flex-shrink-0\">{opt.icon}</span>}\n <span className=\"flex-1 truncate\">{opt.label}</span>\n {isSelected(opt.value) && <Check size={14} className=\"flex-shrink-0\" />}\n </button>\n )\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', className)} ref={containerRef}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\" aria-hidden=\"true\">*</span>}\n </label>\n )}\n\n {/* Trigger */}\n <div\n ref={triggerRef}\n id={id}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-invalid={!!error}\n tabIndex={disabled ? -1 : 0}\n onClick={() => !disabled && setOpen((o) => !o)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); !disabled && setOpen((o) => !o) }\n if (e.key === 'Escape') setOpen(false)\n }}\n className={cn(\n 'flex items-center gap-2 min-h-9 px-3 py-1.5 w-full rounded-md border bg-surface text-sm',\n 'transition-colors outline-none cursor-pointer select-none',\n 'focus:border-border-focus focus:ring-2 focus:ring-border-focus/20',\n disabled && 'opacity-50 cursor-not-allowed',\n error ? 'border-error' : open ? 'border-border-focus ring-2 ring-border-focus/20' : 'border-border'\n )}\n >\n {/* Visible chips — only the slice that fits */}\n <div className=\"flex-1 flex items-center gap-1 min-w-0 overflow-hidden\">\n {props.multiple && selectedLabels.length > 0 ? (\n <>\n {selectedLabels.slice(0, visibleCount).map((opt) => (\n <span\n key={opt.value}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-primary/10 text-primary flex-shrink-0\"\n >\n <span className=\"max-w-[120px] truncate\">{opt.label}</span>\n <button\n type=\"button\"\n onClick={(e) => removeChip(opt.value, e)}\n className=\"hover:text-primary/70 focus:outline-none\"\n aria-label={`Remove ${opt.label}`}\n >\n <X size={10} />\n </button>\n </span>\n ))}\n {selectedLabels.length > visibleCount && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-surface-hover text-text-muted flex-shrink-0 whitespace-nowrap\">\n +{selectedLabels.length - visibleCount} more\n </span>\n )}\n </>\n ) : !props.multiple && selectedLabels.length > 0 ? (\n <span className=\"text-text truncate\">{selectedLabels[0].label}</span>\n ) : (\n <span className=\"text-text-muted truncate\">{placeholder}</span>\n )}\n </div>\n\n {/* Off-screen measurement clone — all chips always visible, never interactable */}\n {props.multiple && (\n <div\n ref={measureRef}\n aria-hidden=\"true\"\n style={{\n position: 'fixed',\n top: -9999,\n left: -9999,\n visibility: 'hidden',\n pointerEvents: 'none',\n display: 'flex',\n gap: 4,\n flexWrap: 'nowrap',\n }}\n >\n {selectedLabels.map((opt) => (\n <span\n key={opt.value}\n data-chip-measure=\"\"\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-primary/10 text-primary flex-shrink-0\"\n >\n <span className=\"max-w-[120px] truncate\">{opt.label}</span>\n <span style={{ width: 10, height: 10, display: 'inline-block' }} />\n </span>\n ))}\n </div>\n )}\n\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {clearable && hasValue && !disabled && (\n <button\n type=\"button\"\n onClick={clearAll}\n className=\"text-text-muted hover:text-text focus:outline-none\"\n aria-label=\"Clear selection\"\n >\n <X size={14} />\n </button>\n )}\n <ChevronDown\n size={14}\n className={cn('text-text-muted transition-transform', open && 'rotate-180')}\n />\n </div>\n </div>\n\n {/* Dropdown — rendered in a portal so it floats above all parents */}\n {open && createPortal(\n <div\n data-searchselect-dropdown=\"\"\n className={cn(\n 'bg-surface border border-border rounded-md shadow-xl overflow-hidden',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n style={dropdownStyle}\n >\n {/* Search input */}\n <div className=\"p-2 border-b border-border\">\n <div className=\"flex items-center gap-2 px-2 py-1.5 rounded-md border border-border bg-background\">\n <Search size={14} className=\"text-text-muted flex-shrink-0\" />\n <input\n ref={searchRef}\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"flex-1 text-sm bg-transparent outline-none text-text placeholder:text-text-muted\"\n onClick={(e) => e.stopPropagation()}\n />\n {query && (\n <button type=\"button\" onClick={() => setQuery('')} className=\"text-text-muted hover:text-text\">\n <X size={12} />\n </button>\n )}\n </div>\n </div>\n\n {/* Options */}\n <div className=\"p-1 max-h-60 overflow-y-auto\" role=\"listbox\">\n {filteredGroups.length > 0\n ? filteredGroups.map((group) => (\n <div key={group.label}>\n <p className=\"px-3 py-1.5 text-xs font-semibold text-text-muted uppercase tracking-wide\">\n {group.label}\n </p>\n {group.options.map(renderOption)}\n </div>\n ))\n : groups.length === 0\n ? filtered.length > 0\n ? filtered.map(renderOption)\n : (\n <p className=\"px-3 py-4 text-sm text-text-muted text-center\">No options found</p>\n )\n : (\n <p className=\"px-3 py-4 text-sm text-text-muted text-center\">No options found</p>\n )}\n </div>\n\n {props.multiple && maxSelected && (\n <div className=\"px-3 py-2 border-t border-border text-xs text-text-muted\">\n {selectedValues.length} / {maxSelected} selected\n </div>\n )}\n </div>,\n document.body\n )}\n\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useId } from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface ChipSelectOption {\n value: string\n label: string\n icon?: React.ReactNode\n disabled?: boolean\n}\n\nexport type ChipSelectSize = 'sm' | 'md' | 'lg'\n\nexport interface ChipSelectProps {\n options: ChipSelectOption[]\n value?: string[]\n onChange?: (value: string[]) => void\n multiple?: boolean\n maxSelect?: number\n label?: string\n helperText?: string\n error?: string\n disabled?: boolean\n required?: boolean\n size?: ChipSelectSize\n className?: string\n fullWidth?: boolean\n}\n\nconst sizeClasses: Record<ChipSelectSize, string> = {\n sm: 'px-2.5 py-1 text-xs gap-1',\n md: 'px-3 py-1.5 text-sm gap-1.5',\n lg: 'px-4 py-2 text-sm gap-2',\n}\n\nexport function ChipSelect({\n options,\n value = [],\n onChange,\n multiple = true,\n maxSelect,\n label,\n helperText,\n error,\n disabled = false,\n required = false,\n size = 'md',\n className,\n fullWidth = true,\n}: ChipSelectProps) {\n const id = useId()\n\n const isSelected = (val: string) => value.includes(val)\n\n const toggle = (val: string) => {\n if (disabled) return\n const opt = options.find((o) => o.value === val)\n if (opt?.disabled) return\n\n if (multiple) {\n if (isSelected(val)) {\n onChange?.(value.filter((v) => v !== val))\n } else {\n if (maxSelect && value.length >= maxSelect) return\n onChange?.([...value, val])\n }\n } else {\n onChange?.(isSelected(val) ? [] : [val])\n }\n }\n\n return (\n <div className={cn('flex flex-col gap-1.5', fullWidth && 'w-full', className)}>\n {label && (\n <label id={id} className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\" aria-hidden=\"true\">*</span>}\n </label>\n )}\n\n <div\n role=\"group\"\n aria-labelledby={label ? id : undefined}\n className={cn(\n 'flex flex-wrap gap-2',\n disabled && 'opacity-60 pointer-events-none'\n )}\n >\n {options.map((opt) => {\n const selected = isSelected(opt.value)\n const atMax = !selected && !!maxSelect && value.length >= maxSelect\n const isDisabled = opt.disabled || atMax\n\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={selected}\n disabled={isDisabled}\n onClick={() => toggle(opt.value)}\n className={cn(\n 'inline-flex items-center rounded-full border font-medium transition-all',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-1',\n sizeClasses[size],\n selected\n ? 'bg-primary text-primary-foreground border-primary shadow-sm'\n : 'bg-surface text-text border-border hover:border-primary/50 hover:bg-primary/5',\n isDisabled && 'opacity-50 cursor-not-allowed pointer-events-none'\n )}\n >\n {opt.icon && (\n <span className={cn('flex-shrink-0', selected ? 'text-primary-foreground' : 'text-text-muted')}>\n {opt.icon}\n </span>\n )}\n <span>{opt.label}</span>\n {selected && <Check size={12} className=\"flex-shrink-0\" />}\n </button>\n )\n })}\n </div>\n\n {maxSelect && (\n <p className=\"text-xs text-text-muted\">\n {value.length} of {maxSelect} selected\n </p>\n )}\n\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useState, useRef, useId, KeyboardEvent } from 'react'\nimport { X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type TagSeparator = 'space' | 'comma' | 'enter'\n\nexport interface TagInputProps {\n value?: string[]\n onChange?: (value: string[]) => void\n separator?: TagSeparator[]\n placeholder?: string\n label?: string\n helperText?: string\n error?: string\n disabled?: boolean\n required?: boolean\n maxTags?: number\n allowDuplicates?: boolean\n fullWidth?: boolean\n className?: string\n}\n\nconst SEPARATOR_KEYS: Record<TagSeparator, string[]> = {\n space: [' '],\n comma: [','],\n enter: ['Enter'],\n}\n\nexport function TagInput({\n value = [],\n onChange,\n separator = ['space', 'comma', 'enter'],\n placeholder = 'Type and press Enter…',\n label,\n helperText,\n error,\n disabled = false,\n required = false,\n maxTags,\n allowDuplicates = false,\n fullWidth = false,\n className,\n}: TagInputProps) {\n const id = useId()\n const [inputValue, setInputValue] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const separatorKeys = separator.flatMap((s) => SEPARATOR_KEYS[s])\n\n const addTag = (raw: string) => {\n const tag = raw.trim()\n if (!tag) return\n if (!allowDuplicates && value.includes(tag)) {\n setInputValue('')\n return\n }\n if (maxTags && value.length >= maxTags) return\n onChange?.([...value, tag])\n setInputValue('')\n }\n\n const removeTag = (index: number) => {\n onChange?.(value.filter((_, i) => i !== index))\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (separatorKeys.includes(e.key)) {\n e.preventDefault()\n addTag(inputValue)\n return\n }\n if (e.key === 'Backspace' && inputValue === '' && value.length > 0) {\n removeTag(value.length - 1)\n }\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (separator.includes('comma') && raw.includes(',')) {\n const parts = raw.split(',')\n const last = parts.pop() ?? ''\n parts.forEach((p) => addTag(p))\n setInputValue(last)\n } else if (separator.includes('space') && raw.endsWith(' ')) {\n addTag(raw)\n } else {\n setInputValue(raw)\n }\n }\n\n const atMax = !!maxTags && value.length >= maxTags\n\n return (\n <div className={cn('flex flex-col gap-1.5', fullWidth && 'w-full', className)}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\" aria-hidden=\"true\">*</span>}\n </label>\n )}\n\n <div\n onClick={() => inputRef.current?.focus()}\n className={cn(\n 'flex flex-col gap-2 min-h-[80px] w-full rounded-md border bg-surface px-3 py-2',\n 'transition-colors cursor-text',\n 'focus-within:border-border-focus focus-within:ring-2 focus-within:ring-border-focus/20',\n disabled && 'opacity-50 cursor-not-allowed',\n error ? 'border-error' : 'border-border'\n )}\n >\n {/* Input row */}\n <div className=\"flex items-center gap-2\">\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={atMax ? `Max ${maxTags} tags reached` : placeholder}\n disabled={disabled || atMax}\n aria-invalid={!!error}\n className={cn(\n 'flex-1 text-sm bg-transparent outline-none text-text placeholder:text-text-muted',\n 'disabled:cursor-not-allowed'\n )}\n />\n {inputValue && (\n <button\n type=\"button\"\n onClick={() => setInputValue('')}\n className=\"text-text-muted hover:text-text focus:outline-none\"\n tabIndex={-1}\n aria-label=\"Clear input\"\n >\n <X size={12} />\n </button>\n )}\n </div>\n\n {/* Divider */}\n {value.length > 0 && (\n <div className=\"border-t border-border\" />\n )}\n\n {/* Tags area */}\n {value.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {value.map((tag, i) => (\n <span\n key={`${tag}-${i}`}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-primary/10 text-primary border border-primary/20\"\n >\n <span>{tag}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={() => removeTag(i)}\n className=\"hover:text-primary/70 focus:outline-none flex-shrink-0\"\n aria-label={`Remove ${tag}`}\n >\n <X size={10} />\n </button>\n )}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {maxTags && (\n <p className=\"text-xs text-text-muted\">{value.length} / {maxTags} tags</p>\n )}\n\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React from 'react'\nimport * as RadixSlider from '@radix-ui/react-slider'\nimport { cn } from '../../../utils/cn'\n\nexport type SliderSize = 'sm' | 'md' | 'lg'\n\nexport interface SliderProps {\n value?: number[]\n defaultValue?: number[]\n onValueChange?: (value: number[]) => void\n onValueCommit?: (value: number[]) => void\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n orientation?: 'horizontal' | 'vertical'\n size?: SliderSize\n showTooltip?: boolean\n showMarks?: boolean\n formatValue?: (value: number) => string\n label?: string\n helperText?: string\n className?: string\n}\n\nconst trackSize: Record<SliderSize, string> = {\n sm: 'h-1',\n md: 'h-1.5',\n lg: 'h-2',\n}\n\nconst thumbSize: Record<SliderSize, string> = {\n sm: 'w-3.5 h-3.5',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n}\n\nexport function Slider({\n value,\n defaultValue = [0],\n onValueChange,\n onValueCommit,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = 'horizontal',\n size = 'md',\n showTooltip = false,\n showMarks = false,\n formatValue = (v) => String(v),\n label,\n helperText,\n className,\n}: SliderProps) {\n const [internalValue, setInternalValue] = React.useState(value ?? defaultValue)\n const [showTip, setShowTip] = React.useState(false)\n\n const currentValue = value ?? internalValue\n\n const handleValueChange = (v: number[]) => {\n setInternalValue(v)\n onValueChange?.(v)\n }\n\n const marks = React.useMemo(() => {\n if (!showMarks) return []\n const count = Math.floor((max - min) / step)\n return Array.from({ length: count + 1 }, (_, i) => min + i * step)\n }, [showMarks, min, max, step])\n\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n {label && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium text-text\">{label}</span>\n <span className=\"text-sm text-text-muted\">{currentValue.map(formatValue).join(' – ')}</span>\n </div>\n )}\n\n <RadixSlider.Root\n className={cn(\n 'relative flex items-center select-none touch-none',\n orientation === 'horizontal' ? 'w-full' : 'flex-col h-40 w-5',\n disabled && 'opacity-50 cursor-not-allowed'\n )}\n value={currentValue}\n defaultValue={defaultValue}\n onValueChange={handleValueChange}\n onValueCommit={onValueCommit}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n orientation={orientation}\n >\n <RadixSlider.Track\n className={cn(\n 'relative grow rounded-full bg-surface-hover overflow-hidden',\n orientation === 'horizontal' ? `w-full ${trackSize[size]}` : `h-full w-${size === 'sm' ? '1' : size === 'md' ? '1.5' : '2'}`\n )}\n >\n <RadixSlider.Range className=\"absolute bg-primary rounded-full h-full\" />\n </RadixSlider.Track>\n\n {currentValue.map((_, i) => (\n <RadixSlider.Thumb\n key={i}\n className={cn(\n 'block rounded-full bg-white border-2 border-primary shadow-md',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/40',\n 'transition-transform hover:scale-110',\n 'cursor-grab active:cursor-grabbing',\n thumbSize[size],\n disabled && 'cursor-not-allowed hover:scale-100'\n )}\n onMouseEnter={() => showTooltip && setShowTip(true)}\n onMouseLeave={() => showTooltip && setShowTip(false)}\n aria-label={`Slider thumb ${i + 1}`}\n >\n {showTooltip && showTip && (\n <div className=\"absolute -top-8 left-1/2 -translate-x-1/2 bg-text text-background text-xs px-2 py-0.5 rounded whitespace-nowrap pointer-events-none\">\n {formatValue(currentValue[i])}\n </div>\n )}\n </RadixSlider.Thumb>\n ))}\n </RadixSlider.Root>\n\n {showMarks && (\n <div className=\"relative flex justify-between mt-1\">\n {marks.map((mark) => (\n <span key={mark} className=\"text-xs text-text-muted\">{formatValue(mark)}</span>\n ))}\n </div>\n )}\n\n {helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useId, useState } from 'react'\nimport { ChevronUp, ChevronDown } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type NumberInputSize = 'sm' | 'md' | 'lg'\n\nexport interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'onChange' | 'type'> {\n value?: number\n defaultValue?: number\n onChange?: (value: number | undefined) => void\n min?: number\n max?: number\n step?: number\n precision?: number\n prefix?: string\n suffix?: string\n label?: string\n helperText?: string\n error?: string\n size?: NumberInputSize\n fullWidth?: boolean\n hideControls?: boolean\n showMaxLength?: boolean\n formatValue?: (value: number) => string\n containerClassName?: string\n}\n\nconst sizeClasses: Record<NumberInputSize, { input: string; btn: string }> = {\n sm: { input: 'h-8 text-sm px-2.5', btn: 'h-4 w-6' },\n md: { input: 'h-9 text-sm px-3', btn: 'h-[18px] w-7' },\n lg: { input: 'h-11 text-base px-4', btn: 'h-5 w-8' },\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n ({\n value: controlledValue,\n defaultValue,\n onChange,\n min,\n max,\n step = 1,\n precision,\n prefix,\n suffix,\n label,\n helperText,\n error,\n size = 'md',\n fullWidth = false,\n hideControls = false,\n showMaxLength = false,\n formatValue,\n disabled,\n required,\n id: externalId,\n containerClassName,\n className,\n ...props\n }, ref) => {\n const generatedId = useId()\n const id = externalId ?? generatedId\n const [internalValue, setInternalValue] = useState<number | undefined>(defaultValue)\n const [inputStr, setInputStr] = useState(defaultValue !== undefined ? String(defaultValue) : '')\n\n const value = controlledValue !== undefined ? controlledValue : internalValue\n const sz = sizeClasses[size]\n\n const clamp = (v: number) => {\n let result = v\n if (min !== undefined) result = Math.max(min, result)\n if (max !== undefined) result = Math.min(max, result)\n if (precision !== undefined) result = parseFloat(result.toFixed(precision))\n return result\n }\n\n const commit = (v: number | undefined) => {\n setInternalValue(v)\n onChange?.(v)\n setInputStr(v !== undefined ? (formatValue ? formatValue(v) : String(v)) : '')\n }\n\n const increment = () => {\n const base = value ?? (min ?? 0)\n commit(clamp(base + step))\n }\n\n const decrement = () => {\n const base = value ?? (min ?? 0)\n commit(clamp(base - step))\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n setInputStr(raw)\n const parsed = parseFloat(raw)\n if (raw === '' || raw === '-') {\n setInternalValue(undefined)\n onChange?.(undefined)\n } else if (!isNaN(parsed)) {\n setInternalValue(parsed)\n onChange?.(parsed)\n }\n }\n\n const handleBlur = () => {\n if (value !== undefined) commit(clamp(value))\n else setInputStr('')\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!hideControls) {\n if (e.key === 'ArrowUp') { e.preventDefault(); increment(); return }\n if (e.key === 'ArrowDown') { e.preventDefault(); decrement(); return }\n }\n const allowed = [\n 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',\n 'Home', 'End',\n ]\n if (allowed.includes(e.key)) return\n if (e.ctrlKey || e.metaKey) return\n const isDigit = /^[0-9]$/.test(e.key)\n const isMinus = e.key === '-' && (e.currentTarget.selectionStart === 0) && !e.currentTarget.value.includes('-')\n const isDot = (e.key === '.' || e.key === ',') && !e.currentTarget.value.includes('.')\n if (!isDigit && !isMinus && !isDot) e.preventDefault()\n }\n\n const displayValue = document.activeElement?.id === id\n ? inputStr\n : value !== undefined\n ? (formatValue ? formatValue(value) : String(value))\n : ''\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', containerClassName)}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}{required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n <div className={cn('relative flex items-center', fullWidth && 'w-full')}>\n {prefix && (\n <span className=\"absolute left-0 flex items-center justify-center h-full px-2.5 border-r border-border bg-surface-hover rounded-l-md text-sm text-text-muted select-none\">\n {prefix}\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type=\"text\"\n inputMode=\"decimal\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n required={required}\n aria-invalid={!!error}\n className={cn(\n 'w-full rounded-md border bg-surface text-text placeholder:text-text-muted',\n 'transition-colors outline-none',\n 'focus:border-border-focus focus:ring-2 focus:ring-border-focus/20',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n error ? 'border-error focus:border-error focus:ring-error/20' : 'border-border',\n sz.input,\n prefix && 'pl-10',\n (suffix || !hideControls) && 'pr-10',\n className\n )}\n {...props}\n />\n {suffix && hideControls && (\n <span className=\"absolute right-0 flex items-center justify-center h-full px-2.5 border-l border-border bg-surface-hover rounded-r-md text-sm text-text-muted select-none\">\n {suffix}\n </span>\n )}\n {!hideControls && (\n <div className=\"absolute right-0 flex flex-col h-full border-l border-border rounded-r-md overflow-hidden\">\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={increment}\n disabled={disabled || (max !== undefined && (value ?? -Infinity) >= max)}\n className={cn('flex items-center justify-center flex-1 bg-surface-hover hover:bg-surface-active transition-colors disabled:opacity-40 disabled:cursor-not-allowed', sz.btn)}\n aria-label=\"Increment\"\n >\n <ChevronUp size={10} />\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={decrement}\n disabled={disabled || (min !== undefined && (value ?? Infinity) <= min)}\n className={cn('flex items-center justify-center flex-1 bg-surface-hover hover:bg-surface-active transition-colors border-t border-border disabled:opacity-40 disabled:cursor-not-allowed', sz.btn)}\n aria-label=\"Decrement\"\n >\n <ChevronDown size={10} />\n </button>\n </div>\n )}\n </div>\n <div className=\"flex items-center justify-between\">\n <div>\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n {showMaxLength && props.maxLength !== undefined && (\n <p className={cn('text-xs text-text-muted ml-auto', displayValue.length >= (props.maxLength ?? Infinity) && 'text-error')}>\n {displayValue.length}/{props.maxLength}\n </p>\n )}\n </div>\n </div>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import React, { useId, useState } from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface CountryCode {\n code: string\n dialCode: string\n flag: string\n name: string\n}\n\nexport const DEFAULT_COUNTRY_CODES: CountryCode[] = [\n { code: 'US', dialCode: '+1', flag: '🇺🇸', name: 'United States' },\n { code: 'GB', dialCode: '+44', flag: '🇬🇧', name: 'United Kingdom' },\n { code: 'IN', dialCode: '+91', flag: '🇮🇳', name: 'India' },\n { code: 'CA', dialCode: '+1', flag: '🇨🇦', name: 'Canada' },\n { code: 'AU', dialCode: '+61', flag: '🇦🇺', name: 'Australia' },\n { code: 'DE', dialCode: '+49', flag: '🇩🇪', name: 'Germany' },\n { code: 'FR', dialCode: '+33', flag: '🇫🇷', name: 'France' },\n { code: 'JP', dialCode: '+81', flag: '🇯🇵', name: 'Japan' },\n { code: 'CN', dialCode: '+86', flag: '🇨🇳', name: 'China' },\n { code: 'BR', dialCode: '+55', flag: '🇧🇷', name: 'Brazil' },\n { code: 'MX', dialCode: '+52', flag: '🇲🇽', name: 'Mexico' },\n { code: 'ZA', dialCode: '+27', flag: '🇿🇦', name: 'South Africa' },\n { code: 'NG', dialCode: '+234', flag: '🇳🇬', name: 'Nigeria' },\n { code: 'AE', dialCode: '+971', flag: '🇦🇪', name: 'UAE' },\n { code: 'SG', dialCode: '+65', flag: '🇸🇬', name: 'Singapore' },\n { code: 'KR', dialCode: '+82', flag: '🇰🇷', name: 'South Korea' },\n { code: 'IT', dialCode: '+39', flag: '🇮🇹', name: 'Italy' },\n { code: 'ES', dialCode: '+34', flag: '🇪🇸', name: 'Spain' },\n { code: 'RU', dialCode: '+7', flag: '🇷🇺', name: 'Russia' },\n { code: 'PK', dialCode: '+92', flag: '🇵🇰', name: 'Pakistan' },\n { code: 'BD', dialCode: '+880', flag: '🇧🇩', name: 'Bangladesh' },\n { code: 'ID', dialCode: '+62', flag: '🇮🇩', name: 'Indonesia' },\n { code: 'TR', dialCode: '+90', flag: '🇹🇷', name: 'Turkey' },\n { code: 'SA', dialCode: '+966', flag: '🇸🇦', name: 'Saudi Arabia' },\n { code: 'NL', dialCode: '+31', flag: '🇳🇱', name: 'Netherlands' },\n { code: 'CH', dialCode: '+41', flag: '🇨🇭', name: 'Switzerland' },\n { code: 'SE', dialCode: '+46', flag: '🇸🇪', name: 'Sweden' },\n { code: 'NO', dialCode: '+47', flag: '🇳🇴', name: 'Norway' },\n { code: 'PL', dialCode: '+48', flag: '🇵🇱', name: 'Poland' },\n { code: 'AR', dialCode: '+54', flag: '🇦🇷', name: 'Argentina' },\n]\n\nexport type PhoneInputSize = 'sm' | 'md' | 'lg'\n\nexport interface PhoneInputValue {\n countryCode: CountryCode\n number: string\n /** Full value e.g. \"+91 9876543210\" */\n full: string\n}\n\nexport interface PhoneInputProps {\n value?: PhoneInputValue\n defaultCountry?: string\n onChange?: (value: PhoneInputValue) => void\n label?: string\n helperText?: string\n error?: string\n placeholder?: string\n disabled?: boolean\n required?: boolean\n size?: PhoneInputSize\n fullWidth?: boolean\n maxLength?: number\n showMaxLength?: boolean\n countryCodes?: CountryCode[]\n className?: string\n containerClassName?: string\n id?: string\n}\n\nconst sizeClasses: Record<PhoneInputSize, string> = {\n sm: 'h-8 text-sm',\n md: 'h-9 text-sm',\n lg: 'h-11 text-base',\n}\n\nconst dialSelectSizes: Record<PhoneInputSize, string> = {\n sm: 'text-sm px-1.5',\n md: 'text-sm px-2',\n lg: 'text-base px-2.5',\n}\n\nexport const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({\n value: controlledValue,\n defaultCountry = 'US',\n onChange,\n label,\n helperText,\n error,\n placeholder = 'Phone number',\n disabled = false,\n required = false,\n size = 'md',\n fullWidth = false,\n maxLength,\n showMaxLength = false,\n countryCodes = DEFAULT_COUNTRY_CODES,\n className,\n containerClassName,\n id: externalId,\n }, ref) => {\n const generatedId = useId()\n const id = externalId ?? generatedId\n\n const defaultCC = countryCodes.find((c) => c.code === defaultCountry) ?? countryCodes[0]\n const [selectedCountry, setSelectedCountry] = useState<CountryCode>(\n controlledValue?.countryCode ?? defaultCC\n )\n const [phoneNumber, setPhoneNumber] = useState(controlledValue?.number ?? '')\n\n const activeCountry = controlledValue?.countryCode ?? selectedCountry\n const activeNumber = controlledValue?.number ?? phoneNumber\n\n const buildValue = (country: CountryCode, number: string): PhoneInputValue => ({\n countryCode: country,\n number,\n full: `${country.dialCode} ${number}`.trim(),\n })\n\n const handleCountryChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const country = countryCodes.find((c) => c.code === e.target.value) ?? defaultCC\n setSelectedCountry(country)\n onChange?.(buildValue(country, activeNumber))\n }\n\n const handleNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value.replace(/[^\\d\\s\\-().+]/g, '')\n if (maxLength !== undefined && raw.replace(/\\D/g, '').length > maxLength) return\n setPhoneNumber(raw)\n onChange?.(buildValue(activeCountry, raw))\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowed = [\n 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n 'ArrowLeft', 'ArrowRight', 'Home', 'End',\n ' ', '-', '(', ')', '.', '+',\n ]\n if (allowed.includes(e.key)) return\n if (e.ctrlKey || e.metaKey) return\n if (!/^\\d$/.test(e.key)) e.preventDefault()\n }\n\n const height = sizeClasses[size]\n const dialSize = dialSelectSizes[size]\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', containerClassName)}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}{required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n\n <div\n className={cn(\n 'flex items-stretch rounded-md border overflow-hidden bg-surface transition-colors',\n 'focus-within:border-border-focus focus-within:ring-2 focus-within:ring-border-focus/20',\n error ? 'border-error focus-within:border-error focus-within:ring-error/20' : 'border-border',\n disabled && 'opacity-50 cursor-not-allowed',\n fullWidth && 'w-full',\n )}\n >\n {/* Country code selector */}\n <select\n value={activeCountry.code}\n onChange={handleCountryChange}\n disabled={disabled}\n aria-label=\"Country code\"\n className={cn(\n 'border-r border-border bg-surface-hover text-text cursor-pointer outline-none',\n 'appearance-none focus:outline-none',\n height,\n dialSize,\n )}\n style={{ minWidth: size === 'sm' ? 72 : size === 'lg' ? 96 : 84 }}\n >\n {countryCodes.map((c) => (\n <option key={c.code} value={c.code}>\n {c.flag} {c.dialCode}\n </option>\n ))}\n </select>\n\n {/* Phone number input */}\n <input\n ref={ref}\n id={id}\n type=\"tel\"\n inputMode=\"tel\"\n value={activeNumber}\n onChange={handleNumberChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n required={required}\n placeholder={placeholder}\n aria-invalid={!!error}\n className={cn(\n 'flex-1 bg-transparent text-text placeholder:text-text-muted outline-none px-3',\n 'disabled:cursor-not-allowed',\n height,\n className,\n )}\n />\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div>\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n {showMaxLength && maxLength !== undefined && (\n <p className={cn(\n 'text-xs text-text-muted ml-auto',\n activeNumber.replace(/\\D/g, '').length >= maxLength && 'text-error'\n )}>\n {activeNumber.replace(/\\D/g, '').length}/{maxLength}\n </p>\n )}\n </div>\n </div>\n )\n }\n)\n\nPhoneInput.displayName = 'PhoneInput'\n","import React, { useRef, useState, useId } from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type OTPInputSize = 'sm' | 'md' | 'lg'\n\nexport interface OTPInputProps {\n length?: number\n value?: string\n onChange?: (value: string) => void\n onComplete?: (value: string) => void\n size?: OTPInputSize\n mask?: boolean\n disabled?: boolean\n error?: string\n label?: string\n helperText?: string\n separator?: boolean\n separatorAt?: number[]\n autoFocus?: boolean\n className?: string\n}\n\nconst sizeClasses: Record<OTPInputSize, string> = {\n sm: 'w-8 h-9 text-sm',\n md: 'w-10 h-11 text-base',\n lg: 'w-12 h-13 text-lg',\n}\n\nexport function OTPInput({\n length = 6,\n value: controlledValue,\n onChange,\n onComplete,\n size = 'md',\n mask = false,\n disabled = false,\n error,\n label,\n helperText,\n separator = false,\n separatorAt = [],\n autoFocus = false,\n className,\n}: OTPInputProps) {\n const id = useId()\n const [internalValue, setInternalValue] = useState('')\n const inputsRef = useRef<(HTMLInputElement | null)[]>([])\n\n const value = controlledValue !== undefined ? controlledValue : internalValue\n const digits = value.split('').slice(0, length)\n\n const update = (newVal: string) => {\n setInternalValue(newVal)\n onChange?.(newVal)\n if (newVal.length === length) onComplete?.(newVal)\n }\n\n const handleChange = (index: number, e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value.replace(/\\D/g, '')\n if (!raw) return\n const char = raw[raw.length - 1]\n const newDigits = [...digits]\n newDigits[index] = char\n const newVal = newDigits.join('').slice(0, length)\n update(newVal)\n if (index < length - 1) inputsRef.current[index + 1]?.focus()\n }\n\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newDigits = [...digits]\n if (newDigits[index]) {\n newDigits[index] = ''\n update(newDigits.join(''))\n } else if (index > 0) {\n inputsRef.current[index - 1]?.focus()\n const prev = [...digits]\n prev[index - 1] = ''\n update(prev.join(''))\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n inputsRef.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n inputsRef.current[index + 1]?.focus()\n }\n }\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault()\n const pasted = e.clipboardData.getData('text').replace(/\\D/g, '').slice(0, length)\n update(pasted)\n const focusIdx = Math.min(pasted.length, length - 1)\n inputsRef.current[focusIdx]?.focus()\n }\n\n const defaultSeparatorAt = separator ? [Math.floor(length / 2) - 1] : separatorAt\n\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n {label && (\n <label htmlFor={`${id}-0`} className=\"text-sm font-medium text-text\">\n {label}\n </label>\n )}\n <div className=\"flex items-center gap-2\">\n {Array.from({ length }).map((_, i) => (\n <React.Fragment key={i}>\n <input\n ref={(el) => { inputsRef.current[i] = el }}\n id={`${id}-${i}`}\n type={mask ? 'password' : 'text'}\n inputMode=\"numeric\"\n maxLength={1}\n value={digits[i] ?? ''}\n onChange={(e) => handleChange(i, e)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n disabled={disabled}\n autoFocus={autoFocus && i === 0}\n className={cn(\n 'rounded-md border text-center font-mono font-semibold bg-surface text-text',\n 'transition-colors outline-none',\n 'focus:border-border-focus focus:ring-2 focus:ring-border-focus/20',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n error ? 'border-error focus:border-error focus:ring-error/20' : 'border-border',\n sizeClasses[size]\n )}\n aria-label={`Digit ${i + 1} of ${length}`}\n />\n {defaultSeparatorAt.includes(i) && (\n <span className=\"text-text-muted font-bold text-lg select-none\">–</span>\n )}\n </React.Fragment>\n ))}\n </div>\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { Star } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type RatingSize = 'sm' | 'md' | 'lg'\n\nexport interface RatingProps {\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n max?: number\n size?: RatingSize\n disabled?: boolean\n readOnly?: boolean\n allowHalf?: boolean\n allowClear?: boolean\n label?: string\n helperText?: string\n className?: string\n icon?: React.ReactNode\n emptyIcon?: React.ReactNode\n}\n\nconst sizeMap: Record<RatingSize, number> = { sm: 16, md: 20, lg: 28 }\n\nexport function Rating({\n value: controlledValue,\n defaultValue = 0,\n onChange,\n max = 5,\n size = 'md',\n disabled = false,\n readOnly = false,\n allowHalf = false,\n allowClear = true,\n label,\n helperText,\n className,\n icon,\n emptyIcon,\n}: RatingProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState<number | null>(null)\n\n const value = controlledValue !== undefined ? controlledValue : internalValue\n const iconSize = sizeMap[size]\n const interactive = !disabled && !readOnly\n\n const handleClick = (star: number) => {\n if (!interactive) return\n const newVal = allowClear && star === value ? 0 : star\n setInternalValue(newVal)\n onChange?.(newVal)\n }\n\n const getStarFill = (star: number) => {\n const display = hoverValue ?? value\n if (display >= star) return 'full'\n if (allowHalf && display >= star - 0.5) return 'half'\n return 'empty'\n }\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n {label && <span className=\"text-sm font-medium text-text\">{label}</span>}\n <div\n className={cn('flex items-center gap-0.5', interactive && 'cursor-pointer')}\n onMouseLeave={() => interactive && setHoverValue(null)}\n role={interactive ? 'slider' : 'img'}\n aria-label={`Rating: ${value} out of ${max}`}\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n >\n {Array.from({ length: max }, (_, i) => {\n const star = i + 1\n const fill = getStarFill(star)\n return (\n <button\n key={star}\n type=\"button\"\n onClick={() => handleClick(star)}\n onMouseEnter={() => interactive && setHoverValue(star)}\n disabled={disabled}\n className={cn(\n 'relative transition-transform focus:outline-none',\n interactive && 'hover:scale-110',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n aria-label={`Rate ${star} out of ${max}`}\n tabIndex={interactive ? 0 : -1}\n >\n {fill === 'empty' ? (\n emptyIcon ?? (\n <Star\n size={iconSize}\n className=\"text-border fill-transparent transition-colors\"\n />\n )\n ) : fill === 'full' ? (\n icon ?? (\n <Star\n size={iconSize}\n className={cn(\n 'transition-colors',\n hoverValue !== null ? 'text-warning fill-warning' : 'text-warning fill-warning'\n )}\n />\n )\n ) : (\n <span className=\"relative inline-block\">\n <Star size={iconSize} className=\"text-border fill-transparent\" />\n <span className=\"absolute inset-0 overflow-hidden w-1/2\">\n <Star size={iconSize} className=\"text-warning fill-warning\" />\n </span>\n </span>\n )}\n </button>\n )\n })}\n </div>\n {helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useState, useRef, useId, useEffect } from 'react'\nimport { Check, ChevronDown, X, Search } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface MultiSelectOption {\n value: string\n label: string\n description?: string\n icon?: React.ReactNode\n disabled?: boolean\n}\n\nexport interface MultiSelectGroup {\n label: string\n options: MultiSelectOption[]\n}\n\nexport interface MultiSelectProps {\n options?: MultiSelectOption[]\n groups?: MultiSelectGroup[]\n value?: string[]\n defaultValue?: string[]\n onChange?: (value: string[]) => void\n placeholder?: string\n searchPlaceholder?: string\n label?: string\n helperText?: string\n error?: string\n disabled?: boolean\n required?: boolean\n searchable?: boolean\n clearable?: boolean\n maxSelected?: number\n maxDisplayed?: number\n size?: 'sm' | 'md' | 'lg'\n fullWidth?: boolean\n className?: string\n containerClassName?: string\n}\n\nconst sizeClasses = {\n sm: 'min-h-8 text-sm px-2.5',\n md: 'min-h-9 text-sm px-3',\n lg: 'min-h-11 text-base px-4',\n}\n\nexport function MultiSelect({\n options = [],\n groups = [],\n value: controlledValue,\n defaultValue = [],\n onChange,\n placeholder = 'Select options…',\n searchPlaceholder = 'Search…',\n label,\n helperText,\n error,\n disabled = false,\n required = false,\n searchable = true,\n clearable = true,\n maxSelected,\n maxDisplayed = 3,\n size = 'md',\n fullWidth = false,\n className,\n containerClassName,\n}: MultiSelectProps) {\n const id = useId()\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue)\n const [open, setOpen] = useState(false)\n const [search, setSearch] = useState('')\n const containerRef = useRef<HTMLDivElement>(null)\n const searchRef = useRef<HTMLInputElement>(null)\n\n const value = controlledValue ?? internalValue\n\n const allOptions = [\n ...options,\n ...groups.flatMap((g) => g.options),\n ]\n\n const update = (next: string[]) => {\n setInternalValue(next)\n onChange?.(next)\n }\n\n const toggle = (optValue: string) => {\n if (value.includes(optValue)) {\n update(value.filter((v) => v !== optValue))\n } else {\n if (maxSelected && value.length >= maxSelected) return\n update([...value, optValue])\n }\n }\n\n const removeTag = (e: React.MouseEvent, optValue: string) => {\n e.stopPropagation()\n update(value.filter((v) => v !== optValue))\n }\n\n const clearAll = (e: React.MouseEvent) => {\n e.stopPropagation()\n update([])\n }\n\n useEffect(() => {\n if (open) setTimeout(() => searchRef.current?.focus(), 10)\n else setSearch('')\n }, [open])\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false)\n }\n document.addEventListener('mousedown', handler)\n return () => document.removeEventListener('mousedown', handler)\n }, [])\n\n const filterOption = (opt: MultiSelectOption) =>\n opt.label.toLowerCase().includes(search.toLowerCase()) ||\n opt.description?.toLowerCase().includes(search.toLowerCase())\n\n const filteredOptions = options.filter(filterOption)\n const filteredGroups = groups\n .map((g) => ({ ...g, options: g.options.filter(filterOption) }))\n .filter((g) => g.options.length > 0)\n\n const hasResults = filteredOptions.length > 0 || filteredGroups.length > 0\n\n const selectedLabels = value.map((v) => allOptions.find((o) => o.value === v)?.label ?? v)\n const displayedTags = selectedLabels.slice(0, maxDisplayed)\n const overflow = selectedLabels.length - maxDisplayed\n\n const renderOption = (opt: MultiSelectOption) => {\n const selected = value.includes(opt.value)\n const atMax = !selected && maxSelected !== undefined && value.length >= maxSelected\n return (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={opt.disabled || atMax}\n onClick={() => !opt.disabled && !atMax && toggle(opt.value)}\n className={cn(\n 'flex items-center gap-2.5 px-3 py-2 rounded-md cursor-pointer transition-colors text-sm',\n selected ? 'bg-primary/10 text-primary' : 'text-text hover:bg-surface-hover',\n (opt.disabled || atMax) && 'opacity-40 cursor-not-allowed pointer-events-none'\n )}\n >\n <div className={cn('flex-shrink-0 w-4 h-4 rounded border flex items-center justify-center transition-colors',\n selected ? 'bg-primary border-primary' : 'border-border bg-surface'\n )}>\n {selected && <Check size={10} className=\"text-primary-foreground\" />}\n </div>\n {opt.icon && <span className=\"flex-shrink-0 text-text-muted\">{opt.icon}</span>}\n <div className=\"flex-1 min-w-0\">\n <div className=\"truncate\">{opt.label}</div>\n {opt.description && <div className=\"text-xs text-text-muted truncate\">{opt.description}</div>}\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', containerClassName)}>\n {label && (\n <label htmlFor={`${id}-trigger`} className=\"text-sm font-medium text-text\">\n {label}{required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n <div ref={containerRef} className={cn('relative', fullWidth && 'w-full', className)}>\n {/* Trigger */}\n <div\n id={`${id}-trigger`}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-disabled={disabled}\n onClick={() => !disabled && setOpen((v) => !v)}\n className={cn(\n 'flex items-center flex-wrap gap-1.5 rounded-md border bg-surface cursor-pointer',\n 'transition-colors outline-none py-1.5',\n open ? 'border-border-focus ring-2 ring-border-focus/20' : 'border-border',\n error && 'border-error ring-0',\n disabled && 'opacity-50 cursor-not-allowed',\n sizeClasses[size]\n )}\n >\n {value.length === 0 ? (\n <span className=\"text-text-muted flex-1\">{placeholder}</span>\n ) : (\n <>\n {displayedTags.map((tag, i) => (\n <span key={value[i]} className=\"inline-flex items-center gap-1 bg-primary/10 text-primary text-xs px-2 py-0.5 rounded-full\">\n {tag}\n <button type=\"button\" onClick={(e) => removeTag(e, value[i])} className=\"hover:text-primary/60 transition-colors\" aria-label={`Remove ${tag}`}>\n <X size={10} />\n </button>\n </span>\n ))}\n {overflow > 0 && (\n <span className=\"text-xs text-text-muted bg-surface-hover px-2 py-0.5 rounded-full\">+{overflow} more</span>\n )}\n <span className=\"flex-1\" />\n </>\n )}\n <div className=\"flex items-center gap-1 ml-auto pr-1\">\n {clearable && value.length > 0 && !disabled && (\n <button type=\"button\" onClick={clearAll} className=\"text-text-muted hover:text-text transition-colors\" aria-label=\"Clear all\">\n <X size={14} />\n </button>\n )}\n <ChevronDown size={16} className={cn('text-text-muted transition-transform', open && 'rotate-180')} />\n </div>\n </div>\n\n {/* Dropdown */}\n {open && (\n <div className=\"absolute z-50 w-full mt-1 bg-surface border border-border rounded-lg shadow-lg overflow-hidden\">\n {searchable && (\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n <Search size={14} className=\"text-text-muted flex-shrink-0\" />\n <input\n ref={searchRef}\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"flex-1 bg-transparent text-sm text-text placeholder:text-text-muted outline-none\"\n />\n </div>\n )}\n <div role=\"listbox\" aria-multiselectable=\"true\" className=\"max-h-60 overflow-y-auto p-1.5\">\n {!hasResults ? (\n <div className=\"py-6 text-center text-sm text-text-muted\">No options found.</div>\n ) : (\n <>\n {filteredOptions.map(renderOption)}\n {filteredGroups.map((group) => (\n <div key={group.label}>\n <div className=\"px-3 py-1.5 text-xs font-semibold text-text-muted uppercase tracking-wider\">{group.label}</div>\n {group.options.map(renderOption)}\n </div>\n ))}\n </>\n )}\n </div>\n {maxSelected && (\n <div className=\"px-3 py-1.5 border-t border-border text-xs text-text-muted\">\n {value.length}/{maxSelected} selected\n </div>\n )}\n </div>\n )}\n </div>\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n )\n}\n","import React, { useState, useRef, useEffect, useId, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\nimport { DayPicker, DateRange, type CustomComponents } from 'react-day-picker'\nimport { format, isValid, setMonth, setYear, getMonth, getYear } from 'date-fns'\nimport { Calendar, ChevronLeft, ChevronRight, X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type DatePickerMode = 'single' | 'range'\nexport type DatePickerSize = 'sm' | 'md' | 'lg'\n\nconst MONTHS = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n]\n\nconst selectStyle: React.CSSProperties = {\n appearance: 'none',\n WebkitAppearance: 'none',\n background: 'var(--color-surface-hover)',\n border: '1px solid var(--color-border)',\n borderRadius: 'var(--radius-sm, 4px)',\n color: 'var(--color-text)',\n cursor: 'pointer',\n fontSize: '0.8125rem',\n fontWeight: 600,\n padding: '2px 20px 2px 6px',\n outline: 'none',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E\")`,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 4px center',\n}\n\ninterface MonthCaptionProps {\n displayMonth: Date\n onMonthChange: (month: Date) => void\n minDate?: Date\n maxDate?: Date\n yearRangeBefore?: number\n yearRangeAfter?: number\n}\n\nfunction MonthCaption({ displayMonth, onMonthChange, minDate, maxDate, yearRangeBefore = 10, yearRangeAfter = 5 }: MonthCaptionProps) {\n const today = new Date()\n const currentYear = getYear(displayMonth)\n const currentMonth = getMonth(displayMonth)\n\n const minYear = minDate ? getYear(minDate) : getYear(today) - yearRangeBefore\n const maxYear = maxDate ? getYear(maxDate) : getYear(today) + yearRangeAfter\n\n const years = Array.from({ length: maxYear - minYear + 1 }, (_, i) => minYear + i)\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <select\n value={currentMonth}\n onChange={(e) => onMonthChange(setMonth(displayMonth, Number(e.target.value)))}\n style={selectStyle}\n aria-label=\"Select month\"\n >\n {MONTHS.map((m, i) => (\n <option key={m} value={i}>{m}</option>\n ))}\n </select>\n <select\n value={currentYear}\n onChange={(e) => onMonthChange(setYear(displayMonth, Number(e.target.value)))}\n style={selectStyle}\n aria-label=\"Select year\"\n >\n {years.map((y) => (\n <option key={y} value={y}>{y}</option>\n ))}\n </select>\n </div>\n )\n}\n\nexport interface DatePickerSingleProps {\n mode?: 'single'\n value?: Date\n defaultValue?: Date\n onChange?: (date: Date | undefined) => void\n}\n\nexport interface DatePickerRangeProps {\n mode: 'range'\n value?: DateRange\n defaultValue?: DateRange\n onChange?: (range: DateRange | undefined) => void\n}\n\ntype DatePickerBaseProps = {\n label?: string\n helperText?: string\n error?: string\n placeholder?: string\n dateFormat?: string\n disabled?: boolean\n required?: boolean\n clearable?: boolean\n size?: DatePickerSize\n fullWidth?: boolean\n minDate?: Date\n maxDate?: Date\n disabledDates?: Date[]\n /** How many years before current year to show in the year dropdown (default: 10) */\n yearRangeBefore?: number\n /** How many years after current year to show in the year dropdown (default: 5) */\n yearRangeAfter?: number\n className?: string\n containerClassName?: string\n}\n\nexport type DatePickerProps = DatePickerBaseProps & (DatePickerSingleProps | DatePickerRangeProps)\n\nconst sizeClasses: Record<DatePickerSize, string> = {\n sm: 'h-8 text-sm px-2.5',\n md: 'h-9 text-sm px-3',\n lg: 'h-11 text-base px-4',\n}\n\nconst dayPickerStyles = `\n /* react-day-picker v9 class names */\n .rdp-root { --rdp-accent-color: var(--color-primary); margin: 0; }\n .rdp-months { display: flex; gap: 1rem; }\n .rdp-month { width: auto; }\n .rdp-month_caption { display: flex; align-items: center; justify-content: space-between; padding: 0 0.25rem 0.75rem; min-width: 252px; }\n .rdp-month_grid { border-collapse: collapse; table-layout: fixed; }\n .rdp-caption_label { font-size: 0.875rem; font-weight: 600; color: var(--color-text); }\n .rdp-nav { display: flex; gap: 0.25rem; }\n .rdp-button_previous, .rdp-button_next { display: flex; align-items: center; justify-content: center; width: 1.75rem; height: 1.75rem; border-radius: var(--radius-md); border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-muted); cursor: pointer; transition: background 0.15s; }\n .rdp-button_previous:hover, .rdp-button_next:hover { background: var(--color-surface-hover); color: var(--color-text); }\n .rdp-weekdays { display: table-row; }\n .rdp-weekday { font-size: 0.75rem; font-weight: 500; color: var(--color-text-muted); text-align: center !important; padding: 0.25rem 0; width: 2.25rem; min-width: 2.25rem; }\n .rdp-weekday abbr { text-decoration: none; }\n .rdp-week { display: table-row; }\n .rdp-day { padding: 0.125rem; text-align: center; width: 2.25rem; min-width: 2.25rem; }\n .rdp-day_button { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: var(--radius-md); font-size: 0.8125rem; color: var(--color-text); cursor: pointer; transition: background 0.15s, color 0.15s; border: none; background: transparent; }\n .rdp-day_button:hover:not(:disabled) { background: var(--color-surface-hover); }\n .rdp-selected .rdp-day_button { background: var(--color-primary) !important; color: var(--color-primary-foreground) !important; border-radius: var(--radius-md); }\n .rdp-today:not(.rdp-selected) .rdp-day_button { font-weight: 700; color: var(--color-primary); }\n .rdp-disabled .rdp-day_button { opacity: 0.35; cursor: not-allowed; }\n .rdp-outside .rdp-day_button { opacity: 0.4; }\n .rdp-range_start .rdp-day_button, .rdp-range_end .rdp-day_button { background: var(--color-primary) !important; color: var(--color-primary-foreground) !important; }\n .rdp-range_middle .rdp-day_button { background: color-mix(in srgb, var(--color-primary) 15%, transparent) !important; color: var(--color-primary) !important; border-radius: 0; }\n .rdp-range_start .rdp-day_button { border-radius: var(--radius-md) 0 0 var(--radius-md) !important; }\n .rdp-range_end .rdp-day_button { border-radius: 0 var(--radius-md) var(--radius-md) 0 !important; }\n`\n\nfunction formatDateDisplay(date: Date | undefined, fmt: string): string {\n if (!date || !isValid(date)) return ''\n return format(date, fmt)\n}\n\nfunction formatRangeDisplay(range: DateRange | undefined, fmt: string): string {\n if (!range) return ''\n const from = range.from ? format(range.from, fmt) : ''\n const to = range.to ? format(range.to, fmt) : ''\n if (from && to) return `${from} – ${to}`\n if (from) return `${from} – …`\n return ''\n}\n\nexport function DatePicker(props: DatePickerProps) {\n const {\n label,\n helperText,\n error,\n placeholder,\n dateFormat = 'MMM d, yyyy',\n disabled = false,\n required = false,\n clearable = true,\n size = 'md',\n fullWidth = false,\n minDate,\n maxDate,\n disabledDates,\n yearRangeBefore,\n yearRangeAfter,\n className,\n containerClassName,\n } = props\n\n const id = useId()\n const [open, setOpen] = useState(false)\n const [popoverStyle, setPopoverStyle] = useState<React.CSSProperties>({})\n const [displayMonth, setDisplayMonth] = useState<Date>(new Date())\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const isRange = props.mode === 'range'\n\n // Single mode state\n const [singleInternal, setSingleInternal] = useState<Date | undefined>(\n !isRange ? (props as DatePickerSingleProps).defaultValue : undefined\n )\n const singleValue = !isRange\n ? ((props as DatePickerSingleProps).value ?? singleInternal)\n : undefined\n\n // Range mode state\n const [rangeInternal, setRangeInternal] = useState<DateRange | undefined>(\n isRange ? (props as DatePickerRangeProps).defaultValue : undefined\n )\n const rangeValue = isRange\n ? ((props as DatePickerRangeProps).value ?? rangeInternal)\n : undefined\n\n const displayValue = isRange\n ? formatRangeDisplay(rangeValue, dateFormat)\n : formatDateDisplay(singleValue, dateFormat)\n\n const hasValue = isRange ? !!(rangeValue?.from) : !!singleValue\n\n const updatePopoverPosition = useCallback(() => {\n if (!triggerRef.current) return\n const rect = triggerRef.current.getBoundingClientRect()\n const spaceBelow = window.innerHeight - rect.bottom\n const popoverHeight = 360\n const openUpward = spaceBelow < popoverHeight && rect.top > popoverHeight\n setPopoverStyle({\n position: 'fixed',\n left: rect.left,\n zIndex: 9999,\n ...(openUpward\n ? { bottom: window.innerHeight - rect.top + 4 }\n : { top: rect.bottom + 4 }),\n })\n }, [])\n\n useEffect(() => {\n if (open) updatePopoverPosition()\n }, [open, updatePopoverPosition])\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n const target = e.target as Node\n if (\n !containerRef.current?.contains(target) &&\n !(document.getElementById(`${id}-popover`)?.contains(target))\n ) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handler)\n return () => document.removeEventListener('mousedown', handler)\n }, [id])\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (isRange) {\n setRangeInternal(undefined)\n ;(props as DatePickerRangeProps).onChange?.(undefined)\n } else {\n setSingleInternal(undefined)\n ;(props as DatePickerSingleProps).onChange?.(undefined)\n }\n }\n\n const disabledMatcher = disabledDates\n ? (date: Date) => disabledDates.some((d) => format(d, 'yyyy-MM-dd') === format(date, 'yyyy-MM-dd'))\n : undefined\n\n return (\n <>\n <style>{dayPickerStyles}</style>\n <div className={cn('flex flex-col gap-1', fullWidth && 'w-full', containerClassName)}>\n {label && (\n <label htmlFor={`${id}-trigger`} className=\"text-sm font-medium text-text\">\n {label}{required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n\n <div ref={containerRef} className={cn(fullWidth && 'w-full')}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n id={`${id}-trigger`}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-disabled={disabled}\n onClick={() => !disabled && setOpen((v) => !v)}\n className={cn(\n 'flex items-center gap-2 rounded-md border bg-surface cursor-pointer',\n 'transition-colors outline-none',\n open ? 'border-border-focus ring-2 ring-border-focus/20' : 'border-border',\n error && 'border-error ring-0',\n disabled && 'opacity-50 cursor-not-allowed',\n sizeClasses[size],\n fullWidth && 'w-full',\n className\n )}\n >\n <Calendar size={15} className=\"text-text-muted flex-shrink-0\" />\n <span className={cn('flex-1 text-sm', displayValue ? 'text-text' : 'text-text-muted')}>\n {displayValue || (placeholder ?? (isRange ? 'Select date range' : 'Select date'))}\n </span>\n {clearable && hasValue && !disabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"text-text-muted hover:text-text transition-colors flex-shrink-0\"\n aria-label=\"Clear date\"\n >\n <X size={14} />\n </button>\n )}\n </div>\n\n {/* Popover rendered via portal to escape overflow clipping */}\n {open && typeof document !== 'undefined' && createPortal(\n <div\n id={`${id}-popover`}\n style={popoverStyle}\n className=\"bg-surface border border-border rounded-xl shadow-2xl p-3\"\n role=\"dialog\"\n aria-label=\"Date picker\"\n >\n {/* Prev / Next nav + Month+Year dropdowns */}\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '0.25rem' }}>\n <div style={{ display: 'flex', gap: '0.25rem' }}>\n <button\n type=\"button\"\n onClick={() => setDisplayMonth((m) => new Date(m.getFullYear(), m.getMonth() - 1, 1))}\n style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '1.75rem', height: '1.75rem', borderRadius: 'var(--radius-md)', border: '1px solid var(--color-border)', background: 'var(--color-surface)', color: 'var(--color-text-muted)', cursor: 'pointer' }}\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={14} />\n </button>\n <button\n type=\"button\"\n onClick={() => setDisplayMonth((m) => new Date(m.getFullYear(), m.getMonth() + 1, 1))}\n style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '1.75rem', height: '1.75rem', borderRadius: 'var(--radius-md)', border: '1px solid var(--color-border)', background: 'var(--color-surface)', color: 'var(--color-text-muted)', cursor: 'pointer' }}\n aria-label=\"Next month\"\n >\n <ChevronRight size={14} />\n </button>\n </div>\n <MonthCaption\n displayMonth={displayMonth}\n onMonthChange={setDisplayMonth}\n minDate={minDate}\n maxDate={maxDate}\n yearRangeBefore={yearRangeBefore}\n yearRangeAfter={yearRangeAfter}\n />\n </div>\n {isRange ? (\n <DayPicker\n mode=\"range\"\n month={displayMonth}\n onMonthChange={setDisplayMonth}\n selected={rangeValue}\n onSelect={(range) => {\n setRangeInternal(range)\n ;(props as DatePickerRangeProps).onChange?.(range)\n if (range?.from && range?.to) setOpen(false)\n }}\n disabled={[\n ...(minDate ? [{ before: minDate }] : []),\n ...(maxDate ? [{ after: maxDate }] : []),\n ...(disabledMatcher ? [disabledMatcher] : []),\n ]}\n hideNavigation\n components={{} as Partial<CustomComponents>}\n />\n ) : (\n <DayPicker\n mode=\"single\"\n month={displayMonth}\n onMonthChange={setDisplayMonth}\n selected={singleValue}\n onSelect={(date) => {\n setSingleInternal(date)\n ;(props as DatePickerSingleProps).onChange?.(date)\n setOpen(false)\n }}\n disabled={[\n ...(minDate ? [{ before: minDate }] : []),\n ...(maxDate ? [{ after: maxDate }] : []),\n ...(disabledMatcher ? [disabledMatcher] : []),\n ]}\n hideNavigation\n components={{} as Partial<CustomComponents>}\n />\n )}\n </div>,\n document.body\n )}\n </div>\n\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n </div>\n </>\n )\n}\n","import React, { useId } from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface FormFieldProps {\n label?: string\n helperText?: string\n error?: string\n required?: boolean\n disabled?: boolean\n htmlFor?: string\n children: React.ReactNode\n className?: string\n}\n\nexport function FormField({\n label,\n helperText,\n error,\n required,\n disabled,\n htmlFor,\n children,\n className,\n}: FormFieldProps) {\n const generatedId = useId()\n const id = htmlFor ?? generatedId\n\n return (\n <div className={cn('flex flex-col gap-1', disabled && 'opacity-60', className)}>\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-text\">\n {label}\n {required && <span className=\"text-error ml-1\" aria-hidden=\"true\">*</span>}\n </label>\n )}\n {children}\n {error && (\n <p className=\"text-xs text-error\" role=\"alert\">\n {error}\n </p>\n )}\n {!error && helperText && (\n <p className=\"text-xs text-text-muted\">{helperText}</p>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { useForm, Controller, type SubmitHandler } from 'react-hook-form'\nimport type { AnyValidator } from './FormValidator'\nimport { cn } from '../../../utils/cn'\nimport { TextField } from '../../inputs/TextField/TextField'\nimport { TextArea } from '../../inputs/TextArea/TextArea'\nimport { Select } from '../../inputs/Select/Select'\nimport { Checkbox } from '../../inputs/Checkbox/Checkbox'\nimport { Switch } from '../../inputs/Switch/Switch'\nimport { RadioGroup } from '../../inputs/Radio/Radio'\nimport { Button } from '../../inputs/Button/Button'\nimport { SearchSelect } from '../../inputs/SearchSelect/SearchSelect'\nimport { ChipSelect } from '../../inputs/ChipSelect/ChipSelect'\nimport { TagInput } from '../../inputs/TagInput/TagInput'\n\nexport type JSONFieldType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'url'\n | 'tel'\n | 'textarea'\n | 'select'\n | 'multiselect'\n | 'searchselect'\n | 'multisearchselect'\n | 'chipselect'\n | 'taginput'\n | 'checkbox'\n | 'switch'\n | 'radio'\n | 'hidden'\n\nexport interface JSONFormOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface JSONFormField {\n name: string\n type: JSONFieldType\n label?: string\n placeholder?: string\n helperText?: string\n required?: boolean\n disabled?: boolean\n defaultValue?: unknown\n options?: JSONFormOption[]\n prefixIcon?: React.ReactNode\n prefixImage?: string\n prefixText?: string\n suffixIcon?: React.ReactNode\n suffixImage?: string\n suffixText?: string\n validation?: {\n min?: number\n max?: number\n minLength?: number\n maxLength?: number\n pattern?: RegExp\n validate?: (value: unknown) => boolean | string\n }\n /** Fluent validator built with v.string(), v.number(), v.email() etc. Takes precedence over validation object */\n validator?: AnyValidator\n colSpan?: 1 | 2 | 3\n rows?: number\n autoResize?: boolean\n showCharCount?: boolean\n}\n\nexport interface JSONFormProps {\n schema: JSONFormField[]\n defaultValues?: Record<string, unknown>\n onSubmit: SubmitHandler<Record<string, unknown>>\n onCancel?: () => void\n submitLabel?: string\n cancelLabel?: string\n loading?: boolean\n columns?: 1 | 2 | 3\n className?: string\n actionsClassName?: string\n}\n\nexport function JSONForm({\n schema,\n defaultValues,\n onSubmit,\n onCancel,\n submitLabel = 'Submit',\n cancelLabel = 'Cancel',\n loading = false,\n columns = 1,\n className,\n actionsClassName,\n}: JSONFormProps) {\n const {\n control,\n handleSubmit,\n formState: { errors },\n } = useForm<Record<string, unknown>>({\n defaultValues: defaultValues ?? Object.fromEntries(\n schema.map((f) => [f.name, f.defaultValue ?? ''])\n ),\n })\n\n const gridCols = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n }\n\n const colSpanClasses: Record<number, string> = {\n 1: 'col-span-1',\n 2: 'col-span-1 md:col-span-2',\n 3: 'col-span-1 md:col-span-2 lg:col-span-3',\n }\n\n return (\n <form onSubmit={handleSubmit(onSubmit)} noValidate className={cn('w-full', className)}>\n <div className={cn('grid gap-4', gridCols[columns])}>\n {schema.map((field) => {\n if (field.type === 'hidden') {\n return (\n <Controller\n key={field.name}\n name={field.name}\n control={control}\n render={({ field: f }) => <input type=\"hidden\" {...f} value={String(f.value ?? '')} />}\n />\n )\n }\n\n const errorMsg = errors[field.name]?.message as string | undefined\n const colSpan = field.colSpan ?? 1\n\n return (\n <div\n key={field.name}\n className={cn(colSpanClasses[colSpan])}\n >\n <Controller\n name={field.name}\n control={control}\n rules={(() => {\n if (field.validator) {\n const compiled = field.validator.compile()\n return {\n required: field.required\n ? `${field.label ?? field.name} is required`\n : compiled.required,\n minLength: compiled.minLength,\n maxLength: compiled.maxLength,\n min: compiled.min,\n max: compiled.max,\n pattern: compiled.pattern,\n validate: compiled.validate,\n }\n }\n return {\n required: field.required ? `${field.label ?? field.name} is required` : false,\n minLength: field.validation?.minLength\n ? { value: field.validation.minLength, message: `Minimum ${field.validation.minLength} characters` }\n : undefined,\n maxLength: field.validation?.maxLength\n ? { value: field.validation.maxLength, message: `Maximum ${field.validation.maxLength} characters` }\n : undefined,\n min: field.validation?.min\n ? { value: field.validation.min, message: `Minimum value is ${field.validation.min}` }\n : undefined,\n max: field.validation?.max\n ? { value: field.validation.max, message: `Maximum value is ${field.validation.max}` }\n : undefined,\n pattern: field.validation?.pattern\n ? { value: field.validation.pattern, message: 'Invalid format' }\n : undefined,\n validate: field.validation?.validate,\n }\n })()}\n render={({ field: f }) => {\n const commonProps = {\n label: field.label,\n helperText: field.helperText,\n error: errorMsg,\n disabled: field.disabled,\n required: field.required,\n fullWidth: true,\n }\n\n if (field.type === 'textarea') {\n return (\n <TextArea\n {...commonProps}\n value={String(f.value ?? '')}\n onChange={f.onChange}\n onBlur={f.onBlur}\n placeholder={field.placeholder}\n rows={field.rows}\n autoResize={field.autoResize}\n showCharCount={field.showCharCount}\n maxLength={field.validation?.maxLength}\n prefixIcon={field.prefixIcon}\n prefixImage={field.prefixImage}\n suffixIcon={field.suffixIcon}\n suffixImage={field.suffixImage}\n />\n )\n }\n\n if (field.type === 'select') {\n return (\n <Select\n {...commonProps}\n options={field.options ?? []}\n value={String(f.value ?? '')}\n onValueChange={f.onChange}\n placeholder={field.placeholder}\n />\n )\n }\n\n if (field.type === 'searchselect') {\n return (\n <SearchSelect\n {...commonProps}\n options={field.options ?? []}\n value={String(f.value ?? '')}\n onChange={(v) => f.onChange(v)}\n placeholder={field.placeholder}\n fullWidth\n />\n )\n }\n\n if (field.type === 'multiselect' || field.type === 'multisearchselect') {\n return (\n <SearchSelect\n {...commonProps}\n multiple\n options={field.options ?? []}\n value={Array.isArray(f.value) ? f.value as string[] : []}\n onChange={(v) => f.onChange(v)}\n placeholder={field.placeholder}\n fullWidth\n />\n )\n }\n\n if (field.type === 'chipselect') {\n return (\n <ChipSelect\n label={field.label}\n helperText={field.helperText}\n error={errorMsg}\n disabled={field.disabled}\n required={field.required}\n options={field.options ?? []}\n value={Array.isArray(f.value) ? f.value as string[] : []}\n onChange={(v) => f.onChange(v)}\n fullWidth\n />\n )\n }\n\n if (field.type === 'taginput') {\n return (\n <TagInput\n label={field.label}\n helperText={field.helperText}\n error={errorMsg}\n disabled={field.disabled}\n required={field.required}\n value={Array.isArray(f.value) ? f.value as string[] : []}\n onChange={(v) => f.onChange(v)}\n placeholder={field.placeholder}\n fullWidth\n />\n )\n }\n\n if (field.type === 'checkbox') {\n return (\n <Checkbox\n label={field.label}\n checked={Boolean(f.value)}\n onCheckedChange={f.onChange}\n disabled={field.disabled}\n required={field.required}\n error={errorMsg}\n />\n )\n }\n\n if (field.type === 'switch') {\n return (\n <Switch\n label={field.label}\n checked={Boolean(f.value)}\n onCheckedChange={f.onChange}\n disabled={field.disabled}\n required={field.required}\n />\n )\n }\n\n if (field.type === 'radio') {\n return (\n <RadioGroup\n label={field.label}\n options={field.options ?? []}\n value={String(f.value ?? '')}\n onValueChange={f.onChange}\n disabled={field.disabled}\n required={field.required}\n error={errorMsg}\n />\n )\n }\n\n return (\n <TextField\n {...commonProps}\n type={field.type}\n value={String(f.value ?? '')}\n onChange={f.onChange}\n onBlur={f.onBlur}\n placeholder={field.placeholder}\n prefixIcon={field.prefixIcon}\n prefixImage={field.prefixImage}\n prefixText={field.prefixText}\n suffixIcon={field.suffixIcon}\n suffixImage={field.suffixImage}\n suffixText={field.suffixText}\n />\n )\n }}\n />\n </div>\n )\n })}\n </div>\n\n <div className={cn('flex items-center justify-end gap-3 mt-6', actionsClassName)}>\n {onCancel && (\n <Button type=\"button\" variant=\"outline\" onClick={onCancel} disabled={loading}>\n {cancelLabel}\n </Button>\n )}\n <Button type=\"submit\" variant=\"primary\" loading={loading}>\n {submitLabel}\n </Button>\n </div>\n </form>\n )\n}\n","import type { RegisterOptions } from 'react-hook-form'\n\ntype ValidateFn = (value: unknown) => boolean | string\n\nexport interface CompiledRules {\n required?: RegisterOptions['required']\n minLength?: RegisterOptions['minLength']\n maxLength?: RegisterOptions['maxLength']\n min?: RegisterOptions['min']\n max?: RegisterOptions['max']\n pattern?: RegisterOptions['pattern']\n validate?: Record<string, ValidateFn>\n}\n\n// ─── Base builder ────────────────────────────────────────────────────────────\n\nabstract class BaseValidator<T extends BaseValidator<T>> {\n protected _required: string | false = false\n protected _validates: Record<string, ValidateFn> = {}\n\n required(message?: string): T {\n this._required = message ?? 'This field is required'\n return this as unknown as T\n }\n\n custom(name: string, fn: ValidateFn, message?: string): T {\n this._validates[name] = (v) => {\n const result = fn(v)\n if (result === false) return message ?? 'Invalid value'\n return result\n }\n return this as unknown as T\n }\n\n abstract compile(): CompiledRules\n}\n\n// ─── String validator ─────────────────────────────────────────────────────────\n\nexport class StringValidator extends BaseValidator<StringValidator> {\n private _minLength?: { value: number; message: string }\n private _maxLength?: { value: number; message: string }\n private _pattern?: { value: RegExp; message: string }\n private _mustBeString = false\n\n mustBe(_type: 'string'): StringValidator {\n this._mustBeString = true\n return this\n }\n\n minLength(len: number, message?: string): StringValidator {\n this._minLength = { value: len, message: message ?? `Minimum ${len} characters required` }\n return this\n }\n\n maxLength(len: number, message?: string): StringValidator {\n this._maxLength = { value: len, message: message ?? `Maximum ${len} characters allowed` }\n return this\n }\n\n lengthBetween(min: number, max: number, message?: string): StringValidator {\n this._minLength = { value: min, message: message ?? `Must be between ${min} and ${max} characters` }\n this._maxLength = { value: max, message: message ?? `Must be between ${min} and ${max} characters` }\n return this\n }\n\n length(exact: number, message?: string): StringValidator {\n this._minLength = { value: exact, message: message ?? `Must be exactly ${exact} characters` }\n this._maxLength = { value: exact, message: message ?? `Must be exactly ${exact} characters` }\n return this\n }\n\n shouldMatch(pattern: RegExp, message?: string): StringValidator {\n this._pattern = { value: pattern, message: message ?? 'Invalid format' }\n return this\n }\n\n shouldBeIn(list: string[], message?: string): StringValidator {\n this._validates['shouldBeIn'] = (v) =>\n list.includes(String(v ?? '')) || (message ?? `Must be one of: ${list.join(', ')}`)\n return this\n }\n\n notEmpty(message?: string): StringValidator {\n this._validates['notEmpty'] = (v) =>\n (String(v ?? '').trim().length > 0) || (message ?? 'Cannot be empty or whitespace')\n return this\n }\n\n noSpaces(message?: string): StringValidator {\n this._validates['noSpaces'] = (v) =>\n !/\\s/.test(String(v ?? '')) || (message ?? 'No spaces allowed')\n return this\n }\n\n alphanumeric(message?: string): StringValidator {\n this._validates['alphanumeric'] = (v) =>\n /^[a-zA-Z0-9]*$/.test(String(v ?? '')) || (message ?? 'Only letters and numbers allowed')\n return this\n }\n\n startsWith(prefix: string, message?: string): StringValidator {\n this._validates['startsWith'] = (v) =>\n String(v ?? '').startsWith(prefix) || (message ?? `Must start with \"${prefix}\"`)\n return this\n }\n\n endsWith(suffix: string, message?: string): StringValidator {\n this._validates['endsWith'] = (v) =>\n String(v ?? '').endsWith(suffix) || (message ?? `Must end with \"${suffix}\"`)\n return this\n }\n\n compile(): CompiledRules {\n const validates = { ...this._validates }\n if (this._mustBeString) {\n validates['mustBeString'] = (v) => typeof v === 'string' || 'Must be a string'\n }\n return {\n required: this._required || undefined,\n minLength: this._minLength,\n maxLength: this._maxLength,\n pattern: this._pattern,\n validate: Object.keys(validates).length ? validates : undefined,\n }\n }\n}\n\n// ─── Number validator ─────────────────────────────────────────────────────────\n\nexport class NumberValidator extends BaseValidator<NumberValidator> {\n private _min?: { value: number; message: string }\n private _max?: { value: number; message: string }\n private _maxLength?: { value: number; message: string }\n private _mustBeNumber = false\n\n mustBe(_type: 'number'): NumberValidator {\n this._mustBeNumber = true\n return this\n }\n\n min(value: number, message?: string): NumberValidator {\n this._min = { value, message: message ?? `Minimum value is ${value}` }\n return this\n }\n\n max(value: number, message?: string): NumberValidator {\n this._max = { value, message: message ?? `Maximum value is ${value}` }\n return this\n }\n\n between(min: number, max: number, message?: string): NumberValidator {\n this._min = { value: min, message: message ?? `Must be between ${min} and ${max}` }\n this._max = { value: max, message: message ?? `Must be between ${min} and ${max}` }\n return this\n }\n\n length(digits: number, message?: string): NumberValidator {\n this._maxLength = { value: digits, message: message ?? `Must be ${digits} digits` }\n this._validates['exactLength'] = (v) => {\n const s = String(v ?? '').replace(/\\D/g, '')\n return s.length === digits || (message ?? `Must be exactly ${digits} digits`)\n }\n return this\n }\n\n positive(message?: string): NumberValidator {\n this._min = { value: 0, message: message ?? 'Must be a positive number' }\n return this\n }\n\n integer(message?: string): NumberValidator {\n this._validates['integer'] = (v) =>\n Number.isInteger(Number(v)) || (message ?? 'Must be a whole number')\n return this\n }\n\n nonZero(message?: string): NumberValidator {\n this._validates['nonZero'] = (v) =>\n Number(v) !== 0 || (message ?? 'Cannot be zero')\n return this\n }\n\n negative(message?: string): NumberValidator {\n this._max = { value: 0, message: message ?? 'Must be a negative number' }\n return this\n }\n\n multipleOf(factor: number, message?: string): NumberValidator {\n this._validates['multipleOf'] = (v) =>\n Number(v) % factor === 0 || (message ?? `Must be a multiple of ${factor}`)\n return this\n }\n\n compile(): CompiledRules {\n const validates = { ...this._validates }\n if (this._mustBeNumber) {\n validates['mustBeNumber'] = (v) => !isNaN(Number(v)) || 'Must be a number'\n }\n return {\n required: this._required || undefined,\n min: this._min,\n max: this._max,\n maxLength: this._maxLength,\n validate: Object.keys(validates).length ? validates : undefined,\n }\n }\n}\n\n// ─── Email validator ──────────────────────────────────────────────────────────\n\nexport class EmailValidator extends BaseValidator<EmailValidator> {\n private static EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n\n mustBe(_type: 'string'): EmailValidator { return this }\n\n shouldMatch(pattern: RegExp, message?: string): EmailValidator {\n this._validates['pattern'] = (v) =>\n pattern.test(String(v ?? '')) || (message ?? 'Invalid email format')\n return this\n }\n\n domain(allowedDomains: string[], message?: string): EmailValidator {\n this._validates['domain'] = (v) => {\n const domain = String(v ?? '').split('@')[1] ?? ''\n return allowedDomains.includes(domain) || (message ?? `Email must be from: ${allowedDomains.join(', ')}`)\n }\n return this\n }\n\n blockedDomains(blocked: string[], message?: string): EmailValidator {\n this._validates['blockedDomains'] = (v) => {\n const domain = String(v ?? '').split('@')[1] ?? ''\n return !blocked.includes(domain) || (message ?? `Email from ${domain} is not allowed`)\n }\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n pattern: { value: EmailValidator.EMAIL_RE, message: 'Enter a valid email address' },\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── URL validator ────────────────────────────────────────────────────────────\n\nexport class UrlValidator extends BaseValidator<UrlValidator> {\n private static URL_RE = /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)$/\n\n mustBe(_type: 'string'): UrlValidator { return this }\n\n httpsOnly(message?: string): UrlValidator {\n this._validates['httpsOnly'] = (v) =>\n String(v ?? '').startsWith('https://') || (message ?? 'URL must use HTTPS')\n return this\n }\n\n allowedDomains(domains: string[], message?: string): UrlValidator {\n this._validates['allowedDomains'] = (v) => {\n try {\n const hostname = new URL(String(v ?? '')).hostname\n return domains.some((d) => hostname === d || hostname.endsWith(`.${d}`)) ||\n (message ?? `URL must be from: ${domains.join(', ')}`)\n } catch { return message ?? 'Invalid URL' }\n }\n return this\n }\n\n noTrailingSlash(message?: string): UrlValidator {\n this._validates['noTrailingSlash'] = (v) =>\n !String(v ?? '').endsWith('/') || (message ?? 'URL must not end with a slash')\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n pattern: { value: UrlValidator.URL_RE, message: 'Enter a valid URL' },\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── Tel / Phone validator ────────────────────────────────────────────────────\n\nexport class TelValidator extends BaseValidator<TelValidator> {\n length(digits: number, message?: string): TelValidator {\n this._validates['length'] = (v) => {\n const s = String(v ?? '').replace(/\\D/g, '')\n return s.length === digits || (message ?? `Must be exactly ${digits} digits`)\n }\n return this\n }\n\n minLength(digits: number, message?: string): TelValidator {\n this._validates['minLength'] = (v) => {\n const s = String(v ?? '').replace(/\\D/g, '')\n return s.length >= digits || (message ?? `Must be at least ${digits} digits`)\n }\n return this\n }\n\n maxLength(digits: number, message?: string): TelValidator {\n this._validates['maxLength'] = (v) => {\n const s = String(v ?? '').replace(/\\D/g, '')\n return s.length <= digits || (message ?? `Must be at most ${digits} digits`)\n }\n return this\n }\n\n shouldMatch(pattern: RegExp, message?: string): TelValidator {\n this._validates['pattern'] = (v) =>\n pattern.test(String(v ?? '')) || (message ?? 'Invalid phone number format')\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── Boolean validator ────────────────────────────────────────────────────────\n\nexport class BooleanValidator extends BaseValidator<BooleanValidator> {\n mustBeTrue(message?: string): BooleanValidator {\n this._validates['mustBeTrue'] = (v) =>\n v === true || (message ?? 'Must be checked')\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n validate: Object.keys(this._validates).length ? this._validates : undefined,\n }\n }\n}\n\n// ─── Array validator ──────────────────────────────────────────────────────────\n\nexport class ArrayValidator extends BaseValidator<ArrayValidator> {\n private _min?: number\n private _max?: number\n\n minItems(count: number, message?: string): ArrayValidator {\n this._min = count\n this._validates['minItems'] = (v) => {\n const arr = Array.isArray(v) ? v : []\n return arr.length >= count || (message ?? `Select at least ${count} item${count > 1 ? 's' : ''}`)\n }\n return this\n }\n\n maxItems(count: number, message?: string): ArrayValidator {\n this._max = count\n this._validates['maxItems'] = (v) => {\n const arr = Array.isArray(v) ? v : []\n return arr.length <= count || (message ?? `Select at most ${count} item${count > 1 ? 's' : ''}`)\n }\n return this\n }\n\n exactItems(count: number, message?: string): ArrayValidator {\n this._validates['exactItems'] = (v) => {\n const arr = Array.isArray(v) ? v : []\n return arr.length === count || (message ?? `Must select exactly ${count} item${count > 1 ? 's' : ''}`)\n }\n return this\n }\n\n noEmpty(message?: string): ArrayValidator {\n this._validates['noEmpty'] = (v) => {\n const arr = Array.isArray(v) ? v as string[] : []\n return arr.every((item) => String(item).trim().length > 0) || (message ?? 'Items cannot be empty')\n }\n return this\n }\n\n shouldBeIn(list: string[], message?: string): ArrayValidator {\n this._validates['shouldBeIn'] = (v) => {\n const arr = Array.isArray(v) ? v as string[] : []\n const invalid = arr.filter((item) => !list.includes(item))\n return invalid.length === 0 || (message ?? `Invalid selection: ${invalid.join(', ')}`)\n }\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── Password validator ───────────────────────────────────────────────────────\n\nexport class PasswordValidator extends BaseValidator<PasswordValidator> {\n private _minLength?: { value: number; message: string }\n private _maxLength?: { value: number; message: string }\n\n minLength(len: number, message?: string): PasswordValidator {\n this._minLength = { value: len, message: message ?? `Minimum ${len} characters required` }\n return this\n }\n\n maxLength(len: number, message?: string): PasswordValidator {\n this._maxLength = { value: len, message: message ?? `Maximum ${len} characters allowed` }\n return this\n }\n\n hasUppercase(message?: string): PasswordValidator {\n this._validates['hasUppercase'] = (v) =>\n /[A-Z]/.test(String(v ?? '')) || (message ?? 'Must contain at least one uppercase letter')\n return this\n }\n\n hasLowercase(message?: string): PasswordValidator {\n this._validates['hasLowercase'] = (v) =>\n /[a-z]/.test(String(v ?? '')) || (message ?? 'Must contain at least one lowercase letter')\n return this\n }\n\n hasDigit(message?: string): PasswordValidator {\n this._validates['hasDigit'] = (v) =>\n /\\d/.test(String(v ?? '')) || (message ?? 'Must contain at least one number')\n return this\n }\n\n hasSpecialChar(message?: string): PasswordValidator {\n this._validates['hasSpecialChar'] = (v) =>\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?`~]/.test(String(v ?? '')) ||\n (message ?? 'Must contain at least one special character')\n return this\n }\n\n noSpaces(message?: string): PasswordValidator {\n this._validates['noSpaces'] = (v) =>\n !/\\s/.test(String(v ?? '')) || (message ?? 'Password cannot contain spaces')\n return this\n }\n\n /** Confirm this field matches another field value — pass a getter for the other field */\n confirmMatch(getOtherValue: () => unknown, message?: string): PasswordValidator {\n this._validates['confirmMatch'] = (v) =>\n v === getOtherValue() || (message ?? 'Passwords do not match')\n return this\n }\n\n /** Shorthand: minLength(8) + uppercase + lowercase + digit + special char */\n strong(message?: string): PasswordValidator {\n return this.minLength(8, message).hasUppercase(message).hasLowercase(message).hasDigit(message).hasSpecialChar(message)\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n minLength: this._minLength,\n maxLength: this._maxLength,\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── Date validator ───────────────────────────────────────────────────────────\n\nexport class DateValidator extends BaseValidator<DateValidator> {\n private _toDate(v: unknown): Date | null {\n if (v instanceof Date) return isNaN(v.getTime()) ? null : v\n if (typeof v === 'string' || typeof v === 'number') {\n const d = new Date(v as string | number)\n return isNaN(d.getTime()) ? null : d\n }\n return null\n }\n\n validDate(message?: string): DateValidator {\n this._validates['validDate'] = (v) =>\n this._toDate(v) !== null || (message ?? 'Must be a valid date')\n return this\n }\n\n minDate(date: Date, message?: string): DateValidator {\n this._validates['minDate'] = (v) => {\n const d = this._toDate(v)\n if (!d) return 'Invalid date'\n return d >= date || (message ?? `Date must be on or after ${date.toLocaleDateString()}`)\n }\n return this\n }\n\n maxDate(date: Date, message?: string): DateValidator {\n this._validates['maxDate'] = (v) => {\n const d = this._toDate(v)\n if (!d) return 'Invalid date'\n return d <= date || (message ?? `Date must be on or before ${date.toLocaleDateString()}`)\n }\n return this\n }\n\n notInPast(message?: string): DateValidator {\n this._validates['notInPast'] = (v) => {\n const d = this._toDate(v)\n if (!d) return 'Invalid date'\n const today = new Date(); today.setHours(0, 0, 0, 0)\n return d >= today || (message ?? 'Date cannot be in the past')\n }\n return this\n }\n\n notInFuture(message?: string): DateValidator {\n this._validates['notInFuture'] = (v) => {\n const d = this._toDate(v)\n if (!d) return 'Invalid date'\n const today = new Date(); today.setHours(23, 59, 59, 999)\n return d <= today || (message ?? 'Date cannot be in the future')\n }\n return this\n }\n\n between(minDate: Date, maxDate: Date, message?: string): DateValidator {\n return this.minDate(minDate, message).maxDate(maxDate, message)\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── Select validator (select / radio) ───────────────────────────────────────\n\nexport class SelectValidator extends BaseValidator<SelectValidator> {\n shouldBeIn(list: string[], message?: string): SelectValidator {\n this._validates['shouldBeIn'] = (v) =>\n list.includes(String(v ?? '')) || (message ?? `Must be one of: ${list.join(', ')}`)\n return this\n }\n\n notEmpty(message?: string): SelectValidator {\n this._validates['notEmpty'] = (v) =>\n (String(v ?? '').trim().length > 0) || (message ?? 'Please make a selection')\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── File validator ───────────────────────────────────────────────────────────\n\nexport class FileValidator extends BaseValidator<FileValidator> {\n /** Max file size in bytes */\n maxSize(bytes: number, message?: string): FileValidator {\n this._validates['maxSize'] = (v) => {\n const files = Array.isArray(v) ? v as File[] : v instanceof File ? [v] : []\n const tooBig = files.filter((f) => f.size > bytes)\n if (tooBig.length === 0) return true\n const mb = (bytes / 1024 / 1024).toFixed(1)\n return message ?? `File size must not exceed ${mb} MB`\n }\n return this\n }\n\n allowedTypes(mimeTypes: string[], message?: string): FileValidator {\n this._validates['allowedTypes'] = (v) => {\n const files = Array.isArray(v) ? v as File[] : v instanceof File ? [v] : []\n const invalid = files.filter((f) => !mimeTypes.some((t) =>\n t.endsWith('/*') ? f.type.startsWith(t.replace('/*', '/')) : f.type === t\n ))\n return invalid.length === 0 || (message ?? `Allowed types: ${mimeTypes.join(', ')}`)\n }\n return this\n }\n\n allowedExtensions(exts: string[], message?: string): FileValidator {\n this._validates['allowedExtensions'] = (v) => {\n const files = Array.isArray(v) ? v as File[] : v instanceof File ? [v] : []\n const invalid = files.filter((f) => {\n const ext = f.name.split('.').pop()?.toLowerCase() ?? ''\n return !exts.map((e) => e.toLowerCase().replace('.', '')).includes(ext)\n })\n return invalid.length === 0 || (message ?? `Allowed extensions: ${exts.join(', ')}`)\n }\n return this\n }\n\n maxFiles(count: number, message?: string): FileValidator {\n this._validates['maxFiles'] = (v) => {\n const files = Array.isArray(v) ? v : v instanceof File ? [v] : []\n return files.length <= count || (message ?? `Maximum ${count} file${count > 1 ? 's' : ''} allowed`)\n }\n return this\n }\n\n minFiles(count: number, message?: string): FileValidator {\n this._validates['minFiles'] = (v) => {\n const files = Array.isArray(v) ? v : v instanceof File ? [v] : []\n return files.length >= count || (message ?? `At least ${count} file${count > 1 ? 's' : ''} required`)\n }\n return this\n }\n\n compile(): CompiledRules {\n return {\n required: this._required || undefined,\n validate: Object.keys(this._validates).length ? { ...this._validates } : undefined,\n }\n }\n}\n\n// ─── Entry point ──────────────────────────────────────────────────────────────\n\nexport const v = {\n /** text, textarea fields — lengthBetween, shouldMatch, shouldBeIn, noSpaces, alphanumeric */\n string: () => new StringValidator(),\n /** number fields — between, integer, multipleOf, nonZero, length */\n number: () => new NumberValidator(),\n /** password fields — strong(), hasUppercase, hasDigit, hasSpecialChar, confirmMatch */\n password: () => new PasswordValidator(),\n /** email fields — auto email regex, domain whitelist/blacklist */\n email: () => new EmailValidator(),\n /** url fields — httpsOnly, allowedDomains, noTrailingSlash */\n url: () => new UrlValidator(),\n /** tel/phone fields — length, minLength, maxLength, shouldMatch */\n tel: () => new TelValidator(),\n /** DatePicker fields — minDate, maxDate, notInPast, notInFuture */\n date: () => new DateValidator(),\n /** select/radio fields — shouldBeIn, notEmpty */\n select: () => new SelectValidator(),\n /** checkbox/switch fields — mustBeTrue */\n boolean: () => new BooleanValidator(),\n /** multiselect/chipselect/taginput — minItems, maxItems, exactItems, shouldBeIn, noEmpty */\n array: () => new ArrayValidator(),\n /** FileUpload fields — maxSize, allowedTypes, allowedExtensions, maxFiles, minFiles */\n file: () => new FileValidator(),\n}\n\nexport type AnyValidator =\n | StringValidator\n | NumberValidator\n | PasswordValidator\n | EmailValidator\n | UrlValidator\n | TelValidator\n | DateValidator\n | SelectValidator\n | BooleanValidator\n | ArrayValidator\n | FileValidator\n","import React, { useCallback } from 'react'\nimport { useDropzone, type Accept, type FileRejection } from 'react-dropzone'\nimport { Upload, X, File, Image, FileText, AlertCircle } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface UploadedFile {\n file: File\n id: string\n preview?: string\n progress?: number\n error?: string\n}\n\nexport interface FileUploadProps {\n accept?: Accept\n maxFiles?: number\n maxSize?: number\n multiple?: boolean\n disabled?: boolean\n label?: string\n helperText?: string\n error?: string\n files?: UploadedFile[]\n onFilesChange?: (files: UploadedFile[]) => void\n onFileRemove?: (id: string) => void\n showPreview?: boolean\n className?: string\n}\n\nfunction getFileIcon(file: File) {\n if (file.type.startsWith('image/')) return <Image size={20} />\n if (file.type.includes('pdf') || file.type.includes('text')) return <FileText size={20} />\n return <File size={20} />\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B'\n const k = 1024\n const sizes = ['B', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`\n}\n\nlet fileIdCounter = 0\n\nexport function FileUpload({\n accept,\n maxFiles,\n maxSize,\n multiple = true,\n disabled = false,\n label,\n helperText,\n error,\n files = [],\n onFilesChange,\n onFileRemove,\n showPreview = true,\n className,\n}: FileUploadProps) {\n const onDrop = useCallback(\n (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n const newFiles: UploadedFile[] = acceptedFiles.map((file) => ({\n file,\n id: `file-${++fileIdCounter}`,\n preview: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined,\n progress: 0,\n }))\n\n const rejectedMapped: UploadedFile[] = rejectedFiles.map(({ file, errors }) => ({\n file,\n id: `file-${++fileIdCounter}`,\n error: errors[0]?.message ?? 'File rejected',\n }))\n\n onFilesChange?.([...files, ...newFiles, ...rejectedMapped])\n },\n [files, onFilesChange]\n )\n\n const { getRootProps, getInputProps, isDragActive, isDragReject } = useDropzone({\n onDrop,\n accept,\n maxFiles,\n maxSize,\n multiple,\n disabled,\n })\n\n return (\n <div className={cn('flex flex-col gap-3', className)}>\n {label && <p className=\"text-sm font-medium text-text\">{label}</p>}\n\n {/* Drop zone */}\n <div\n {...getRootProps()}\n className={cn(\n 'relative flex flex-col items-center justify-center gap-3 p-8 rounded-lg border-2 border-dashed',\n 'transition-colors cursor-pointer outline-none',\n isDragActive && !isDragReject && 'border-primary bg-primary/5',\n isDragReject && 'border-error bg-error-bg',\n !isDragActive && !isDragReject && 'border-border hover:border-primary hover:bg-surface-hover',\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n error && 'border-error'\n )}\n >\n <input {...getInputProps()} />\n\n <div\n className={cn(\n 'flex items-center justify-center w-12 h-12 rounded-full',\n isDragReject ? 'bg-error-bg text-error' : 'bg-surface-hover text-text-muted'\n )}\n >\n {isDragReject ? <AlertCircle size={24} /> : <Upload size={24} />}\n </div>\n\n <div className=\"text-center\">\n <p className=\"text-sm font-medium text-text\">\n {isDragActive\n ? isDragReject\n ? 'File not accepted'\n : 'Drop files here'\n : 'Drag & drop files here'}\n </p>\n <p className=\"text-xs text-text-muted mt-1\">\n or{' '}\n <span className=\"text-primary font-medium cursor-pointer hover:underline\">\n browse files\n </span>\n </p>\n {(maxSize || accept) && (\n <p className=\"text-xs text-text-muted mt-2\">\n {accept && `Accepted: ${Object.values(accept).flat().join(', ')} · `}\n {maxSize && `Max size: ${formatBytes(maxSize)}`}\n {maxFiles && ` · Max files: ${maxFiles}`}\n </p>\n )}\n </div>\n </div>\n\n {error && <p className=\"text-xs text-error\" role=\"alert\">{error}</p>}\n {!error && helperText && <p className=\"text-xs text-text-muted\">{helperText}</p>}\n\n {/* File list */}\n {showPreview && files.length > 0 && (\n <ul className=\"flex flex-col gap-2\">\n {files.map((uploadedFile) => (\n <li\n key={uploadedFile.id}\n className={cn(\n 'flex items-center gap-3 p-3 rounded-lg border bg-surface',\n uploadedFile.error ? 'border-error bg-error-bg' : 'border-border'\n )}\n >\n {/* Thumbnail or icon */}\n <div className=\"flex-shrink-0 w-10 h-10 rounded-md overflow-hidden bg-surface-hover flex items-center justify-center text-text-muted\">\n {uploadedFile.preview ? (\n <img\n src={uploadedFile.preview}\n alt={uploadedFile.file.name}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n getFileIcon(uploadedFile.file)\n )}\n </div>\n\n {/* Info */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-text truncate\">\n {uploadedFile.file.name}\n </p>\n {uploadedFile.error ? (\n <p className=\"text-xs text-error\">{uploadedFile.error}</p>\n ) : (\n <p className=\"text-xs text-text-muted\">\n {formatBytes(uploadedFile.file.size)}\n </p>\n )}\n\n {/* Progress bar */}\n {uploadedFile.progress !== undefined && uploadedFile.progress < 100 && !uploadedFile.error && (\n <div className=\"mt-1.5 h-1 w-full bg-surface-hover rounded-full overflow-hidden\">\n <div\n className=\"h-full bg-primary rounded-full transition-all\"\n style={{ width: `${uploadedFile.progress}%` }}\n />\n </div>\n )}\n </div>\n\n {/* Remove button */}\n <button\n type=\"button\"\n onClick={() => onFileRemove?.(uploadedFile.id)}\n className=\"flex-shrink-0 flex items-center justify-center w-6 h-6 rounded-full text-text-muted hover:text-error hover:bg-error-bg transition-colors\"\n aria-label={`Remove ${uploadedFile.file.name}`}\n >\n <X size={14} />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n header?: React.ReactNode\n footer?: React.ReactNode\n hoverable?: boolean\n clickable?: boolean\n bordered?: boolean\n shadow?: 'none' | 'sm' | 'md' | 'lg'\n padding?: 'none' | 'sm' | 'md' | 'lg'\n}\n\nconst shadowClasses = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n}\n\nconst paddingClasses = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n}\n\nexport function Card({\n header,\n footer,\n hoverable = false,\n clickable = false,\n bordered = true,\n shadow = 'sm',\n padding = 'md',\n className,\n children,\n onClick,\n ...props\n}: CardProps) {\n return (\n <div\n className={cn(\n 'rounded-lg bg-surface',\n bordered && 'border border-border',\n shadowClasses[shadow],\n hoverable && 'transition-shadow hover:shadow-md',\n (clickable || onClick) && 'cursor-pointer hover:shadow-md transition-shadow',\n className\n )}\n onClick={onClick}\n role={clickable || onClick ? 'button' : undefined}\n tabIndex={clickable || onClick ? 0 : undefined}\n onKeyDown={\n (clickable || onClick)\n ? (e) => { if (e.key === 'Enter' || e.key === ' ') onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>) }\n : undefined\n }\n {...props}\n >\n {header && (\n <div className={cn('border-b border-border', paddingClasses[padding])}>\n {header}\n </div>\n )}\n <div className={cn(paddingClasses[padding])}>{children}</div>\n {footer && (\n <div className={cn('border-t border-border', paddingClasses[padding])}>\n {footer}\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface BoxProps {\n as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span' | 'p'\n bg?: 'surface' | 'background' | 'primary' | 'secondary' | 'error' | 'success' | 'warning' | 'info'\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full'\n shadow?: 'none' | 'sm' | 'md' | 'lg'\n bordered?: boolean\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n className?: string\n children?: React.ReactNode\n style?: React.CSSProperties\n id?: string\n onClick?: React.MouseEventHandler<HTMLDivElement>\n role?: string\n tabIndex?: number\n 'aria-label'?: string\n}\n\nconst bgClasses = {\n surface: 'bg-surface',\n background: 'bg-background',\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n error: 'bg-error-bg text-error',\n success: 'bg-success-bg text-success',\n warning: 'bg-warning-bg text-warning',\n info: 'bg-info-bg text-info',\n}\n\nconst roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n}\n\nconst shadowClasses = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n}\n\nconst paddingClasses = {\n none: '',\n xs: 'p-1',\n sm: 'p-2',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n}\n\nexport function Box({\n as: Component = 'div',\n bg,\n rounded,\n shadow,\n bordered = false,\n padding,\n className,\n children,\n ...props\n}: BoxProps) {\n return (\n <Component\n className={cn(\n bg && bgClasses[bg],\n rounded && roundedClasses[rounded],\n shadow && shadowClasses[shadow],\n bordered && 'border border-border',\n padding && paddingClasses[padding],\n className\n )}\n {...(props as React.HTMLAttributes<HTMLDivElement>)}\n >\n {children}\n </Component>\n )\n}\n","import React, { useState } from 'react'\nimport { ImageOff } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type ImageFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\nexport type ImageRatio = '1/1' | '4/3' | '16/9' | '3/2' | '2/3' | 'auto'\n\nexport interface ImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'src'> {\n src: string\n fallbackSrc?: string\n fallbackIcon?: React.ReactNode\n fit?: ImageFit\n ratio?: ImageRatio\n lazy?: boolean\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full'\n blur?: boolean\n containerClassName?: string\n}\n\nconst ratioClasses: Record<ImageRatio, string> = {\n '1/1': 'aspect-square',\n '4/3': 'aspect-[4/3]',\n '16/9': 'aspect-video',\n '3/2': 'aspect-[3/2]',\n '2/3': 'aspect-[2/3]',\n auto: '',\n}\n\nconst fitClasses: Record<ImageFit, string> = {\n cover: 'object-cover',\n contain: 'object-contain',\n fill: 'object-fill',\n none: 'object-none',\n 'scale-down': 'object-scale-down',\n}\n\nconst roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n}\n\nexport function Image({\n src,\n fallbackSrc,\n fallbackIcon,\n fit = 'cover',\n ratio = 'auto',\n lazy = true,\n rounded = 'none',\n blur = false,\n containerClassName,\n className,\n alt = '',\n ...props\n}: ImageProps) {\n const [error, setError] = useState(false)\n const [usedFallback, setUsedFallback] = useState(false)\n const [loaded, setLoaded] = useState(false)\n\n const handleError = () => {\n if (!usedFallback && fallbackSrc) {\n setUsedFallback(true)\n } else {\n setError(true)\n }\n }\n\n const currentSrc = usedFallback && fallbackSrc ? fallbackSrc : src\n\n if (error) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center bg-surface-hover text-text-muted',\n ratioClasses[ratio],\n roundedClasses[rounded],\n containerClassName\n )}\n >\n {fallbackIcon ?? <ImageOff size={24} />}\n </div>\n )\n }\n\n return (\n <div\n className={cn(\n 'overflow-hidden',\n ratioClasses[ratio],\n roundedClasses[rounded],\n ratio !== 'auto' && 'relative',\n containerClassName\n )}\n >\n <img\n src={currentSrc}\n alt={alt}\n loading={lazy ? 'lazy' : 'eager'}\n onError={handleError}\n onLoad={() => setLoaded(true)}\n className={cn(\n ratio !== 'auto' ? 'absolute inset-0 w-full h-full' : 'w-full h-full',\n fitClasses[fit],\n roundedClasses[rounded],\n blur && !loaded && 'blur-sm',\n loaded && blur && 'blur-0',\n 'transition-[filter] duration-300',\n className\n )}\n {...props}\n />\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { User } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\nexport type AvatarStatus = 'online' | 'offline' | 'away' | 'busy'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n name?: string\n icon?: React.ReactNode\n size?: AvatarSize\n status?: AvatarStatus\n rounded?: boolean\n className?: string\n}\n\nexport interface AvatarGroupProps {\n avatars: AvatarProps[]\n max?: number\n size?: AvatarSize\n className?: string\n}\n\nconst sizeClasses: Record<AvatarSize, { container: string; text: string; icon: number }> = {\n xs: { container: 'w-6 h-6', text: 'text-xs', icon: 12 },\n sm: { container: 'w-8 h-8', text: 'text-sm', icon: 14 },\n md: { container: 'w-10 h-10', text: 'text-sm', icon: 16 },\n lg: { container: 'w-12 h-12', text: 'text-base', icon: 20 },\n xl: { container: 'w-16 h-16', text: 'text-lg', icon: 24 },\n '2xl': { container: 'w-20 h-20', text: 'text-xl', icon: 28 },\n}\n\nconst statusColors: Record<AvatarStatus, string> = {\n online: 'bg-success',\n offline: 'bg-text-muted',\n away: 'bg-warning',\n busy: 'bg-error',\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .slice(0, 2)\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n}\n\nfunction stringToColor(str: string): string {\n let hash = 0\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n }\n const colors = [\n '#6366f1', '#8b5cf6', '#ec4899', '#ef4444',\n '#f59e0b', '#10b981', '#3b82f6', '#06b6d4',\n ]\n return colors[Math.abs(hash) % colors.length]\n}\n\nexport function Avatar({\n src,\n alt,\n name,\n icon,\n size = 'md',\n status,\n rounded = true,\n className,\n}: AvatarProps) {\n const [imgError, setImgError] = useState(false)\n const sz = sizeClasses[size]\n const initials = name ? getInitials(name) : null\n const bgColor = name ? stringToColor(name) : undefined\n\n return (\n <div className={cn('relative inline-flex flex-shrink-0', className)}>\n <div\n className={cn(\n 'flex items-center justify-center overflow-hidden',\n sz.container,\n rounded ? 'rounded-full' : 'rounded-md',\n !src || imgError ? 'text-white' : ''\n )}\n style={{ backgroundColor: !src || imgError ? bgColor ?? 'var(--color-secondary)' : undefined }}\n aria-label={alt ?? name}\n >\n {src && !imgError ? (\n <img\n src={src}\n alt={alt ?? name ?? ''}\n className=\"w-full h-full object-cover\"\n onError={() => setImgError(true)}\n />\n ) : initials ? (\n <span className={cn('font-semibold select-none', sz.text)}>{initials}</span>\n ) : icon ? (\n <span>{icon}</span>\n ) : (\n <User size={sz.icon} />\n )}\n </div>\n\n {status && (\n <span\n className={cn(\n 'absolute bottom-0 right-0 block rounded-full ring-2 ring-surface',\n statusColors[status],\n size === 'xs' || size === 'sm' ? 'w-2 h-2' : 'w-2.5 h-2.5'\n )}\n aria-label={status}\n />\n )}\n </div>\n )\n}\n\nexport function AvatarGroup({ avatars, max = 4, size = 'md', className }: AvatarGroupProps) {\n const visible = avatars.slice(0, max)\n const overflow = avatars.length - max\n const sz = sizeClasses[size]\n\n return (\n <div className={cn('flex items-center', className)}>\n {visible.map((avatar, i) => (\n <div key={i} className=\"-ml-2 first:ml-0 ring-2 ring-surface rounded-full\">\n <Avatar {...avatar} size={size} />\n </div>\n ))}\n {overflow > 0 && (\n <div\n className={cn(\n '-ml-2 flex items-center justify-center rounded-full bg-surface-hover border-2 border-surface text-text-muted font-medium',\n sz.container,\n sz.text\n )}\n >\n +{overflow}\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../../utils/cn'\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center font-medium rounded-full select-none',\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n outline: 'border border-border text-text bg-transparent',\n success: 'bg-success-bg text-success',\n error: 'bg-error-bg text-error',\n warning: 'bg-warning-bg text-warning',\n info: 'bg-info-bg text-info',\n ghost: 'bg-surface-hover text-text-muted',\n },\n size: {\n sm: 'text-xs px-1.5 py-0.5 min-w-[1.25rem] h-4',\n md: 'text-xs px-2 py-0.5 min-w-[1.5rem] h-5',\n lg: 'text-sm px-2.5 py-1 min-w-[1.75rem] h-6',\n },\n dot: {\n true: 'w-2 h-2 p-0 min-w-0',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n dot: false,\n },\n }\n)\n\nexport interface BadgeProps extends VariantProps<typeof badgeVariants> {\n children?: React.ReactNode\n className?: string\n}\n\nexport function Badge({ variant, size, dot, children, className }: BadgeProps) {\n return (\n <span className={cn(badgeVariants({ variant, size, dot }), className)}>\n {!dot && children}\n </span>\n )\n}\n\nexport interface BadgeAnchorProps {\n children: React.ReactNode\n badge?: React.ReactNode\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n className?: string\n}\n\nconst positionClasses = {\n 'top-right': '-top-1 -right-1',\n 'top-left': '-top-1 -left-1',\n 'bottom-right': '-bottom-1 -right-1',\n 'bottom-left': '-bottom-1 -left-1',\n}\n\nexport function BadgeAnchor({ children, badge, position = 'top-right', className }: BadgeAnchorProps) {\n return (\n <div className={cn('relative inline-flex', className)}>\n {children}\n {badge && (\n <span className={cn('absolute', positionClasses[position])}>\n {badge}\n </span>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { X } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../../utils/cn'\n\nconst tagVariants = cva(\n 'inline-flex items-center gap-1 font-medium rounded-md select-none',\n {\n variants: {\n variant: {\n default: 'bg-surface-hover text-text border border-border',\n primary: 'bg-primary/10 text-primary border border-primary/20',\n success: 'bg-success-bg text-success border border-success/20',\n error: 'bg-error-bg text-error border border-error/20',\n warning: 'bg-warning-bg text-warning border border-warning/20',\n info: 'bg-info-bg text-info border border-info/20',\n },\n size: {\n sm: 'text-xs px-1.5 py-0.5',\n md: 'text-sm px-2 py-1',\n lg: 'text-sm px-3 py-1.5',\n },\n rounded: {\n true: 'rounded-full',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n rounded: false,\n },\n }\n)\n\nexport interface TagProps extends VariantProps<typeof tagVariants> {\n children: React.ReactNode\n icon?: React.ReactNode\n removable?: boolean\n onRemove?: () => void\n className?: string\n}\n\nexport function Tag({ variant, size, rounded, children, icon, removable, onRemove, className }: TagProps) {\n return (\n <span className={cn(tagVariants({ variant, size, rounded }), className)}>\n {icon && <span className=\"flex items-center w-3.5 h-3.5\">{icon}</span>}\n {children}\n {removable && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"flex items-center justify-center w-3.5 h-3.5 rounded-full hover:bg-black/10 transition-colors ml-0.5\"\n aria-label=\"Remove tag\"\n >\n <X size={10} />\n </button>\n )}\n </span>\n )\n}\n","import React from 'react'\nimport { type LucideIcon, type LucideProps } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface IconProps extends Omit<LucideProps, 'size'> {\n icon: LucideIcon\n size?: IconSize | number\n color?: string\n className?: string\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 20,\n xl: 24,\n}\n\nexport function Icon({ icon: LucideIconComponent, size = 'md', color, className, ...props }: IconProps) {\n const resolvedSize = typeof size === 'number' ? size : sizeMap[size]\n\n return (\n <LucideIconComponent\n size={resolvedSize}\n color={color}\n className={cn('flex-shrink-0', className)}\n aria-hidden=\"true\"\n {...props}\n />\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface SVGProps {\n src?: string\n children?: React.ReactNode\n width?: number | string\n height?: number | string\n size?: number | string\n color?: string\n className?: string\n title?: string\n role?: string\n 'aria-label'?: string\n 'aria-hidden'?: boolean | 'true' | 'false'\n viewBox?: string\n fill?: string\n stroke?: string\n}\n\nexport function SVG({\n src,\n children,\n width,\n height,\n size,\n color,\n className,\n title,\n role = 'img',\n viewBox = '0 0 24 24',\n fill = 'none',\n stroke = 'currentColor',\n ...props\n}: SVGProps) {\n const resolvedWidth = size ?? width ?? 24\n const resolvedHeight = size ?? height ?? 24\n\n if (src) {\n return (\n <img\n src={src}\n width={resolvedWidth}\n height={resolvedHeight}\n className={cn('flex-shrink-0', className)}\n alt={props['aria-label'] ?? title ?? ''}\n aria-hidden={props['aria-hidden']}\n style={{ color }}\n />\n )\n }\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={resolvedWidth}\n height={resolvedHeight}\n viewBox={viewBox}\n fill={fill}\n stroke={stroke}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n role={role}\n className={cn('flex-shrink-0', className)}\n style={{ color }}\n aria-label={props['aria-label']}\n aria-hidden={props['aria-hidden']}\n >\n {title && <title>{title}</title>}\n {children}\n </svg>\n )\n}\n","import React, { useState, useMemo } from 'react'\nimport { ChevronUp, ChevronDown, ChevronsUpDown } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport { Checkbox } from '../../inputs/Checkbox/Checkbox'\n\nexport type SortDirection = 'asc' | 'desc' | null\n\nexport interface TableColumn<T = Record<string, unknown>> {\n key: string\n header: React.ReactNode\n accessor?: (row: T) => React.ReactNode\n sortable?: boolean\n width?: string | number\n align?: 'left' | 'center' | 'right'\n className?: string\n}\n\nexport interface TableProps<T = Record<string, unknown>> {\n columns: TableColumn<T>[]\n data: T[]\n keyExtractor: (row: T, index: number) => string\n selectable?: boolean\n selectedKeys?: string[]\n onSelectionChange?: (keys: string[]) => void\n sortKey?: string\n sortDirection?: SortDirection\n onSortChange?: (key: string, direction: SortDirection) => void\n loading?: boolean\n emptyMessage?: React.ReactNode\n stickyHeader?: boolean\n striped?: boolean\n hoverable?: boolean\n bordered?: boolean\n compact?: boolean\n className?: string\n}\n\nexport function Table<T = Record<string, unknown>>({\n columns,\n data,\n keyExtractor,\n selectable = false,\n selectedKeys = [],\n onSelectionChange,\n sortKey,\n sortDirection,\n onSortChange,\n loading = false,\n emptyMessage = 'No data available',\n stickyHeader = false,\n striped = false,\n hoverable = true,\n bordered = false,\n compact = false,\n className,\n}: TableProps<T>) {\n const [internalSort, setInternalSort] = useState<{ key: string; dir: SortDirection }>({\n key: '',\n dir: null,\n })\n\n const effectiveSortKey = sortKey ?? internalSort.key\n const effectiveSortDir = sortDirection ?? internalSort.dir\n\n const handleSort = (key: string) => {\n let next: SortDirection = 'asc'\n if (effectiveSortKey === key) {\n next = effectiveSortDir === 'asc' ? 'desc' : effectiveSortDir === 'desc' ? null : 'asc'\n }\n if (onSortChange) {\n onSortChange(key, next)\n } else {\n setInternalSort({ key, dir: next })\n }\n }\n\n const sortedData = useMemo(() => {\n if (!effectiveSortKey || !effectiveSortDir) return data\n const col = columns.find((c) => c.key === effectiveSortKey)\n if (!col) return data\n return [...data].sort((a, b) => {\n const aVal = col.accessor ? String(col.accessor(a) ?? '') : String((a as Record<string, unknown>)[effectiveSortKey] ?? '')\n const bVal = col.accessor ? String(col.accessor(b) ?? '') : String((b as Record<string, unknown>)[effectiveSortKey] ?? '')\n const cmp = aVal.localeCompare(bVal, undefined, { numeric: true })\n return effectiveSortDir === 'asc' ? cmp : -cmp\n })\n }, [data, effectiveSortKey, effectiveSortDir, columns])\n\n const allKeys = sortedData.map(keyExtractor)\n const allSelected = allKeys.length > 0 && allKeys.every((k) => selectedKeys.includes(k))\n const someSelected = allKeys.some((k) => selectedKeys.includes(k)) && !allSelected\n\n const toggleAll = () => {\n if (allSelected) {\n onSelectionChange?.(selectedKeys.filter((k) => !allKeys.includes(k)))\n } else {\n onSelectionChange?.([...new Set([...selectedKeys, ...allKeys])])\n }\n }\n\n const toggleRow = (key: string) => {\n if (selectedKeys.includes(key)) {\n onSelectionChange?.(selectedKeys.filter((k) => k !== key))\n } else {\n onSelectionChange?.([...selectedKeys, key])\n }\n }\n\n const cellPad = compact ? 'px-3 py-2' : 'px-4 py-3'\n\n return (\n <div className={cn('w-full overflow-auto rounded-lg', bordered && 'border border-border', className)}>\n <table className=\"w-full text-sm border-collapse\">\n <thead className={cn(stickyHeader && 'sticky top-0 z-10')}>\n <tr className=\"bg-surface-hover border-b border-border\">\n {selectable && (\n <th className={cn('w-10', cellPad)}>\n <Checkbox\n checked={allSelected ? true : someSelected ? 'indeterminate' : false}\n onCheckedChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {columns.map((col) => (\n <th\n key={col.key}\n className={cn(\n 'text-left font-semibold text-text-muted whitespace-nowrap',\n cellPad,\n col.align === 'center' && 'text-center',\n col.align === 'right' && 'text-right',\n col.sortable && 'cursor-pointer select-none hover:text-text',\n col.className\n )}\n style={{ width: col.width }}\n onClick={col.sortable ? () => handleSort(col.key) : undefined}\n >\n <span className=\"inline-flex items-center gap-1\">\n {col.header}\n {col.sortable && (\n <span className=\"flex-shrink-0\">\n {effectiveSortKey === col.key ? (\n effectiveSortDir === 'asc' ? (\n <ChevronUp size={14} />\n ) : effectiveSortDir === 'desc' ? (\n <ChevronDown size={14} />\n ) : (\n <ChevronsUpDown size={14} className=\"opacity-40\" />\n )\n ) : (\n <ChevronsUpDown size={14} className=\"opacity-40\" />\n )}\n </span>\n )}\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n Array.from({ length: 5 }).map((_, i) => (\n <tr key={i} className=\"border-b border-border\">\n {selectable && <td className={cellPad}><div className=\"h-4 w-4 rounded bg-surface-hover animate-pulse\" /></td>}\n {columns.map((col) => (\n <td key={col.key} className={cellPad}>\n <div className=\"h-4 rounded bg-surface-hover animate-pulse\" style={{ width: `${60 + Math.random() * 40}%` }} />\n </td>\n ))}\n </tr>\n ))\n ) : sortedData.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length + (selectable ? 1 : 0)}\n className=\"text-center py-12 text-text-muted\"\n >\n {emptyMessage}\n </td>\n </tr>\n ) : (\n sortedData.map((row, i) => {\n const key = keyExtractor(row, i)\n const isSelected = selectedKeys.includes(key)\n return (\n <tr\n key={key}\n className={cn(\n 'border-b border-border transition-colors',\n striped && i % 2 === 1 && 'bg-surface-hover/50',\n hoverable && 'hover:bg-surface-hover',\n isSelected && 'bg-primary/5'\n )}\n >\n {selectable && (\n <td className={cellPad}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleRow(key)}\n aria-label={`Select row ${i + 1}`}\n />\n </td>\n )}\n {columns.map((col) => (\n <td\n key={col.key}\n className={cn(\n 'text-text',\n cellPad,\n col.align === 'center' && 'text-center',\n col.align === 'right' && 'text-right',\n col.className\n )}\n >\n {col.accessor\n ? col.accessor(row)\n : String((row as Record<string, unknown>)[col.key] ?? '')}\n </td>\n ))}\n </tr>\n )\n })\n )}\n </tbody>\n </table>\n </div>\n )\n}\n","import React, { useState, useMemo } from 'react'\nimport { ChevronUp, ChevronDown, ChevronsUpDown, ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport { Checkbox } from '../../inputs/Checkbox/Checkbox'\nimport { Select } from '../../inputs/Select/Select'\n\nexport type SortDirection = 'asc' | 'desc' | null\n\nexport interface DataTableColumn<T = Record<string, unknown>> {\n key: string\n header: React.ReactNode\n accessor?: (row: T) => React.ReactNode\n sortValue?: (row: T) => string | number\n sortable?: boolean\n width?: string | number\n align?: 'left' | 'center' | 'right'\n className?: string\n pin?: 'left' | 'right'\n}\n\nexport interface DataTablePagination {\n mode: 'client' | 'server'\n pageSize?: number\n pageSizeOptions?: number[]\n totalRows?: number\n page?: number\n onPageChange?: (page: number) => void\n onPageSizeChange?: (size: number) => void\n}\n\nexport interface DataTableProps<T = Record<string, unknown>> {\n columns: DataTableColumn<T>[]\n data: T[]\n keyExtractor: (row: T, index: number) => string\n selectable?: boolean\n selectedKeys?: string[]\n onSelectionChange?: (keys: string[]) => void\n sortKey?: string\n sortDirection?: SortDirection\n onSortChange?: (key: string, direction: SortDirection) => void\n loading?: boolean\n emptyMessage?: React.ReactNode\n stickyHeader?: boolean\n striped?: boolean\n hoverable?: boolean\n bordered?: boolean\n compact?: boolean\n className?: string\n pagination?: DataTablePagination\n toolbar?: React.ReactNode\n rowActions?: (row: T) => React.ReactNode\n caption?: string\n}\n\nconst PAGE_SIZE_OPTIONS = [10, 25, 50, 100]\n\nexport function DataTable<T = Record<string, unknown>>({\n columns,\n data,\n keyExtractor,\n selectable = false,\n selectedKeys = [],\n onSelectionChange,\n sortKey,\n sortDirection,\n onSortChange,\n loading = false,\n emptyMessage = 'No data available',\n stickyHeader = false,\n striped = false,\n hoverable = true,\n bordered = false,\n compact = false,\n className,\n pagination,\n toolbar,\n rowActions,\n caption,\n}: DataTableProps<T>) {\n const [internalSort, setInternalSort] = useState<{ key: string; dir: SortDirection }>({ key: '', dir: null })\n const [internalPage, setInternalPage] = useState(1)\n const [internalPageSize, setInternalPageSize] = useState(pagination?.pageSize ?? 10)\n\n const effectiveSortKey = sortKey ?? internalSort.key\n const effectiveSortDir = sortDirection ?? internalSort.dir\n\n const handleSort = (key: string) => {\n let next: SortDirection = 'asc'\n if (effectiveSortKey === key) {\n next = effectiveSortDir === 'asc' ? 'desc' : effectiveSortDir === 'desc' ? null : 'asc'\n }\n if (onSortChange) {\n onSortChange(key, next)\n } else {\n setInternalSort({ key, dir: next })\n }\n }\n\n const sortedData = useMemo(() => {\n if (!effectiveSortKey || !effectiveSortDir) return data\n const col = columns.find((c) => c.key === effectiveSortKey)\n if (!col) return data\n return [...data].sort((a, b) => {\n // Priority: explicit sortValue fn > raw row field (never stringify React elements from accessor)\n const getRaw = (row: T): string | number => {\n if (col.sortValue) return col.sortValue(row)\n const raw = (row as Record<string, unknown>)[effectiveSortKey]\n return typeof raw === 'number' ? raw : String(raw ?? '')\n }\n const aVal = getRaw(a)\n const bVal = getRaw(b)\n if (typeof aVal === 'number' && typeof bVal === 'number') {\n return effectiveSortDir === 'asc' ? aVal - bVal : bVal - aVal\n }\n const cmp = String(aVal).localeCompare(String(bVal), undefined, { numeric: true })\n return effectiveSortDir === 'asc' ? cmp : -cmp\n })\n }, [data, effectiveSortKey, effectiveSortDir, columns])\n\n // Pagination\n const isClientPagination = pagination?.mode === 'client'\n const isServerPagination = pagination?.mode === 'server'\n const hasPagination = !!pagination\n\n const currentPage = isServerPagination && pagination.page !== undefined ? pagination.page : internalPage\n const pageSize = internalPageSize\n const pageSizeOptions = pagination?.pageSizeOptions ?? PAGE_SIZE_OPTIONS\n const totalRows = isServerPagination ? (pagination.totalRows ?? data.length) : sortedData.length\n const totalPages = Math.max(1, Math.ceil(totalRows / pageSize))\n\n const pagedData = useMemo(() => {\n if (!hasPagination || isServerPagination) return sortedData\n const start = (currentPage - 1) * pageSize\n return sortedData.slice(start, start + pageSize)\n }, [sortedData, hasPagination, isServerPagination, currentPage, pageSize])\n\n const displayData = hasPagination ? pagedData : sortedData\n\n const goToPage = (page: number) => {\n const clamped = Math.max(1, Math.min(page, totalPages))\n if (isServerPagination) {\n pagination.onPageChange?.(clamped)\n } else {\n setInternalPage(clamped)\n }\n }\n\n const changePageSize = (size: number) => {\n setInternalPageSize(size)\n setInternalPage(1)\n if (isServerPagination) {\n pagination.onPageSizeChange?.(size)\n pagination.onPageChange?.(1)\n }\n }\n\n // Selection\n const allKeys = displayData.map(keyExtractor)\n const allSelected = allKeys.length > 0 && allKeys.every((k) => selectedKeys.includes(k))\n const someSelected = allKeys.some((k) => selectedKeys.includes(k)) && !allSelected\n\n const toggleAll = () => {\n if (allSelected) {\n onSelectionChange?.(selectedKeys.filter((k) => !allKeys.includes(k)))\n } else {\n onSelectionChange?.([...new Set([...selectedKeys, ...allKeys])])\n }\n }\n\n const toggleRow = (key: string) => {\n if (selectedKeys.includes(key)) {\n onSelectionChange?.(selectedKeys.filter((k) => k !== key))\n } else {\n onSelectionChange?.([...selectedKeys, key])\n }\n }\n\n const cellPad = compact ? 'px-3 py-2' : 'px-4 py-3'\n\n const startRow = hasPagination ? (currentPage - 1) * pageSize + 1 : 1\n const endRow = hasPagination ? Math.min(currentPage * pageSize, totalRows) : totalRows\n\n return (\n <div className={cn('flex flex-col gap-0 w-full', className)}>\n {/* Toolbar */}\n {toolbar && (\n <div className=\"flex items-center justify-between gap-3 px-1 pb-3\">\n {toolbar}\n </div>\n )}\n\n {/* Table wrapper */}\n <div className={cn('w-full overflow-auto rounded-lg', bordered && 'border border-border')}>\n <table className=\"w-full text-sm border-collapse\">\n {caption && <caption className=\"text-xs text-text-muted pb-2 text-left\">{caption}</caption>}\n <thead className={cn(stickyHeader && 'sticky top-0 z-10')}>\n <tr className=\"bg-surface-hover border-b border-border\">\n {selectable && (\n <th className={cn('w-10', cellPad)}>\n <Checkbox\n checked={allSelected ? true : someSelected ? 'indeterminate' : false}\n onCheckedChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {columns.map((col) => (\n <th\n key={col.key}\n className={cn(\n 'text-left font-semibold text-text-muted whitespace-nowrap',\n cellPad,\n col.align === 'center' && 'text-center',\n col.align === 'right' && 'text-right',\n col.sortable && 'cursor-pointer select-none hover:text-text',\n col.className\n )}\n style={{ width: col.width }}\n onClick={col.sortable ? () => handleSort(col.key) : undefined}\n >\n <span className=\"inline-flex items-center gap-1\">\n {col.header}\n {col.sortable && (\n <span className=\"flex-shrink-0\">\n {effectiveSortKey === col.key ? (\n effectiveSortDir === 'asc' ? (\n <ChevronUp size={14} />\n ) : effectiveSortDir === 'desc' ? (\n <ChevronDown size={14} />\n ) : (\n <ChevronsUpDown size={14} className=\"opacity-40\" />\n )\n ) : (\n <ChevronsUpDown size={14} className=\"opacity-40\" />\n )}\n </span>\n )}\n </span>\n </th>\n ))}\n {rowActions && (\n <th className={cn('text-right font-semibold text-text-muted whitespace-nowrap', cellPad)}>\n Actions\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n Array.from({ length: pageSize > 5 ? 5 : pageSize }).map((_, i) => (\n <tr key={i} className=\"border-b border-border\">\n {selectable && <td className={cellPad}><div className=\"h-4 w-4 rounded bg-surface-hover animate-pulse\" /></td>}\n {columns.map((col) => (\n <td key={col.key} className={cellPad}>\n <div className=\"h-4 rounded bg-surface-hover animate-pulse\" style={{ width: `${60 + (col.key.length * 7) % 40}%` }} />\n </td>\n ))}\n {rowActions && <td className={cellPad}><div className=\"h-4 w-16 rounded bg-surface-hover animate-pulse ml-auto\" /></td>}\n </tr>\n ))\n ) : displayData.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0)}\n className=\"text-center py-12 text-text-muted\"\n >\n {emptyMessage}\n </td>\n </tr>\n ) : (\n displayData.map((row, i) => {\n const key = keyExtractor(row, i)\n const isSelected = selectedKeys.includes(key)\n return (\n <tr\n key={key}\n className={cn(\n 'border-b border-border transition-colors',\n striped && i % 2 === 1 && 'bg-surface-hover/50',\n hoverable && 'hover:bg-surface-hover',\n isSelected && 'bg-primary/5'\n )}\n >\n {selectable && (\n <td className={cellPad}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleRow(key)}\n aria-label={`Select row ${i + 1}`}\n />\n </td>\n )}\n {columns.map((col) => (\n <td\n key={col.key}\n className={cn(\n 'text-text',\n cellPad,\n col.align === 'center' && 'text-center',\n col.align === 'right' && 'text-right',\n col.className\n )}\n >\n {col.accessor\n ? col.accessor(row)\n : String((row as Record<string, unknown>)[col.key] ?? '')}\n </td>\n ))}\n {rowActions && (\n <td className={cn(cellPad, 'text-right')}>\n {rowActions(row)}\n </td>\n )}\n </tr>\n )\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination footer */}\n {hasPagination && (\n <div className=\"flex items-center justify-between gap-4 px-1 pt-3 flex-wrap\">\n <div className=\"flex items-center gap-2 text-sm text-text-muted\">\n <span>Rows per page:</span>\n <select\n value={pageSize}\n onChange={(e) => changePageSize(Number(e.target.value))}\n className=\"h-7 px-2 rounded-md border border-border bg-surface text-text text-xs outline-none focus:border-border-focus\"\n >\n {pageSizeOptions.map((s) => (\n <option key={s} value={s}>{s}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex items-center gap-1 text-sm text-text-muted\">\n <span className=\"mr-2\">\n {loading ? '…' : `${startRow}–${endRow} of ${totalRows}`}\n </span>\n <button\n onClick={() => goToPage(1)}\n disabled={currentPage === 1 || loading}\n className=\"p-1 rounded hover:bg-surface-hover disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"First page\"\n >\n <ChevronsLeft size={16} />\n </button>\n <button\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage === 1 || loading}\n className=\"p-1 rounded hover:bg-surface-hover disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous page\"\n >\n <ChevronLeft size={16} />\n </button>\n\n {/* Page numbers */}\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: Math.min(5, totalPages) }, (_, i) => {\n let page: number\n if (totalPages <= 5) {\n page = i + 1\n } else if (currentPage <= 3) {\n page = i + 1\n } else if (currentPage >= totalPages - 2) {\n page = totalPages - 4 + i\n } else {\n page = currentPage - 2 + i\n }\n return (\n <button\n key={page}\n onClick={() => goToPage(page)}\n disabled={loading}\n className={cn(\n 'w-7 h-7 rounded text-xs font-medium transition-colors',\n page === currentPage\n ? 'bg-primary text-primary-foreground'\n : 'hover:bg-surface-hover text-text-muted'\n )}\n >\n {page}\n </button>\n )\n })}\n </div>\n\n <button\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage === totalPages || loading}\n className=\"p-1 rounded hover:bg-surface-hover disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next page\"\n >\n <ChevronRight size={16} />\n </button>\n <button\n onClick={() => goToPage(totalPages)}\n disabled={currentPage === totalPages || loading}\n className=\"p-1 rounded hover:bg-surface-hover disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Last page\"\n >\n <ChevronsRight size={16} />\n </button>\n </div>\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface ListItemProps {\n id?: string\n primary: React.ReactNode\n secondary?: React.ReactNode\n leading?: React.ReactNode\n trailing?: React.ReactNode\n onClick?: () => void\n active?: boolean\n disabled?: boolean\n divider?: boolean\n className?: string\n}\n\nexport interface ListProps {\n items?: ListItemProps[]\n ordered?: boolean\n divided?: boolean\n hoverable?: boolean\n compact?: boolean\n children?: React.ReactNode\n className?: string\n}\n\nexport function ListItem({\n primary,\n secondary,\n leading,\n trailing,\n onClick,\n active,\n disabled,\n divider,\n className,\n}: ListItemProps) {\n return (\n <li\n className={cn(\n 'flex items-center gap-3 px-3 py-2.5',\n onClick && !disabled && 'cursor-pointer hover:bg-surface-hover transition-colors',\n active && 'bg-primary/5 text-primary',\n disabled && 'opacity-50 cursor-not-allowed',\n divider && 'border-b border-border',\n className\n )}\n onClick={!disabled ? onClick : undefined}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick && !disabled ? 0 : undefined}\n >\n {leading && (\n <div className=\"flex-shrink-0 flex items-center\">{leading}</div>\n )}\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-text truncate\">{primary}</p>\n {secondary && (\n <p className=\"text-xs text-text-muted truncate mt-0.5\">{secondary}</p>\n )}\n </div>\n {trailing && (\n <div className=\"flex-shrink-0 flex items-center\">{trailing}</div>\n )}\n </li>\n )\n}\n\nexport function List({\n items,\n ordered = false,\n divided = false,\n hoverable = true,\n compact = false,\n children,\n className,\n}: ListProps) {\n const Tag = ordered ? 'ol' : 'ul'\n\n return (\n <Tag\n className={cn(\n 'rounded-lg bg-surface border border-border overflow-hidden',\n divided && '[&>li]:border-b [&>li]:border-border [&>li:last-child]:border-0',\n compact && '[&>li]:py-1.5',\n className\n )}\n >\n {items\n ? items.map((item, i) => (\n <ListItem\n key={item.id ?? i}\n {...item}\n className={cn(!hoverable && 'cursor-default hover:bg-transparent', item.className)}\n />\n ))\n : children}\n </Tag>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport interface TimelineItem {\n id: string\n title: React.ReactNode\n description?: React.ReactNode\n timestamp?: React.ReactNode\n icon?: React.ReactNode\n variant?: 'default' | 'success' | 'error' | 'warning' | 'info'\n}\n\nexport interface TimelineProps {\n items: TimelineItem[]\n orientation?: 'vertical' | 'horizontal'\n className?: string\n}\n\nconst variantClasses = {\n default: 'bg-surface-hover text-text-muted border-border',\n success: 'bg-success-bg text-success border-success/30',\n error: 'bg-error-bg text-error border-error/30',\n warning: 'bg-warning-bg text-warning border-warning/30',\n info: 'bg-info-bg text-info border-info/30',\n}\n\nconst connectorVariant = {\n default: 'bg-border',\n success: 'bg-success/30',\n error: 'bg-error/30',\n warning: 'bg-warning/30',\n info: 'bg-info/30',\n}\n\nexport function Timeline({ items, orientation = 'vertical', className }: TimelineProps) {\n return (\n <ol className={cn('flex', orientation === 'vertical' ? 'flex-col' : 'flex-row', className)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n const variant = item.variant ?? 'default'\n\n return (\n <li\n key={item.id}\n className={cn(\n 'flex',\n orientation === 'vertical' ? 'flex-row gap-4' : 'flex-col items-center flex-1'\n )}\n >\n {/* Icon + connector */}\n <div className={cn('flex flex-shrink-0', orientation === 'vertical' ? 'flex-col items-center' : 'flex-row items-center w-full')}>\n <div\n className={cn(\n 'flex items-center justify-center w-8 h-8 rounded-full border flex-shrink-0',\n variantClasses[variant]\n )}\n >\n {item.icon ?? (\n <span className=\"w-2 h-2 rounded-full bg-current\" />\n )}\n </div>\n {!isLast && (\n <div\n className={cn(\n connectorVariant[variant],\n orientation === 'vertical' ? 'w-0.5 flex-1 my-1 min-h-[1.5rem]' : 'h-0.5 flex-1 mx-1'\n )}\n />\n )}\n </div>\n\n {/* Content */}\n <div className={cn('pb-6', isLast && 'pb-0', orientation === 'horizontal' && 'text-center mt-2 px-2')}>\n <div className=\"flex items-baseline gap-2 flex-wrap\">\n <p className=\"text-sm font-medium text-text\">{item.title}</p>\n {item.timestamp && (\n <span className=\"text-xs text-text-muted\">{item.timestamp}</span>\n )}\n </div>\n {item.description && (\n <p className=\"text-sm text-text-muted mt-0.5\">{item.description}</p>\n )}\n </div>\n </li>\n )\n })}\n </ol>\n )\n}\n","import React from 'react'\nimport { TrendingUp, TrendingDown, Minus } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface StatProps {\n label: string\n value: React.ReactNode\n delta?: number\n deltaLabel?: string\n icon?: React.ReactNode\n iconBg?: 'primary' | 'success' | 'error' | 'warning' | 'info'\n description?: string\n loading?: boolean\n className?: string\n}\n\nconst iconBgClasses = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success-bg text-success',\n error: 'bg-error-bg text-error',\n warning: 'bg-warning-bg text-warning',\n info: 'bg-info-bg text-info',\n}\n\nexport function Stat({\n label,\n value,\n delta,\n deltaLabel,\n icon,\n iconBg = 'primary',\n description,\n loading = false,\n className,\n}: StatProps) {\n const isPositive = delta !== undefined && delta > 0\n const isNegative = delta !== undefined && delta < 0\n\n return (\n <div className={cn('flex flex-col gap-3 p-4 rounded-lg bg-surface border border-border shadow-sm', className)}>\n <div className=\"flex items-start justify-between gap-3\">\n <p className=\"text-sm font-medium text-text-muted\">{label}</p>\n {icon && (\n <div className={cn('flex items-center justify-center w-10 h-10 rounded-lg flex-shrink-0', iconBgClasses[iconBg])}>\n {icon}\n </div>\n )}\n </div>\n\n {loading ? (\n <div className=\"space-y-2\">\n <div className=\"h-8 w-24 rounded bg-surface-hover animate-pulse\" />\n <div className=\"h-4 w-16 rounded bg-surface-hover animate-pulse\" />\n </div>\n ) : (\n <>\n <p className=\"text-2xl font-bold text-text\">{value}</p>\n\n {delta !== undefined && (\n <div className=\"flex items-center gap-1.5\">\n <span\n className={cn(\n 'flex items-center gap-0.5 text-xs font-medium',\n isPositive && 'text-success',\n isNegative && 'text-error',\n !isPositive && !isNegative && 'text-text-muted'\n )}\n >\n {isPositive ? (\n <TrendingUp size={12} />\n ) : isNegative ? (\n <TrendingDown size={12} />\n ) : (\n <Minus size={12} />\n )}\n {Math.abs(delta)}%\n </span>\n {deltaLabel && (\n <span className=\"text-xs text-text-muted\">{deltaLabel}</span>\n )}\n </div>\n )}\n\n {description && (\n <p className=\"text-xs text-text-muted\">{description}</p>\n )}\n </>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { Inbox } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface EmptyStateProps {\n title?: string\n description?: string\n illustration?: React.ReactNode\n icon?: React.ReactNode\n action?: React.ReactNode\n className?: string\n}\n\nexport function EmptyState({\n title = 'No data found',\n description,\n illustration,\n icon,\n action,\n className,\n}: EmptyStateProps) {\n return (\n <div className={cn('flex flex-col items-center justify-center gap-4 py-16 px-6 text-center', className)}>\n {illustration ? (\n <div className=\"mb-2\">{illustration}</div>\n ) : (\n <div className=\"flex items-center justify-center w-16 h-16 rounded-full bg-surface-hover text-text-muted\">\n {icon ?? <Inbox size={28} />}\n </div>\n )}\n <div className=\"flex flex-col gap-1.5 max-w-sm\">\n <h3 className=\"text-base font-semibold text-text\">{title}</h3>\n {description && <p className=\"text-sm text-text-muted\">{description}</p>}\n </div>\n {action && <div className=\"mt-2\">{action}</div>}\n </div>\n )\n}\n","import React from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\nimport { Highlight, themes } from 'prism-react-renderer'\nimport { cn } from '../../../utils/cn'\n\nexport interface MarkdownReaderProps {\n children: string\n className?: string\n codeTheme?: 'dark' | 'light'\n showLineNumbers?: boolean\n}\n\nexport function MarkdownReader({\n children,\n className,\n codeTheme = 'dark',\n showLineNumbers = false,\n}: MarkdownReaderProps) {\n const prismTheme = codeTheme === 'dark' ? themes.oneDark : themes.oneLight\n\n return (\n <div className={cn('markdown-reader w-full', className)}>\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n // Headings\n h1: ({ children: c }) => (\n <h1 className=\"text-3xl font-bold text-text mt-8 mb-4 pb-2 border-b border-border first:mt-0\">{c}</h1>\n ),\n h2: ({ children: c }) => (\n <h2 className=\"text-2xl font-semibold text-text mt-7 mb-3 pb-2 border-b border-border\">{c}</h2>\n ),\n h3: ({ children: c }) => (\n <h3 className=\"text-xl font-semibold text-text mt-6 mb-2\">{c}</h3>\n ),\n h4: ({ children: c }) => (\n <h4 className=\"text-lg font-semibold text-text mt-5 mb-2\">{c}</h4>\n ),\n h5: ({ children: c }) => (\n <h5 className=\"text-base font-semibold text-text mt-4 mb-1\">{c}</h5>\n ),\n h6: ({ children: c }) => (\n <h6 className=\"text-sm font-semibold text-text-muted mt-4 mb-1\">{c}</h6>\n ),\n\n // Paragraph\n p: ({ children: c }) => (\n <p className=\"text-text leading-7 mb-4 last:mb-0\">{c}</p>\n ),\n\n // Links\n a: ({ href, children: c }) => (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary underline underline-offset-4 hover:opacity-80 transition-opacity\"\n >\n {c}\n </a>\n ),\n\n // Lists\n ul: ({ children: c }) => (\n <ul className=\"list-disc list-outside pl-6 mb-4 space-y-1 text-text\">{c}</ul>\n ),\n ol: ({ children: c }) => (\n <ol className=\"list-decimal list-outside pl-6 mb-4 space-y-1 text-text\">{c}</ol>\n ),\n li: ({ children: c }) => (\n <li className=\"leading-7\">{c}</li>\n ),\n\n // Blockquote\n blockquote: ({ children: c }) => (\n <blockquote className=\"border-l-4 border-primary/40 pl-4 py-1 my-4 bg-primary/5 rounded-r-md text-text-muted italic\">\n {c}\n </blockquote>\n ),\n\n // Inline code\n code: ({ children: c, className: cls }) => {\n const match = /language-(\\w+)/.exec(cls ?? '')\n const language = match ? match[1] : null\n const code = String(c).trimEnd()\n\n if (language) {\n return (\n <div className=\"my-4 rounded-lg border border-border overflow-hidden\">\n <div className=\"flex items-center px-4 py-2 bg-surface border-b border-border\">\n <span className=\"text-xs font-mono text-text-muted uppercase tracking-wide\">{language}</span>\n </div>\n <Highlight theme={prismTheme} code={code} language={language}>\n {({ className: hlClass, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n className={cn('overflow-x-auto p-4 text-sm leading-relaxed m-0', hlClass)}\n style={style}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {showLineNumbers && (\n <span className=\"select-none pr-4 text-right inline-block w-8 opacity-40 text-xs\">\n {i + 1}\n </span>\n )}\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n </div>\n )\n }\n\n return (\n <code className=\"inline rounded px-1.5 py-0.5 bg-surface-hover border border-border text-sm font-mono text-text\">\n {c}\n </code>\n )\n },\n\n // Pre — handled by code above, suppress default pre wrapper\n pre: ({ children: c }) => <>{c}</>,\n\n // Horizontal rule\n hr: () => <hr className=\"my-6 border-border\" />,\n\n // Strong / em\n strong: ({ children: c }) => <strong className=\"font-semibold text-text\">{c}</strong>,\n em: ({ children: c }) => <em className=\"italic text-text\">{c}</em>,\n del: ({ children: c }) => <del className=\"line-through text-text-muted\">{c}</del>,\n\n // Table (GFM)\n table: ({ children: c }) => (\n <div className=\"my-4 w-full overflow-x-auto rounded-lg border border-border\">\n <table className=\"w-full text-sm border-collapse\">{c}</table>\n </div>\n ),\n thead: ({ children: c }) => (\n <thead className=\"bg-surface-hover border-b border-border\">{c}</thead>\n ),\n tbody: ({ children: c }) => <tbody>{c}</tbody>,\n tr: ({ children: c }) => (\n <tr className=\"border-b border-border last:border-0 hover:bg-surface-hover/50 transition-colors\">{c}</tr>\n ),\n th: ({ children: c }) => (\n <th className=\"px-4 py-2.5 text-left font-semibold text-text-muted whitespace-nowrap\">{c}</th>\n ),\n td: ({ children: c }) => (\n <td className=\"px-4 py-2.5 text-text\">{c}</td>\n ),\n\n // Task list items (GFM checkboxes)\n input: ({ type, checked }) => {\n if (type === 'checkbox') {\n return (\n <input\n type=\"checkbox\"\n checked={checked}\n readOnly\n className=\"mr-2 accent-primary\"\n />\n )\n }\n return null\n },\n\n // Image\n img: ({ src, alt }) => (\n <img\n src={src}\n alt={alt ?? ''}\n className=\"my-4 max-w-full rounded-lg border border-border\"\n />\n ),\n }}\n >\n {children}\n </ReactMarkdown>\n </div>\n )\n}\n","import React, { useState, useId } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface CollapsibleProps {\n title: React.ReactNode\n children: React.ReactNode\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n icon?: React.ReactNode\n variant?: 'default' | 'bordered' | 'filled'\n className?: string\n triggerClassName?: string\n contentClassName?: string\n}\n\nexport function Collapsible({\n title,\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n disabled = false,\n icon,\n variant = 'default',\n className,\n triggerClassName,\n contentClassName,\n}: CollapsibleProps) {\n const id = useId()\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const open = controlledOpen !== undefined ? controlledOpen : internalOpen\n\n const toggle = () => {\n if (disabled) return\n const next = !open\n setInternalOpen(next)\n onOpenChange?.(next)\n }\n\n const variantClasses = {\n default: '',\n bordered: 'border border-border rounded-lg overflow-hidden',\n filled: 'bg-surface rounded-lg overflow-hidden',\n }\n\n const triggerVariant = {\n default: 'hover:bg-surface-hover rounded-md',\n bordered: 'border-b border-border bg-surface-hover hover:bg-surface-active',\n filled: 'hover:bg-surface-active',\n }\n\n return (\n <div className={cn(variantClasses[variant], className)}>\n <button\n type=\"button\"\n id={`${id}-trigger`}\n aria-expanded={open}\n aria-controls={`${id}-content`}\n onClick={toggle}\n disabled={disabled}\n className={cn(\n 'w-full flex items-center justify-between gap-3 px-3 py-2.5 text-left',\n 'transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-border-focus/40',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n triggerVariant[variant],\n triggerClassName\n )}\n >\n <div className=\"flex items-center gap-2 min-w-0\">\n {icon && <span className=\"flex-shrink-0 text-text-muted\">{icon}</span>}\n <span className=\"text-sm font-medium text-text truncate\">{title}</span>\n </div>\n <ChevronDown\n size={16}\n className={cn(\n 'flex-shrink-0 text-text-muted transition-transform duration-200',\n open && 'rotate-180'\n )}\n />\n </button>\n\n <div\n id={`${id}-content`}\n role=\"region\"\n aria-labelledby={`${id}-trigger`}\n className={cn(\n 'overflow-hidden transition-all duration-200',\n open ? 'max-h-[9999px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <div className={cn('px-3 py-3', contentClassName)}>\n {children}\n </div>\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { ChevronRight, ChevronDown } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface TreeViewItem {\n id: string\n label: React.ReactNode\n icon?: React.ReactNode\n children?: TreeViewItem[]\n disabled?: boolean\n badge?: React.ReactNode\n}\n\nexport interface TreeViewProps {\n items: TreeViewItem[]\n selectedId?: string\n onSelect?: (id: string, item: TreeViewItem) => void\n defaultExpandedIds?: string[]\n expandedIds?: string[]\n onExpandedChange?: (ids: string[]) => void\n multiSelect?: boolean\n selectedIds?: string[]\n onMultiSelect?: (ids: string[]) => void\n indent?: number\n className?: string\n}\n\ninterface TreeNodeProps {\n item: TreeViewItem\n depth: number\n indent: number\n selectedId?: string\n selectedIds?: string[]\n expandedIds: string[]\n onSelect?: (id: string, item: TreeViewItem) => void\n onToggle: (id: string) => void\n multiSelect?: boolean\n}\n\nfunction TreeNode({\n item,\n depth,\n indent,\n selectedId,\n selectedIds,\n expandedIds,\n onSelect,\n onToggle,\n multiSelect,\n}: TreeNodeProps) {\n const hasChildren = item.children && item.children.length > 0\n const isExpanded = expandedIds.includes(item.id)\n const isSelected = multiSelect\n ? (selectedIds ?? []).includes(item.id)\n : selectedId === item.id\n\n return (\n <li role=\"treeitem\" aria-expanded={hasChildren ? isExpanded : undefined} aria-selected={isSelected}>\n <div\n className={cn(\n 'flex items-center gap-1.5 px-2 py-1 rounded-md cursor-pointer select-none',\n 'transition-colors text-sm',\n isSelected\n ? 'bg-primary text-primary-foreground'\n : 'text-text hover:bg-surface-hover',\n item.disabled && 'opacity-50 cursor-not-allowed pointer-events-none'\n )}\n style={{ paddingLeft: `${depth * indent + 8}px` }}\n onClick={() => {\n if (item.disabled) return\n if (hasChildren) onToggle(item.id)\n onSelect?.(item.id, item)\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n if (item.disabled) return\n if (hasChildren) onToggle(item.id)\n onSelect?.(item.id, item)\n }\n }}\n tabIndex={item.disabled ? -1 : 0}\n role=\"button\"\n >\n {hasChildren ? (\n <span className=\"flex-shrink-0 text-text-muted\">\n {isExpanded ? <ChevronDown size={14} /> : <ChevronRight size={14} />}\n </span>\n ) : (\n <span className=\"w-3.5 flex-shrink-0\" />\n )}\n {item.icon && (\n <span className={cn('flex-shrink-0', isSelected ? 'text-primary-foreground' : 'text-text-muted')}>\n {item.icon}\n </span>\n )}\n <span className=\"flex-1 truncate\">{item.label}</span>\n {item.badge && <span className=\"flex-shrink-0\">{item.badge}</span>}\n </div>\n\n {hasChildren && isExpanded && (\n <ul role=\"group\" className=\"mt-0.5\">\n {item.children!.map((child) => (\n <TreeNode\n key={child.id}\n item={child}\n depth={depth + 1}\n indent={indent}\n selectedId={selectedId}\n selectedIds={selectedIds}\n expandedIds={expandedIds}\n onSelect={onSelect}\n onToggle={onToggle}\n multiSelect={multiSelect}\n />\n ))}\n </ul>\n )}\n </li>\n )\n}\n\nexport function TreeView({\n items,\n selectedId,\n onSelect,\n defaultExpandedIds = [],\n expandedIds: controlledExpandedIds,\n onExpandedChange,\n multiSelect = false,\n selectedIds,\n onMultiSelect,\n indent = 16,\n className,\n}: TreeViewProps) {\n const [internalExpandedIds, setInternalExpandedIds] = useState<string[]>(defaultExpandedIds)\n const expandedIds = controlledExpandedIds ?? internalExpandedIds\n\n const handleToggle = (id: string) => {\n const next = expandedIds.includes(id)\n ? expandedIds.filter((e) => e !== id)\n : [...expandedIds, id]\n setInternalExpandedIds(next)\n onExpandedChange?.(next)\n }\n\n const handleSelect = (id: string, item: TreeViewItem) => {\n if (multiSelect && onMultiSelect) {\n const current = selectedIds ?? []\n const next = current.includes(id)\n ? current.filter((s) => s !== id)\n : [...current, id]\n onMultiSelect(next)\n } else {\n onSelect?.(id, item)\n }\n }\n\n return (\n <ul role=\"tree\" className={cn('space-y-0.5', className)}>\n {items.map((item) => (\n <TreeNode\n key={item.id}\n item={item}\n depth={0}\n indent={indent}\n selectedId={selectedId}\n selectedIds={selectedIds}\n expandedIds={expandedIds}\n onSelect={handleSelect}\n onToggle={handleToggle}\n multiSelect={multiSelect}\n />\n ))}\n </ul>\n )\n}\n","import React, { useState } from 'react'\nimport { CheckCircle, AlertCircle, AlertTriangle, Info, X } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../../utils/cn'\n\nconst alertVariants = cva(\n 'flex gap-3 rounded-lg border p-4 text-sm',\n {\n variants: {\n variant: {\n info: 'bg-info-bg border-info/30 text-info',\n success: 'bg-success-bg border-success/30 text-success',\n warning: 'bg-warning-bg border-warning/30 text-warning',\n error: 'bg-error-bg border-error/30 text-error',\n },\n },\n defaultVariants: { variant: 'info' },\n }\n)\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertCircle,\n}\n\nexport interface AlertProps extends VariantProps<typeof alertVariants> {\n title?: string\n children?: React.ReactNode\n dismissible?: boolean\n onDismiss?: () => void\n icon?: React.ReactNode\n className?: string\n}\n\nexport function Alert({\n variant = 'info',\n title,\n children,\n dismissible = false,\n onDismiss,\n icon,\n className,\n}: AlertProps) {\n const [dismissed, setDismissed] = useState(false)\n\n if (dismissed) return null\n\n const IconComponent = icons[variant ?? 'info']\n\n const handleDismiss = () => {\n setDismissed(true)\n onDismiss?.()\n }\n\n return (\n <div\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n >\n <span className=\"flex-shrink-0 mt-0.5\">\n {icon ?? <IconComponent size={16} />}\n </span>\n <div className=\"flex-1 min-w-0\">\n {title && <p className=\"font-semibold mb-0.5\">{title}</p>}\n {children && <div className=\"opacity-90\">{children}</div>}\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={handleDismiss}\n className=\"flex-shrink-0 flex items-center justify-center w-5 h-5 rounded hover:opacity-70 transition-opacity mt-0.5\"\n aria-label=\"Dismiss alert\"\n >\n <X size={14} />\n </button>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport * as RadixToast from '@radix-ui/react-toast'\nimport { CheckCircle, AlertCircle, AlertTriangle, Info, X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport { type Toast as ToastData, type ToastPosition } from '../../../hooks/useToast'\n\nconst variantClasses = {\n info: 'border-info/30 bg-info-bg text-info',\n success: 'border-success/30 bg-success-bg text-success',\n warning: 'border-warning/30 bg-warning-bg text-warning',\n error: 'border-error/30 bg-error-bg text-error',\n}\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertCircle,\n}\n\nconst positionClasses: Record<ToastPosition, string> = {\n 'top-left': 'top-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'top-right': 'top-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n}\n\nexport interface ToastProviderProps {\n toasts: ToastData[]\n onDismiss: (id: string) => void\n position?: ToastPosition\n}\n\nexport function ToastProvider({ toasts, onDismiss, position = 'bottom-right' }: ToastProviderProps) {\n return (\n <RadixToast.Provider swipeDirection=\"right\">\n {toasts.map((toast) => {\n const variant = toast.variant ?? 'info'\n const IconComponent = icons[variant]\n\n return (\n <RadixToast.Root\n key={toast.id}\n open\n onOpenChange={(open) => { if (!open) onDismiss(toast.id) }}\n duration={toast.duration}\n className={cn(\n 'flex items-start gap-3 p-4 rounded-lg border shadow-lg w-80 max-w-[calc(100vw-2rem)]',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom-2',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-right-full',\n variantClasses[variant]\n )}\n >\n <span className=\"flex-shrink-0 mt-0.5\">\n <IconComponent size={16} />\n </span>\n <div className=\"flex-1 min-w-0\">\n {toast.title && (\n <RadixToast.Title className=\"font-semibold text-sm\">\n {toast.title}\n </RadixToast.Title>\n )}\n {toast.description && (\n <RadixToast.Description className=\"text-sm opacity-90 mt-0.5\">\n {toast.description}\n </RadixToast.Description>\n )}\n </div>\n <RadixToast.Close asChild>\n <button\n type=\"button\"\n className=\"flex-shrink-0 flex items-center justify-center w-5 h-5 rounded hover:opacity-70 transition-opacity\"\n aria-label=\"Close notification\"\n >\n <X size={14} />\n </button>\n </RadixToast.Close>\n </RadixToast.Root>\n )\n })}\n\n <RadixToast.Viewport\n className={cn(\n 'fixed flex flex-col gap-2 z-toast',\n positionClasses[position]\n )}\n />\n </RadixToast.Provider>\n )\n}\n","import React from 'react'\nimport { Loader2 } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface SpinnerProps {\n size?: SpinnerSize\n color?: 'primary' | 'secondary' | 'white' | 'current'\n label?: string\n overlay?: boolean\n className?: string\n}\n\nconst sizeMap: Record<SpinnerSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n}\n\nconst colorClasses = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n white: 'text-white',\n current: 'text-current',\n}\n\nexport function Spinner({ size = 'md', color = 'primary', label = 'Loading...', overlay = false, className }: SpinnerProps) {\n const spinner = (\n <div\n role=\"status\"\n aria-label={label}\n className={cn('inline-flex items-center justify-center', colorClasses[color], className)}\n >\n <Loader2 size={sizeMap[size]} className=\"animate-spin\" />\n <span className=\"sr-only\">{label}</span>\n </div>\n )\n\n if (overlay) {\n return (\n <div className=\"fixed inset-0 flex items-center justify-center bg-overlay z-modal\">\n {spinner}\n </div>\n )\n }\n\n return spinner\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type SkeletonVariant = 'text' | 'rect' | 'circle'\n\nexport interface SkeletonProps {\n variant?: SkeletonVariant\n width?: string | number\n height?: string | number\n lines?: number\n className?: string\n animated?: boolean\n}\n\nexport function Skeleton({\n variant = 'rect',\n width,\n height,\n lines = 1,\n className,\n animated = true,\n}: SkeletonProps) {\n const base = cn(\n 'bg-surface-hover',\n animated && 'animate-pulse',\n variant === 'circle' && 'rounded-full',\n variant === 'text' && 'rounded',\n variant === 'rect' && 'rounded-md',\n className\n )\n\n const style: React.CSSProperties = {\n width: width !== undefined ? (typeof width === 'number' ? `${width}px` : width) : undefined,\n height: height !== undefined ? (typeof height === 'number' ? `${height}px` : height) : undefined,\n }\n\n if (variant === 'text' && lines > 1) {\n return (\n <div className=\"flex flex-col gap-2\">\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={cn(base, 'h-4')}\n style={{ ...style, width: i === lines - 1 ? '75%' : '100%' }}\n />\n ))}\n </div>\n )\n }\n\n return (\n <div\n className={cn(base, variant === 'text' && 'h-4', variant === 'circle' && 'w-10 h-10')}\n style={style}\n />\n )\n}\n\nexport interface SkeletonCardProps {\n showAvatar?: boolean\n lines?: number\n className?: string\n}\n\nexport function SkeletonCard({ showAvatar = true, lines = 3, className }: SkeletonCardProps) {\n return (\n <div className={cn('p-4 rounded-lg border border-border bg-surface space-y-3', className)}>\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <Skeleton variant=\"circle\" width={40} height={40} />\n <div className=\"flex-1 space-y-2\">\n <Skeleton variant=\"text\" width=\"60%\" />\n <Skeleton variant=\"text\" width=\"40%\" />\n </div>\n </div>\n )}\n <Skeleton variant=\"text\" lines={lines} />\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type ProgressVariant = 'primary' | 'success' | 'error' | 'warning' | 'info'\nexport type ProgressSize = 'xs' | 'sm' | 'md' | 'lg'\n\nexport interface ProgressBarProps {\n value?: number\n max?: number\n variant?: ProgressVariant\n size?: ProgressSize\n label?: string\n showValue?: boolean\n striped?: boolean\n animated?: boolean\n indeterminate?: boolean\n className?: string\n}\n\nconst variantClasses: Record<ProgressVariant, string> = {\n primary: 'bg-primary',\n success: 'bg-success',\n error: 'bg-error',\n warning: 'bg-warning',\n info: 'bg-info',\n}\n\nconst sizeClasses: Record<ProgressSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-2.5',\n lg: 'h-4',\n}\n\nexport function ProgressBar({\n value = 0,\n max = 100,\n variant = 'primary',\n size = 'md',\n label,\n showValue = false,\n striped = false,\n animated = false,\n indeterminate = false,\n className,\n}: ProgressBarProps) {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n {(label || showValue) && (\n <div className=\"flex items-center justify-between\">\n {label && <span className=\"text-sm font-medium text-text\">{label}</span>}\n {showValue && !indeterminate && (\n <span className=\"text-xs text-text-muted\">{Math.round(percentage)}%</span>\n )}\n </div>\n )}\n <div\n className={cn('w-full bg-surface-hover rounded-full overflow-hidden', sizeClasses[size])}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label}\n >\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n variantClasses[variant],\n striped && 'bg-stripes',\n indeterminate && 'animate-indeterminate w-1/3',\n !indeterminate && 'transition-[width]'\n )}\n style={indeterminate ? undefined : { width: `${percentage}%` }}\n />\n </div>\n </div>\n )\n}\n","import React, { Component, type ErrorInfo, type ReactNode } from 'react'\nimport { AlertCircle, RefreshCw } from 'lucide-react'\n\nexport interface ErrorBoundaryProps {\n children: ReactNode\n fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode)\n onError?: (error: Error, errorInfo: ErrorInfo) => void\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean\n error: Error | null\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { hasError: false, error: null }\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error }\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n this.props.onError?.(error, errorInfo)\n }\n\n reset = () => {\n this.setState({ hasError: false, error: null })\n }\n\n render() {\n if (this.state.hasError && this.state.error) {\n if (this.props.fallback) {\n if (typeof this.props.fallback === 'function') {\n return this.props.fallback(this.state.error, this.reset)\n }\n return this.props.fallback\n }\n\n return (\n <div className=\"flex flex-col items-center justify-center gap-4 p-8 rounded-lg border border-error/30 bg-error-bg text-error\">\n <AlertCircle size={32} />\n <div className=\"text-center\">\n <h3 className=\"font-semibold text-base mb-1\">Something went wrong</h3>\n <p className=\"text-sm opacity-80 max-w-sm\">{this.state.error.message}</p>\n </div>\n <button\n type=\"button\"\n onClick={this.reset}\n className=\"flex items-center gap-2 px-4 py-2 rounded-md border border-error/30 text-sm font-medium hover:bg-error/10 transition-colors\"\n >\n <RefreshCw size={14} />\n Try again\n </button>\n </div>\n )\n }\n\n return this.props.children\n }\n}\n","import React, { createContext, useContext, useState, useCallback, useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { cn } from '../../../utils/cn'\nimport { Spinner } from '../Spinner/Spinner'\n\nexport interface FullScreenLoaderState {\n visible: boolean\n text?: string\n icon?: React.ReactNode\n blur?: boolean\n}\n\nexport interface FullScreenLoaderControls {\n show: (options?: Partial<Omit<FullScreenLoaderState, 'visible'>>) => void\n hide: () => void\n update: (options: Partial<Omit<FullScreenLoaderState, 'visible'>>) => void\n}\n\nconst FullScreenLoaderContext = createContext<FullScreenLoaderControls | null>(null)\n\nexport interface FullScreenLoaderProviderProps {\n children: React.ReactNode\n defaultText?: string\n defaultBlur?: boolean\n}\n\nexport function FullScreenLoaderProvider({\n children,\n defaultText = 'Loading…',\n defaultBlur = true,\n}: FullScreenLoaderProviderProps) {\n const [state, setState] = useState<FullScreenLoaderState>({\n visible: false,\n text: defaultText,\n blur: defaultBlur,\n })\n\n const show = useCallback(\n (options?: Partial<Omit<FullScreenLoaderState, 'visible'>>) => {\n setState((prev) => ({\n ...prev,\n ...options,\n text: options?.text ?? defaultText,\n blur: options?.blur ?? defaultBlur,\n visible: true,\n }))\n },\n [defaultText, defaultBlur]\n )\n\n const hide = useCallback(() => {\n setState((prev) => ({ ...prev, visible: false }))\n }, [])\n\n const update = useCallback(\n (options: Partial<Omit<FullScreenLoaderState, 'visible'>>) => {\n setState((prev) => ({ ...prev, ...options }))\n },\n []\n )\n\n return (\n <FullScreenLoaderContext.Provider value={{ show, hide, update }}>\n {children}\n <FullScreenLoader {...state} />\n </FullScreenLoaderContext.Provider>\n )\n}\n\nexport function useFullScreenLoader(): FullScreenLoaderControls {\n const ctx = useContext(FullScreenLoaderContext)\n if (!ctx) {\n throw new Error('useFullScreenLoader must be used within a FullScreenLoaderProvider')\n }\n return ctx\n}\n\nexport interface FullScreenLoaderProps {\n visible?: boolean\n text?: string\n icon?: React.ReactNode\n blur?: boolean\n className?: string\n}\n\nexport function FullScreenLoader({\n visible = false,\n text = 'Loading…',\n icon,\n blur = true,\n className,\n}: FullScreenLoaderProps) {\n if (!visible) return null\n\n const content = (\n <div\n className={cn(\n 'fixed inset-0 z-[9999] flex flex-col items-center justify-center gap-4',\n blur ? 'backdrop-blur-sm bg-background/70' : 'bg-background/80',\n className\n )}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={text}\n >\n <div className=\"flex flex-col items-center gap-4 p-8 rounded-2xl bg-surface shadow-xl border border-border\">\n <div className=\"text-primary\">\n {icon ?? <Spinner size=\"xl\" />}\n </div>\n {text && (\n <p className=\"text-sm font-medium text-text-muted animate-pulse\">{text}</p>\n )}\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n","import React from 'react'\nimport * as RadixDialog from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full'\n\nexport interface ModalProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n title?: React.ReactNode\n description?: React.ReactNode\n footer?: React.ReactNode\n size?: ModalSize\n showClose?: boolean\n closeOnOverlayClick?: boolean\n children?: React.ReactNode\n trigger?: React.ReactNode\n className?: string\n}\n\nconst sizeClasses: Record<ModalSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n full: 'max-w-[calc(100vw-2rem)] h-[calc(100vh-2rem)]',\n}\n\nexport function Modal({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n footer,\n size = 'md',\n showClose = true,\n closeOnOverlayClick = true,\n children,\n trigger,\n className,\n}: ModalProps) {\n return (\n <RadixDialog.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n {trigger && <RadixDialog.Trigger asChild>{trigger}</RadixDialog.Trigger>}\n\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={cn(\n 'fixed inset-0 bg-overlay z-modal',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0'\n )}\n onClick={closeOnOverlayClick ? undefined : (e) => e.stopPropagation()}\n />\n\n <RadixDialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2',\n 'w-full bg-surface rounded-lg shadow-xl border border-border',\n 'flex flex-col z-modal',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'focus:outline-none',\n sizeClasses[size],\n className\n )}\n >\n {/* Header */}\n {(title || showClose) && (\n <div className=\"flex items-start justify-between gap-4 px-6 py-4 border-b border-border flex-shrink-0\">\n <div className=\"flex-1 min-w-0\">\n {title && (\n <RadixDialog.Title className=\"text-base font-semibold text-text\">\n {title}\n </RadixDialog.Title>\n )}\n {description && (\n <RadixDialog.Description className=\"text-sm text-text-muted mt-0.5\">\n {description}\n </RadixDialog.Description>\n )}\n </div>\n {showClose && (\n <RadixDialog.Close asChild>\n <button\n type=\"button\"\n className=\"flex-shrink-0 flex items-center justify-center w-7 h-7 rounded-md text-text-muted hover:text-text hover:bg-surface-hover transition-colors\"\n aria-label=\"Close modal\"\n >\n <X size={16} />\n </button>\n </RadixDialog.Close>\n )}\n </div>\n )}\n\n {/* Body */}\n <div className=\"flex-1 overflow-auto px-6 py-4\">{children}</div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex-shrink-0 px-6 py-4 border-t border-border\">{footer}</div>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n )\n}\n","import React from 'react'\nimport * as RadixDialog from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type DrawerSide = 'left' | 'right' | 'top' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface DrawerProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n side?: DrawerSide\n size?: DrawerSize\n title?: React.ReactNode\n description?: React.ReactNode\n footer?: React.ReactNode\n showClose?: boolean\n children?: React.ReactNode\n trigger?: React.ReactNode\n className?: string\n}\n\nconst sideClasses: Record<DrawerSide, string> = {\n left: 'left-0 top-0 bottom-0 h-full data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left',\n right: 'right-0 top-0 bottom-0 h-full data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right',\n top: 'top-0 left-0 right-0 w-full data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top',\n bottom: 'bottom-0 left-0 right-0 w-full data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom',\n}\n\nconst sizeClasses: Record<DrawerSide, Record<DrawerSize, string>> = {\n left: { sm: 'w-64', md: 'w-80', lg: 'w-96', xl: 'w-[32rem]' },\n right: { sm: 'w-64', md: 'w-80', lg: 'w-96', xl: 'w-[32rem]' },\n top: { sm: 'h-48', md: 'h-64', lg: 'h-80', xl: 'h-96' },\n bottom: { sm: 'h-48', md: 'h-64', lg: 'h-80', xl: 'h-96' },\n}\n\nexport function Drawer({\n open,\n defaultOpen,\n onOpenChange,\n side = 'right',\n size = 'md',\n title,\n description,\n footer,\n showClose = true,\n children,\n trigger,\n className,\n}: DrawerProps) {\n const isVertical = side === 'left' || side === 'right'\n\n return (\n <RadixDialog.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n {trigger && <RadixDialog.Trigger asChild>{trigger}</RadixDialog.Trigger>}\n\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={cn(\n 'fixed inset-0 bg-overlay z-sidebar',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0'\n )}\n />\n\n <RadixDialog.Content\n className={cn(\n 'fixed bg-surface shadow-xl border-border flex flex-col z-sidebar',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=open]:duration-300 data-[state=closed]:duration-200',\n 'focus:outline-none',\n sideClasses[side],\n sizeClasses[side][size],\n side === 'left' && 'border-r',\n side === 'right' && 'border-l',\n side === 'top' && 'border-b',\n side === 'bottom' && 'border-t',\n className\n )}\n >\n {/* Header */}\n {(title || showClose) && (\n <div className=\"flex items-start justify-between gap-4 px-5 py-4 border-b border-border flex-shrink-0\">\n <div className=\"flex-1 min-w-0\">\n {title && (\n <RadixDialog.Title className=\"text-base font-semibold text-text\">\n {title}\n </RadixDialog.Title>\n )}\n {description && (\n <RadixDialog.Description className=\"text-sm text-text-muted mt-0.5\">\n {description}\n </RadixDialog.Description>\n )}\n </div>\n {showClose && (\n <RadixDialog.Close asChild>\n <button\n type=\"button\"\n className=\"flex-shrink-0 flex items-center justify-center w-7 h-7 rounded-md text-text-muted hover:text-text hover:bg-surface-hover transition-colors\"\n aria-label=\"Close drawer\"\n >\n <X size={16} />\n </button>\n </RadixDialog.Close>\n )}\n </div>\n )}\n\n {/* Body */}\n <div className={cn('flex-1 overflow-auto p-5')}>{children}</div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex-shrink-0 px-5 py-4 border-t border-border\">{footer}</div>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n )\n}\n","import React from 'react'\nimport * as RadixTooltip from '@radix-ui/react-tooltip'\nimport { cn } from '../../../utils/cn'\n\nexport type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left'\n\nexport interface TooltipProps {\n content: React.ReactNode\n children: React.ReactNode\n placement?: TooltipPlacement\n delay?: number\n arrow?: boolean\n className?: string\n contentClassName?: string\n disabled?: boolean\n}\n\nexport function Tooltip({\n content,\n children,\n placement = 'top',\n delay = 200,\n arrow = true,\n className,\n contentClassName,\n disabled = false,\n}: TooltipProps) {\n if (disabled) return <>{children}</>\n\n return (\n <RadixTooltip.Provider delayDuration={delay}>\n <RadixTooltip.Root>\n <RadixTooltip.Trigger asChild className={className}>\n {children}\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <RadixTooltip.Content\n side={placement}\n sideOffset={6}\n className={cn(\n 'z-tooltip px-2.5 py-1.5 rounded-md text-xs font-medium',\n 'bg-text text-surface shadow-md max-w-xs',\n 'data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n contentClassName\n )}\n >\n {content}\n {arrow && (\n <RadixTooltip.Arrow className=\"fill-text\" />\n )}\n </RadixTooltip.Content>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n )\n}\n","import React from 'react'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport { X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type PopoverPlacement = 'top' | 'right' | 'bottom' | 'left'\n | 'top-start' | 'top-end' | 'right-start' | 'right-end'\n | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end'\n\nexport interface PopoverProps {\n content: React.ReactNode\n children: React.ReactNode\n placement?: PopoverPlacement\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n showClose?: boolean\n arrow?: boolean\n className?: string\n contentClassName?: string\n}\n\nexport function Popover({\n content,\n children,\n placement = 'bottom',\n open,\n defaultOpen,\n onOpenChange,\n showClose = false,\n arrow = true,\n className,\n contentClassName,\n}: PopoverProps) {\n const [side, align] = placement.split('-') as [RadixPopover.PopoverContentProps['side'], RadixPopover.PopoverContentProps['align']]\n\n return (\n <RadixPopover.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <RadixPopover.Trigger asChild className={className}>\n {children}\n </RadixPopover.Trigger>\n\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n align={align ?? 'center'}\n sideOffset={8}\n className={cn(\n 'z-dropdown bg-surface border border-border rounded-lg shadow-lg p-4 max-w-sm',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'focus:outline-none',\n contentClassName\n )}\n >\n {showClose && (\n <RadixPopover.Close asChild>\n <button\n type=\"button\"\n className=\"absolute top-2 right-2 flex items-center justify-center w-6 h-6 rounded text-text-muted hover:text-text hover:bg-surface-hover transition-colors\"\n aria-label=\"Close popover\"\n >\n <X size={14} />\n </button>\n </RadixPopover.Close>\n )}\n {content}\n {arrow && <RadixPopover.Arrow className=\"fill-border\" />}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n )\n}\n","import React from 'react'\nimport * as RadixContextMenu from '@radix-ui/react-context-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport interface ContextMenuItem {\n type?: 'item' | 'separator' | 'label' | 'checkbox' | 'radio'\n label?: string\n icon?: React.ReactNode\n shortcut?: string\n disabled?: boolean\n destructive?: boolean\n checked?: boolean\n onCheckedChange?: (checked: boolean) => void\n onClick?: () => void\n children?: ContextMenuItem[]\n}\n\nexport interface ContextMenuProps {\n items: ContextMenuItem[]\n children: React.ReactNode\n className?: string\n}\n\nconst itemBase = cn(\n 'flex items-center gap-2 px-2 py-1.5 text-sm rounded-md cursor-pointer outline-none select-none',\n 'transition-colors',\n 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-text',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none'\n)\n\nfunction renderItems(items: ContextMenuItem[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') {\n return <RadixContextMenu.Separator key={i} className=\"my-1 h-px bg-border\" />\n }\n\n if (item.type === 'label') {\n return (\n <RadixContextMenu.Label key={i} className=\"px-2 py-1 text-xs font-semibold text-text-muted uppercase tracking-wide\">\n {item.label}\n </RadixContextMenu.Label>\n )\n }\n\n if (item.type === 'checkbox') {\n return (\n <RadixContextMenu.CheckboxItem\n key={i}\n checked={item.checked}\n onCheckedChange={item.onCheckedChange}\n disabled={item.disabled}\n className={cn(itemBase, 'pl-7 relative', item.destructive && 'text-error')}\n >\n <RadixContextMenu.ItemIndicator className=\"absolute left-2\">\n <Check size={12} />\n </RadixContextMenu.ItemIndicator>\n {item.label}\n </RadixContextMenu.CheckboxItem>\n )\n }\n\n if (item.children && item.children.length > 0) {\n return (\n <RadixContextMenu.Sub key={i}>\n <RadixContextMenu.SubTrigger\n disabled={item.disabled}\n className={cn(itemBase, item.destructive && 'text-error')}\n >\n {item.icon && <span className=\"w-4 h-4 flex items-center\">{item.icon}</span>}\n <span className=\"flex-1\">{item.label}</span>\n <ChevronRight size={12} className=\"ml-auto text-text-muted\" />\n </RadixContextMenu.SubTrigger>\n <RadixContextMenu.Portal>\n <RadixContextMenu.SubContent\n className=\"z-dropdown bg-surface border border-border rounded-lg shadow-lg p-1 min-w-[10rem]\"\n sideOffset={2}\n alignOffset={-4}\n >\n {renderItems(item.children)}\n </RadixContextMenu.SubContent>\n </RadixContextMenu.Portal>\n </RadixContextMenu.Sub>\n )\n }\n\n return (\n <RadixContextMenu.Item\n key={i}\n disabled={item.disabled}\n onSelect={item.onClick}\n className={cn(itemBase, item.destructive ? 'text-error' : 'text-text')}\n >\n {item.icon && <span className=\"w-4 h-4 flex items-center\">{item.icon}</span>}\n <span className=\"flex-1\">{item.label}</span>\n {item.shortcut && (\n <span className=\"ml-auto text-xs text-text-muted\">{item.shortcut}</span>\n )}\n </RadixContextMenu.Item>\n )\n })\n}\n\nexport function ContextMenu({ items, children, className }: ContextMenuProps) {\n return (\n <RadixContextMenu.Root>\n <RadixContextMenu.Trigger asChild className={className}>\n {children}\n </RadixContextMenu.Trigger>\n\n <RadixContextMenu.Portal>\n <RadixContextMenu.Content\n className={cn(\n 'z-dropdown bg-surface border border-border rounded-lg shadow-lg p-1 min-w-[10rem]',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0'\n )}\n >\n {renderItems(items)}\n </RadixContextMenu.Content>\n </RadixContextMenu.Portal>\n </RadixContextMenu.Root>\n )\n}\n","import React, { createContext, useContext, useState, useCallback, useRef } from 'react'\nimport * as RadixDialog from '@radix-ui/react-dialog'\nimport { AlertTriangle, Info, Trash2, X } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport { Button } from '../../inputs/Button/Button'\n\nexport type ConfirmVariant = 'default' | 'danger' | 'warning'\ntype ButtonVariant = 'primary' | 'danger' | 'outline' | 'ghost' | 'secondary' | 'success' | 'link'\n\nexport interface ConfirmOptions {\n title?: string\n description?: string\n confirmLabel?: string\n cancelLabel?: string\n variant?: ConfirmVariant\n}\n\ninterface ConfirmState extends ConfirmOptions {\n open: boolean\n resolve: ((value: boolean) => void) | null\n}\n\ninterface ConfirmDialogContextValue {\n confirm: (options?: ConfirmOptions) => Promise<boolean>\n}\n\nconst ConfirmDialogContext = createContext<ConfirmDialogContextValue | null>(null)\n\nexport function useConfirm(): (options?: ConfirmOptions) => Promise<boolean> {\n const ctx = useContext(ConfirmDialogContext)\n if (!ctx) {\n throw new Error('useConfirm must be used within a ConfirmDialogProvider')\n }\n return ctx.confirm\n}\n\nexport interface ConfirmDialogProviderProps {\n children: React.ReactNode\n}\n\nconst variantConfig: Record<ConfirmVariant, {\n icon: React.ReactNode\n iconBg: string\n confirmVariant: ButtonVariant\n confirmClassName?: string\n defaultTitle: string\n defaultConfirm: string\n}> = {\n default: {\n icon: <Info size={20} />,\n iconBg: 'bg-primary/10 text-primary',\n confirmVariant: 'primary',\n defaultTitle: 'Are you sure?',\n defaultConfirm: 'Confirm',\n },\n danger: {\n icon: <Trash2 size={20} />,\n iconBg: 'bg-error/10 text-error',\n confirmVariant: 'danger',\n defaultTitle: 'Delete this item?',\n defaultConfirm: 'Delete',\n },\n warning: {\n icon: <AlertTriangle size={20} />,\n iconBg: 'bg-warning/10 text-warning',\n confirmVariant: 'primary',\n confirmClassName: 'bg-warning hover:bg-warning/90 text-white',\n defaultTitle: 'Are you sure?',\n defaultConfirm: 'Proceed',\n },\n}\n\nexport function ConfirmDialogProvider({ children }: ConfirmDialogProviderProps) {\n const [state, setState] = useState<ConfirmState>({\n open: false,\n resolve: null,\n })\n\n const confirm = useCallback((options?: ConfirmOptions): Promise<boolean> => {\n return new Promise<boolean>((resolve) => {\n setState({\n open: true,\n resolve,\n ...options,\n })\n })\n }, [])\n\n const handleResponse = (value: boolean) => {\n state.resolve?.(value)\n setState((prev) => ({ ...prev, open: false, resolve: null }))\n }\n\n const variant = state.variant ?? 'default'\n const config = variantConfig[variant]\n const title = state.title ?? config.defaultTitle\n const description = state.description\n const confirmLabel = state.confirmLabel ?? config.defaultConfirm\n const cancelLabel = state.cancelLabel ?? 'Cancel'\n\n return (\n <ConfirmDialogContext.Provider value={{ confirm }}>\n {children}\n <RadixDialog.Root open={state.open} onOpenChange={(open) => { if (!open) handleResponse(false) }}>\n <RadixDialog.Portal>\n <RadixDialog.Overlay className=\"fixed inset-0 z-[1000] bg-black/40 backdrop-blur-sm animate-in fade-in-0\" />\n <RadixDialog.Content\n className={cn(\n 'fixed z-[1001] top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n 'w-full max-w-md bg-surface rounded-xl shadow-2xl border border-border p-6',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n aria-describedby={description ? 'confirm-desc' : undefined}\n >\n <div className=\"flex items-start gap-4\">\n <div className={cn('flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center', config.iconBg)}>\n {config.icon}\n </div>\n <div className=\"flex-1 min-w-0\">\n <RadixDialog.Title className=\"text-base font-semibold text-text\">\n {title}\n </RadixDialog.Title>\n {description && (\n <p id=\"confirm-desc\" className=\"mt-1 text-sm text-text-muted\">\n {description}\n </p>\n )}\n </div>\n <button\n onClick={() => handleResponse(false)}\n className=\"flex-shrink-0 text-text-muted hover:text-text transition-colors focus:outline-none\"\n aria-label=\"Close\"\n >\n <X size={16} />\n </button>\n </div>\n\n <div className=\"flex items-center justify-end gap-3 mt-6\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleResponse(false)}\n >\n {cancelLabel}\n </Button>\n <Button\n variant={config.confirmVariant}\n size=\"sm\"\n className={config.confirmClassName}\n onClick={() => handleResponse(true)}\n >\n {confirmLabel}\n </Button>\n </div>\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n </ConfirmDialogContext.Provider>\n )\n}\n\nexport interface ConfirmDialogProps extends ConfirmOptions {\n open: boolean\n onConfirm: () => void\n onCancel: () => void\n}\n\nexport function ConfirmDialog({\n open,\n onConfirm,\n onCancel,\n title,\n description,\n confirmLabel,\n cancelLabel,\n variant = 'default',\n}: ConfirmDialogProps) {\n const config = variantConfig[variant]\n\n return (\n <RadixDialog.Root open={open} onOpenChange={(o) => { if (!o) onCancel() }}>\n <RadixDialog.Portal>\n <RadixDialog.Overlay className=\"fixed inset-0 z-[1000] bg-black/40 backdrop-blur-sm animate-in fade-in-0\" />\n <RadixDialog.Content\n className={cn(\n 'fixed z-[1001] top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n 'w-full max-w-md bg-surface rounded-xl shadow-2xl border border-border p-6',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n aria-describedby={description ? 'confirm-desc-static' : undefined}\n >\n <div className=\"flex items-start gap-4\">\n <div className={cn('flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center', config.iconBg)}>\n {config.icon}\n </div>\n <div className=\"flex-1 min-w-0\">\n <RadixDialog.Title className=\"text-base font-semibold text-text\">\n {title ?? config.defaultTitle}\n </RadixDialog.Title>\n {description && (\n <p id=\"confirm-desc-static\" className=\"mt-1 text-sm text-text-muted\">\n {description}\n </p>\n )}\n </div>\n <button\n onClick={onCancel}\n className=\"flex-shrink-0 text-text-muted hover:text-text transition-colors focus:outline-none\"\n aria-label=\"Close\"\n >\n <X size={16} />\n </button>\n </div>\n <div className=\"flex items-center justify-end gap-3 mt-6\">\n <Button variant=\"outline\" size=\"sm\" onClick={onCancel}>\n {cancelLabel ?? 'Cancel'}\n </Button>\n <Button variant={config.confirmVariant} size=\"sm\" className={config.confirmClassName} onClick={onConfirm}>\n {confirmLabel ?? config.defaultConfirm}\n </Button>\n </div>\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type KbdSize = 'sm' | 'md' | 'lg'\n\nexport interface KbdProps {\n children: React.ReactNode\n size?: KbdSize\n className?: string\n}\n\nconst sizeClasses: Record<KbdSize, string> = {\n sm: 'text-[10px] px-1 py-0.5 min-w-[18px]',\n md: 'text-xs px-1.5 py-0.5 min-w-[22px]',\n lg: 'text-sm px-2 py-1 min-w-[28px]',\n}\n\nexport function Kbd({ children, size = 'md', className }: KbdProps) {\n return (\n <kbd\n className={cn(\n 'inline-flex items-center justify-center rounded border font-mono font-medium',\n 'bg-surface-hover border-border text-text-muted',\n 'shadow-[0_1px_0_1px_var(--color-border)]',\n sizeClasses[size],\n className\n )}\n >\n {children}\n </kbd>\n )\n}\n","import React, { useState, useEffect, useRef, useCallback, useId } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Search, X, ChevronRight, Loader2 } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport { Kbd } from '../../typography/Kbd/Kbd'\n\nexport interface CommandItem {\n id: string\n label: string\n description?: string\n icon?: React.ReactNode\n shortcut?: string[]\n group?: string\n disabled?: boolean\n onSelect: () => void\n}\n\nexport interface CommandGroup {\n id: string\n label: string\n items: CommandItem[]\n}\n\nexport interface CommandPaletteProps {\n open: boolean\n onClose: () => void\n items?: CommandItem[]\n groups?: CommandGroup[]\n placeholder?: string\n emptyMessage?: string\n loading?: boolean\n onSearch?: (query: string) => void\n hotkey?: string\n maxHeight?: number\n className?: string\n}\n\nfunction highlight(text: string, query: string) {\n if (!query.trim()) return <>{text}</>\n const idx = text.toLowerCase().indexOf(query.toLowerCase())\n if (idx === -1) return <>{text}</>\n return (\n <>\n {text.slice(0, idx)}\n <mark className=\"bg-primary/20 text-primary rounded-sm\">{text.slice(idx, idx + query.length)}</mark>\n {text.slice(idx + query.length)}\n </>\n )\n}\n\nexport function CommandPalette({\n open,\n onClose,\n items = [],\n groups = [],\n placeholder = 'Search commands…',\n emptyMessage = 'No results found.',\n loading = false,\n onSearch,\n maxHeight = 400,\n className,\n}: CommandPaletteProps) {\n const id = useId()\n const [query, setQuery] = useState('')\n const [activeIndex, setActiveIndex] = useState(0)\n const inputRef = useRef<HTMLInputElement>(null)\n const listRef = useRef<HTMLDivElement>(null)\n\n // Flatten all items for keyboard nav\n const allItems = React.useMemo(() => {\n const flatGroups = groups.flatMap((g) =>\n g.items.filter((item) =>\n !item.disabled &&\n (item.label.toLowerCase().includes(query.toLowerCase()) ||\n item.description?.toLowerCase().includes(query.toLowerCase()))\n )\n )\n const flatItems = items.filter(\n (item) =>\n !item.disabled &&\n (item.label.toLowerCase().includes(query.toLowerCase()) ||\n item.description?.toLowerCase().includes(query.toLowerCase()))\n )\n return [...flatItems, ...flatGroups]\n }, [items, groups, query])\n\n const filteredGroups = React.useMemo(() => {\n if (groups.length === 0) return []\n return groups\n .map((g) => ({\n ...g,\n items: g.items.filter(\n (item) =>\n item.label.toLowerCase().includes(query.toLowerCase()) ||\n item.description?.toLowerCase().includes(query.toLowerCase())\n ),\n }))\n .filter((g) => g.items.length > 0)\n }, [groups, query])\n\n const filteredItems = React.useMemo(() => {\n return items.filter(\n (item) =>\n item.label.toLowerCase().includes(query.toLowerCase()) ||\n item.description?.toLowerCase().includes(query.toLowerCase())\n )\n }, [items, query])\n\n const hasResults = filteredItems.length > 0 || filteredGroups.length > 0\n\n useEffect(() => {\n if (open) {\n setQuery('')\n setActiveIndex(0)\n setTimeout(() => inputRef.current?.focus(), 10)\n }\n }, [open])\n\n useEffect(() => {\n setActiveIndex(0)\n }, [query])\n\n useEffect(() => {\n onSearch?.(query)\n }, [query, onSearch])\n\n const handleSelect = useCallback((item: CommandItem) => {\n if (item.disabled) return\n item.onSelect()\n onClose()\n }, [onClose])\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') { onClose(); return }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, allItems.length - 1))\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, 0))\n } else if (e.key === 'Enter') {\n e.preventDefault()\n const item = allItems[activeIndex]\n if (item) handleSelect(item)\n }\n }\n\n // Scroll active item into view\n useEffect(() => {\n const el = listRef.current?.querySelector(`[data-active=\"true\"]`)\n el?.scrollIntoView({ block: 'nearest' })\n }, [activeIndex])\n\n if (!open) return null\n if (typeof document === 'undefined') return null\n\n let globalIndex = 0\n\n const renderItem = (item: CommandItem) => {\n const idx = globalIndex++\n const isActive = idx === activeIndex\n return (\n <div\n key={item.id}\n data-active={isActive}\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={item.disabled}\n onClick={() => !item.disabled && handleSelect(item)}\n onMouseEnter={() => setActiveIndex(idx)}\n className={cn(\n 'flex items-center gap-3 px-3 py-2.5 rounded-md cursor-pointer transition-colors',\n isActive ? 'bg-primary text-primary-foreground' : 'text-text hover:bg-surface-hover',\n item.disabled && 'opacity-40 cursor-not-allowed pointer-events-none'\n )}\n >\n {item.icon && (\n <span className={cn('flex-shrink-0', isActive ? 'text-primary-foreground' : 'text-text-muted')}>\n {item.icon}\n </span>\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm font-medium truncate\">\n {highlight(item.label, query)}\n </div>\n {item.description && (\n <div className={cn('text-xs truncate', isActive ? 'text-primary-foreground/70' : 'text-text-muted')}>\n {highlight(item.description, query)}\n </div>\n )}\n </div>\n {item.shortcut && (\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {item.shortcut.map((k, i) => (\n <Kbd key={i} size=\"sm\">{k}</Kbd>\n ))}\n </div>\n )}\n <ChevronRight size={14} className={cn('flex-shrink-0', isActive ? 'text-primary-foreground/70' : 'text-text-muted')} />\n </div>\n )\n }\n\n return createPortal(\n <div\n className=\"fixed inset-0 z-[9999] flex items-start justify-center pt-[15vh] px-4\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Command palette\"\n onClick={(e) => e.target === e.currentTarget && onClose()}\n >\n {/* Backdrop */}\n <div className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\" onClick={onClose} />\n\n {/* Panel */}\n <div\n className={cn(\n 'relative w-full max-w-lg bg-surface rounded-xl shadow-2xl border border-border overflow-hidden',\n className\n )}\n onKeyDown={handleKeyDown}\n >\n {/* Search input */}\n <div className=\"flex items-center gap-3 px-4 py-3 border-b border-border\">\n {loading ? (\n <Loader2 size={18} className=\"text-text-muted animate-spin flex-shrink-0\" />\n ) : (\n <Search size={18} className=\"text-text-muted flex-shrink-0\" />\n )}\n <input\n ref={inputRef}\n id={`${id}-input`}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={true}\n aria-controls={`${id}-list`}\n aria-autocomplete=\"list\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={placeholder}\n className=\"flex-1 bg-transparent text-text placeholder:text-text-muted outline-none text-sm\"\n />\n {query && (\n <button\n type=\"button\"\n onClick={() => setQuery('')}\n className=\"text-text-muted hover:text-text transition-colors\"\n aria-label=\"Clear search\"\n >\n <X size={16} />\n </button>\n )}\n <Kbd size=\"sm\">Esc</Kbd>\n </div>\n\n {/* Results */}\n <div\n ref={listRef}\n id={`${id}-list`}\n role=\"listbox\"\n className=\"overflow-y-auto p-2\"\n style={{ maxHeight }}\n >\n {loading && !hasResults ? (\n <div className=\"flex items-center justify-center py-8 text-text-muted text-sm gap-2\">\n <Loader2 size={16} className=\"animate-spin\" />\n Searching…\n </div>\n ) : !hasResults ? (\n <div className=\"py-8 text-center text-text-muted text-sm\">{emptyMessage}</div>\n ) : (\n <>\n {filteredItems.map(renderItem)}\n {filteredGroups.map((group) => (\n <div key={group.id}>\n <div className=\"px-3 py-1.5 text-xs font-semibold text-text-muted uppercase tracking-wider\">\n {group.label}\n </div>\n {group.items.map(renderItem)}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center gap-3 px-4 py-2 border-t border-border text-xs text-text-muted\">\n <span className=\"flex items-center gap-1\"><Kbd size=\"sm\">↑</Kbd><Kbd size=\"sm\">↓</Kbd> Navigate</span>\n <span className=\"flex items-center gap-1\"><Kbd size=\"sm\">↵</Kbd> Select</span>\n <span className=\"flex items-center gap-1\"><Kbd size=\"sm\">Esc</Kbd> Close</span>\n </div>\n </div>\n </div>,\n document.body\n )\n}\n\nexport function useCommandPalette() {\n const [open, setOpen] = useState(false)\n\n useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') {\n e.preventDefault()\n setOpen((v) => !v)\n }\n }\n window.addEventListener('keydown', handler)\n return () => window.removeEventListener('keydown', handler)\n }, [])\n\n return { open, setOpen, toggle: () => setOpen((v) => !v) }\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6\nexport type HeadingSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl'\nexport type HeadingWeight = 'normal' | 'medium' | 'semibold' | 'bold'\n\nexport interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n level?: HeadingLevel\n size?: HeadingSize\n weight?: HeadingWeight\n truncate?: boolean\n color?: 'default' | 'muted' | 'primary' | 'error' | 'success' | 'warning'\n}\n\nconst defaultSizeByLevel: Record<HeadingLevel, HeadingSize> = {\n 1: '4xl',\n 2: '3xl',\n 3: '2xl',\n 4: 'xl',\n 5: 'lg',\n 6: 'md',\n}\n\nconst sizeClasses: Record<HeadingSize, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n '2xl': 'text-2xl',\n '3xl': 'text-3xl',\n '4xl': 'text-4xl',\n}\n\nconst weightClasses: Record<HeadingWeight, string> = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nconst colorClasses = {\n default: 'text-text',\n muted: 'text-text-muted',\n primary: 'text-primary',\n error: 'text-error',\n success: 'text-success',\n warning: 'text-warning',\n}\n\nexport function Heading({\n level = 2,\n size,\n weight = 'bold',\n truncate = false,\n color = 'default',\n className,\n children,\n ...props\n}: HeadingProps) {\n const Tag = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n const resolvedSize = size ?? defaultSizeByLevel[level]\n\n return (\n <Tag\n className={cn(\n 'font-base leading-tight',\n sizeClasses[resolvedSize],\n weightClasses[weight],\n colorClasses[color],\n truncate && 'truncate',\n className\n )}\n {...props}\n >\n {children}\n </Tag>\n )\n}\n","import React from 'react'\nimport { cn } from '../../../utils/cn'\n\nexport type TextSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl'\nexport type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold'\nexport type TextColor = 'default' | 'muted' | 'disabled' | 'primary' | 'error' | 'success' | 'warning' | 'inherit'\nexport type TextAs = 'p' | 'span' | 'div' | 'strong' | 'em' | 'small'\n\nexport interface TextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n as?: TextAs\n size?: TextSize\n weight?: TextWeight\n color?: TextColor\n truncate?: boolean\n clamp?: 1 | 2 | 3 | 4 | 5\n italic?: boolean\n underline?: boolean\n}\n\nconst sizeClasses: Record<TextSize, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n base: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n}\n\nconst weightClasses: Record<TextWeight, string> = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nconst colorClasses: Record<TextColor, string> = {\n default: 'text-text',\n muted: 'text-text-muted',\n disabled: 'text-text-disabled',\n primary: 'text-primary',\n error: 'text-error',\n success: 'text-success',\n warning: 'text-warning',\n inherit: 'text-inherit',\n}\n\nconst clampClasses: Record<number, string> = {\n 1: 'line-clamp-1',\n 2: 'line-clamp-2',\n 3: 'line-clamp-3',\n 4: 'line-clamp-4',\n 5: 'line-clamp-5',\n}\n\nexport function Text({\n as: Tag = 'p',\n size = 'base',\n weight = 'normal',\n color = 'default',\n truncate = false,\n clamp,\n italic = false,\n underline = false,\n className,\n children,\n ...props\n}: TextProps) {\n return (\n <Tag\n className={cn(\n 'font-base leading-normal',\n sizeClasses[size],\n weightClasses[weight],\n colorClasses[color],\n truncate && 'truncate',\n clamp && clampClasses[clamp],\n italic && 'italic',\n underline && 'underline underline-offset-2',\n className\n )}\n {...(props as React.HTMLAttributes<HTMLParagraphElement>)}\n >\n {children}\n </Tag>\n )\n}\n","import React from 'react'\nimport * as RadixLabel from '@radix-ui/react-label'\nimport { cn } from '../../../utils/cn'\n\nexport interface LabelProps extends React.ComponentPropsWithoutRef<typeof RadixLabel.Root> {\n required?: boolean\n optional?: boolean\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n}\n\nexport function Label({ required, optional, size = 'md', className, children, ...props }: LabelProps) {\n return (\n <RadixLabel.Root\n className={cn(\n 'font-medium text-text leading-none cursor-default',\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n {required && <span className=\"text-error ml-1\" aria-hidden=\"true\">*</span>}\n {optional && <span className=\"text-text-muted ml-1 font-normal\">(optional)</span>}\n </RadixLabel.Root>\n )\n}\n","import React, { useState } from 'react'\nimport { Highlight, themes } from 'prism-react-renderer'\nimport { Copy, Check } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type CodeTheme = 'dark' | 'light'\n\nexport interface CodeProps extends React.HTMLAttributes<HTMLElement> {\n block?: boolean\n language?: string\n theme?: CodeTheme\n showLineNumbers?: boolean\n copyable?: boolean\n filename?: string\n}\n\nexport function Code({\n block = false,\n language = 'tsx',\n theme = 'dark',\n showLineNumbers = false,\n copyable = true,\n filename,\n className,\n children,\n ...props\n}: CodeProps) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n const text = typeof children === 'string' ? children : String(children ?? '')\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n })\n }\n\n if (block) {\n const code = typeof children === 'string' ? children : String(children ?? '')\n const prismTheme = theme === 'dark' ? themes.oneDark : themes.oneLight\n\n return (\n <div className={cn('w-full rounded-lg border border-border overflow-hidden', className)}>\n {/* Header bar */}\n {(filename || copyable) && (\n <div className=\"flex items-center justify-between px-4 py-2 bg-surface border-b border-border\">\n {filename ? (\n <span className=\"text-xs font-mono text-text-muted\">{filename}</span>\n ) : (\n <span className=\"text-xs font-mono text-text-muted uppercase tracking-wide\">{language}</span>\n )}\n {copyable && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"flex items-center gap-1.5 text-xs text-text-muted hover:text-text transition-colors\"\n aria-label=\"Copy code\"\n >\n {copied ? <Check size={13} className=\"text-success\" /> : <Copy size={13} />}\n {copied ? 'Copied!' : 'Copy'}\n </button>\n )}\n </div>\n )}\n\n {/* Highlighted code */}\n <Highlight theme={prismTheme} code={code.trimEnd()} language={language}>\n {({ className: hlClass, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n className={cn('overflow-x-auto p-4 text-sm leading-relaxed m-0', hlClass)}\n style={style}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {showLineNumbers && (\n <span className=\"select-none pr-4 text-right inline-block w-8 opacity-40 text-xs\">\n {i + 1}\n </span>\n )}\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n </div>\n )\n }\n\n return (\n <code\n className={cn(\n 'inline rounded px-1.5 py-0.5 bg-surface-hover border border-border',\n 'text-sm font-mono text-text',\n className\n )}\n {...(props as React.HTMLAttributes<HTMLElement>)}\n >\n {children}\n </code>\n )\n}\n","import React from 'react'\nimport { ExternalLink } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type LinkUnderline = 'always' | 'hover' | 'none'\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n external?: boolean\n underline?: LinkUnderline\n color?: 'primary' | 'text' | 'muted' | 'inherit'\n showExternalIcon?: boolean\n}\n\nconst underlineClasses: Record<LinkUnderline, string> = {\n always: 'underline underline-offset-2',\n hover: 'hover:underline underline-offset-2',\n none: 'no-underline',\n}\n\nconst colorClasses = {\n primary: 'text-primary hover:text-primary-hover',\n text: 'text-text hover:text-text-muted',\n muted: 'text-text-muted hover:text-text',\n inherit: 'text-inherit',\n}\n\nexport function Link({\n external = false,\n underline = 'hover',\n color = 'primary',\n showExternalIcon = true,\n className,\n children,\n target,\n rel,\n ...props\n}: LinkProps) {\n const isExternal = external || target === '_blank'\n\n return (\n <a\n target={isExternal ? '_blank' : target}\n rel={isExternal ? 'noopener noreferrer' : rel}\n className={cn(\n 'inline-flex items-center gap-1 transition-colors cursor-pointer',\n colorClasses[color],\n underlineClasses[underline],\n className\n )}\n {...props}\n >\n {children}\n {isExternal && showExternalIcon && (\n <ExternalLink size={12} className=\"flex-shrink-0 opacity-70\" aria-hidden=\"true\" />\n )}\n </a>\n )\n}\n","import React, { useState } from 'react'\nimport { Copy, Check } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\n\nexport type CopyButtonSize = 'sm' | 'md' | 'lg'\nexport type CopyButtonVariant = 'ghost' | 'outline' | 'solid'\n\nexport interface CopyButtonProps {\n value: string\n size?: CopyButtonSize\n variant?: CopyButtonVariant\n label?: string\n copiedLabel?: string\n timeout?: number\n onCopy?: (value: string) => void\n className?: string\n disabled?: boolean\n}\n\nconst sizeClasses: Record<CopyButtonSize, string> = {\n sm: 'h-7 px-2 text-xs gap-1',\n md: 'h-8 px-2.5 text-sm gap-1.5',\n lg: 'h-10 px-3 text-sm gap-2',\n}\n\nconst iconSize: Record<CopyButtonSize, number> = { sm: 12, md: 14, lg: 16 }\n\nconst variantClasses: Record<CopyButtonVariant, string> = {\n ghost: 'bg-transparent hover:bg-surface-hover text-text-muted hover:text-text',\n outline: 'border border-border bg-transparent hover:bg-surface-hover text-text-muted hover:text-text',\n solid: 'bg-surface-hover hover:bg-surface-active text-text border border-border',\n}\n\nexport function CopyButton({\n value,\n size = 'md',\n variant = 'ghost',\n label,\n copiedLabel = 'Copied!',\n timeout = 2000,\n onCopy,\n className,\n disabled = false,\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async () => {\n if (disabled || copied) return\n try {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n onCopy?.(value)\n setTimeout(() => setCopied(false), timeout)\n } catch {\n // fallback for older browsers\n const el = document.createElement('textarea')\n el.value = value\n document.body.appendChild(el)\n el.select()\n document.execCommand('copy')\n document.body.removeChild(el)\n setCopied(true)\n onCopy?.(value)\n setTimeout(() => setCopied(false), timeout)\n }\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleCopy}\n disabled={disabled}\n aria-label={copied ? copiedLabel : (label ?? 'Copy to clipboard')}\n className={cn(\n 'inline-flex items-center justify-center rounded-md font-medium transition-all',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-border-focus/40',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n sizeClasses[size],\n variantClasses[variant],\n copied && 'text-success',\n className\n )}\n >\n {copied ? (\n <>\n <Check size={iconSize[size]} />\n {label && <span>{copiedLabel}</span>}\n </>\n ) : (\n <>\n <Copy size={iconSize[size]} />\n {label && <span>{label}</span>}\n </>\n )}\n </button>\n )\n}\n"],"names":["_jsx","_jsxs","_Fragment","sizeClasses","gapClasses","sizeMap","Image","File","shadowClasses","paddingClasses","roundedClasses","positionClasses","variantClasses","icons","colorClasses","weightClasses"],"mappings":"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"}
|