@thangnqdev/ui 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.
Files changed (253) hide show
  1. package/README.md +196 -0
  2. package/dist/Label-DWOlgSNW.d.cts +14 -0
  3. package/dist/Label-DWOlgSNW.d.ts +14 -0
  4. package/dist/bento/index.cjs +140 -0
  5. package/dist/bento/index.cjs.map +1 -0
  6. package/dist/bento/index.d.cts +4 -0
  7. package/dist/bento/index.d.ts +4 -0
  8. package/dist/bento/index.js +4 -0
  9. package/dist/bento/index.js.map +1 -0
  10. package/dist/bento/styles.css +46 -0
  11. package/dist/buttons/index.cjs +365 -0
  12. package/dist/buttons/index.cjs.map +1 -0
  13. package/dist/buttons/index.d.cts +4 -0
  14. package/dist/buttons/index.d.ts +4 -0
  15. package/dist/buttons/index.js +5 -0
  16. package/dist/buttons/index.js.map +1 -0
  17. package/dist/buttons/styles.css +6 -0
  18. package/dist/chunk-2OXZK6IP.js +514 -0
  19. package/dist/chunk-2OXZK6IP.js.map +1 -0
  20. package/dist/chunk-4S6L5V7X.js +15 -0
  21. package/dist/chunk-4S6L5V7X.js.map +1 -0
  22. package/dist/chunk-5FZ6ZFII.js +728 -0
  23. package/dist/chunk-5FZ6ZFII.js.map +1 -0
  24. package/dist/chunk-66VWUJEI.js +86 -0
  25. package/dist/chunk-66VWUJEI.js.map +1 -0
  26. package/dist/chunk-A7P3O5Z5.js +163 -0
  27. package/dist/chunk-A7P3O5Z5.js.map +1 -0
  28. package/dist/chunk-ATYGDTMK.js +257 -0
  29. package/dist/chunk-ATYGDTMK.js.map +1 -0
  30. package/dist/chunk-C4SUXMI3.js +138 -0
  31. package/dist/chunk-C4SUXMI3.js.map +1 -0
  32. package/dist/chunk-EU2LPUYP.js +25 -0
  33. package/dist/chunk-EU2LPUYP.js.map +1 -0
  34. package/dist/chunk-F5Q7BTMH.js +1991 -0
  35. package/dist/chunk-F5Q7BTMH.js.map +1 -0
  36. package/dist/chunk-GXI2H5XA.js +46 -0
  37. package/dist/chunk-GXI2H5XA.js.map +1 -0
  38. package/dist/chunk-H3LCNPMC.js +101 -0
  39. package/dist/chunk-H3LCNPMC.js.map +1 -0
  40. package/dist/chunk-IABPUCAQ.js +19 -0
  41. package/dist/chunk-IABPUCAQ.js.map +1 -0
  42. package/dist/chunk-KJRBRTQE.js +101 -0
  43. package/dist/chunk-KJRBRTQE.js.map +1 -0
  44. package/dist/chunk-LBUBXUYQ.js +40 -0
  45. package/dist/chunk-LBUBXUYQ.js.map +1 -0
  46. package/dist/chunk-LWFRUJRU.js +537 -0
  47. package/dist/chunk-LWFRUJRU.js.map +1 -0
  48. package/dist/chunk-NFVONJUK.js +882 -0
  49. package/dist/chunk-NFVONJUK.js.map +1 -0
  50. package/dist/chunk-PF4ZHGVW.js +284 -0
  51. package/dist/chunk-PF4ZHGVW.js.map +1 -0
  52. package/dist/chunk-WAFHC4DQ.js +366 -0
  53. package/dist/chunk-WAFHC4DQ.js.map +1 -0
  54. package/dist/chunk-X76KBH4Y.js +71 -0
  55. package/dist/chunk-X76KBH4Y.js.map +1 -0
  56. package/dist/core/index.cjs +103 -0
  57. package/dist/core/index.cjs.map +1 -0
  58. package/dist/core/index.d.cts +3 -0
  59. package/dist/core/index.d.ts +3 -0
  60. package/dist/core/index.js +4 -0
  61. package/dist/core/index.js.map +1 -0
  62. package/dist/core/styles.css +128 -0
  63. package/dist/data-display/index.cjs +1023 -0
  64. package/dist/data-display/index.cjs.map +1 -0
  65. package/dist/data-display/index.d.cts +4 -0
  66. package/dist/data-display/index.d.ts +4 -0
  67. package/dist/data-display/index.js +6 -0
  68. package/dist/data-display/index.js.map +1 -0
  69. package/dist/data-display/styles.css +4 -0
  70. package/dist/feedback/index.cjs +368 -0
  71. package/dist/feedback/index.cjs.map +1 -0
  72. package/dist/feedback/index.d.cts +4 -0
  73. package/dist/feedback/index.d.ts +4 -0
  74. package/dist/feedback/index.js +4 -0
  75. package/dist/feedback/index.js.map +1 -0
  76. package/dist/feedback/styles.css +4 -0
  77. package/dist/forms/index.cjs +2287 -0
  78. package/dist/forms/index.cjs.map +1 -0
  79. package/dist/forms/index.d.cts +5 -0
  80. package/dist/forms/index.d.ts +5 -0
  81. package/dist/forms/index.js +10 -0
  82. package/dist/forms/index.js.map +1 -0
  83. package/dist/forms/styles.css +6 -0
  84. package/dist/glass/index.cjs +165 -0
  85. package/dist/glass/index.cjs.map +1 -0
  86. package/dist/glass/index.d.cts +4 -0
  87. package/dist/glass/index.d.ts +4 -0
  88. package/dist/glass/index.js +4 -0
  89. package/dist/glass/index.js.map +1 -0
  90. package/dist/glass/styles.css +81 -0
  91. package/dist/index-BTvkbCIj.d.cts +146 -0
  92. package/dist/index-BTvkbCIj.d.ts +146 -0
  93. package/dist/index-BkRqGNG1.d.cts +201 -0
  94. package/dist/index-BkRqGNG1.d.ts +201 -0
  95. package/dist/index-BlPcGeW-.d.cts +45 -0
  96. package/dist/index-BlPcGeW-.d.ts +45 -0
  97. package/dist/index-BzOCqvC6.d.cts +32 -0
  98. package/dist/index-BzOCqvC6.d.ts +32 -0
  99. package/dist/index-CCeWYAvn.d.cts +83 -0
  100. package/dist/index-COQ7uwt9.d.cts +44 -0
  101. package/dist/index-COQ7uwt9.d.ts +44 -0
  102. package/dist/index-CenuF_P2.d.cts +221 -0
  103. package/dist/index-CenuF_P2.d.ts +221 -0
  104. package/dist/index-Cle6QzQl.d.ts +371 -0
  105. package/dist/index-D6fE7w-b.d.cts +90 -0
  106. package/dist/index-D6fE7w-b.d.ts +90 -0
  107. package/dist/index-DR8cfJUG.d.ts +83 -0
  108. package/dist/index-DzcWh1Hs.d.cts +131 -0
  109. package/dist/index-DzcWh1Hs.d.ts +131 -0
  110. package/dist/index-TyK-Ldpy.d.cts +371 -0
  111. package/dist/index-ugj5s6a3.d.cts +95 -0
  112. package/dist/index-ugj5s6a3.d.ts +95 -0
  113. package/dist/index.cjs +6400 -0
  114. package/dist/index.cjs.map +1 -0
  115. package/dist/index.d.cts +16 -0
  116. package/dist/index.d.ts +16 -0
  117. package/dist/index.js +21 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/layout/index.cjs +516 -0
  120. package/dist/layout/index.cjs.map +1 -0
  121. package/dist/layout/index.d.cts +4 -0
  122. package/dist/layout/index.d.ts +4 -0
  123. package/dist/layout/index.js +4 -0
  124. package/dist/layout/index.js.map +1 -0
  125. package/dist/layout/styles.css +8 -0
  126. package/dist/navigation/index.cjs +673 -0
  127. package/dist/navigation/index.cjs.map +1 -0
  128. package/dist/navigation/index.d.cts +2 -0
  129. package/dist/navigation/index.d.ts +2 -0
  130. package/dist/navigation/index.js +8 -0
  131. package/dist/navigation/index.js.map +1 -0
  132. package/dist/navigation/styles.css +4 -0
  133. package/dist/overlays/index.cjs +954 -0
  134. package/dist/overlays/index.cjs.map +1 -0
  135. package/dist/overlays/index.d.cts +4 -0
  136. package/dist/overlays/index.d.ts +4 -0
  137. package/dist/overlays/index.js +9 -0
  138. package/dist/overlays/index.js.map +1 -0
  139. package/dist/overlays/styles.css +8 -0
  140. package/dist/styles.css +333 -0
  141. package/dist/typography/index.cjs +311 -0
  142. package/dist/typography/index.cjs.map +1 -0
  143. package/dist/typography/index.d.cts +5 -0
  144. package/dist/typography/index.d.ts +5 -0
  145. package/dist/typography/index.js +6 -0
  146. package/dist/typography/index.js.map +1 -0
  147. package/dist/typography/styles.css +5 -0
  148. package/llms.txt +113 -0
  149. package/package.json +116 -0
  150. package/src/bento/BentoCard.tsx +140 -0
  151. package/src/bento/BentoGrid.tsx +50 -0
  152. package/src/bento/index.ts +2 -0
  153. package/src/bento/tokens.css +46 -0
  154. package/src/buttons/Button.tsx +104 -0
  155. package/src/buttons/ButtonGroup.tsx +43 -0
  156. package/src/buttons/IconButton.tsx +79 -0
  157. package/src/buttons/SplitButton.tsx +86 -0
  158. package/src/buttons/ToggleButton.tsx +157 -0
  159. package/src/buttons/index.ts +5 -0
  160. package/src/buttons/tokens.css +6 -0
  161. package/src/core/ThemeProvider.tsx +123 -0
  162. package/src/core/index.ts +2 -0
  163. package/src/core/tokens.css +128 -0
  164. package/src/data-display/Accordion.tsx +147 -0
  165. package/src/data-display/Avatar.tsx +134 -0
  166. package/src/data-display/Card.tsx +112 -0
  167. package/src/data-display/Carousel.tsx +130 -0
  168. package/src/data-display/Chip.tsx +74 -0
  169. package/src/data-display/DataTablePro.tsx +356 -0
  170. package/src/data-display/StatCard.tsx +60 -0
  171. package/src/data-display/Table.tsx +74 -0
  172. package/src/data-display/Timeline.tsx +62 -0
  173. package/src/data-display/TreeView.tsx +140 -0
  174. package/src/data-display/index.ts +10 -0
  175. package/src/data-display/tokens.css +4 -0
  176. package/src/feedback/Alert.tsx +80 -0
  177. package/src/feedback/EmptyState.tsx +45 -0
  178. package/src/feedback/ProgressBar.tsx +174 -0
  179. package/src/feedback/Skeleton.tsx +66 -0
  180. package/src/feedback/Spinner.tsx +65 -0
  181. package/src/feedback/index.ts +5 -0
  182. package/src/feedback/tokens.css +4 -0
  183. package/src/forms/Checkbox.tsx +69 -0
  184. package/src/forms/CheckboxGroup.tsx +29 -0
  185. package/src/forms/Combobox.tsx +368 -0
  186. package/src/forms/DatePicker.tsx +480 -0
  187. package/src/forms/FileUpload.tsx +222 -0
  188. package/src/forms/FormField.tsx +115 -0
  189. package/src/forms/Input.tsx +151 -0
  190. package/src/forms/MaskedInput.tsx +97 -0
  191. package/src/forms/NumberInput.tsx +248 -0
  192. package/src/forms/PasswordInput.tsx +35 -0
  193. package/src/forms/PinInput.tsx +125 -0
  194. package/src/forms/Radio.tsx +142 -0
  195. package/src/forms/RangeSlider.tsx +111 -0
  196. package/src/forms/SearchInput.tsx +34 -0
  197. package/src/forms/Select.tsx +103 -0
  198. package/src/forms/Slider.tsx +85 -0
  199. package/src/forms/Switch.tsx +95 -0
  200. package/src/forms/Textarea.tsx +114 -0
  201. package/src/forms/index.ts +18 -0
  202. package/src/forms/tokens.css +6 -0
  203. package/src/glass/GlassBadge.tsx +61 -0
  204. package/src/glass/GlassButton.tsx +59 -0
  205. package/src/glass/GlassCard.tsx +71 -0
  206. package/src/glass/index.ts +3 -0
  207. package/src/glass/tokens.css +81 -0
  208. package/src/index.ts +26 -0
  209. package/src/layout/AspectRatio.tsx +39 -0
  210. package/src/layout/Container.tsx +53 -0
  211. package/src/layout/Divider.tsx +61 -0
  212. package/src/layout/Flex.tsx +79 -0
  213. package/src/layout/Grid.tsx +124 -0
  214. package/src/layout/PageLayout.tsx +59 -0
  215. package/src/layout/ScrollArea.tsx +43 -0
  216. package/src/layout/Section.tsx +47 -0
  217. package/src/layout/Spacer.tsx +30 -0
  218. package/src/layout/Stack.tsx +88 -0
  219. package/src/layout/index.ts +10 -0
  220. package/src/layout/tokens.css +8 -0
  221. package/src/navigation/Breadcrumb.tsx +73 -0
  222. package/src/navigation/CommandPalette.tsx +142 -0
  223. package/src/navigation/DropdownMenu.tsx +160 -0
  224. package/src/navigation/Pagination.tsx +114 -0
  225. package/src/navigation/Stepper.tsx +93 -0
  226. package/src/navigation/Tabs.tsx +133 -0
  227. package/src/navigation/index.ts +6 -0
  228. package/src/navigation/tokens.css +4 -0
  229. package/src/overlays/AlertDialog.tsx +54 -0
  230. package/src/overlays/BottomSheet.tsx +123 -0
  231. package/src/overlays/ContextMenu.tsx +119 -0
  232. package/src/overlays/Drawer.tsx +145 -0
  233. package/src/overlays/FocusTrap.tsx +49 -0
  234. package/src/overlays/HoverCard.tsx +72 -0
  235. package/src/overlays/Modal.tsx +219 -0
  236. package/src/overlays/Popover.tsx +126 -0
  237. package/src/overlays/Portal.tsx +23 -0
  238. package/src/overlays/Toast.tsx +137 -0
  239. package/src/overlays/Tooltip.tsx +100 -0
  240. package/src/overlays/index.ts +11 -0
  241. package/src/overlays/tokens.css +8 -0
  242. package/src/styles/tokens.css +2 -0
  243. package/src/typography/Blockquote.tsx +32 -0
  244. package/src/typography/Code.tsx +89 -0
  245. package/src/typography/Heading.tsx +56 -0
  246. package/src/typography/Kbd.tsx +25 -0
  247. package/src/typography/Label.tsx +47 -0
  248. package/src/typography/Link.tsx +56 -0
  249. package/src/typography/Text.tsx +62 -0
  250. package/src/typography/index.ts +7 -0
  251. package/src/typography/tokens.css +5 -0
  252. package/src/utils/cn.ts +6 -0
  253. package/ui-contract.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/index.ts","../src/core/ThemeProvider.tsx","../src/utils/cn.ts","../src/layout/index.ts","../src/layout/Container.tsx","../src/layout/Section.tsx","../src/layout/Stack.tsx","../src/layout/Grid.tsx","../src/layout/Flex.tsx","../src/layout/Divider.tsx","../src/layout/Spacer.tsx","../src/layout/AspectRatio.tsx","../src/layout/PageLayout.tsx","../src/layout/ScrollArea.tsx","../src/typography/index.ts","../src/typography/Heading.tsx","../src/typography/Text.tsx","../src/typography/Label.tsx","../src/typography/Link.tsx","../src/typography/Code.tsx","../src/typography/Blockquote.tsx","../src/typography/Kbd.tsx","../src/buttons/index.ts","../src/buttons/Button.tsx","../src/buttons/IconButton.tsx","../src/buttons/ButtonGroup.tsx","../src/buttons/ToggleButton.tsx","../src/buttons/SplitButton.tsx","../src/forms/index.ts","../src/forms/FormField.tsx","../src/forms/Input.tsx","../src/forms/SearchInput.tsx","../src/forms/PasswordInput.tsx","../src/forms/Textarea.tsx","../src/forms/Select.tsx","../src/forms/Checkbox.tsx","../src/forms/CheckboxGroup.tsx","../src/forms/Radio.tsx","../src/forms/Switch.tsx","../src/forms/Slider.tsx","../src/forms/RangeSlider.tsx","../src/forms/PinInput.tsx","../src/overlays/Portal.tsx","../src/overlays/Popover.tsx","../src/forms/DatePicker.tsx","../src/data-display/Chip.tsx","../src/forms/Combobox.tsx","../src/forms/FileUpload.tsx","../src/forms/NumberInput.tsx","../src/forms/MaskedInput.tsx","../src/overlays/index.ts","../src/overlays/FocusTrap.tsx","../src/overlays/Modal.tsx","../src/overlays/AlertDialog.tsx","../src/overlays/Drawer.tsx","../src/overlays/Tooltip.tsx","../src/overlays/Toast.tsx","../src/overlays/BottomSheet.tsx","../src/overlays/ContextMenu.tsx","../src/overlays/HoverCard.tsx","../src/navigation/index.ts","../src/navigation/Tabs.tsx","../src/navigation/Breadcrumb.tsx","../src/navigation/Pagination.tsx","../src/navigation/Stepper.tsx","../src/navigation/DropdownMenu.tsx","../src/navigation/CommandPalette.tsx","../src/data-display/index.ts","../src/data-display/Card.tsx","../src/data-display/Table.tsx","../src/data-display/Avatar.tsx","../src/data-display/Accordion.tsx","../src/data-display/StatCard.tsx","../src/data-display/Timeline.tsx","../src/data-display/DataTablePro.tsx","../src/data-display/TreeView.tsx","../src/data-display/Carousel.tsx","../src/feedback/index.ts","../src/feedback/Spinner.tsx","../src/feedback/Skeleton.tsx","../src/feedback/ProgressBar.tsx","../src/feedback/Alert.tsx","../src/feedback/EmptyState.tsx","../src/glass/index.ts","../src/glass/GlassCard.tsx","../src/glass/GlassButton.tsx","../src/glass/GlassBadge.tsx","../src/bento/index.ts","../src/bento/BentoGrid.tsx","../src/bento/BentoCard.tsx"],"names":["createContext","useState","useEffect","useMemo","jsx","useContext","twMerge","clsx","cva","forwardRef","jsxs","ExternalLink","Fragment","Check","Copy","Loader2","React","useRef","ChevronDown","useId","X","Search","EyeOff","Eye","Minus","createPortal","CalendarIcon","ChevronLeft","ChevronRight","Clock","ChevronsUpDown","UploadCloud","FileText","File","CheckCircle2","AlertCircle","Plus","Info","AlertTriangle","useCallback","MoreHorizontal","ArrowUpRight","ArrowDownRight","Download","ChevronUp","FolderOpen","Folder","FileCode","ImageIcon","Inbox"],"mappings":"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","file":"index.cjs","sourcesContent":["export * from './ThemeProvider';\r\nexport * from '../utils/cn';\r\n","import React, { createContext, useContext, useEffect, useState, useMemo } from 'react';\r\n\r\nexport type Theme = 'dark' | 'light' | 'system';\r\n\r\nexport interface ThemeProviderProps {\r\n children: React.ReactNode;\r\n defaultTheme?: Theme;\r\n storageKey?: string;\r\n attribute?: string;\r\n enableSystem?: boolean;\r\n}\r\n\r\ninterface ThemeContextType {\r\n theme: Theme;\r\n resolvedTheme: 'dark' | 'light';\r\n setTheme: (theme: Theme) => void;\r\n toggleTheme: () => void;\r\n}\r\n\r\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = 'dark',\r\n storageKey = 'ui-theme',\r\n attribute = 'data-theme',\r\n enableSystem = true,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<Theme>(() => {\r\n if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined') {\r\n try {\r\n const stored = window.localStorage.getItem(storageKey) as Theme | null;\r\n if (stored) return stored;\r\n } catch {\r\n // Ignore storage access errors in test/restricted environments\r\n }\r\n }\r\n return defaultTheme;\r\n });\r\n\r\n const [resolvedTheme, setResolvedTheme] = useState<'dark' | 'light'>('dark');\r\n\r\n useEffect(() => {\r\n const root = document.documentElement;\r\n\r\n const computeResolved = (t: Theme): 'dark' | 'light' => {\r\n if (t === 'system' && enableSystem && typeof window !== 'undefined' && window.matchMedia) {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n }\r\n return t === 'dark' ? 'dark' : 'light';\r\n };\r\n\r\n const currentResolved = computeResolved(theme);\r\n setResolvedTheme(currentResolved);\r\n\r\n // Apply attributes and classes\r\n root.setAttribute(attribute, currentResolved);\r\n if (currentResolved === 'dark') {\r\n root.classList.add('dark');\r\n root.classList.remove('light');\r\n } else {\r\n root.classList.add('light');\r\n root.classList.remove('dark');\r\n }\r\n\r\n if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined') {\r\n try {\r\n window.localStorage.setItem(storageKey, theme);\r\n } catch {\r\n // Ignore storage access errors\r\n }\r\n }\r\n }, [theme, attribute, enableSystem, storageKey]);\r\n\r\n // System theme listener\r\n useEffect(() => {\r\n if (theme !== 'system' || !enableSystem) return;\r\n\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n const handleChange = () => {\r\n const newResolved = mediaQuery.matches ? 'dark' : 'light';\r\n setResolvedTheme(newResolved);\r\n document.documentElement.setAttribute(attribute, newResolved);\r\n if (newResolved === 'dark') {\r\n document.documentElement.classList.add('dark');\r\n document.documentElement.classList.remove('light');\r\n } else {\r\n document.documentElement.classList.add('light');\r\n document.documentElement.classList.remove('dark');\r\n }\r\n };\r\n\r\n mediaQuery.addEventListener('change', handleChange);\r\n return () => mediaQuery.removeEventListener('change', handleChange);\r\n }, [theme, enableSystem, attribute]);\r\n\r\n const toggleTheme = () => {\r\n setThemeState((prev) => {\r\n if (prev === 'dark') return 'light';\r\n return 'dark';\r\n });\r\n };\r\n\r\n const value = useMemo(\r\n () => ({\r\n theme,\r\n resolvedTheme,\r\n setTheme: setThemeState,\r\n toggleTheme,\r\n }),\r\n [theme, resolvedTheme]\r\n );\r\n\r\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\r\n}\r\n\r\nexport function useTheme(): ThemeContextType {\r\n const context = useContext(ThemeContext);\r\n if (!context) {\r\n throw new Error('useTheme must be used within a ThemeProvider');\r\n }\r\n return context;\r\n}\r\n","import { clsx, type ClassValue } from 'clsx';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","export * from './Container';\nexport * from './Section';\nexport * from './Stack';\nexport * from './Grid';\nexport * from './Flex';\nexport * from './Divider';\nexport * from './Spacer';\nexport * from './AspectRatio';\nexport * from './PageLayout';\nexport * from './ScrollArea';\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const containerVariants = cva('w-full mx-auto', {\r\n variants: {\r\n size: {\r\n sm: 'max-w-screen-sm',\r\n md: 'max-w-screen-md',\r\n lg: 'max-w-screen-lg',\r\n xl: 'max-w-screen-xl',\r\n '2xl': 'max-w-screen-2xl',\r\n fluid: 'max-w-full',\r\n },\r\n padding: {\r\n none: 'px-0',\r\n sm: 'px-4',\r\n md: 'px-6',\r\n lg: 'px-8 sm:px-12',\r\n },\r\n centered: {\r\n true: 'flex flex-col items-center justify-center',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'xl',\r\n padding: 'md',\r\n centered: false,\r\n },\r\n});\r\n\r\nexport interface ContainerProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof containerVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\r\n ({ className, size, padding, centered, as: Component = 'div', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(containerVariants({ size, padding, centered }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nContainer.displayName = 'Container';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const sectionVariants = cva('w-full relative', {\r\n variants: {\r\n spacing: {\r\n none: 'py-0',\r\n sm: 'py-6 md:py-8',\r\n md: 'py-12 md:py-16',\r\n lg: 'py-16 md:py-24',\r\n xl: 'py-24 md:py-32',\r\n },\r\n variant: {\r\n default: 'bg-transparent text-[var(--ui-text-primary)]',\r\n subtle: 'bg-[var(--ui-bg-secondary)] text-[var(--ui-text-primary)]',\r\n surface: 'bg-[var(--ui-bg-surface)] text-[var(--ui-text-primary)]',\r\n muted: 'bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]',\r\n },\r\n },\r\n defaultVariants: {\r\n spacing: 'md',\r\n variant: 'default',\r\n },\r\n});\r\n\r\nexport interface SectionProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n VariantProps<typeof sectionVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const Section = forwardRef<HTMLElement, SectionProps>(\r\n ({ className, spacing, variant, as: Component = 'section', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(sectionVariants({ spacing, variant }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nSection.displayName = 'Section';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const stackVariants = cva('flex', {\r\n variants: {\r\n direction: {\r\n row: 'flex-row',\r\n 'row-reverse': 'flex-row-reverse',\r\n column: 'flex-col',\r\n 'column-reverse': 'flex-col-reverse',\r\n },\r\n gap: {\r\n 0: 'gap-0',\r\n 1: 'gap-1',\r\n 2: 'gap-2',\r\n 3: 'gap-3',\r\n 4: 'gap-4',\r\n 5: 'gap-5',\r\n 6: 'gap-6',\r\n 8: 'gap-8',\r\n 10: 'gap-10',\r\n 12: 'gap-12',\r\n },\r\n align: {\r\n start: 'items-start',\r\n center: 'items-center',\r\n end: 'items-end',\r\n stretch: 'items-stretch',\r\n baseline: 'items-baseline',\r\n },\r\n justify: {\r\n start: 'justify-start',\r\n center: 'justify-center',\r\n end: 'justify-end',\r\n between: 'justify-between',\r\n around: 'justify-around',\r\n evenly: 'justify-evenly',\r\n },\r\n wrap: {\r\n nowrap: 'flex-nowrap',\r\n wrap: 'flex-wrap',\r\n 'wrap-reverse': 'flex-wrap-reverse',\r\n },\r\n },\r\n defaultVariants: {\r\n direction: 'column',\r\n gap: 4,\r\n align: 'stretch',\r\n justify: 'start',\r\n wrap: 'nowrap',\r\n },\r\n});\r\n\r\nexport interface StackProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof stackVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\r\n ({ className, direction, gap, align, justify, wrap, as: Component = 'div', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(stackVariants({ direction, gap, align, justify, wrap }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\nStack.displayName = 'Stack';\r\n\r\nexport const HStack = forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\r\n ({ align = 'center', ...props }, ref) => {\r\n return <Stack ref={ref} direction=\"row\" align={align} {...props} />;\r\n }\r\n);\r\nHStack.displayName = 'HStack';\r\n\r\nexport const VStack = forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\r\n ({ align = 'stretch', ...props }, ref) => {\r\n return <Stack ref={ref} direction=\"column\" align={align} {...props} />;\r\n }\r\n);\r\nVStack.displayName = 'VStack';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const gridVariants = cva('grid', {\r\n variants: {\r\n cols: {\r\n 1: 'grid-cols-1',\r\n 2: 'grid-cols-1 sm:grid-cols-2',\r\n 3: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3',\r\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\r\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\r\n 6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',\r\n 12: 'grid-cols-12',\r\n },\r\n gap: {\r\n 0: 'gap-0',\r\n 1: 'gap-1',\r\n 2: 'gap-2',\r\n 3: 'gap-3',\r\n 4: 'gap-4',\r\n 5: 'gap-5',\r\n 6: 'gap-6',\r\n 8: 'gap-8',\r\n 10: 'gap-10',\r\n 12: 'gap-12',\r\n },\r\n flow: {\r\n row: 'grid-flow-row',\r\n col: 'grid-flow-col',\r\n dense: 'grid-flow-dense',\r\n 'row-dense': 'grid-flow-row-dense',\r\n 'col-dense': 'grid-flow-col-dense',\r\n },\r\n },\r\n defaultVariants: {\r\n cols: 1,\r\n gap: 4,\r\n flow: 'row',\r\n },\r\n});\r\n\r\nexport interface GridProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof gridVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols, gap, flow, as: Component = 'div', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(gridVariants({ cols, gap, flow }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\nGrid.displayName = 'Grid';\r\n\r\nexport const gridItemVariants = cva('', {\r\n variants: {\r\n colSpan: {\r\n 1: 'col-span-1',\r\n 2: 'col-span-2',\r\n 3: 'col-span-3',\r\n 4: 'col-span-4',\r\n 5: 'col-span-5',\r\n 6: 'col-span-6',\r\n 7: 'col-span-7',\r\n 8: 'col-span-8',\r\n 9: 'col-span-9',\r\n 10: 'col-span-10',\r\n 11: 'col-span-11',\r\n 12: 'col-span-12',\r\n full: 'col-span-full',\r\n },\r\n rowSpan: {\r\n 1: 'row-span-1',\r\n 2: 'row-span-2',\r\n 3: 'row-span-3',\r\n 4: 'row-span-4',\r\n 5: 'row-span-5',\r\n 6: 'row-span-6',\r\n full: 'row-span-full',\r\n },\r\n colStart: {\r\n 1: 'col-start-1',\r\n 2: 'col-start-2',\r\n 3: 'col-start-3',\r\n 4: 'col-start-4',\r\n 5: 'col-start-5',\r\n 6: 'col-start-6',\r\n auto: 'col-start-auto',\r\n },\r\n },\r\n defaultVariants: {\r\n colSpan: 1,\r\n },\r\n});\r\n\r\nexport interface GridItemProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof gridItemVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\r\n ({ className, colSpan, rowSpan, colStart, as: Component = 'div', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(gridItemVariants({ colSpan, rowSpan, colStart }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\nGridItem.displayName = 'GridItem';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const flexVariants = cva('flex', {\r\n variants: {\r\n direction: {\r\n row: 'flex-row',\r\n 'row-reverse': 'flex-row-reverse',\r\n column: 'flex-col',\r\n 'column-reverse': 'flex-col-reverse',\r\n },\r\n align: {\r\n start: 'items-start',\r\n center: 'items-center',\r\n end: 'items-end',\r\n stretch: 'items-stretch',\r\n baseline: 'items-baseline',\r\n },\r\n justify: {\r\n start: 'justify-start',\r\n center: 'justify-center',\r\n end: 'justify-end',\r\n between: 'justify-between',\r\n around: 'justify-around',\r\n evenly: 'justify-evenly',\r\n },\r\n wrap: {\r\n nowrap: 'flex-nowrap',\r\n wrap: 'flex-wrap',\r\n 'wrap-reverse': 'flex-wrap-reverse',\r\n },\r\n gap: {\r\n 0: 'gap-0',\r\n 1: 'gap-1',\r\n 2: 'gap-2',\r\n 3: 'gap-3',\r\n 4: 'gap-4',\r\n 5: 'gap-5',\r\n 6: 'gap-6',\r\n 8: 'gap-8',\r\n 10: 'gap-10',\r\n 12: 'gap-12',\r\n },\r\n inline: {\r\n true: 'inline-flex',\r\n false: 'flex',\r\n },\r\n },\r\n defaultVariants: {\r\n direction: 'row',\r\n align: 'stretch',\r\n justify: 'start',\r\n wrap: 'nowrap',\r\n inline: false,\r\n },\r\n});\r\n\r\nexport interface FlexProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof flexVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>(\r\n ({ className, direction, align, justify, wrap, gap, inline, as: Component = 'div', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(flexVariants({ direction, align, justify, wrap, gap, inline }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nFlex.displayName = 'Flex';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const dividerVariants = cva('border-0 flex-shrink-0', {\r\n variants: {\r\n orientation: {\r\n horizontal: 'w-full h-px border-t border-[var(--ui-border-subtle)] my-4',\r\n vertical: 'h-full w-px border-l border-[var(--ui-border-subtle)] mx-4 inline-block align-middle self-stretch',\r\n },\r\n variant: {\r\n solid: 'border-solid',\r\n dashed: 'border-dashed',\r\n dotted: 'border-dotted',\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: 'horizontal',\r\n variant: 'solid',\r\n },\r\n});\r\n\r\nexport interface DividerProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof dividerVariants> {\r\n label?: React.ReactNode;\r\n}\r\n\r\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\r\n ({ className, orientation = 'horizontal', variant, label, children, ...props }, ref) => {\r\n const content = label || children;\r\n\r\n if (orientation === 'horizontal' && content) {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"separator\"\r\n aria-orientation=\"horizontal\"\r\n className={cn('flex items-center w-full my-4 text-xs font-medium text-[var(--ui-text-muted)]', className)}\r\n {...props}\r\n >\r\n <div className={cn('flex-grow border-t border-[var(--ui-border-subtle)]', dividerVariants({ variant }))} />\r\n <span className=\"px-3 select-none\">{content}</span>\r\n <div className={cn('flex-grow border-t border-[var(--ui-border-subtle)]', dividerVariants({ variant }))} />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"separator\"\r\n aria-orientation={orientation || 'horizontal'}\r\n className={cn(dividerVariants({ orientation, variant }), className)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nDivider.displayName = 'Divider';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface SpacerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n x?: number | string;\r\n y?: number | string;\r\n}\r\n\r\nexport const Spacer = forwardRef<HTMLDivElement, SpacerProps>(\r\n ({ className, x, y, style, ...props }, ref) => {\r\n const spacingStyle: React.CSSProperties = {\r\n ...style,\r\n ...(x !== undefined && {\r\n width: typeof x === 'number' ? `${x * 0.25}rem` : x,\r\n minWidth: typeof x === 'number' ? `${x * 0.25}rem` : x,\r\n }),\r\n ...(y !== undefined && {\r\n height: typeof y === 'number' ? `${y * 0.25}rem` : y,\r\n minHeight: typeof y === 'number' ? `${y * 0.25}rem` : y,\r\n }),\r\n ...(x === undefined && y === undefined && {\r\n flex: '1 1 0%',\r\n }),\r\n };\r\n\r\n return <div ref={ref} aria-hidden=\"true\" style={spacingStyle} className={cn('pointer-events-none', className)} {...props} />;\r\n }\r\n);\r\n\r\nSpacer.displayName = 'Spacer';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\r\n ratio?: number | `${number}/${number}`;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\r\n ({ className, ratio = 16 / 9, style, children, ...props }, ref) => {\r\n const computedRatio =\r\n typeof ratio === 'string'\r\n ? ratio\r\n .split('/')\r\n .map(Number)\r\n .reduce((w, h) => (h ? w / h : 1))\r\n : ratio;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n style={{\r\n ...style,\r\n position: 'relative',\r\n width: '100%',\r\n paddingBottom: `${(1 / computedRatio) * 100}%`,\r\n }}\r\n className={cn('overflow-hidden', className)}\r\n {...props}\r\n >\r\n <div className=\"absolute inset-0 w-full h-full [&>img]:object-cover [&>video]:object-cover [&>img]:w-full [&>img]:h-full [&>video]:w-full [&>video]:h-full\">\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAspectRatio.displayName = 'AspectRatio';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface PageLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\r\n header?: React.ReactNode;\r\n sidebar?: React.ReactNode;\r\n footer?: React.ReactNode;\r\n sidebarWidth?: string;\r\n sidebarCollapsed?: boolean;\r\n}\r\n\r\nexport const PageLayout = forwardRef<HTMLDivElement, PageLayoutProps>(\r\n ({ className, header, sidebar, footer, children, sidebarWidth = '16rem', sidebarCollapsed = false, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('min-h-screen flex flex-col bg-[var(--ui-bg-primary)] text-[var(--ui-text-primary)]', className)} {...props}>\r\n {header && <header className=\"sticky top-0 z-30 w-full border-b border-[var(--ui-border-subtle)] bg-[var(--ui-bg-surface)] backdrop-blur-md\">{header}</header>}\r\n \r\n <div className=\"flex-1 flex w-full\">\r\n {sidebar && (\r\n <aside\r\n style={{ width: sidebarCollapsed ? '4rem' : sidebarWidth }}\r\n className=\"hidden md:flex flex-col flex-shrink-0 border-r border-[var(--ui-border-subtle)] bg-[var(--ui-bg-secondary)] transition-[width] duration-200\"\r\n >\r\n {sidebar}\r\n </aside>\r\n )}\r\n\r\n <main className=\"flex-1 flex flex-col min-w-0 overflow-y-auto\">\r\n <div className=\"flex-1 p-4 md:p-6 lg:p-8\">{children}</div>\r\n {footer && <footer className=\"border-t border-[var(--ui-border-subtle)] bg-[var(--ui-bg-surface)] p-4 md:p-6\">{footer}</footer>}\r\n </main>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\nPageLayout.displayName = 'PageLayout';\r\n\r\nexport const PageHeader = forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref as any} className={cn('flex items-center justify-between h-16 px-4 md:px-6 w-full', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nPageHeader.displayName = 'PageHeader';\r\n\r\nexport const PageSidebar = forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref as any} className={cn('flex flex-col h-full p-4 overflow-y-auto', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nPageSidebar.displayName = 'PageSidebar';\r\n","import React, { forwardRef, useRef, useState, useEffect } from 'react';\nimport { cn } from '../utils/cn';\n\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n maxHeight?: string | number;\n orientation?: 'vertical' | 'horizontal' | 'both';\n hideScrollbar?: boolean;\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n {\n maxHeight = '100%',\n orientation = 'vertical',\n hideScrollbar = false,\n children,\n className,\n style,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n style={{ maxHeight, ...style }}\n className={cn(\n 'relative w-full overflow-auto',\n orientation === 'vertical' && 'overflow-y-auto overflow-x-hidden',\n orientation === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n orientation === 'both' && 'overflow-auto',\n hideScrollbar && '[scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden',\n !hideScrollbar && '[scrollbar-width:thin] [scrollbar-color:rgba(150,150,160,0.3)_transparent]',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nScrollArea.displayName = 'ScrollArea';\n","export * from './Heading';\r\nexport * from './Text';\r\nexport * from './Label';\r\nexport * from './Link';\r\nexport * from './Code';\r\nexport * from './Blockquote';\r\nexport * from './Kbd';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const headingVariants = cva('font-bold tracking-tight text-[var(--ui-text-primary)]', {\r\n variants: {\r\n size: {\r\n h1: 'text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight',\r\n h2: 'text-3xl sm:text-4xl font-bold tracking-tight',\r\n h3: 'text-2xl sm:text-3xl font-bold tracking-tight',\r\n h4: 'text-xl sm:text-2xl font-semibold',\r\n h5: 'text-lg sm:text-xl font-semibold',\r\n h6: 'text-base sm:text-lg font-medium',\r\n },\r\n weight: {\r\n normal: 'font-normal',\r\n medium: 'font-medium',\r\n semibold: 'font-semibold',\r\n bold: 'font-bold',\r\n extrabold: 'font-extrabold',\r\n },\r\n align: {\r\n left: 'text-left',\r\n center: 'text-center',\r\n right: 'text-right',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'h2',\r\n align: 'left',\r\n },\r\n});\r\n\r\nexport interface HeadingProps\r\n extends React.HTMLAttributes<HTMLHeadingElement>,\r\n VariantProps<typeof headingVariants> {\r\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div' | 'span';\r\n}\r\n\r\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\r\n ({ className, size = 'h2', weight, align, as, children, ...props }, ref) => {\r\n const Component = (as || size || 'h2') as React.ElementType;\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(headingVariants({ size, weight, align }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nHeading.displayName = 'Heading';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const textVariants = cva('leading-relaxed', {\r\n variants: {\r\n variant: {\r\n body: 'text-base text-[var(--ui-text-primary)]',\r\n lead: 'text-lg sm:text-xl text-[var(--ui-text-secondary)] font-normal leading-relaxed',\r\n muted: 'text-sm text-[var(--ui-text-muted)]',\r\n small: 'text-xs text-[var(--ui-text-secondary)] font-normal',\r\n caption: 'text-xs text-[var(--ui-text-muted)] uppercase tracking-wider font-semibold',\r\n destructive: 'text-sm text-[var(--ui-error)] font-medium',\r\n success: 'text-sm text-[var(--ui-success)] font-medium',\r\n },\r\n weight: {\r\n light: 'font-light',\r\n normal: 'font-normal',\r\n medium: 'font-medium',\r\n semibold: 'font-semibold',\r\n bold: 'font-bold',\r\n },\r\n align: {\r\n left: 'text-left',\r\n center: 'text-center',\r\n right: 'text-right',\r\n justify: 'text-justify',\r\n },\r\n truncate: {\r\n true: 'truncate',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'body',\r\n weight: 'normal',\r\n align: 'left',\r\n truncate: false,\r\n },\r\n});\r\n\r\nexport interface TextProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n VariantProps<typeof textVariants> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const Text = forwardRef<HTMLElement, TextProps>(\r\n ({ className, variant, weight, align, truncate, as: Component = 'p', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(textVariants({ variant, weight, align, truncate }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nText.displayName = 'Text';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const labelVariants = cva(\r\n 'text-sm font-medium leading-none select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-[var(--ui-text-primary)] inline-flex items-center gap-1',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base',\r\n },\r\n error: {\r\n true: 'text-[var(--ui-error)]',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n error: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface LabelProps\r\n extends React.LabelHTMLAttributes<HTMLLabelElement>,\r\n VariantProps<typeof labelVariants> {\r\n required?: boolean;\r\n}\r\n\r\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\r\n ({ className, size, error, required, children, ...props }, ref) => {\r\n return (\r\n <label\r\n ref={ref}\r\n className={cn(labelVariants({ size, error }), className)}\r\n {...props}\r\n >\r\n {children}\r\n {required && <span className=\"text-[var(--ui-error)] ml-0.5\" aria-hidden=\"true\">*</span>}\r\n </label>\r\n );\r\n }\r\n);\r\n\r\nLabel.displayName = 'Label';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { ExternalLink } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const linkVariants = cva(\r\n 'inline-flex items-center gap-1 font-medium transition-colors cursor-pointer text-[var(--ui-primary)] hover:text-[var(--ui-primary-hover)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] rounded-sm',\r\n {\r\n variants: {\r\n underline: {\r\n always: 'underline underline-offset-4',\r\n hover: 'hover:underline underline-offset-4',\r\n none: 'no-underline',\r\n },\r\n variant: {\r\n primary: 'text-[var(--ui-primary)] hover:text-[var(--ui-primary-hover)]',\r\n secondary: 'text-[var(--ui-text-secondary)] hover:text-[var(--ui-text-primary)]',\r\n muted: 'text-[var(--ui-text-muted)] hover:text-[var(--ui-text-secondary)]',\r\n },\r\n },\r\n defaultVariants: {\r\n underline: 'hover',\r\n variant: 'primary',\r\n },\r\n }\r\n);\r\n\r\nexport interface LinkProps\r\n extends React.AnchorHTMLAttributes<HTMLAnchorElement>,\r\n VariantProps<typeof linkVariants> {\r\n external?: boolean;\r\n showExternalIcon?: boolean;\r\n}\r\n\r\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\r\n ({ className, underline, variant, external, showExternalIcon = true, children, ...props }, ref) => {\r\n const isExternal = external ?? (props.href?.startsWith('http') || props.target === '_blank');\r\n\r\n return (\r\n <a\r\n ref={ref}\r\n target={isExternal ? '_blank' : props.target}\r\n rel={isExternal ? 'noopener noreferrer' : props.rel}\r\n className={cn(linkVariants({ underline, variant }), className)}\r\n {...props}\r\n >\r\n {children}\r\n {isExternal && showExternalIcon && (\r\n <ExternalLink className=\"w-3.5 h-3.5 opacity-70 inline-block ml-0.5 flex-shrink-0\" />\r\n )}\r\n </a>\r\n );\r\n }\r\n);\r\n\r\nLink.displayName = 'Link';\r\n","import React, { forwardRef, useState } from 'react';\r\nimport { Copy, Check } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface CodeProps extends React.HTMLAttributes<HTMLElement> {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const Code = forwardRef<HTMLElement, CodeProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <code\r\n ref={ref}\r\n className={cn(\r\n 'relative rounded bg-[var(--ui-bg-tertiary)] px-[0.35rem] py-[0.15rem] font-mono text-sm font-semibold text-[var(--ui-text-primary)] border border-[var(--ui-border-subtle)]',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </code>\r\n );\r\n }\r\n);\r\nCode.displayName = 'Code';\r\n\r\nexport interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {\r\n code: string;\r\n language?: string;\r\n copyable?: boolean;\r\n}\r\n\r\nexport const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(\r\n ({ className, code, language = 'bash', copyable = true, ...props }, ref) => {\r\n const [copied, setCopied] = useState(false);\r\n\r\n const handleCopy = async () => {\r\n try {\r\n await navigator.clipboard.writeText(code);\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n } catch (err) {\r\n console.error('Failed to copy text', err);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n 'relative rounded-lg border border-[var(--ui-border-subtle)] bg-[var(--ui-bg-secondary)] overflow-hidden font-mono text-sm shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between px-4 py-2 bg-[var(--ui-bg-tertiary)]/50 border-b border-[var(--ui-border-subtle)] text-xs text-[var(--ui-text-muted)] select-none\">\r\n <span className=\"font-semibold uppercase tracking-wider\">{language}</span>\r\n {copyable && (\r\n <button\r\n type=\"button\"\r\n onClick={handleCopy}\r\n className=\"flex items-center gap-1 hover:text-[var(--ui-text-primary)] transition-colors p-1 rounded hover:bg-[var(--ui-bg-surface)]\"\r\n aria-label={copied ? 'Copied code' : 'Copy code to clipboard'}\r\n >\r\n {copied ? (\r\n <>\r\n <Check className=\"w-3.5 h-3.5 text-[var(--ui-success)]\" />\r\n <span className=\"text-[var(--ui-success)] text-[11px]\">Copied</span>\r\n </>\r\n ) : (\r\n <>\r\n <Copy className=\"w-3.5 h-3.5\" />\r\n <span className=\"text-[11px]\">Copy</span>\r\n </>\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Code Content */}\r\n <pre className=\"p-4 overflow-x-auto text-[var(--ui-text-primary)] leading-relaxed\">\r\n <code>{code}</code>\r\n </pre>\r\n </div>\r\n );\r\n }\r\n);\r\nCodeBlock.displayName = 'CodeBlock';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface BlockquoteProps extends React.BlockquoteHTMLAttributes<HTMLQuoteElement> {\r\n citeAuthor?: string;\r\n citeSource?: string;\r\n}\r\n\r\nexport const Blockquote = forwardRef<HTMLQuoteElement, BlockquoteProps>(\r\n ({ className, citeAuthor, citeSource, children, ...props }, ref) => {\r\n return (\r\n <blockquote\r\n ref={ref}\r\n className={cn(\r\n 'mt-6 border-l-4 border-[var(--ui-primary)] pl-6 italic text-[var(--ui-text-secondary)] space-y-2',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"text-base sm:text-lg\">{children}</div>\r\n {(citeAuthor || citeSource) && (\r\n <footer className=\"not-italic text-xs font-semibold text-[var(--ui-text-muted)] tracking-wider\">\r\n {citeAuthor && <span>— {citeAuthor}</span>}\r\n {citeSource && <span className=\"opacity-75 ml-1\">({citeSource})</span>}\r\n </footer>\r\n )}\r\n </blockquote>\r\n );\r\n }\r\n);\r\n\r\nBlockquote.displayName = 'Blockquote';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface KbdProps extends React.HTMLAttributes<HTMLElement> {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <kbd\r\n ref={ref}\r\n className={cn(\r\n 'pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border border-[var(--ui-border-default)] bg-[var(--ui-bg-tertiary)] px-1.5 font-mono text-[10px] font-semibold text-[var(--ui-text-muted)] opacity-100 shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </kbd>\r\n );\r\n }\r\n);\r\n\r\nKbd.displayName = 'Kbd';\r\n","export * from './Button';\r\nexport * from './IconButton';\r\nexport * from './ButtonGroup';\r\nexport * from './ToggleButton';\r\nexport * from './SplitButton';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Loader2 } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const buttonVariants = cva(\r\n 'relative inline-flex items-center justify-center font-medium transition-all duration-200 select-none cursor-pointer disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-[var(--ui-primary)]/30 active:scale-[0.97] overflow-hidden',\r\n {\r\n variants: {\r\n variant: {\r\n primary:\r\n 'bg-[var(--ui-primary)] hover:bg-[var(--ui-primary-hover)] text-white shadow-sm hover:shadow-[0_4px_16px_rgba(0,113,227,0.35)] border border-white/20',\r\n secondary:\r\n 'bg-[var(--ui-bg-tertiary)] hover:bg-[var(--ui-bg-surface)] text-[var(--ui-text-primary)] border border-[var(--ui-border-subtle)] shadow-sm',\r\n outline:\r\n 'border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)]/60 backdrop-blur-xl text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)] hover:border-[var(--ui-border-strong)] shadow-sm',\r\n ghost:\r\n 'bg-transparent text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)]/70',\r\n danger:\r\n 'bg-[var(--ui-error)] hover:bg-[var(--ui-error)]/90 text-white shadow-sm hover:shadow-[0_4px_16px_rgba(255,59,48,0.35)] border border-white/15',\r\n link:\r\n 'bg-transparent text-[var(--ui-primary)] underline-offset-4 hover:underline p-0 h-auto active:scale-100 font-normal',\r\n glass:\r\n 'bg-white/10 dark:bg-white/10 backdrop-blur-2xl border border-white/20 dark:border-white/15 text-[var(--ui-text-primary)] hover:bg-white/20 dark:hover:bg-white/15 shadow-[0_8px_32px_rgba(0,0,0,0.12)] hover:shadow-[0_8px_32px_rgba(0,113,227,0.25)]',\r\n },\r\n size: {\r\n xs: 'h-7 px-2.5 text-xs rounded-[var(--ui-radius-sm)] gap-1',\r\n sm: 'h-8.5 px-3.5 text-xs rounded-[var(--ui-radius-md)] gap-1.5',\r\n md: 'h-10 px-4.5 text-sm rounded-[var(--ui-radius-md)] gap-2 font-semibold',\r\n lg: 'h-12 px-6 text-base rounded-[var(--ui-radius-lg)] gap-2.5 font-semibold',\r\n xl: 'h-14 px-8 text-lg rounded-[var(--ui-radius-xl)] gap-3 font-bold',\r\n },\r\n fullWidth: {\r\n true: 'w-full',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'primary',\r\n size: 'md',\r\n fullWidth: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n loading?: boolean;\r\n loadingText?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n}\r\n\r\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n fullWidth,\r\n loading = false,\r\n loadingText,\r\n leftIcon,\r\n rightIcon,\r\n disabled,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const isDisabled = disabled || loading;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n disabled={isDisabled}\r\n className={cn(buttonVariants({ variant, size, fullWidth }), className)}\r\n {...props}\r\n >\r\n {/* Apple subtle top specular highlight */}\r\n <span\r\n aria-hidden=\"true\"\r\n className=\"absolute inset-x-0 top-0 h-[1px] bg-gradient-to-r from-transparent via-white/35 to-transparent pointer-events-none\"\r\n />\r\n\r\n {loading ? (\r\n <>\r\n <Loader2 className=\"w-4 h-4 animate-spin\" />\r\n <span>{loadingText || children}</span>\r\n </>\r\n ) : (\r\n <>\r\n {leftIcon && <span className=\"flex-shrink-0 inline-flex items-center\">{leftIcon}</span>}\r\n <span>{children}</span>\r\n {rightIcon && <span className=\"flex-shrink-0 inline-flex items-center\">{rightIcon}</span>}\r\n </>\r\n )}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Loader2 } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const iconButtonVariants = cva(\r\n 'inline-flex items-center justify-center font-medium transition-all duration-200 select-none cursor-pointer disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] focus-visible:ring-offset-2 active:scale-95',\r\n {\r\n variants: {\r\n variant: {\r\n primary:\r\n 'bg-[var(--ui-primary)] text-[var(--ui-primary-fg)] hover:bg-[var(--ui-primary-hover)] shadow-sm',\r\n secondary:\r\n 'bg-[var(--ui-secondary)] text-[var(--ui-secondary-fg)] hover:bg-[var(--ui-secondary-hover)] shadow-sm',\r\n outline:\r\n 'border border-[var(--ui-border-default)] bg-transparent text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)]',\r\n ghost:\r\n 'bg-transparent text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)]',\r\n danger:\r\n 'bg-[var(--ui-error)] text-[var(--ui-error-fg)] hover:bg-[var(--ui-error)]/90 shadow-sm',\r\n },\r\n size: {\r\n xs: 'w-7 h-7 text-xs rounded-[var(--ui-radius-sm)]',\r\n sm: 'w-8 h-8 text-sm rounded-[var(--ui-radius-md)]',\r\n md: 'w-10 h-10 text-base rounded-[var(--ui-radius-md)]',\r\n lg: 'w-12 h-12 text-lg rounded-[var(--ui-radius-lg)]',\r\n },\r\n shape: {\r\n rounded: '',\r\n circle: 'rounded-full',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'ghost',\r\n size: 'md',\r\n shape: 'rounded',\r\n },\r\n }\r\n);\r\n\r\nexport interface IconButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof iconButtonVariants> {\r\n 'aria-label': string;\r\n icon?: React.ReactNode;\r\n loading?: boolean;\r\n}\r\n\r\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n shape,\r\n icon,\r\n loading = false,\r\n disabled,\r\n 'aria-label': ariaLabel,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <button\r\n ref={ref}\r\n aria-label={ariaLabel}\r\n disabled={disabled || loading}\r\n className={cn(iconButtonVariants({ variant, size, shape }), className)}\r\n {...props}\r\n >\r\n {loading ? <Loader2 className=\"w-4 h-4 animate-spin\" /> : icon || children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nIconButton.displayName = 'IconButton';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const buttonGroupVariants = cva('inline-flex', {\r\n variants: {\r\n orientation: {\r\n horizontal:\r\n 'flex-row [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:rounded-r-none [&>*:not(:last-child)]:border-r-0',\r\n vertical:\r\n 'flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none [&>*:not(:last-child)]:border-b-0',\r\n },\r\n attached: {\r\n true: '',\r\n false: 'gap-2',\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: 'horizontal',\r\n attached: true,\r\n },\r\n});\r\n\r\nexport interface ButtonGroupProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof buttonGroupVariants> {}\r\n\r\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\r\n ({ className, orientation, attached, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n className={cn(buttonGroupVariants({ orientation, attached }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nButtonGroup.displayName = 'ButtonGroup';\r\n","import React, { forwardRef, createContext, useContext } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const toggleVariants = cva(\r\n 'inline-flex items-center justify-center text-sm font-medium transition-colors hover:bg-[var(--ui-bg-tertiary)] hover:text-[var(--ui-text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-transparent text-[var(--ui-text-secondary)]',\r\n outline:\r\n 'border border-[var(--ui-border-default)] bg-transparent hover:bg-[var(--ui-bg-tertiary)]',\r\n },\r\n size: {\r\n sm: 'h-8 px-2.5 text-xs rounded-[var(--ui-radius-sm)]',\r\n md: 'h-9 px-3 text-sm rounded-[var(--ui-radius-md)]',\r\n lg: 'h-10 px-4 text-base rounded-[var(--ui-radius-md)]',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\ninterface ToggleGroupContextType {\r\n value?: string | string[];\r\n onChange?: (val: string) => void;\r\n variant?: 'default' | 'outline';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nconst ToggleGroupContext = createContext<ToggleGroupContextType>({});\r\n\r\nexport interface ToggleButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof toggleVariants> {\r\n pressed?: boolean;\r\n value?: string;\r\n}\r\n\r\nexport const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(\r\n ({ className, pressed: customPressed, variant, size, value, onClick, children, ...props }, ref) => {\r\n const group = useContext(ToggleGroupContext);\r\n\r\n const isPressed =\r\n customPressed !== undefined\r\n ? customPressed\r\n : group.value !== undefined && value !== undefined\r\n ? Array.isArray(group.value)\r\n ? group.value.includes(value)\r\n : group.value === value\r\n : false;\r\n\r\n const currentVariant = variant || group.variant || 'default';\r\n const currentSize = size || group.size || 'md';\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (value && group.onChange) {\r\n group.onChange(value);\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-pressed={isPressed}\r\n data-state={isPressed ? 'on' : 'off'}\r\n onClick={handleClick}\r\n className={cn(\r\n toggleVariants({ variant: currentVariant, size: currentSize }),\r\n isPressed &&\r\n 'bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)] font-semibold shadow-inner border-[var(--ui-border-strong)]',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\nToggleButton.displayName = 'ToggleButton';\r\n\r\nexport interface ToggleGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n type?: 'single' | 'multiple';\r\n value?: string | string[];\r\n defaultValue?: string | string[];\r\n onValueChange?: (value: any) => void;\r\n variant?: 'default' | 'outline';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nexport const ToggleGroup = forwardRef<HTMLDivElement, ToggleGroupProps>(\r\n (\r\n {\r\n className,\r\n type = 'single',\r\n value: controlledValue,\r\n defaultValue,\r\n onValueChange,\r\n variant = 'outline',\r\n size = 'md',\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [stateValue, setStateValue] = React.useState<string | string[]>(\r\n defaultValue || (type === 'multiple' ? [] : '')\r\n );\r\n\r\n const currentValue = controlledValue !== undefined ? controlledValue : stateValue;\r\n\r\n const handleItemChange = (itemValue: string) => {\r\n if (type === 'single') {\r\n const next = currentValue === itemValue ? '' : itemValue;\r\n setStateValue(next);\r\n onValueChange?.(next);\r\n } else {\r\n const arr = Array.isArray(currentValue) ? currentValue : [];\r\n const next = arr.includes(itemValue)\r\n ? arr.filter((v) => v !== itemValue)\r\n : [...arr, itemValue];\r\n setStateValue(next);\r\n onValueChange?.(next);\r\n }\r\n };\r\n\r\n return (\r\n <ToggleGroupContext.Provider\r\n value={{\r\n value: currentValue,\r\n onChange: handleItemChange,\r\n variant,\r\n size,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n className={cn(\r\n 'inline-flex items-center gap-1 rounded-[var(--ui-radius-md)] p-1 bg-[var(--ui-bg-secondary)] border border-[var(--ui-border-subtle)]',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </ToggleGroupContext.Provider>\r\n );\r\n }\r\n);\r\nToggleGroup.displayName = 'ToggleGroup';\r\n","import React, { forwardRef, useState, useRef, useEffect } from 'react';\r\nimport { ChevronDown } from 'lucide-react';\r\nimport { Button, ButtonProps } from './Button';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface SplitButtonItem {\r\n label: React.ReactNode;\r\n icon?: React.ReactNode;\r\n onClick: () => void;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface SplitButtonProps extends Omit<ButtonProps, 'onClick'> {\r\n items: SplitButtonItem[];\r\n onMainClick?: () => void;\r\n}\r\n\r\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\r\n ({ className, items, onMainClick, variant = 'primary', size = 'md', children, disabled, ...props }, ref) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleOutside = (e: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n if (isOpen) {\r\n document.addEventListener('mousedown', handleOutside);\r\n }\r\n return () => document.removeEventListener('mousedown', handleOutside);\r\n }, [isOpen]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn('relative inline-flex', className)}>\r\n <div ref={ref} className=\"inline-flex rounded-[var(--ui-radius-md)] shadow-sm\">\r\n <Button\r\n variant={variant}\r\n size={size}\r\n disabled={disabled}\r\n onClick={onMainClick}\r\n className=\"rounded-r-none border-r border-white/20 dark:border-black/20\"\r\n {...props}\r\n >\r\n {children}\r\n </Button>\r\n\r\n <Button\r\n variant={variant}\r\n size={size}\r\n disabled={disabled}\r\n onClick={() => setIsOpen(!isOpen)}\r\n aria-expanded={isOpen}\r\n aria-haspopup=\"menu\"\r\n className=\"rounded-l-none px-2\"\r\n >\r\n <ChevronDown className={cn('w-4 h-4 transition-transform duration-200', isOpen && 'rotate-180')} />\r\n </Button>\r\n </div>\r\n\r\n {isOpen && (\r\n <div className=\"absolute top-full right-0 mt-1 w-48 rounded-[var(--ui-radius-md)] bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] shadow-lg py-1 z-50 animate-in fade-in zoom-in-95\">\r\n {items.map((item, i) => (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n disabled={item.disabled}\r\n onClick={() => {\r\n item.onClick();\r\n setIsOpen(false);\r\n }}\r\n className=\"w-full flex items-center gap-2 px-3 py-2 text-left text-sm text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)] disabled:opacity-50 disabled:pointer-events-none transition-colors\"\r\n >\r\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\r\n <span className=\"flex-1 truncate\">{item.label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSplitButton.displayName = 'SplitButton';\r\n","export * from './FormField';\nexport * from './Input';\nexport * from './SearchInput';\nexport * from './PasswordInput';\nexport * from './Textarea';\nexport * from './Select';\nexport * from './Checkbox';\nexport * from './CheckboxGroup';\nexport * from './Radio';\nexport * from './Switch';\nexport * from './Slider';\nexport * from './RangeSlider';\nexport * from './PinInput';\nexport * from './DatePicker';\nexport * from './Combobox';\nexport * from './FileUpload';\nexport * from './NumberInput';\nexport * from './MaskedInput';\n","import React, { createContext, useContext, useId, forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport { Label, LabelProps } from '../typography/Label';\r\n\r\ninterface FormFieldContextValue {\r\n id: string;\r\n labelId: string;\r\n descriptionId: string;\r\n errorId: string;\r\n isRequired?: boolean;\r\n isInvalid?: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\nconst FormFieldContext = createContext<FormFieldContextValue | null>(null);\r\n\r\nexport function useFormField() {\r\n const context = useContext(FormFieldContext);\r\n return context;\r\n}\r\n\r\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\r\n isRequired?: boolean;\r\n isInvalid?: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(\r\n ({ className, isRequired, isInvalid, isDisabled, children, ...props }, ref) => {\r\n const generatedId = useId();\r\n const id = props.id || generatedId;\r\n const labelId = `${id}-label`;\r\n const descriptionId = `${id}-description`;\r\n const errorId = `${id}-error`;\r\n\r\n return (\r\n <FormFieldContext.Provider\r\n value={{\r\n id,\r\n labelId,\r\n descriptionId,\r\n errorId,\r\n isRequired,\r\n isInvalid,\r\n isDisabled,\r\n }}\r\n >\r\n <div ref={ref} className={cn('space-y-1.5 w-full', className)} {...props}>\r\n {children}\r\n </div>\r\n </FormFieldContext.Provider>\r\n );\r\n }\r\n);\r\nFormField.displayName = 'FormField';\r\n\r\nexport const FormLabel = forwardRef<HTMLLabelElement, LabelProps>(\r\n ({ className, required, children, ...props }, ref) => {\r\n const context = useFormField();\r\n const isRequired = required ?? context?.isRequired;\r\n const isError = context?.isInvalid;\r\n\r\n return (\r\n <Label\r\n ref={ref}\r\n id={context?.labelId}\r\n htmlFor={context?.id}\r\n required={isRequired}\r\n error={isError}\r\n className={className}\r\n {...props}\r\n >\r\n {children}\r\n </Label>\r\n );\r\n }\r\n);\r\nFormLabel.displayName = 'FormLabel';\r\n\r\nexport const FormHelperText = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const context = useFormField();\r\n return (\r\n <p\r\n ref={ref}\r\n id={context?.descriptionId}\r\n className={cn('text-xs text-[var(--ui-text-muted)]', className)}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n );\r\n }\r\n);\r\nFormHelperText.displayName = 'FormHelperText';\r\n\r\nexport const FormErrorMessage = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const context = useFormField();\r\n if (!context?.isInvalid && !children) return null;\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n id={context?.errorId}\r\n role=\"alert\"\r\n className={cn('text-xs font-medium text-[var(--ui-error)]', className)}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n );\r\n }\r\n);\r\nFormErrorMessage.displayName = 'FormErrorMessage';\r\n","import React, { forwardRef, useState } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { X } from 'lucide-react';\r\nimport { useFormField } from './FormField';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const inputVariants = cva(\r\n 'w-full rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)]/70 backdrop-blur-md text-[var(--ui-text-primary)] placeholder:text-[var(--ui-text-muted)] transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)]/70 focus-visible:border-[var(--ui-primary)] focus-visible:shadow-[0_0_16px_rgba(99,102,241,0.2)] disabled:cursor-not-allowed disabled:opacity-50 shadow-inner',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'h-8 px-2.5 text-xs',\r\n md: 'h-10 px-3.5 text-sm',\r\n lg: 'h-12 px-4 text-base',\r\n },\r\n variant: {\r\n default: 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)]',\r\n filled: 'bg-[var(--ui-bg-secondary)] border-transparent hover:bg-[var(--ui-bg-tertiary)]',\r\n },\r\n isInvalid: {\r\n true: 'border-[var(--ui-error)] focus-visible:ring-[var(--ui-error)]/70 focus-visible:shadow-[0_0_16px_rgba(244,63,94,0.25)]',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'default',\r\n isInvalid: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof inputVariants> {\r\n prefixIcon?: React.ReactNode;\r\n suffixIcon?: React.ReactNode;\r\n clearable?: boolean;\r\n onClear?: () => void;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n className,\r\n type = 'text',\r\n size,\r\n variant,\r\n isInvalid: customInvalid,\r\n prefixIcon,\r\n suffixIcon,\r\n clearable,\r\n onClear,\r\n value,\r\n onChange,\r\n disabled,\r\n id,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const formField = useFormField();\r\n const isInvalid = customInvalid ?? formField?.isInvalid ?? false;\r\n const isDisabled = disabled ?? formField?.isDisabled ?? false;\r\n const inputId = id || formField?.id;\r\n\r\n const isControlled = value !== undefined;\r\n const [uncontrolledVal, setUncontrolledVal] = useState(\r\n props.defaultValue !== undefined ? String(props.defaultValue) : ''\r\n );\r\n const innerRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const handleRef = (node: HTMLInputElement | null) => {\r\n innerRef.current = node;\r\n if (typeof ref === 'function') {\r\n ref(node);\r\n } else if (ref) {\r\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\r\n }\r\n };\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!isControlled) {\r\n setUncontrolledVal(e.target.value);\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const handleClear = () => {\r\n if (!isControlled && innerRef.current) {\r\n innerRef.current.value = '';\r\n setUncontrolledVal('');\r\n const event = new Event('input', { bubbles: true });\r\n innerRef.current.dispatchEvent(event);\r\n }\r\n onClear?.();\r\n };\r\n\r\n const hasValue = isControlled\r\n ? Boolean(value)\r\n : Boolean(uncontrolledVal || innerRef.current?.value);\r\n\r\n return (\r\n <div className=\"relative w-full flex items-center\">\r\n {prefixIcon && (\r\n <div className=\"absolute left-3 flex items-center pointer-events-none text-[var(--ui-text-muted)]\">\r\n {prefixIcon}\r\n </div>\r\n )}\r\n\r\n <input\r\n ref={handleRef}\r\n id={inputId}\r\n type={type}\r\n disabled={isDisabled}\r\n {...(isControlled ? { value } : {})}\r\n onChange={handleChange}\r\n aria-invalid={isInvalid}\r\n aria-describedby={\r\n isInvalid\r\n ? formField?.errorId\r\n : formField?.descriptionId || undefined\r\n }\r\n className={cn(\r\n inputVariants({ size, variant, isInvalid }),\r\n prefixIcon && 'pl-9',\r\n (suffixIcon || (clearable && hasValue)) && 'pr-9',\r\n className\r\n )}\r\n {...props}\r\n />\r\n\r\n <div className=\"absolute right-3 flex items-center gap-1 text-[var(--ui-text-muted)]\">\r\n {clearable && hasValue && !isDisabled && (\r\n <button\r\n type=\"button\"\r\n onClick={handleClear}\r\n className=\"p-0.5 rounded-full hover:bg-[var(--ui-bg-tertiary)] hover:text-[var(--ui-text-primary)] transition-colors\"\r\n aria-label=\"Clear input\"\r\n >\r\n <X className=\"w-3.5 h-3.5\" />\r\n </button>\r\n )}\r\n {suffixIcon && <span className=\"pointer-events-none flex items-center\">{suffixIcon}</span>}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = 'Input';\r\n","import { forwardRef } from 'react';\r\nimport { Search } from 'lucide-react';\r\nimport { Input, InputProps } from './Input';\r\nimport { Kbd } from '../typography/Kbd';\r\n\r\nexport interface SearchInputProps extends Omit<InputProps, 'type' | 'prefixIcon'> {\r\n shortcut?: string;\r\n}\r\n\r\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\r\n ({ shortcut, clearable = true, suffixIcon, ...props }, ref) => {\r\n return (\r\n <Input\r\n ref={ref}\r\n type=\"search\"\r\n clearable={clearable}\r\n prefixIcon={<Search className=\"w-4 h-4\" />}\r\n suffixIcon={\r\n shortcut ? (\r\n <div className=\"flex items-center gap-1\">\r\n <Kbd>{shortcut}</Kbd>\r\n {suffixIcon}\r\n </div>\r\n ) : (\r\n suffixIcon\r\n )\r\n }\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nSearchInput.displayName = 'SearchInput';\r\n","import React, { forwardRef, useState } from 'react';\r\nimport { Eye, EyeOff } from 'lucide-react';\r\nimport { Input, InputProps } from './Input';\r\n\r\nexport interface PasswordInputProps extends Omit<InputProps, 'type' | 'suffixIcon'> {\r\n showToggle?: boolean;\r\n}\r\n\r\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\r\n ({ showToggle = true, ...props }, ref) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n return (\r\n <Input\r\n ref={ref}\r\n type={showPassword ? 'text' : 'password'}\r\n suffixIcon={\r\n showToggle ? (\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowPassword(!showPassword)}\r\n className=\"p-1 rounded hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] pointer-events-auto transition-colors\"\r\n aria-label={showPassword ? 'Hide password' : 'Show password'}\r\n >\r\n {showPassword ? <EyeOff className=\"w-4 h-4\" /> : <Eye className=\"w-4 h-4\" />}\r\n </button>\r\n ) : undefined\r\n }\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import React, { forwardRef, useEffect, useRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { useFormField } from './FormField';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const textareaVariants = cva(\r\n 'w-full rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)] p-3 text-sm text-[var(--ui-text-primary)] placeholder:text-[var(--ui-text-muted)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:cursor-not-allowed disabled:opacity-50 min-h-[80px]',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)]',\r\n filled: 'bg-[var(--ui-bg-secondary)] border-transparent hover:bg-[var(--ui-bg-tertiary)]',\r\n },\r\n isInvalid: {\r\n true: 'border-[var(--ui-error)] focus-visible:ring-[var(--ui-error)]',\r\n false: '',\r\n },\r\n resize: {\r\n none: 'resize-none',\r\n vertical: 'resize-y',\r\n horizontal: 'resize-x',\r\n both: 'resize',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n isInvalid: false,\r\n resize: 'vertical',\r\n },\r\n }\r\n);\r\n\r\nexport interface TextareaProps\r\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\r\n VariantProps<typeof textareaVariants> {\r\n autoResize?: boolean;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n isInvalid: customInvalid,\r\n resize,\r\n autoResize = false,\r\n disabled,\r\n value,\r\n onChange,\r\n id,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const formField = useFormField();\r\n const isInvalid = customInvalid ?? formField?.isInvalid ?? false;\r\n const isDisabled = disabled ?? formField?.isDisabled ?? false;\r\n const inputId = id || formField?.id;\r\n\r\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\r\n\r\n const setMergedRef = (element: HTMLTextAreaElement | null) => {\r\n innerRef.current = element;\r\n if (typeof ref === 'function') {\r\n ref(element);\r\n } else if (ref) {\r\n (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = element;\r\n }\r\n };\r\n\r\n const handleInput = () => {\r\n if (autoResize && innerRef.current) {\r\n innerRef.current.style.height = 'auto';\r\n innerRef.current.style.height = `${innerRef.current.scrollHeight}px`;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (autoResize && innerRef.current) {\r\n handleInput();\r\n }\r\n }, [value, autoResize]);\r\n\r\n return (\r\n <textarea\r\n ref={setMergedRef}\r\n id={inputId}\r\n disabled={isDisabled}\r\n value={value}\r\n onChange={(e) => {\r\n handleInput();\r\n onChange?.(e);\r\n }}\r\n aria-invalid={isInvalid}\r\n aria-describedby={\r\n isInvalid\r\n ? formField?.errorId\r\n : formField?.descriptionId || undefined\r\n }\r\n className={cn(\r\n textareaVariants({\r\n variant,\r\n isInvalid,\r\n resize: autoResize ? 'none' : resize,\r\n }),\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = 'Textarea';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { ChevronDown } from 'lucide-react';\r\nimport { useFormField } from './FormField';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const selectVariants = cva(\r\n 'w-full rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)] text-[var(--ui-text-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:cursor-not-allowed disabled:opacity-50 appearance-none pr-10',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'h-8 px-2.5 text-xs',\r\n md: 'h-10 px-3.5 text-sm',\r\n lg: 'h-12 px-4 text-base',\r\n },\r\n variant: {\r\n default: 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)]',\r\n filled: 'bg-[var(--ui-bg-secondary)] border-transparent hover:bg-[var(--ui-bg-tertiary)]',\r\n },\r\n isInvalid: {\r\n true: 'border-[var(--ui-error)] focus-visible:ring-[var(--ui-error)]',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'default',\r\n isInvalid: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface SelectOption {\r\n value: string | number;\r\n label: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface SelectProps\r\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>,\r\n VariantProps<typeof selectVariants> {\r\n options?: SelectOption[];\r\n placeholder?: string;\r\n}\r\n\r\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\r\n (\r\n {\r\n className,\r\n size,\r\n variant,\r\n isInvalid: customInvalid,\r\n options,\r\n placeholder,\r\n disabled,\r\n children,\r\n id,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const formField = useFormField();\r\n const isInvalid = customInvalid ?? formField?.isInvalid ?? false;\r\n const isDisabled = disabled ?? formField?.isDisabled ?? false;\r\n const inputId = id || formField?.id;\r\n\r\n return (\r\n <div className=\"relative w-full flex items-center\">\r\n <select\r\n ref={ref}\r\n id={inputId}\r\n disabled={isDisabled}\r\n aria-invalid={isInvalid}\r\n aria-describedby={\r\n isInvalid\r\n ? formField?.errorId\r\n : formField?.descriptionId || undefined\r\n }\r\n className={cn(selectVariants({ size, variant, isInvalid }), className)}\r\n {...props}\r\n >\r\n {placeholder && (\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n )}\r\n {options\r\n ? options.map((opt) => (\r\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\r\n {opt.label}\r\n </option>\r\n ))\r\n : children}\r\n </select>\r\n <div className=\"absolute right-3 flex items-center pointer-events-none text-[var(--ui-text-muted)]\">\r\n <ChevronDown className=\"w-4 h-4\" />\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSelect.displayName = 'Select';\r\n","import React, { forwardRef } from 'react';\r\nimport { Check, Minus } from 'lucide-react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { useFormField } from './FormField';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const checkboxVariants = cva(\r\n 'peer shrink-0 rounded-[var(--ui-radius-sm)] border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:cursor-not-allowed disabled:opacity-50 transition-all cursor-pointer flex items-center justify-center text-[var(--ui-primary-fg)]',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'w-4 h-4 text-xs',\r\n md: 'w-5 h-5 text-sm',\r\n lg: 'w-6 h-6 text-base',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface CheckboxProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof checkboxVariants> {\r\n indeterminate?: boolean;\r\n label?: React.ReactNode;\r\n}\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\r\n ({ className, size, indeterminate = false, label, checked, disabled, id, onChange, ...props }, ref) => {\r\n const formField = useFormField();\r\n const isDisabled = disabled ?? formField?.isDisabled ?? false;\r\n const checkboxId = id || formField?.id;\r\n\r\n return (\r\n <label className={cn('inline-flex items-center gap-2 select-none cursor-pointer', isDisabled && 'cursor-not-allowed opacity-50')}>\r\n <div className=\"relative flex items-center justify-center\">\r\n <input\r\n ref={ref}\r\n type=\"checkbox\"\r\n id={checkboxId}\r\n disabled={isDisabled}\r\n checked={checked}\r\n onChange={onChange}\r\n className=\"sr-only peer\"\r\n {...props}\r\n />\r\n <div\r\n className={cn(\r\n checkboxVariants({ size }),\r\n (checked || indeterminate) && 'bg-[var(--ui-primary)] border-[var(--ui-primary)]',\r\n className\r\n )}\r\n >\r\n {indeterminate ? (\r\n <Minus className=\"w-3.5 h-3.5 stroke-[3]\" />\r\n ) : (\r\n checked && <Check className=\"w-3.5 h-3.5 stroke-[3]\" />\r\n )}\r\n </div>\r\n </div>\r\n {label && <span className=\"text-sm font-medium text-[var(--ui-text-primary)]\">{label}</span>}\r\n </label>\r\n );\r\n }\r\n);\r\n\r\nCheckbox.displayName = 'Checkbox';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n orientation?: 'horizontal' | 'vertical';\r\n value?: string[];\r\n onChange?: (value: string[]) => void;\r\n}\r\n\r\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\r\n ({ className, orientation = 'vertical', children, value, onChange, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n className={cn(\r\n 'flex gap-2',\r\n orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap items-center',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCheckboxGroup.displayName = 'CheckboxGroup';\r\n","import React, { forwardRef, createContext, useContext } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface RadioGroupContextType {\r\n name?: string;\r\n value?: string;\r\n onChange?: (val: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextType | null>(null);\r\n\r\nexport const radioVariants = cva(\r\n 'peer shrink-0 rounded-full border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:cursor-not-allowed disabled:opacity-50 transition-all cursor-pointer flex items-center justify-center',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface RadioProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof radioVariants> {\r\n label?: React.ReactNode;\r\n value: string;\r\n}\r\n\r\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\r\n ({ className, size, label, value, checked, disabled, id, onChange, ...props }, ref) => {\r\n const group = useContext(RadioGroupContext);\r\n const isChecked = checked ?? (group?.value !== undefined ? group.value === value : false);\r\n const isDisabled = disabled ?? group?.disabled ?? false;\r\n const name = props.name || group?.name;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange?.(e);\r\n if (group?.onChange) {\r\n group.onChange(value);\r\n }\r\n };\r\n\r\n return (\r\n <label className={cn('inline-flex items-center gap-2 select-none cursor-pointer', isDisabled && 'cursor-not-allowed opacity-50')}>\r\n <div className=\"relative flex items-center justify-center\">\r\n <input\r\n ref={ref}\r\n type=\"radio\"\r\n name={name}\r\n value={value}\r\n id={id}\r\n disabled={isDisabled}\r\n checked={isChecked}\r\n onChange={handleChange}\r\n className=\"sr-only peer\"\r\n {...props}\r\n />\r\n <div\r\n className={cn(\r\n radioVariants({ size }),\r\n isChecked && 'border-[var(--ui-primary)]',\r\n className\r\n )}\r\n >\r\n {isChecked && (\r\n <span className=\"w-2.5 h-2.5 rounded-full bg-[var(--ui-primary)] animate-in zoom-in-75 duration-150\" />\r\n )}\r\n </div>\r\n </div>\r\n {label && <span className=\"text-sm font-medium text-[var(--ui-text-primary)]\">{label}</span>}\r\n </label>\r\n );\r\n }\r\n);\r\nRadio.displayName = 'Radio';\r\n\r\nexport interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n name?: string;\r\n value?: string;\r\n defaultValue?: string;\r\n onValueChange?: (value: string) => void;\r\n orientation?: 'horizontal' | 'vertical';\r\n disabled?: boolean;\r\n}\r\n\r\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\r\n (\r\n {\r\n className,\r\n name,\r\n value: controlledValue,\r\n defaultValue,\r\n onValueChange,\r\n orientation = 'vertical',\r\n disabled,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [val, setVal] = React.useState(defaultValue || '');\r\n const currentValue = controlledValue !== undefined ? controlledValue : val;\r\n\r\n const handleChange = (newValue: string) => {\r\n setVal(newValue);\r\n onValueChange?.(newValue);\r\n };\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n name,\r\n value: currentValue,\r\n onChange: handleChange,\r\n disabled,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n role=\"radiogroup\"\r\n className={cn(\r\n 'flex gap-2',\r\n orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap items-center',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </RadioGroupContext.Provider>\r\n );\r\n }\r\n);\r\nRadioGroup.displayName = 'RadioGroup';\r\n","import React, { forwardRef, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useFormField } from './FormField';\nimport { cn } from '../utils/cn';\n\nexport const switchVariants = cva(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-all duration-200 focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-[#34c759]/30 disabled:cursor-not-allowed disabled:opacity-50 bg-[var(--ui-border-strong)] data-[state=checked]:bg-[#34c759] dark:data-[state=checked]:bg-[#30d158] shadow-inner',\n {\n variants: {\n size: {\n sm: 'h-5 w-9 p-0.5',\n md: 'h-6.5 w-12 p-0.5',\n lg: 'h-8 w-15 p-1',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const switchThumbVariants = cva(\n 'pointer-events-none block rounded-full bg-white shadow-[0_2px_4px_rgba(0,0,0,0.25)] ring-0 transition-transform duration-200 ease-out data-[state=unchecked]:translate-x-0',\n {\n variants: {\n size: {\n sm: 'h-4 w-4 data-[state=checked]:translate-x-4',\n md: 'h-5.5 w-5.5 data-[state=checked]:translate-x-5.5',\n lg: 'h-6 w-6 data-[state=checked]:translate-x-7',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof switchVariants> {\n label?: React.ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, size, label, checked, defaultChecked, onCheckedChange, disabled, id, onChange, ...props }, ref) => {\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isChecked = isControlled ? checked : internalChecked;\n\n const formField = useFormField();\n const isDisabled = disabled ?? formField?.isDisabled ?? false;\n const switchId = id || formField?.id;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n onChange?.(e);\n onCheckedChange?.(e.target.checked);\n };\n\n return (\n <label className={cn('inline-flex items-center gap-3 select-none cursor-pointer', isDisabled && 'cursor-not-allowed opacity-50')}>\n <div className=\"relative flex items-center\">\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={switchId}\n disabled={isDisabled}\n checked={isChecked}\n onChange={handleChange}\n className=\"sr-only peer\"\n {...props}\n />\n <div\n data-state={isChecked ? 'checked' : 'unchecked'}\n className={cn(switchVariants({ size }), className)}\n >\n <span\n data-state={isChecked ? 'checked' : 'unchecked'}\n className={cn(switchThumbVariants({ size }))}\n />\n </div>\n </div>\n {label && <span className=\"text-sm font-medium text-[var(--ui-text-primary)]\">{label}</span>}\n </label>\n );\n }\n);\n\nSwitch.displayName = 'Switch';\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface SliderProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'defaultValue'> {\r\n value?: number;\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n showValue?: boolean;\r\n formatValue?: (val: number) => string;\r\n onChange?: (val: number) => void;\r\n}\r\n\r\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\r\n (\r\n {\r\n className,\r\n value: controlledValue,\r\n defaultValue = 0,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n showValue = false,\r\n formatValue = (v) => `${v}`,\r\n onChange,\r\n disabled,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [val, setVal] = React.useState<number>(defaultValue);\r\n const currentValue = controlledValue !== undefined ? controlledValue : val;\r\n\r\n const percentage = Math.min(100, Math.max(0, ((currentValue - min) / (max - min)) * 100));\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const num = Number(e.target.value);\r\n setVal(num);\r\n onChange?.(num);\r\n };\r\n\r\n return (\r\n <div className={cn('w-full flex items-center gap-4', className)}>\r\n <div className=\"relative w-full flex items-center h-6 select-none touch-none\">\r\n {/* Rail */}\r\n <div className=\"w-full h-2 rounded-full bg-[var(--ui-border-default)] overflow-hidden relative\">\r\n {/* Fill Track */}\r\n <div\r\n className=\"h-full bg-[var(--ui-primary)] transition-all duration-75\"\r\n style={{ width: `${percentage}%` }}\r\n />\r\n </div>\r\n\r\n <input\r\n ref={ref}\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={currentValue}\r\n disabled={disabled}\r\n onChange={handleChange}\r\n className=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer disabled:cursor-not-allowed\"\r\n {...props}\r\n />\r\n\r\n {/* Thumb visual */}\r\n <div\r\n className=\"absolute w-5 h-5 rounded-full bg-white border-2 border-[var(--ui-primary)] shadow-md pointer-events-none transition-transform duration-75 -translate-x-1/2\"\r\n style={{ left: `${percentage}%` }}\r\n />\r\n </div>\r\n\r\n {showValue && (\r\n <span className=\"text-xs font-semibold font-mono text-[var(--ui-text-secondary)] min-w-[2.5rem] text-right\">\r\n {formatValue(currentValue)}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSlider.displayName = 'Slider';\r\n","import React, { forwardRef, useState } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface RangeSliderProps {\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n value?: [number, number];\r\n defaultValue?: [number, number];\r\n onChange?: (val: [number, number]) => void;\r\n showValue?: boolean;\r\n formatValue?: (val: number) => string;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const RangeSlider = forwardRef<HTMLDivElement, RangeSliderProps>(\r\n (\r\n {\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n value: controlledValue,\r\n defaultValue = [20, 80],\r\n onChange,\r\n showValue = false,\r\n formatValue = (v) => `${v}`,\r\n className,\r\n disabled = false,\r\n },\r\n ref\r\n ) => {\r\n const [stateValue, setStateValue] = useState<[number, number]>(defaultValue);\r\n const [minVal, maxVal] = controlledValue || stateValue;\r\n\r\n const minPercentage = Math.min(100, Math.max(0, ((minVal - min) / (max - min)) * 100));\r\n const maxPercentage = Math.min(100, Math.max(0, ((maxVal - min) / (max - min)) * 100));\r\n\r\n const handleMinChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const val = Math.min(Number(e.target.value), maxVal - step);\r\n setStateValue([val, maxVal]);\r\n onChange?.([val, maxVal]);\r\n };\r\n\r\n const handleMaxChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const val = Math.max(Number(e.target.value), minVal + step);\r\n setStateValue([minVal, val]);\r\n onChange?.([minVal, val]);\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn('w-full flex items-center gap-4', className)}>\r\n <div className=\"relative w-full flex items-center h-6 select-none touch-none\">\r\n {/* Base rail */}\r\n <div className=\"w-full h-2 rounded-full bg-[var(--ui-border-default)] overflow-hidden relative\">\r\n {/* Active Range Fill */}\r\n <div\r\n className=\"absolute h-full bg-[var(--ui-primary)]\"\r\n style={{\r\n left: `${minPercentage}%`,\r\n width: `${maxPercentage - minPercentage}%`,\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Min thumb input */}\r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={minVal}\r\n disabled={disabled}\r\n onChange={handleMinChange}\r\n className=\"absolute inset-0 w-full h-full opacity-0 pointer-events-auto cursor-pointer z-20\"\r\n />\r\n\r\n {/* Max thumb input */}\r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={maxVal}\r\n disabled={disabled}\r\n onChange={handleMaxChange}\r\n className=\"absolute inset-0 w-full h-full opacity-0 pointer-events-auto cursor-pointer z-30\"\r\n />\r\n\r\n {/* Visual Thumbs */}\r\n <div\r\n className=\"absolute w-5 h-5 rounded-full bg-white border-2 border-[var(--ui-primary)] shadow-md pointer-events-none -translate-x-1/2 z-10\"\r\n style={{ left: `${minPercentage}%` }}\r\n />\r\n <div\r\n className=\"absolute w-5 h-5 rounded-full bg-white border-2 border-[var(--ui-primary)] shadow-md pointer-events-none -translate-x-1/2 z-10\"\r\n style={{ left: `${maxPercentage}%` }}\r\n />\r\n </div>\r\n\r\n {showValue && (\r\n <span className=\"text-xs font-semibold font-mono text-[var(--ui-text-secondary)] min-w-[5rem] text-right\">\r\n {formatValue(minVal)} - {formatValue(maxVal)}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nRangeSlider.displayName = 'RangeSlider';\r\n","import React, { forwardRef, useRef, useState, useEffect } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface PinInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n length?: number;\r\n value?: string;\r\n defaultValue?: string;\r\n onChange?: (val: string) => void;\r\n onComplete?: (val: string) => void;\r\n mask?: boolean;\r\n disabled?: boolean;\r\n isInvalid?: boolean;\r\n autoFocus?: boolean;\r\n}\r\n\r\nexport const PinInput = forwardRef<HTMLDivElement, PinInputProps>(\r\n (\r\n {\r\n className,\r\n length = 4,\r\n value: controlledValue,\r\n defaultValue = '',\r\n onChange,\r\n onComplete,\r\n mask = false,\r\n disabled = false,\r\n isInvalid = false,\r\n autoFocus = false,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [pins, setPins] = useState<string[]>(() => {\r\n const initial = (controlledValue !== undefined ? controlledValue : defaultValue).slice(0, length);\r\n return Array.from({ length }, (_, i) => initial[i] || '');\r\n });\r\n\r\n const inputsRef = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n if (controlledValue !== undefined) {\r\n setPins(Array.from({ length }, (_, i) => controlledValue[i] || ''));\r\n }\r\n }, [controlledValue, length]);\r\n\r\n useEffect(() => {\r\n if (autoFocus && inputsRef.current[0]) {\r\n inputsRef.current[0].focus();\r\n }\r\n }, [autoFocus]);\r\n\r\n const handleDigitChange = (index: number, val: string) => {\r\n const sanitized = val.replace(/[^0-9a-zA-Z]/g, '').slice(-1);\r\n const newPins = [...pins];\r\n newPins[index] = sanitized;\r\n setPins(newPins);\r\n\r\n const combined = newPins.join('');\r\n onChange?.(combined);\r\n\r\n if (sanitized && index < length - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n\r\n if (combined.length === length && !newPins.includes('')) {\r\n onComplete?.(combined);\r\n }\r\n };\r\n\r\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Backspace' && !pins[index] && index > 0) {\r\n inputsRef.current[index - 1]?.focus();\r\n }\r\n };\r\n\r\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\r\n e.preventDefault();\r\n const pasted = e.clipboardData.getData('text').slice(0, length);\r\n if (!pasted) return;\r\n\r\n const newPins = Array.from({ length }, (_, i) => pasted[i] || '');\r\n setPins(newPins);\r\n\r\n const combined = newPins.join('');\r\n onChange?.(combined);\r\n\r\n const nextEmptyIndex = newPins.findIndex((p) => !p);\r\n const focusIndex = nextEmptyIndex === -1 ? length - 1 : nextEmptyIndex;\r\n inputsRef.current[focusIndex]?.focus();\r\n\r\n if (combined.length === length && !newPins.includes('')) {\r\n onComplete?.(combined);\r\n }\r\n };\r\n\r\n return (\r\n <div ref={ref} role=\"group\" aria-label=\"PIN Code Input\" className={cn('flex items-center gap-2', className)} {...props}>\r\n {Array.from({ length }).map((_, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputsRef.current[index] = el;\r\n }}\r\n type={mask ? 'password' : 'text'}\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n disabled={disabled}\r\n value={pins[index]}\r\n onChange={(e) => handleDigitChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onPaste={handlePaste}\r\n className={cn(\r\n 'w-11 h-12 text-center text-lg font-bold font-mono rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)] text-[var(--ui-text-primary)] transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:opacity-50 disabled:cursor-not-allowed',\r\n isInvalid\r\n ? 'border-[var(--ui-error)] focus-visible:ring-[var(--ui-error)]'\r\n : 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)]'\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nPinInput.displayName = 'PinInput';\r\n","import React, { useEffect, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\n\r\nexport interface PortalProps {\r\n children: React.ReactNode;\r\n container?: Element | null;\r\n}\r\n\r\nexport function Portal({ children, container }: PortalProps) {\r\n const [mounted, setMounted] = useState(false);\r\n\r\n useEffect(() => {\r\n setMounted(true);\r\n return () => setMounted(false);\r\n }, []);\r\n\r\n if (!mounted) return null;\r\n\r\n const target = container || (typeof document !== 'undefined' ? document.body : null);\r\n if (!target) return null;\r\n\r\n return createPortal(children, target);\r\n}\r\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Portal } from './Portal';\nimport { cn } from '../utils/cn';\n\nexport interface PopoverProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n isOpen?: boolean;\n onClose?: () => void;\n placement?: 'top' | 'bottom' | 'left' | 'right';\n className?: string;\n}\n\nexport const Popover = ({\n trigger,\n children,\n isOpen: controlledIsOpen,\n onClose,\n placement = 'bottom',\n className,\n}: PopoverProps) => {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const isOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalIsOpen;\n\n const [coords, setCoords] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const popoverRef = useRef<HTMLDivElement | null>(null);\n\n const calculatePosition = () => {\n if (triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n let top = 0;\n let left = 0;\n\n if (placement === 'bottom') {\n top = rect.bottom + window.scrollY + 8;\n left = rect.left + window.scrollX;\n } else if (placement === 'top') {\n top = rect.top + window.scrollY - 8;\n left = rect.left + window.scrollX;\n } else if (placement === 'right') {\n top = rect.top + window.scrollY;\n left = rect.right + window.scrollX + 8;\n } else if (placement === 'left') {\n top = rect.top + window.scrollY;\n left = rect.left + window.scrollX - 8;\n }\n\n setCoords({ top, left });\n }\n };\n\n const handleToggle = () => {\n if (!isOpen) {\n calculatePosition();\n }\n if (controlledIsOpen !== undefined) {\n if (isOpen) onClose?.();\n } else {\n setInternalIsOpen(!internalIsOpen);\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n calculatePosition();\n }\n }, [isOpen]);\n\n useEffect(() => {\n const handleOutside = (e: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n if (controlledIsOpen !== undefined) {\n onClose?.();\n } else {\n setInternalIsOpen(false);\n }\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleOutside);\n window.addEventListener('resize', calculatePosition);\n window.addEventListener('scroll', calculatePosition);\n }\n return () => {\n document.removeEventListener('mousedown', handleOutside);\n window.removeEventListener('resize', calculatePosition);\n window.removeEventListener('scroll', calculatePosition);\n };\n }, [isOpen, controlledIsOpen, onClose]);\n\n return (\n <>\n <div ref={triggerRef} onClick={handleToggle} className=\"w-full inline-block cursor-pointer\">\n {trigger}\n </div>\n\n {isOpen && (\n <Portal>\n <div\n ref={popoverRef}\n style={{\n top: `${coords.top}px`,\n left: `${coords.left}px`,\n position: 'absolute',\n }}\n className={cn(\n 'z-50 min-w-[12rem] rounded-[var(--ui-radius-lg)] bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] p-4 text-[var(--ui-text-primary)] shadow-xl animate-in fade-in zoom-in-95',\n placement === 'top' && '-translate-y-full',\n placement === 'left' && '-translate-x-full',\n className\n )}\n >\n {children}\n </div>\n </Portal>\n )}\n </>\n );\n};\n","import React, { forwardRef, useState, useRef, useEffect } from 'react';\nimport { Calendar as CalendarIcon, Clock, ChevronLeft, ChevronRight, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { Button } from '../buttons/Button';\nimport { Popover } from '../overlays/Popover';\n\n// Utility helper to format date as YYYY-MM-DD\nexport function formatDate(d: Date | null | undefined): string {\n if (!d) return '';\n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\nexport function formatDisplayDate(d: Date | null | undefined): string {\n if (!d) return '';\n return d.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });\n}\n\nexport interface DatePickerProps {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n placeholder?: string;\n minDate?: Date;\n maxDate?: Date;\n disabled?: boolean;\n clearable?: boolean;\n className?: string;\n presets?: { label: string; date: Date }[];\n}\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = 'Select date...',\n minDate,\n maxDate,\n disabled = false,\n clearable = true,\n className,\n presets,\n },\n ref\n ) => {\n const [internalDate, setInternalDate] = useState<Date | null>(\n defaultValue !== undefined ? defaultValue : null\n );\n const selectedDate = controlledValue !== undefined ? controlledValue : internalDate;\n\n const [viewDate, setViewDate] = useState<Date>(selectedDate || new Date());\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (selectedDate) {\n setViewDate(selectedDate);\n }\n }, [selectedDate]);\n\n const handleSelectDate = (d: Date) => {\n setInternalDate(d);\n onChange?.(d);\n setIsOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n setInternalDate(null);\n onChange?.(null);\n };\n\n const prevMonth = () => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 1));\n };\n\n const nextMonth = () => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1));\n };\n\n // Calendar generation logic\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDayIndex = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const days: { date: Date; currentMonth: boolean; disabled: boolean }[] = [];\n\n // Prev month padding days\n for (let i = firstDayIndex - 1; i >= 0; i--) {\n const d = new Date(year, month - 1, daysInPrevMonth - i);\n const isDis = (minDate && d < minDate) || (maxDate && d > maxDate);\n days.push({ date: d, currentMonth: false, disabled: Boolean(isDis) });\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const d = new Date(year, month, i);\n const isDis = (minDate && d < minDate) || (maxDate && d > maxDate);\n days.push({ date: d, currentMonth: true, disabled: Boolean(isDis) });\n }\n\n // Next month padding days to complete grid of 35 or 42\n const totalSlots = days.length > 35 ? 42 : 35;\n const remainingSlots = totalSlots - days.length;\n for (let i = 1; i <= remainingSlots; i++) {\n const d = new Date(year, month + 1, i);\n const isDis = (minDate && d < minDate) || (maxDate && d > maxDate);\n days.push({ date: d, currentMonth: false, disabled: Boolean(isDis) });\n }\n\n const todayStr = formatDate(new Date());\n const selectedStr = selectedDate ? formatDate(selectedDate) : '';\n\n return (\n <div ref={ref} className={cn('relative inline-block w-full', className)}>\n <Popover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={cn(\n 'w-full h-10 px-3.5 rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)] text-left flex items-center justify-between text-sm transition-all shadow-inner cursor-pointer',\n disabled\n ? 'opacity-50 cursor-not-allowed border-[var(--ui-border-subtle)]'\n : 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] focus:ring-2 focus:ring-[var(--ui-primary)]/50'\n )}\n >\n <div className=\"flex items-center gap-2.5 truncate\">\n <CalendarIcon className=\"w-4 h-4 text-[var(--ui-text-muted)] shrink-0\" />\n <span className={selectedDate ? 'text-[var(--ui-text-primary)] font-medium' : 'text-[var(--ui-text-muted)]'}>\n {selectedDate ? formatDisplayDate(selectedDate) : placeholder}\n </span>\n </div>\n\n <div className=\"flex items-center gap-1 text-[var(--ui-text-muted)]\">\n {clearable && selectedDate && !disabled && (\n <span\n onClick={handleClear}\n className=\"p-1 rounded-full hover:bg-[var(--ui-bg-tertiary)] hover:text-[var(--ui-text-primary)] transition-colors\"\n >\n <X className=\"w-3.5 h-3.5\" />\n </span>\n )}\n </div>\n </button>\n }\n >\n <div className=\"p-4 w-72 rounded-2xl bg-[var(--ui-bg-surface)] backdrop-blur-2xl border border-[var(--ui-border-default)] shadow-2xl space-y-3\">\n {/* Header: Month Year + Prev/Next */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-bold text-[var(--ui-text-primary)] font-mono uppercase tracking-wider\">\n {viewDate.toLocaleString('default', { month: 'long', year: 'numeric' })}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"p-1 rounded-lg hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] transition-colors\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"p-1 rounded-lg hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] transition-colors\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n {/* Presets if provided */}\n {presets && presets.length > 0 && (\n <div className=\"flex flex-wrap gap-1 pb-2 border-b border-[var(--ui-border-subtle)]\">\n {presets.map((preset, idx) => (\n <button\n key={idx}\n type=\"button\"\n onClick={() => handleSelectDate(preset.date)}\n className=\"px-2 py-0.5 rounded-md text-[10px] font-semibold bg-[var(--ui-bg-secondary)] hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-secondary)] transition-colors\"\n >\n {preset.label}\n </button>\n ))}\n </div>\n )}\n\n {/* Weekday headers */}\n <div className=\"grid grid-cols-7 text-center text-[10px] font-bold text-[var(--ui-text-muted)] font-mono\">\n {['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'].map((d) => (\n <div key={d} className=\"py-1\">\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((item, idx) => {\n const itemStr = formatDate(item.date);\n const isSelected = itemStr === selectedStr;\n const isToday = itemStr === todayStr;\n\n return (\n <button\n key={idx}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleSelectDate(item.date)}\n className={cn(\n 'h-8 w-8 rounded-full text-xs font-semibold flex items-center justify-center transition-all cursor-pointer',\n item.disabled && 'opacity-25 cursor-not-allowed pointer-events-none',\n !item.currentMonth && 'text-[var(--ui-text-muted)] opacity-50',\n isSelected\n ? 'bg-[var(--ui-primary)] text-white font-bold shadow-md shadow-blue-500/30'\n : isToday\n ? 'border border-[var(--ui-primary)] text-[var(--ui-primary)]'\n : 'hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]'\n )}\n >\n {item.date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Popover>\n </div>\n );\n }\n);\nDatePicker.displayName = 'DatePicker';\n\n/* -------------------------------------------------------------------------------------------------\n * DateRangePicker Component\n * -----------------------------------------------------------------------------------------------*/\nexport interface DateRange {\n from: Date | null;\n to: Date | null;\n}\n\nexport interface DateRangePickerProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onChange?: (range: DateRange) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n ({ value: controlledVal, defaultValue, onChange, placeholder = 'Select date range...', className, disabled = false }, ref) => {\n const [internalRange, setInternalRange] = useState<DateRange>(\n defaultValue || { from: null, to: null }\n );\n const range = controlledVal || internalRange;\n const [viewDate, setViewDate] = useState<Date>(range.from || new Date());\n const [isOpen, setIsOpen] = useState(false);\n\n const handleDayClick = (d: Date) => {\n let next: DateRange;\n if (!range.from || (range.from && range.to)) {\n next = { from: d, to: null };\n } else {\n if (d < range.from) {\n next = { from: d, to: range.from };\n } else {\n next = { from: range.from, to: d };\n setIsOpen(false);\n }\n }\n setInternalRange(next);\n onChange?.(next);\n };\n\n const displayText =\n range.from && range.to\n ? `${formatDisplayDate(range.from)} – ${formatDisplayDate(range.to)}`\n : range.from\n ? `${formatDisplayDate(range.from)} – ...`\n : placeholder;\n\n // Calendar generation\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDayIndex = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n const days: Date[] = [];\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(new Date(year, month, i));\n }\n\n return (\n <div ref={ref} className={cn('relative inline-block w-full', className)}>\n <Popover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"w-full h-10 px-3.5 rounded-[var(--ui-radius-md)] border border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] bg-[var(--ui-bg-surface)] text-left flex items-center justify-between text-sm shadow-inner cursor-pointer\"\n >\n <div className=\"flex items-center gap-2.5 truncate\">\n <CalendarIcon className=\"w-4 h-4 text-[var(--ui-text-muted)] shrink-0\" />\n <span className={range.from ? 'text-[var(--ui-text-primary)] font-medium' : 'text-[var(--ui-text-muted)]'}>\n {displayText}\n </span>\n </div>\n </button>\n }\n >\n <div className=\"p-4 w-76 rounded-2xl bg-[var(--ui-bg-surface)] backdrop-blur-2xl border border-[var(--ui-border-default)] shadow-2xl space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-bold text-[var(--ui-text-primary)] font-mono uppercase tracking-wider\">\n {viewDate.toLocaleString('default', { month: 'long', year: 'numeric' })}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => setViewDate(new Date(year, month - 1, 1))}\n className=\"p-1 rounded-lg hover:bg-[var(--ui-bg-tertiary)]\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setViewDate(new Date(year, month + 1, 1))}\n className=\"p-1 rounded-lg hover:bg-[var(--ui-bg-tertiary)]\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-7 gap-1 text-center\">\n {Array.from({ length: firstDayIndex }).map((_, i) => (\n <div key={`empty-${i}`} />\n ))}\n {days.map((d, idx) => {\n const dStr = formatDate(d);\n const fromStr = range.from ? formatDate(range.from) : '';\n const toStr = range.to ? formatDate(range.to) : '';\n const isFrom = dStr === fromStr;\n const isTo = dStr === toStr;\n const isInRange =\n range.from && range.to && d > range.from && d < range.to;\n\n return (\n <button\n key={idx}\n type=\"button\"\n onClick={() => handleDayClick(d)}\n className={cn(\n 'h-8 w-8 rounded-full text-xs font-semibold flex items-center justify-center transition-all cursor-pointer',\n (isFrom || isTo) && 'bg-[var(--ui-primary)] text-white shadow-md',\n isInRange && 'bg-[var(--ui-primary)]/20 text-[var(--ui-primary)] rounded-none',\n !isFrom && !isTo && !isInRange && 'hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]'\n )}\n >\n {d.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Popover>\n </div>\n );\n }\n);\nDateRangePicker.displayName = 'DateRangePicker';\n\n/* -------------------------------------------------------------------------------------------------\n * TimePicker Component\n * -----------------------------------------------------------------------------------------------*/\nexport interface TimePickerProps {\n value?: string;\n defaultValue?: string;\n onChange?: (time: string) => void;\n format?: '12h' | '24h';\n className?: string;\n disabled?: boolean;\n}\n\nexport const TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n ({ value: controlledVal, defaultValue = '12:00', onChange, format = '24h', className, disabled = false }, ref) => {\n const [internalTime, setInternalTime] = useState(defaultValue);\n const time = controlledVal !== undefined ? controlledVal : internalTime;\n\n const [hours, setHours] = useState(time.split(':')[0] || '12');\n const [minutes, setMinutes] = useState(time.split(':')[1] || '00');\n const [isOpen, setIsOpen] = useState(false);\n\n const updateTime = (newH: string, newM: string) => {\n const full = `${newH.padStart(2, '0')}:${newM.padStart(2, '0')}`;\n setHours(newH);\n setMinutes(newM);\n setInternalTime(full);\n onChange?.(full);\n };\n\n return (\n <div ref={ref} className={cn('relative inline-block w-full', className)}>\n <Popover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"w-full h-10 px-3.5 rounded-[var(--ui-radius-md)] border border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] bg-[var(--ui-bg-surface)] text-left flex items-center justify-between text-sm shadow-inner cursor-pointer\"\n >\n <div className=\"flex items-center gap-2.5\">\n <Clock className=\"w-4 h-4 text-[var(--ui-text-muted)]\" />\n <span className=\"font-mono text-sm font-semibold text-[var(--ui-text-primary)]\">{time}</span>\n </div>\n </button>\n }\n >\n <div className=\"p-4 w-52 rounded-2xl bg-[var(--ui-bg-surface)] backdrop-blur-2xl border border-[var(--ui-border-default)] shadow-2xl space-y-3\">\n <span className=\"text-xs font-bold text-[var(--ui-text-muted)] uppercase tracking-wider font-mono\">\n Select Time ({format})\n </span>\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"h-36 overflow-y-auto border border-[var(--ui-border-subtle)] rounded-xl p-1 w-16 text-center space-y-1\">\n {Array.from({ length: 24 }).map((_, i) => {\n const h = String(i).padStart(2, '0');\n return (\n <div\n key={h}\n onClick={() => updateTime(h, minutes)}\n className={cn(\n 'text-xs py-1 rounded-lg font-mono font-semibold cursor-pointer transition-colors',\n hours === h\n ? 'bg-[var(--ui-primary)] text-white'\n : 'hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]'\n )}\n >\n {h}\n </div>\n );\n })}\n </div>\n <span className=\"text-sm font-bold\">:</span>\n <div className=\"h-36 overflow-y-auto border border-[var(--ui-border-subtle)] rounded-xl p-1 w-16 text-center space-y-1\">\n {['00', '05', '10', '15', '20', '25', '30', '35', '40', '41', '45', '50', '55'].map((m) => (\n <div\n key={m}\n onClick={() => updateTime(hours, m)}\n className={cn(\n 'text-xs py-1 rounded-lg font-mono font-semibold cursor-pointer transition-colors',\n minutes === m\n ? 'bg-[var(--ui-primary)] text-white'\n : 'hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]'\n )}\n >\n {m}\n </div>\n ))}\n </div>\n </div>\n </div>\n </Popover>\n </div>\n );\n }\n);\nTimePicker.displayName = 'TimePicker';\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { X } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const chipVariants = cva(\r\n 'inline-flex items-center gap-1.5 rounded-full font-medium transition-colors select-none',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)] border border-[var(--ui-border-default)]',\r\n primary: 'bg-[var(--ui-primary)]/15 text-[var(--ui-primary)] border border-[var(--ui-primary)]/30',\r\n secondary: 'bg-[var(--ui-secondary)]/15 text-[var(--ui-secondary)] border border-[var(--ui-secondary)]/30',\r\n success: 'bg-[var(--ui-success-subtle)] text-[var(--ui-success)] border border-[var(--ui-success)]/30',\r\n warning: 'bg-[var(--ui-warning-subtle)] text-[var(--ui-warning)] border border-[var(--ui-warning)]/30',\r\n error: 'bg-[var(--ui-error-subtle)] text-[var(--ui-error)] border border-[var(--ui-error)]/30',\r\n },\r\n size: {\r\n sm: 'h-6 px-2.5 text-xs',\r\n md: 'h-7 px-3 text-xs',\r\n lg: 'h-8 px-3.5 text-sm',\r\n },\r\n clickable: {\r\n true: 'cursor-pointer hover:opacity-80 active:scale-95',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n clickable: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface ChipProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof chipVariants> {\r\n onRemove?: () => void;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(\r\n ({ className, variant, size, clickable, onRemove, icon, children, onClick, ...props }, ref) => {\r\n const isClickable = Boolean(clickable || onClick);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n onClick={onClick}\r\n className={cn(chipVariants({ variant, size, clickable: isClickable }), className)}\r\n {...props}\r\n >\r\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\r\n <span>{children}</span>\r\n {onRemove && (\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onRemove();\r\n }}\r\n aria-label=\"Remove chip\"\r\n className=\"p-0.5 rounded-full hover:bg-black/10 dark:hover:bg-white/10 transition-colors -mr-1\"\r\n >\r\n <X className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nChip.displayName = 'Chip';\r\n","import React, { forwardRef, useState, useRef, useEffect, useId } from 'react';\nimport { Check, ChevronsUpDown, Search, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { Popover } from '../overlays/Popover';\nimport { Chip } from '../data-display/Chip';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n description?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (val: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n disabled?: boolean;\n clearable?: boolean;\n className?: string;\n}\n\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n options,\n value: controlledVal,\n defaultValue = '',\n onChange,\n placeholder = 'Select option...',\n searchPlaceholder = 'Search items...',\n emptyText = 'No items found.',\n disabled = false,\n clearable = true,\n className,\n },\n ref\n ) => {\n const [internalVal, setInternalVal] = useState(defaultValue);\n const selectedValue = controlledVal !== undefined ? controlledVal : internalVal;\n\n const [search, setSearch] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const [highlightIndex, setHighlightIndex] = useState(0);\n\n const filteredOptions = options.filter(\n (opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase()) ||\n opt.value.toLowerCase().includes(search.toLowerCase()) ||\n (opt.description && opt.description.toLowerCase().includes(search.toLowerCase()))\n );\n\n const selectedOption = options.find((opt) => opt.value === selectedValue);\n\n const handleSelect = (val: string) => {\n setInternalVal(val);\n onChange?.(val);\n setIsOpen(false);\n setSearch('');\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n setInternalVal('');\n onChange?.('');\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isOpen) {\n if (e.key === 'ArrowDown' || e.key === 'Enter') {\n setIsOpen(true);\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightIndex((prev) => (prev + 1) % Math.max(1, filteredOptions.length));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightIndex((prev) => (prev - 1 + filteredOptions.length) % Math.max(1, filteredOptions.length));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (filteredOptions[highlightIndex] && !filteredOptions[highlightIndex].disabled) {\n handleSelect(filteredOptions[highlightIndex].value);\n }\n } else if (e.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n return (\n <div ref={ref} className={cn('relative w-full', className)}>\n <Popover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n className={cn(\n 'w-full h-10 px-3.5 rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)] text-left flex items-center justify-between text-sm transition-all shadow-inner cursor-pointer',\n disabled\n ? 'opacity-50 cursor-not-allowed border-[var(--ui-border-subtle)]'\n : 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] focus:ring-2 focus:ring-[var(--ui-primary)]/50'\n )}\n >\n <div className=\"flex items-center gap-2.5 truncate\">\n {selectedOption?.icon}\n <span className={selectedOption ? 'text-[var(--ui-text-primary)] font-medium' : 'text-[var(--ui-text-muted)]'}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n </div>\n\n <div className=\"flex items-center gap-1 text-[var(--ui-text-muted)]\">\n {clearable && selectedValue && !disabled && (\n <span\n onClick={handleClear}\n className=\"p-1 rounded-full hover:bg-[var(--ui-bg-tertiary)] hover:text-[var(--ui-text-primary)] transition-colors\"\n >\n <X className=\"w-3.5 h-3.5\" />\n </span>\n )}\n <ChevronsUpDown className=\"w-4 h-4 opacity-50 shrink-0\" />\n </div>\n </button>\n }\n >\n <div className=\"p-2 w-72 rounded-2xl bg-[var(--ui-bg-surface)] backdrop-blur-2xl border border-[var(--ui-border-default)] shadow-2xl space-y-2\">\n <div className=\"relative flex items-center\">\n <Search className=\"absolute left-2.5 w-3.5 h-3.5 text-[var(--ui-text-muted)] pointer-events-none\" />\n <input\n type=\"text\"\n autoFocus\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setHighlightIndex(0);\n }}\n className=\"w-full h-8 pl-8 pr-3 text-xs rounded-xl bg-[var(--ui-bg-secondary)] border border-[var(--ui-border-subtle)] focus:outline-none focus:border-[var(--ui-primary)] text-[var(--ui-text-primary)] placeholder:text-[var(--ui-text-muted)]\"\n />\n </div>\n\n <div className=\"max-h-56 overflow-y-auto space-y-0.5\" role=\"listbox\">\n {filteredOptions.length === 0 ? (\n <div className=\"py-4 text-center text-xs text-[var(--ui-text-muted)]\">{emptyText}</div>\n ) : (\n filteredOptions.map((opt, idx) => {\n const isSelected = opt.value === selectedValue;\n const isHighlighted = idx === highlightIndex;\n\n return (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => !opt.disabled && handleSelect(opt.value)}\n onMouseEnter={() => setHighlightIndex(idx)}\n className={cn(\n 'flex items-center justify-between px-3 py-2 rounded-xl text-xs font-medium cursor-pointer transition-colors',\n opt.disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n isSelected\n ? 'bg-[var(--ui-primary)] text-white font-semibold shadow-xs'\n : isHighlighted\n ? 'bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]'\n : 'text-[var(--ui-text-primary)]'\n )}\n >\n <div className=\"flex items-center gap-2 truncate\">\n {opt.icon}\n <div>\n <span className=\"block truncate\">{opt.label}</span>\n {opt.description && (\n <span className={cn('text-[10px] block truncate', isSelected ? 'text-white/80' : 'text-[var(--ui-text-muted)]')}>\n {opt.description}\n </span>\n )}\n </div>\n </div>\n\n {isSelected && <Check className=\"w-3.5 h-3.5 shrink-0\" />}\n </div>\n );\n })\n )}\n </div>\n </div>\n </Popover>\n </div>\n );\n }\n);\nCombobox.displayName = 'Combobox';\n\n/* -------------------------------------------------------------------------------------------------\n * MultiSelect Component\n * -----------------------------------------------------------------------------------------------*/\nexport interface MultiSelectProps {\n options: ComboboxOption[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (val: string[]) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n maxCount?: number;\n disabled?: boolean;\n className?: string;\n}\n\nexport const MultiSelect = forwardRef<HTMLDivElement, MultiSelectProps>(\n (\n {\n options,\n value: controlledVal,\n defaultValue = [],\n onChange,\n placeholder = 'Select items...',\n searchPlaceholder = 'Search options...',\n maxCount = 3,\n disabled = false,\n className,\n },\n ref\n ) => {\n const [internalVal, setInternalVal] = useState<string[]>(defaultValue);\n const selectedValues = controlledVal !== undefined ? controlledVal : internalVal;\n\n const [search, setSearch] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n\n const filteredOptions = options.filter(\n (opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase()) ||\n opt.value.toLowerCase().includes(search.toLowerCase())\n );\n\n const toggleOption = (val: string) => {\n const next = selectedValues.includes(val)\n ? selectedValues.filter((v) => v !== val)\n : [...selectedValues, val];\n setInternalVal(next);\n onChange?.(next);\n };\n\n const removeTag = (val: string, e?: React.MouseEvent) => {\n e?.stopPropagation?.();\n const next = selectedValues.filter((v) => v !== val);\n setInternalVal(next);\n onChange?.(next);\n };\n\n const clearAll = (e?: React.MouseEvent) => {\n e?.stopPropagation?.();\n setInternalVal([]);\n onChange?.([]);\n };\n\n return (\n <div ref={ref} className={cn('relative w-full', className)}>\n <Popover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n trigger={\n <div\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={cn(\n 'min-h-10 py-1.5 px-3 rounded-[var(--ui-radius-md)] border bg-[var(--ui-bg-surface)] flex flex-wrap items-center justify-between gap-1.5 text-sm transition-all shadow-inner cursor-pointer',\n disabled\n ? 'opacity-50 cursor-not-allowed border-[var(--ui-border-subtle)]'\n : 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)]'\n )}\n >\n <div className=\"flex flex-wrap items-center gap-1.5 flex-1\">\n {selectedValues.length === 0 ? (\n <span className=\"text-[var(--ui-text-muted)] text-sm\">{placeholder}</span>\n ) : (\n <>\n {selectedValues.slice(0, maxCount).map((val) => {\n const opt = options.find((o) => o.value === val);\n return (\n <Chip\n key={val}\n size=\"sm\"\n variant=\"primary\"\n onRemove={() => removeTag(val, {} as any)}\n >\n {opt?.label || val}\n </Chip>\n );\n })}\n {selectedValues.length > maxCount && (\n <Chip size=\"sm\" variant=\"secondary\">\n +{selectedValues.length - maxCount} more\n </Chip>\n )}\n </>\n )}\n </div>\n\n <div className=\"flex items-center gap-1 text-[var(--ui-text-muted)]\">\n {selectedValues.length > 0 && !disabled && (\n <span\n onClick={clearAll}\n className=\"p-1 rounded-full hover:bg-[var(--ui-bg-tertiary)] hover:text-[var(--ui-text-primary)] transition-colors\"\n >\n <X className=\"w-3.5 h-3.5\" />\n </span>\n )}\n <ChevronsUpDown className=\"w-4 h-4 opacity-50 shrink-0\" />\n </div>\n </div>\n }\n >\n <div className=\"p-2 w-76 rounded-2xl bg-[var(--ui-bg-surface)] backdrop-blur-2xl border border-[var(--ui-border-default)] shadow-2xl space-y-2\">\n <div className=\"relative flex items-center\">\n <Search className=\"absolute left-2.5 w-3.5 h-3.5 text-[var(--ui-text-muted)] pointer-events-none\" />\n <input\n type=\"text\"\n autoFocus\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"w-full h-8 pl-8 pr-3 text-xs rounded-xl bg-[var(--ui-bg-secondary)] border border-[var(--ui-border-subtle)] focus:outline-none focus:border-[var(--ui-primary)] text-[var(--ui-text-primary)]\"\n />\n </div>\n\n <div className=\"max-h-56 overflow-y-auto space-y-0.5\">\n {filteredOptions.length === 0 ? (\n <div className=\"py-4 text-center text-xs text-[var(--ui-text-muted)]\">No options found.</div>\n ) : (\n filteredOptions.map((opt) => {\n const isChecked = selectedValues.includes(opt.value);\n return (\n <div\n key={opt.value}\n onClick={() => toggleOption(opt.value)}\n className={cn(\n 'flex items-center justify-between px-3 py-2 rounded-xl text-xs font-medium cursor-pointer transition-colors',\n isChecked\n ? 'bg-[var(--ui-primary)]/15 text-[var(--ui-primary)] font-semibold'\n : 'hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-primary)]'\n )}\n >\n <div className=\"flex items-center gap-2 truncate\">\n {opt.icon}\n <span>{opt.label}</span>\n </div>\n {isChecked && <Check className=\"w-3.5 h-3.5 text-[var(--ui-primary)] shrink-0\" />}\n </div>\n );\n })\n )}\n </div>\n </div>\n </Popover>\n </div>\n );\n }\n);\nMultiSelect.displayName = 'MultiSelect';\n","import React, { forwardRef, useState, useRef } from 'react';\nimport { UploadCloud, File, FileText, Image as ImageIcon, X, CheckCircle2, AlertCircle } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { ProgressBar } from '../feedback/ProgressBar';\nimport { Button } from '../buttons/Button';\n\nexport interface UploadedFile {\n id: string;\n file: File;\n name: string;\n size: number;\n type: string;\n progress?: number;\n status?: 'pending' | 'uploading' | 'completed' | 'error';\n previewUrl?: string;\n errorMessage?: string;\n}\n\nexport interface FileUploadProps {\n accept?: string;\n maxSizeMB?: number;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n onFilesSelected?: (files: File[]) => void;\n onFileRemove?: (fileId: string) => void;\n className?: string;\n label?: string;\n description?: string;\n}\n\nexport function formatFileSize(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\nexport const FileUpload = forwardRef<HTMLDivElement, FileUploadProps>(\n (\n {\n accept,\n maxSizeMB = 10,\n multiple = true,\n maxFiles = 5,\n disabled = false,\n onFilesSelected,\n onFileRemove,\n className,\n label = 'Drag & drop files here, or browse',\n description = 'Supports images, documents, and media up to 10MB',\n },\n ref\n ) => {\n const [isDragOver, setIsDragOver] = useState(false);\n const [fileList, setFileList] = useState<UploadedFile[]>([]);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const processFiles = (incoming: FileList | null) => {\n if (!incoming) return;\n\n const validFiles: File[] = [];\n const newUploaded: UploadedFile[] = [];\n\n Array.from(incoming).forEach((file) => {\n if (fileList.length + newUploaded.length >= maxFiles) return;\n\n const isOversized = file.size > maxSizeMB * 1024 * 1024;\n const fileObj: UploadedFile = {\n id: `${file.name}-${Date.now()}-${Math.random()}`,\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n progress: isOversized ? 0 : 100,\n status: isOversized ? 'error' : 'completed',\n errorMessage: isOversized ? `File exceeds ${maxSizeMB}MB limit` : undefined,\n previewUrl: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined,\n };\n\n newUploaded.push(fileObj);\n if (!isOversized) validFiles.push(file);\n });\n\n setFileList((prev) => [...prev, ...newUploaded]);\n if (validFiles.length > 0) {\n onFilesSelected?.(validFiles);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (!disabled) setIsDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n if (disabled) return;\n processFiles(e.dataTransfer.files);\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n processFiles(e.target.files);\n if (inputRef.current) inputRef.current.value = '';\n };\n\n const removeFile = (id: string) => {\n setFileList((prev) => prev.filter((f) => f.id !== id));\n onFileRemove?.(id);\n };\n\n return (\n <div ref={ref} className={cn('w-full space-y-4', className)}>\n {/* Dropzone Box */}\n <div\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => !disabled && inputRef.current?.click()}\n className={cn(\n 'relative rounded-2xl p-6 sm:p-8 text-center border-2 border-dashed transition-all cursor-pointer flex flex-col items-center justify-center gap-3 select-none',\n disabled\n ? 'opacity-50 cursor-not-allowed border-[var(--ui-border-subtle)] bg-[var(--ui-bg-secondary)]/30'\n : isDragOver\n ? 'border-[var(--ui-primary)] bg-[var(--ui-primary)]/10 shadow-lg shadow-blue-500/20 scale-[0.99]'\n : 'border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] bg-[var(--ui-bg-surface)]/60 hover:bg-[var(--ui-bg-secondary)]'\n )}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"hidden\"\n />\n\n <div className=\"w-12 h-12 rounded-2xl bg-[var(--ui-primary)]/15 text-[var(--ui-primary)] flex items-center justify-center shadow-inner\">\n <UploadCloud className=\"w-6 h-6\" />\n </div>\n\n <div className=\"space-y-1\">\n <h4 className=\"text-sm font-bold text-[var(--ui-text-primary)]\">{label}</h4>\n <p className=\"text-xs text-[var(--ui-text-muted)]\">{description}</p>\n </div>\n\n <Button size=\"xs\" variant=\"outline\" className=\"rounded-full px-4 mt-1 pointer-events-none\">\n Browse Files\n </Button>\n </div>\n\n {/* Uploaded Files List */}\n {fileList.length > 0 && (\n <div className=\"space-y-2\">\n <span className=\"text-xs font-mono font-bold text-[var(--ui-text-muted)] uppercase tracking-wider\">\n Files ({fileList.length}/{maxFiles})\n </span>\n\n <div className=\"space-y-2\">\n {fileList.map((item) => (\n <div\n key={item.id}\n className=\"p-3 rounded-2xl bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] flex items-center justify-between gap-3 shadow-xs animate-in fade-in duration-200\"\n >\n <div className=\"flex items-center gap-3 truncate\">\n {item.previewUrl ? (\n <img\n src={item.previewUrl}\n alt={item.name}\n className=\"w-10 h-10 rounded-xl object-cover border border-[var(--ui-border-subtle)] shrink-0\"\n />\n ) : (\n <div className=\"w-10 h-10 rounded-xl bg-[var(--ui-bg-tertiary)] flex items-center justify-center text-[var(--ui-text-muted)] shrink-0\">\n {item.type.includes('pdf') ? <FileText className=\"w-5 h-5\" /> : <File className=\"w-5 h-5\" />}\n </div>\n )}\n\n <div className=\"truncate space-y-0.5\">\n <span className=\"text-xs font-semibold text-[var(--ui-text-primary)] block truncate\">\n {item.name}\n </span>\n <div className=\"flex items-center gap-2 text-[11px] text-[var(--ui-text-muted)] font-mono\">\n <span>{formatFileSize(item.size)}</span>\n {item.status === 'completed' && (\n <span className=\"text-emerald-500 font-semibold flex items-center gap-0.5\">\n <CheckCircle2 className=\"w-3 h-3\" /> Ready\n </span>\n )}\n {item.status === 'error' && (\n <span className=\"text-rose-500 font-semibold flex items-center gap-0.5\">\n <AlertCircle className=\"w-3 h-3\" /> {item.errorMessage}\n </span>\n )}\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n onClick={() => removeFile(item.id)}\n className=\"p-1.5 rounded-full hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-muted)] hover:text-rose-500 transition-colors\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\nFileUpload.displayName = 'FileUpload';\n","import React, { forwardRef, useState, useEffect } from 'react';\nimport { Plus, Minus } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'defaultValue' | 'size'> {\n value?: number;\n defaultValue?: number;\n onChange?: (val: number) => void;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n size?: 'sm' | 'md' | 'lg';\n stepperPosition?: 'right' | 'split';\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value: controlledVal,\n defaultValue = 0,\n onChange,\n min = -Infinity,\n max = Infinity,\n step = 1,\n precision = 0,\n size = 'md',\n stepperPosition = 'right',\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const [internalVal, setInternalVal] = useState<number>(defaultValue);\n const value = controlledVal !== undefined ? controlledVal : internalVal;\n\n const clamp = (num: number) => {\n let clamped = Math.min(max, Math.max(min, num));\n if (precision > 0) {\n clamped = parseFloat(clamped.toFixed(precision));\n }\n return clamped;\n };\n\n const handleIncrement = () => {\n if (disabled) return;\n const next = clamp(value + step);\n setInternalVal(next);\n onChange?.(next);\n };\n\n const handleDecrement = () => {\n if (disabled) return;\n const next = clamp(value - step);\n setInternalVal(next);\n onChange?.(next);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n if (val === '' || val === '-') {\n return;\n }\n const parsed = parseFloat(val);\n if (!isNaN(parsed)) {\n const next = clamp(parsed);\n setInternalVal(next);\n onChange?.(next);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleIncrement();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleDecrement();\n }\n };\n\n const heightClass = size === 'sm' ? 'h-8 text-xs' : size === 'lg' ? 'h-12 text-base' : 'h-10 text-sm';\n\n if (stepperPosition === 'split') {\n return (\n <div className={cn('inline-flex items-center rounded-[var(--ui-radius-md)] border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)] overflow-hidden shadow-inner', className)}>\n <button\n type=\"button\"\n disabled={disabled || value <= min}\n onClick={handleDecrement}\n className=\"px-3 h-full flex items-center justify-center hover:bg-[var(--ui-bg-tertiary)] disabled:opacity-30 disabled:pointer-events-none text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] transition-colors border-r border-[var(--ui-border-subtle)]\"\n >\n <Minus className=\"w-3.5 h-3.5\" />\n </button>\n\n <input\n ref={ref}\n type=\"number\"\n value={value}\n disabled={disabled}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n className={cn('w-20 text-center font-mono font-semibold bg-transparent text-[var(--ui-text-primary)] focus:outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none', heightClass)}\n {...props}\n />\n\n <button\n type=\"button\"\n disabled={disabled || value >= max}\n onClick={handleIncrement}\n className=\"px-3 h-full flex items-center justify-center hover:bg-[var(--ui-bg-tertiary)] disabled:opacity-30 disabled:pointer-events-none text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] transition-colors border-l border-[var(--ui-border-subtle)]\"\n >\n <Plus className=\"w-3.5 h-3.5\" />\n </button>\n </div>\n );\n }\n\n return (\n <div className={cn('relative w-full inline-flex items-center', className)}>\n <input\n ref={ref}\n type=\"number\"\n value={value}\n disabled={disabled}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n className={cn(\n 'w-full rounded-[var(--ui-radius-md)] border border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] bg-[var(--ui-bg-surface)] px-3.5 pr-10 font-mono font-semibold text-[var(--ui-text-primary)] transition-all shadow-inner focus:outline-none focus:ring-2 focus:ring-[var(--ui-primary)]/50 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n heightClass,\n disabled && 'opacity-50 cursor-not-allowed'\n )}\n {...props}\n />\n\n <div className=\"absolute right-1 top-1 bottom-1 flex flex-col justify-center border-l border-[var(--ui-border-subtle)] pl-1 pr-1\">\n <button\n type=\"button\"\n disabled={disabled || value >= max}\n onClick={handleIncrement}\n className=\"px-1.5 h-1/2 flex items-center justify-center hover:bg-[var(--ui-bg-tertiary)] rounded-t text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] disabled:opacity-30 transition-colors\"\n >\n <Plus className=\"w-3 h-3\" />\n </button>\n <button\n type=\"button\"\n disabled={disabled || value <= min}\n onClick={handleDecrement}\n className=\"px-1.5 h-1/2 flex items-center justify-center hover:bg-[var(--ui-bg-tertiary)] rounded-b text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] disabled:opacity-30 transition-colors\"\n >\n <Minus className=\"w-3 h-3\" />\n </button>\n </div>\n </div>\n );\n }\n);\nNumberInput.displayName = 'NumberInput';\n\n/* -------------------------------------------------------------------------------------------------\n * CurrencyInput Component\n * -----------------------------------------------------------------------------------------------*/\nexport interface CurrencyInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'defaultValue'> {\n value?: number;\n defaultValue?: number;\n onChange?: (val: number) => void;\n currency?: 'USD' | 'VND' | 'EUR' | string;\n currencySymbol?: string;\n position?: 'prefix' | 'suffix';\n}\n\nexport function formatCurrencyString(val: number, separator = ','): string {\n if (isNaN(val)) return '0';\n const parts = val.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n return parts.join('.');\n}\n\nexport const CurrencyInput = forwardRef<HTMLInputElement, CurrencyInputProps>(\n (\n {\n value: controlledVal,\n defaultValue = 0,\n onChange,\n currency = 'USD',\n currencySymbol,\n position = 'prefix',\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const symbol = currencySymbol || (currency === 'VND' ? '₫' : currency === 'EUR' ? '€' : '$');\n const isSuffix = position === 'suffix' || currency === 'VND';\n\n const [internalVal, setInternalVal] = useState<number>(defaultValue);\n const value = controlledVal !== undefined ? controlledVal : internalVal;\n const [displayVal, setDisplayVal] = useState<string>(formatCurrencyString(value));\n\n useEffect(() => {\n setDisplayVal(formatCurrencyString(value));\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value.replace(/[^0-9.]/g, '');\n const parsed = parseFloat(raw);\n const num = isNaN(parsed) ? 0 : parsed;\n\n setDisplayVal(raw ? formatCurrencyString(num) : '');\n setInternalVal(num);\n onChange?.(num);\n };\n\n return (\n <div className={cn('relative w-full flex items-center', className)}>\n {!isSuffix && (\n <span className=\"absolute left-3.5 text-sm font-bold text-[var(--ui-text-muted)] pointer-events-none font-mono\">\n {symbol}\n </span>\n )}\n\n <input\n ref={ref}\n type=\"text\"\n value={displayVal}\n disabled={disabled}\n onChange={handleInputChange}\n className={cn(\n 'w-full h-10 rounded-[var(--ui-radius-md)] border border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] bg-[var(--ui-bg-surface)] px-3.5 font-mono font-bold text-sm text-[var(--ui-text-primary)] transition-all shadow-inner focus:outline-none focus:ring-2 focus:ring-[var(--ui-primary)]/50',\n !isSuffix && 'pl-8',\n isSuffix && 'pr-12',\n disabled && 'opacity-50 cursor-not-allowed'\n )}\n {...props}\n />\n\n {isSuffix && (\n <span className=\"absolute right-3.5 text-xs font-bold text-[var(--ui-text-muted)] pointer-events-none font-mono uppercase\">\n {currency}\n </span>\n )}\n </div>\n );\n }\n);\nCurrencyInput.displayName = 'CurrencyInput';\n","import React, { forwardRef, useState, useEffect } from 'react';\nimport { cn } from '../utils/cn';\n\nexport interface MaskedInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'defaultValue'> {\n mask: string; // e.g. '(###) ###-####' or '#### #### #### ####'\n maskChar?: string; // default '#'\n value?: string;\n defaultValue?: string;\n onValueChange?: (unmasked: string, formatted: string) => void;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\nexport function applyMask(rawVal: string, mask: string, maskChar = '#'): { formatted: string; unmasked: string } {\n const digitsOnly = rawVal.replace(/\\D/g, '');\n if (!digitsOnly) return { formatted: '', unmasked: '' };\n let formatted = '';\n let digitIndex = 0;\n\n for (let i = 0; i < mask.length; i++) {\n const char = mask[i];\n if (char === maskChar) {\n if (digitIndex < digitsOnly.length) {\n formatted += digitsOnly[digitIndex++];\n } else {\n break;\n }\n } else {\n if (digitIndex < digitsOnly.length) {\n formatted += char;\n }\n }\n }\n\n return { formatted, unmasked: digitsOnly };\n}\n\nexport const MaskedInput = forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n maskChar = '#',\n value: controlledVal,\n defaultValue = '',\n onValueChange,\n prefixIcon,\n suffixIcon,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const [internalVal, setInternalVal] = useState<string>(\n applyMask(defaultValue, mask, maskChar).formatted\n );\n const displayValue = controlledVal !== undefined ? applyMask(controlledVal, mask, maskChar).formatted : internalVal;\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { formatted, unmasked } = applyMask(e.target.value, mask, maskChar);\n setInternalVal(formatted);\n onValueChange?.(unmasked, formatted);\n };\n\n return (\n <div className={cn('relative w-full flex items-center', className)}>\n {prefixIcon && (\n <div className=\"absolute left-3.5 flex items-center pointer-events-none text-[var(--ui-text-muted)]\">\n {prefixIcon}\n </div>\n )}\n\n <input\n ref={ref}\n type=\"text\"\n value={displayValue}\n disabled={disabled}\n onChange={handleInputChange}\n className={cn(\n 'w-full h-10 rounded-[var(--ui-radius-md)] border border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] bg-[var(--ui-bg-surface)] px-3.5 font-mono text-sm text-[var(--ui-text-primary)] transition-all shadow-inner focus:outline-none focus:ring-2 focus:ring-[var(--ui-primary)]/50',\n prefixIcon && 'pl-9',\n suffixIcon && 'pr-9',\n disabled && 'opacity-50 cursor-not-allowed'\n )}\n {...props}\n />\n\n {suffixIcon && (\n <div className=\"absolute right-3.5 flex items-center pointer-events-none text-[var(--ui-text-muted)]\">\n {suffixIcon}\n </div>\n )}\n </div>\n );\n }\n);\nMaskedInput.displayName = 'MaskedInput';\n","export * from './Portal';\nexport * from './FocusTrap';\nexport * from './Modal';\nexport * from './AlertDialog';\nexport * from './Drawer';\nexport * from './Tooltip';\nexport * from './Popover';\nexport * from './Toast';\nexport * from './BottomSheet';\nexport * from './ContextMenu';\nexport * from './HoverCard';\n","import React, { useEffect, useRef } from 'react';\r\n\r\nexport interface FocusTrapProps {\r\n children: React.ReactNode;\r\n active?: boolean;\r\n}\r\n\r\nconst FOCUSABLE_SELECTOR =\r\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\r\n\r\nexport function FocusTrap({ children, active = true }: FocusTrapProps) {\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!active) return;\r\n\r\n const root = rootRef.current;\r\n if (!root) return;\r\n\r\n const focusable = root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\r\n const first = focusable[0];\r\n const last = focusable[focusable.length - 1];\r\n\r\n if (first) {\r\n first.focus();\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n if (e.shiftKey) {\r\n if (document.activeElement === first) {\r\n e.preventDefault();\r\n last?.focus();\r\n }\r\n } else {\r\n if (document.activeElement === last) {\r\n e.preventDefault();\r\n first?.focus();\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => window.removeEventListener('keydown', handleKeyDown);\r\n }, [active]);\r\n\r\n return <div ref={rootRef} className=\"contents\">{children}</div>;\r\n}\r\n","import React, { forwardRef, createContext, useContext, useEffect } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { X } from 'lucide-react';\r\nimport { Portal } from './Portal';\r\nimport { FocusTrap } from './FocusTrap';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface ModalContextType {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n closeOnOverlayClick?: boolean;\r\n}\r\n\r\nconst ModalContext = createContext<ModalContextType | null>(null);\r\n\r\nexport function useModal() {\r\n const context = useContext(ModalContext);\r\n if (!context) {\r\n throw new Error('Modal compound components must be used within a <Modal />');\r\n }\r\n return context;\r\n}\r\n\r\nexport interface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n closeOnEsc?: boolean;\r\n closeOnOverlayClick?: boolean;\r\n}\r\n\r\nexport function Modal({\r\n isOpen,\r\n onClose,\r\n children,\r\n closeOnEsc = true,\r\n closeOnOverlayClick = true,\r\n}: ModalProps) {\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (closeOnEsc && e.key === 'Escape') {\r\n onClose();\r\n }\r\n };\r\n\r\n const originalOverflow = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => {\r\n window.removeEventListener('keydown', handleKeyDown);\r\n document.body.style.overflow = originalOverflow;\r\n };\r\n }, [isOpen, closeOnEsc, onClose]);\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <Portal>\r\n <ModalContext.Provider value={{ isOpen, onClose, closeOnOverlayClick }}>\r\n <FocusTrap active={isOpen}>\r\n <div\r\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n {children}\r\n </div>\r\n </FocusTrap>\r\n </ModalContext.Provider>\r\n </Portal>\r\n );\r\n}\r\n\r\nexport interface ModalOverlayProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport const ModalOverlay = forwardRef<HTMLDivElement, ModalOverlayProps>(\r\n ({ className, onClick, ...props }, ref) => {\r\n const { onClose, closeOnOverlayClick } = useModal();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n aria-hidden=\"true\"\r\n onClick={(e) => {\r\n onClick?.(e);\r\n if (closeOnOverlayClick) onClose();\r\n }}\r\n className={cn(\r\n 'fixed inset-0 bg-[var(--ui-bg-overlay)] backdrop-blur-sm transition-opacity animate-in fade-in duration-200',\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nModalOverlay.displayName = 'ModalOverlay';\r\n\r\nexport const modalContentVariants = cva(\r\n 'relative w-full max-w-lg rounded-[var(--ui-radius-xl)] bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] p-6 text-[var(--ui-text-primary)] shadow-2xl transition-all animate-in zoom-in-95 duration-200 z-10',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n xl: 'max-w-xl',\r\n '2xl': 'max-w-2xl',\r\n full: 'max-w-[calc(100vw-2rem)] h-[calc(100vh-2rem)]',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface ModalContentProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof modalContentVariants> {}\r\n\r\nexport const ModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\r\n ({ className, size, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(modalContentVariants({ size }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nModalContent.displayName = 'ModalContent';\r\n\r\nexport const ModalHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('flex flex-col space-y-1.5 mb-4', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nModalHeader.displayName = 'ModalHeader';\r\n\r\nexport const ModalTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <h2 ref={ref} className={cn('text-lg sm:text-xl font-bold tracking-tight text-[var(--ui-text-primary)]', className)} {...props}>\r\n {children}\r\n </h2>\r\n );\r\n }\r\n);\r\nModalTitle.displayName = 'ModalTitle';\r\n\r\nexport const ModalDescription = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <p ref={ref} className={cn('text-sm text-[var(--ui-text-muted)]', className)} {...props}>\r\n {children}\r\n </p>\r\n );\r\n }\r\n);\r\nModalDescription.displayName = 'ModalDescription';\r\n\r\nexport const ModalBody = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('py-2', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nModalBody.displayName = 'ModalBody';\r\n\r\nexport const ModalFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('flex items-center justify-end gap-3 mt-6 pt-4 border-t border-[var(--ui-border-subtle)]', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nModalFooter.displayName = 'ModalFooter';\r\n\r\nexport const ModalCloseButton = forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\r\n ({ className, onClick, ...props }, ref) => {\r\n const { onClose } = useModal();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n onClick={(e) => {\r\n onClick?.(e);\r\n onClose();\r\n }}\r\n aria-label=\"Close dialog\"\r\n className={cn(\r\n 'absolute top-4 right-4 p-1.5 rounded-full text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)] transition-colors',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <X className=\"w-4 h-4\" />\r\n </button>\r\n );\r\n }\r\n);\r\nModalCloseButton.displayName = 'ModalCloseButton';\r\n","import React, { forwardRef } from 'react';\r\nimport { Modal, ModalOverlay, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalFooter, ModalCloseButton } from './Modal';\r\nimport { Button } from '../buttons/Button';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface AlertDialogProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n onConfirm: () => void;\r\n title: string;\r\n description: string;\r\n confirmText?: string;\r\n cancelText?: string;\r\n variant?: 'danger' | 'primary';\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function AlertDialog({\r\n isOpen,\r\n onClose,\r\n onConfirm,\r\n title,\r\n description,\r\n confirmText = 'Confirm',\r\n cancelText = 'Cancel',\r\n variant = 'danger',\r\n isLoading = false,\r\n}: AlertDialogProps) {\r\n return (\r\n <Modal isOpen={isOpen} onClose={onClose}>\r\n <ModalOverlay />\r\n <ModalContent size=\"sm\">\r\n <ModalCloseButton />\r\n <ModalHeader>\r\n <ModalTitle>{title}</ModalTitle>\r\n <ModalDescription>{description}</ModalDescription>\r\n </ModalHeader>\r\n <ModalFooter>\r\n <Button variant=\"outline\" size=\"sm\" onClick={onClose} disabled={isLoading}>\r\n {cancelText}\r\n </Button>\r\n <Button\r\n variant={variant === 'danger' ? 'danger' : 'primary'}\r\n size=\"sm\"\r\n loading={isLoading}\r\n onClick={onConfirm}\r\n >\r\n {confirmText}\r\n </Button>\r\n </ModalFooter>\r\n </ModalContent>\r\n </Modal>\r\n );\r\n}\r\n","import React, { forwardRef, createContext, useContext, useEffect } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { X } from 'lucide-react';\r\nimport { Portal } from './Portal';\r\nimport { FocusTrap } from './FocusTrap';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface DrawerContextType {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst DrawerContext = createContext<DrawerContextType | null>(null);\r\n\r\nexport function useDrawer() {\r\n const context = useContext(DrawerContext);\r\n if (!context) {\r\n throw new Error('Drawer compound components must be used within a <Drawer />');\r\n }\r\n return context;\r\n}\r\n\r\nexport const drawerVariants = cva(\r\n 'fixed z-50 bg-[var(--ui-bg-surface)] text-[var(--ui-text-primary)] border-[var(--ui-border-default)] shadow-2xl transition-transform duration-300 ease-in-out flex flex-col',\r\n {\r\n variants: {\r\n placement: {\r\n right: 'inset-y-0 right-0 h-full w-full sm:max-w-md border-l animate-in slide-in-from-right',\r\n left: 'inset-y-0 left-0 h-full w-full sm:max-w-md border-r animate-in slide-in-from-left',\r\n top: 'inset-x-0 top-0 w-full max-h-[80vh] border-b animate-in slide-in-from-top',\r\n bottom: 'inset-x-0 bottom-0 w-full max-h-[80vh] border-t rounded-t-[var(--ui-radius-xl)] animate-in slide-in-from-bottom',\r\n },\r\n },\r\n defaultVariants: {\r\n placement: 'right',\r\n },\r\n }\r\n);\r\n\r\nexport interface DrawerProps extends VariantProps<typeof drawerVariants> {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n closeOnEsc?: boolean;\r\n}\r\n\r\nexport function Drawer({\r\n isOpen,\r\n onClose,\r\n placement = 'right',\r\n children,\r\n closeOnEsc = true,\r\n}: DrawerProps) {\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (closeOnEsc && e.key === 'Escape') {\r\n onClose();\r\n }\r\n };\r\n\r\n const originalOverflow = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => {\r\n window.removeEventListener('keydown', handleKeyDown);\r\n document.body.style.overflow = originalOverflow;\r\n };\r\n }, [isOpen, closeOnEsc, onClose]);\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <Portal>\r\n <DrawerContext.Provider value={{ isOpen, onClose }}>\r\n <FocusTrap active={isOpen}>\r\n <div className=\"fixed inset-0 z-50 overflow-hidden\">\r\n {/* Backdrop */}\r\n <div\r\n aria-hidden=\"true\"\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-[var(--ui-bg-overlay)] backdrop-blur-sm transition-opacity animate-in fade-in duration-200\"\r\n />\r\n {/* Drawer Panel */}\r\n <div className={cn(drawerVariants({ placement }))}>\r\n {children}\r\n </div>\r\n </div>\r\n </FocusTrap>\r\n </DrawerContext.Provider>\r\n </Portal>\r\n );\r\n}\r\n\r\nexport const DrawerHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { onClose } = useDrawer();\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn('flex items-center justify-between p-5 border-b border-[var(--ui-border-subtle)]', className)}\r\n {...props}\r\n >\r\n <div className=\"flex-1\">{children}</div>\r\n <button\r\n type=\"button\"\r\n onClick={onClose}\r\n aria-label=\"Close drawer\"\r\n className=\"p-1.5 rounded-full text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)] transition-colors ml-4\"\r\n >\r\n <X className=\"w-4 h-4\" />\r\n </button>\r\n </div>\r\n );\r\n }\r\n);\r\nDrawerHeader.displayName = 'DrawerHeader';\r\n\r\nexport const DrawerBody = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('flex-1 p-5 overflow-y-auto', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nDrawerBody.displayName = 'DrawerBody';\r\n\r\nexport const DrawerFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn('p-4 border-t border-[var(--ui-border-subtle)] bg-[var(--ui-bg-secondary)] flex items-center justify-end gap-3', className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nDrawerFooter.displayName = 'DrawerFooter';\r\n","import React, { useState, useRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Portal } from './Portal';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const tooltipVariants = cva(\r\n 'z-50 overflow-hidden rounded-[var(--ui-radius-sm)] bg-[var(--ui-bg-primary)] border border-[var(--ui-border-default)] px-2.5 py-1 text-xs font-medium text-[var(--ui-text-primary)] shadow-md animate-in fade-in zoom-in-95 pointer-events-none select-none',\r\n {\r\n variants: {\r\n placement: {\r\n top: '-translate-x-1/2 -translate-y-full mb-1.5',\r\n bottom: '-translate-x-1/2 mt-1.5',\r\n left: '-translate-x-full -translate-y-1/2 mr-1.5',\r\n right: 'translate-y-[-50%] ml-1.5',\r\n },\r\n },\r\n defaultVariants: {\r\n placement: 'top',\r\n },\r\n }\r\n);\r\n\r\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\r\n content: React.ReactNode;\r\n children: React.ReactNode;\r\n delayDuration?: number;\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({\r\n content,\r\n children,\r\n placement = 'top',\r\n delayDuration = 200,\r\n className,\r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [coords, setCoords] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const triggerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const handleMouseEnter = () => {\r\n timeoutRef.current = setTimeout(() => {\r\n if (triggerRef.current) {\r\n const rect = triggerRef.current.getBoundingClientRect();\r\n let top = 0;\r\n let left = 0;\r\n\r\n if (placement === 'top') {\r\n top = rect.top + window.scrollY;\r\n left = rect.left + rect.width / 2 + window.scrollX;\r\n } else if (placement === 'bottom') {\r\n top = rect.bottom + window.scrollY;\r\n left = rect.left + rect.width / 2 + window.scrollX;\r\n } else if (placement === 'left') {\r\n top = rect.top + rect.height / 2 + window.scrollY;\r\n left = rect.left + window.scrollX;\r\n } else if (placement === 'right') {\r\n top = rect.top + rect.height / 2 + window.scrollY;\r\n left = rect.right + window.scrollX;\r\n }\r\n\r\n setCoords({ top, left });\r\n setIsVisible(true);\r\n }\r\n }, delayDuration);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n ref={triggerRef}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n onFocus={handleMouseEnter}\r\n onBlur={handleMouseLeave}\r\n className=\"inline-flex cursor-pointer\"\r\n >\r\n {children}\r\n </div>\r\n\r\n {isVisible && (\r\n <Portal>\r\n <div\r\n style={{ top: `${coords.top}px`, left: `${coords.left}px`, position: 'absolute' }}\r\n role=\"tooltip\"\r\n className={cn(tooltipVariants({ placement }), className)}\r\n >\r\n {content}\r\n </div>\r\n </Portal>\r\n )}\r\n </>\r\n );\r\n}\r\n","import React, { createContext, useContext, useState, useCallback } from 'react';\r\nimport { cva } from 'class-variance-authority';\r\nimport { CheckCircle2, AlertTriangle, AlertCircle, Info, X } from 'lucide-react';\r\nimport { Portal } from './Portal';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport type ToastType = 'info' | 'success' | 'warning' | 'error';\r\n\r\nexport interface ToastOptions {\r\n id?: string;\r\n title: string;\r\n description?: string;\r\n type?: ToastType;\r\n duration?: number;\r\n}\r\n\r\nexport interface ToastItem extends ToastOptions {\r\n id: string;\r\n}\r\n\r\ninterface ToastContextType {\r\n toast: (options: ToastOptions) => string;\r\n dismiss: (id: string) => void;\r\n toasts: ToastItem[];\r\n}\r\n\r\nconst ToastContext = createContext<ToastContextType | null>(null);\r\n\r\nexport function useToast() {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error('useToast must be used within a ToasterProvider');\r\n }\r\n return context;\r\n}\r\n\r\nexport const toastVariants = cva(\r\n 'pointer-events-auto flex w-full max-w-md items-start gap-3 rounded-[var(--ui-radius-lg)] border p-4 shadow-lg transition-all animate-in slide-in-from-bottom-5 duration-300',\r\n {\r\n variants: {\r\n type: {\r\n info: 'bg-[var(--ui-bg-surface)] border-[var(--ui-info)]/30 text-[var(--ui-text-primary)]',\r\n success: 'bg-[var(--ui-bg-surface)] border-[var(--ui-success)]/30 text-[var(--ui-text-primary)]',\r\n warning: 'bg-[var(--ui-bg-surface)] border-[var(--ui-warning)]/30 text-[var(--ui-text-primary)]',\r\n error: 'bg-[var(--ui-bg-surface)] border-[var(--ui-error)]/30 text-[var(--ui-text-primary)]',\r\n },\r\n },\r\n defaultVariants: {\r\n type: 'info',\r\n },\r\n }\r\n);\r\n\r\nconst toastIcons: Record<ToastType, React.ReactNode> = {\r\n info: <Info className=\"w-5 h-5 text-[var(--ui-info)] flex-shrink-0\" />,\r\n success: <CheckCircle2 className=\"w-5 h-5 text-[var(--ui-success)] flex-shrink-0\" />,\r\n warning: <AlertTriangle className=\"w-5 h-5 text-[var(--ui-warning)] flex-shrink-0\" />,\r\n error: <AlertCircle className=\"w-5 h-5 text-[var(--ui-error)] flex-shrink-0\" />,\r\n};\r\n\r\nexport interface ToasterProviderProps {\r\n children: React.ReactNode;\r\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\r\n}\r\n\r\nexport function ToasterProvider({ children, position = 'bottom-right' }: ToasterProviderProps) {\r\n const [toasts, setToasts] = useState<ToastItem[]>([]);\r\n\r\n const dismiss = useCallback((id: string) => {\r\n setToasts((prev) => prev.filter((t) => t.id !== id));\r\n }, []);\r\n\r\n const toast = useCallback(\r\n ({ id = Math.random().toString(36).slice(2, 9), title, description, type = 'info', duration = 4000 }: ToastOptions) => {\r\n const item: ToastItem = { id, title, description, type, duration };\r\n\r\n setToasts((prev) => [...prev, item]);\r\n\r\n if (duration > 0) {\r\n setTimeout(() => {\r\n dismiss(id);\r\n }, duration);\r\n }\r\n\r\n return id;\r\n },\r\n [dismiss]\r\n );\r\n\r\n const getPositionClasses = () => {\r\n switch (position) {\r\n case 'top-left':\r\n return 'top-4 left-4 items-start';\r\n case 'top-center':\r\n return 'top-4 left-1/2 -translate-x-1/2 items-center';\r\n case 'top-right':\r\n return 'top-4 right-4 items-end';\r\n case 'bottom-left':\r\n return 'bottom-4 left-4 items-start';\r\n case 'bottom-center':\r\n return 'bottom-4 left-1/2 -translate-x-1/2 items-center';\r\n case 'bottom-right':\r\n default:\r\n return 'bottom-4 right-4 items-end';\r\n }\r\n };\r\n\r\n return (\r\n <ToastContext.Provider value={{ toast, dismiss, toasts }}>\r\n {children}\r\n <Portal>\r\n <div\r\n aria-live=\"polite\"\r\n className={cn('fixed z-[100] flex flex-col gap-2 pointer-events-none p-4 w-full max-w-sm sm:max-w-md', getPositionClasses())}\r\n >\r\n {toasts.map((t) => (\r\n <div key={t.id} className={cn(toastVariants({ type: t.type }))}>\r\n {toastIcons[t.type || 'info']}\r\n <div className=\"flex-1 space-y-1\">\r\n <h4 className=\"text-sm font-semibold text-[var(--ui-text-primary)]\">{t.title}</h4>\r\n {t.description && <p className=\"text-xs text-[var(--ui-text-muted)]\">{t.description}</p>}\r\n </div>\r\n <button\r\n type=\"button\"\r\n onClick={() => dismiss(t.id)}\r\n aria-label=\"Dismiss toast\"\r\n className=\"p-1 rounded text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)] transition-colors\"\r\n >\r\n <X className=\"w-3.5 h-3.5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n </Portal>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n","import React, { forwardRef, useEffect, useRef } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { Portal } from './Portal';\nimport { FocusTrap } from './FocusTrap';\n\nexport interface BottomSheetProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n title?: string;\n description?: string;\n className?: string;\n showHandle?: boolean;\n maxHeight?: string;\n}\n\nexport const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(\n (\n {\n isOpen,\n onClose,\n children,\n title,\n description,\n className,\n showHandle = true,\n maxHeight = 'max-h-[85vh]',\n },\n ref\n ) => {\n const sheetRef = useRef<HTMLDivElement | null>(null);\n\n // Escape key listener\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <FocusTrap active={isOpen}>\n <div className=\"fixed inset-0 z-50 flex flex-col justify-end\">\n {/* Backdrop */}\n <div\n onClick={onClose}\n className=\"fixed inset-0 bg-black/60 backdrop-blur-md transition-opacity animate-in fade-in duration-300\"\n aria-hidden=\"true\"\n />\n\n {/* Slide-up Sheet Panel */}\n <div\n ref={ref}\n className={cn(\n 'relative z-50 w-full max-w-2xl mx-auto rounded-t-[2rem] border-t border-x border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)] backdrop-blur-3xl shadow-2xl overflow-hidden flex flex-col transition-transform animate-in slide-in-from-bottom duration-300',\n maxHeight,\n className\n )}\n >\n {/* Drag Handle */}\n {showHandle && (\n <div\n onClick={onClose}\n className=\"w-full py-3 flex items-center justify-center cursor-grab active:cursor-grabbing\"\n >\n <div className=\"w-12 h-1.5 rounded-full bg-[var(--ui-text-muted)]/40 hover:bg-[var(--ui-text-muted)] transition-colors\" />\n </div>\n )}\n\n {/* Header */}\n {(title || description) && (\n <div className=\"px-6 pb-3 flex items-center justify-between border-b border-[var(--ui-border-subtle)]\">\n <div>\n {title && <h3 className=\"text-base font-bold tracking-tight text-[var(--ui-text-primary)]\">{title}</h3>}\n {description && <p className=\"text-xs text-[var(--ui-text-muted)]\">{description}</p>}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1.5 rounded-full hover:bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] transition-colors\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n )}\n\n {/* Content Body */}\n <div className=\"p-6 overflow-y-auto flex-1 space-y-4\">\n {children}\n </div>\n </div>\n </div>\n </FocusTrap>\n </Portal>\n );\n }\n);\nBottomSheet.displayName = 'BottomSheet';\n\nexport const BottomSheetHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({ className, children, ...props }) => (\n <div className={cn('px-6 pb-2', className)} {...props}>\n {children}\n </div>\n);\n\nexport const BottomSheetBody: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({ className, children, ...props }) => (\n <div className={cn('px-6 py-2 overflow-y-auto', className)} {...props}>\n {children}\n </div>\n);\n\nexport const BottomSheetFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({ className, children, ...props }) => (\n <div className={cn('p-6 pt-3 border-t border-[var(--ui-border-subtle)] flex items-center justify-end gap-3', className)} {...props}>\n {children}\n </div>\n);\n","import React, { useState, useEffect, useRef, forwardRef } from 'react';\nimport { cn } from '../utils/cn';\nimport { Portal } from './Portal';\nimport { Kbd } from '../typography/Kbd';\n\nexport interface ContextMenuItemProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n shortcut?: string;\n disabled?: boolean;\n destructive?: boolean;\n onSelect?: () => void;\n}\n\nexport const ContextMenuItem: React.FC<ContextMenuItemProps> = ({\n icon,\n shortcut,\n disabled = false,\n destructive = false,\n onSelect,\n children,\n className,\n ...props\n}) => {\n return (\n <div\n role=\"menuitem\"\n aria-disabled={disabled}\n onClick={() => {\n if (!disabled) onSelect?.();\n }}\n className={cn(\n 'flex items-center justify-between px-3 py-1.5 rounded-xl text-xs font-medium cursor-pointer transition-colors select-none',\n disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n destructive\n ? 'text-rose-500 hover:bg-rose-500/10'\n : 'text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)]',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2 truncate\">\n {icon && <span className=\"w-4 h-4 shrink-0\">{icon}</span>}\n <span className=\"truncate\">{children}</span>\n </div>\n\n {shortcut && <Kbd className=\"text-[10px] py-0 px-1\">{shortcut}</Kbd>}\n </div>\n );\n};\n\nexport const ContextMenuSeparator: React.FC = () => (\n <div className=\"h-px my-1 bg-[var(--ui-border-subtle)]\" role=\"separator\" />\n);\n\nexport interface ContextMenuProps {\n children: React.ReactNode;\n menuContent: React.ReactNode;\n className?: string;\n}\n\nexport const ContextMenu = forwardRef<HTMLDivElement, ContextMenuProps>(\n ({ children, menuContent, className }, ref) => {\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState<{ x: number; y: number }>({ x: 0, y: 0 });\n const menuRef = useRef<HTMLDivElement | null>(null);\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const x = Math.min(window.innerWidth - 220, e.clientX);\n const y = Math.min(window.innerHeight - 260, e.clientY);\n setPosition({ x, y });\n setIsOpen(true);\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setIsOpen(false);\n };\n\n if (isOpen) {\n window.addEventListener('click', handleClickOutside);\n window.addEventListener('contextmenu', handleClickOutside);\n window.addEventListener('keydown', handleKeyDown);\n }\n return () => {\n window.removeEventListener('click', handleClickOutside);\n window.removeEventListener('contextmenu', handleClickOutside);\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [isOpen]);\n\n return (\n <>\n <div ref={ref} onContextMenu={handleContextMenu} className={className}>\n {children}\n </div>\n\n {isOpen && (\n <Portal>\n <div\n ref={menuRef}\n style={{ top: `${position.y}px`, left: `${position.x}px` }}\n onClick={() => setIsOpen(false)}\n className=\"fixed z-50 min-w-48 p-1.5 rounded-2xl bg-[var(--ui-bg-surface)]/90 backdrop-blur-3xl border border-[var(--ui-border-default)] shadow-2xl space-y-0.5 animate-in fade-in zoom-in-95 duration-150\"\n >\n {menuContent}\n </div>\n </Portal>\n )}\n </>\n );\n }\n);\nContextMenu.displayName = 'ContextMenu';\n","import React, { useState, useRef, forwardRef } from 'react';\nimport { cn } from '../utils/cn';\nimport { Portal } from './Portal';\n\nexport interface HoverCardProps {\n trigger: React.ReactNode;\n content: React.ReactNode;\n openDelay?: number;\n closeDelay?: number;\n className?: string;\n}\n\nexport const HoverCard = forwardRef<HTMLDivElement, HoverCardProps>(\n ({ trigger, content, openDelay = 200, closeDelay = 250, className }, ref) => {\n const [isOpen, setIsOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const openTimerRef = useRef<any>(null);\n const closeTimerRef = useRef<any>(null);\n\n const handleMouseEnter = () => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = setTimeout(() => {\n if (triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n setCoords({\n top: rect.bottom + window.scrollY + 8,\n left: Math.max(16, Math.min(window.innerWidth - 320, rect.left + window.scrollX)),\n });\n setIsOpen(true);\n }\n }, openDelay);\n };\n\n const handleMouseLeave = () => {\n clearTimeout(openTimerRef.current);\n closeTimerRef.current = setTimeout(() => {\n setIsOpen(false);\n }, closeDelay);\n };\n\n return (\n <div\n ref={ref}\n className=\"inline-block relative\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div ref={triggerRef} className=\"inline-block\">\n {trigger}\n </div>\n\n {isOpen && (\n <Portal>\n <div\n style={{ top: `${coords.top}px`, left: `${coords.left}px` }}\n onMouseEnter={() => clearTimeout(closeTimerRef.current)}\n onMouseLeave={handleMouseLeave}\n className={cn(\n 'fixed z-50 w-72 p-4 rounded-2xl bg-[var(--ui-bg-surface)] backdrop-blur-3xl border border-[var(--ui-border-default)] shadow-2xl animate-in fade-in zoom-in-95 duration-200',\n className\n )}\n >\n {content}\n </div>\n </Portal>\n )}\n </div>\n );\n }\n);\nHoverCard.displayName = 'HoverCard';\n","export * from './Tabs';\r\nexport * from './Breadcrumb';\r\nexport * from './Pagination';\r\nexport * from './Stepper';\r\nexport * from './DropdownMenu';\r\nexport * from './CommandPalette';\r\n","import React, { createContext, useContext, useState, forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface TabsContextType {\r\n activeTab: string;\r\n setActiveTab: (tab: string) => void;\r\n variant?: 'pills' | 'line' | 'enclosed';\r\n}\r\n\r\nconst TabsContext = createContext<TabsContextType | null>(null);\r\n\r\nexport function useTabs() {\r\n const context = useContext(TabsContext);\r\n if (!context) throw new Error('Tabs compound components must be used within <Tabs />');\r\n return context;\r\n}\r\n\r\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\r\n defaultValue?: string;\r\n value?: string;\r\n onValueChange?: (value: string) => void;\r\n variant?: 'pills' | 'line' | 'enclosed';\r\n}\r\n\r\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(\r\n ({ defaultValue = '', value: controlledValue, onValueChange, variant = 'pills', className, children, ...props }, ref) => {\r\n const [selectedTab, setSelectedTab] = useState(defaultValue);\r\n const activeTab = controlledValue !== undefined ? controlledValue : selectedTab;\r\n\r\n const handleTabChange = (val: string) => {\r\n setSelectedTab(val);\r\n onValueChange?.(val);\r\n };\r\n\r\n return (\r\n <TabsContext.Provider value={{ activeTab, setActiveTab: handleTabChange, variant }}>\r\n <div ref={ref} className={cn('w-full flex flex-col space-y-4', className)} {...props}>\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n }\r\n);\r\nTabs.displayName = 'Tabs';\r\n\r\nexport const TabsList = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { variant } = useTabs();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tablist\"\r\n className={cn(\r\n 'inline-flex items-center',\r\n variant === 'pills' && 'p-1 rounded-[var(--ui-radius-lg)] bg-[var(--ui-bg-secondary)] border border-[var(--ui-border-subtle)] gap-1',\r\n variant === 'line' && 'border-b border-[var(--ui-border-default)] gap-6',\r\n variant === 'enclosed' && 'border-b border-[var(--ui-border-default)] gap-1',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nTabsList.displayName = 'TabsList';\r\n\r\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n value: string;\r\n}\r\n\r\nexport const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\r\n ({ className, value, children, ...props }, ref) => {\r\n const { activeTab, setActiveTab, variant } = useTabs();\r\n const isActive = activeTab === value;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n role=\"tab\"\r\n type=\"button\"\r\n aria-selected={isActive}\r\n onClick={() => setActiveTab(value)}\r\n className={cn(\r\n 'inline-flex items-center justify-center font-medium text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer',\r\n variant === 'pills' &&\r\n 'px-3.5 py-1.5 rounded-[var(--ui-radius-md)] text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)]',\r\n variant === 'pills' && isActive &&\r\n 'bg-[var(--ui-bg-surface)] text-[var(--ui-text-primary)] font-semibold shadow-sm',\r\n variant === 'line' &&\r\n 'pb-3 pt-2 text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] border-b-2 border-transparent -mb-[1px]',\r\n variant === 'line' && isActive &&\r\n 'border-[var(--ui-primary)] text-[var(--ui-primary)] font-semibold',\r\n variant === 'enclosed' &&\r\n 'px-4 py-2 rounded-t-[var(--ui-radius-md)] border border-transparent text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] -mb-[1px]',\r\n variant === 'enclosed' && isActive &&\r\n 'bg-[var(--ui-bg-surface)] border-[var(--ui-border-default)] border-b-transparent text-[var(--ui-text-primary)] font-semibold',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\nTabsTrigger.displayName = 'TabsTrigger';\r\n\r\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n}\r\n\r\nexport const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\r\n ({ className, value, children, ...props }, ref) => {\r\n const { activeTab } = useTabs();\r\n if (activeTab !== value) return null;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tabpanel\"\r\n tabIndex={0}\r\n className={cn('focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary)] animate-in fade-in duration-150', className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nTabsContent.displayName = 'TabsContent';\r\n","import React, { forwardRef } from 'react';\r\nimport { ChevronRight } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const Breadcrumb = forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn('flex items-center text-sm', className)} {...props}>\r\n <ol className=\"flex items-center gap-1.5 sm:gap-2\">{children}</ol>\r\n </nav>\r\n );\r\n }\r\n);\r\nBreadcrumb.displayName = 'Breadcrumb';\r\n\r\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, React.LiHTMLAttributes<HTMLLIElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props}>\r\n {children}\r\n </li>\r\n );\r\n }\r\n);\r\nBreadcrumbItem.displayName = 'BreadcrumbItem';\r\n\r\nexport interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\r\n as?: React.ElementType;\r\n}\r\n\r\nexport const BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\r\n ({ className, as: Component = 'a', children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn('text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] transition-colors font-medium', className)}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\nBreadcrumbLink.displayName = 'BreadcrumbLink';\r\n\r\nexport const BreadcrumbPage = forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn('font-semibold text-[var(--ui-text-primary)]', className)}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n );\r\n }\r\n);\r\nBreadcrumbPage.displayName = 'BreadcrumbPage';\r\n\r\nexport const BreadcrumbSeparator = forwardRef<HTMLLIElement, React.LiHTMLAttributes<HTMLLIElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <li ref={ref} role=\"presentation\" aria-hidden=\"true\" className={cn('text-[var(--ui-text-muted)] opacity-60', className)} {...props}>\r\n {children || <ChevronRight className=\"w-3.5 h-3.5\" />}\r\n </li>\r\n );\r\n }\r\n);\r\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\r\n","import React, { forwardRef } from 'react';\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\r\nimport { Button } from '../buttons/Button';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {\r\n currentPage: number;\r\n totalPages: number;\r\n onPageChange: (page: number) => void;\r\n siblingCount?: number;\r\n}\r\n\r\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\r\n ({ className, currentPage, totalPages, onPageChange, siblingCount = 1, ...props }, ref) => {\r\n const generatePages = () => {\r\n const totalPageNumbers = siblingCount * 2 + 5;\r\n\r\n if (totalPages <= totalPageNumbers) {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n }\r\n\r\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\r\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);\r\n\r\n const shouldShowLeftDots = leftSiblingIndex > 2;\r\n const shouldShowRightDots = rightSiblingIndex < totalPages - 2;\r\n\r\n if (!shouldShowLeftDots && shouldShowRightDots) {\r\n const leftItemCount = 3 + 2 * siblingCount;\r\n const leftRange = Array.from({ length: leftItemCount }, (_, i) => i + 1);\r\n return [...leftRange, 'DOTS', totalPages];\r\n }\r\n\r\n if (shouldShowLeftDots && !shouldShowRightDots) {\r\n const rightItemCount = 3 + 2 * siblingCount;\r\n const rightRange = Array.from(\r\n { length: rightItemCount },\r\n (_, i) => totalPages - rightItemCount + i + 1\r\n );\r\n return [1, 'DOTS', ...rightRange];\r\n }\r\n\r\n if (shouldShowLeftDots && shouldShowRightDots) {\r\n const middleRange = Array.from(\r\n { length: rightSiblingIndex - leftSiblingIndex + 1 },\r\n (_, i) => leftSiblingIndex + i\r\n );\r\n return [1, 'DOTS', ...middleRange, 'DOTS', totalPages];\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const pages = generatePages();\r\n\r\n return (\r\n <nav\r\n ref={ref}\r\n role=\"navigation\"\r\n aria-label=\"Pagination\"\r\n className={cn('flex items-center justify-center gap-1.5', className)}\r\n {...props}\r\n >\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n disabled={currentPage <= 1}\r\n onClick={() => onPageChange(currentPage - 1)}\r\n aria-label=\"Go to previous page\"\r\n >\r\n <ChevronLeft className=\"w-4 h-4\" />\r\n </Button>\r\n\r\n {pages.map((p, index) => {\r\n if (p === 'DOTS') {\r\n return (\r\n <span key={`dots-${index}`} className=\"flex items-center justify-center w-8 h-8 text-[var(--ui-text-muted)]\">\r\n <MoreHorizontal className=\"w-4 h-4\" />\r\n </span>\r\n );\r\n }\r\n\r\n const pageNum = Number(p);\r\n const isActive = pageNum === currentPage;\r\n\r\n return (\r\n <Button\r\n key={pageNum}\r\n variant={isActive ? 'primary' : 'ghost'}\r\n size=\"sm\"\r\n aria-current={isActive ? 'page' : undefined}\r\n onClick={() => onPageChange(pageNum)}\r\n className=\"w-8 h-8 p-0 text-xs font-semibold\"\r\n >\r\n {pageNum}\r\n </Button>\r\n );\r\n })}\r\n\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n disabled={currentPage >= totalPages}\r\n onClick={() => onPageChange(currentPage + 1)}\r\n aria-label=\"Go to next page\"\r\n >\r\n <ChevronRight className=\"w-4 h-4\" />\r\n </Button>\r\n </nav>\r\n );\r\n }\r\n);\r\n\r\nPagination.displayName = 'Pagination';\r\n","import React, { forwardRef } from 'react';\r\nimport { Check } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface StepItem {\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\r\n steps: StepItem[];\r\n currentStep: number;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(\r\n ({ className, steps, currentStep, orientation = 'horizontal', ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"navigation\"\r\n aria-label=\"Progress Stepper\"\r\n className={cn(\r\n 'flex',\r\n orientation === 'horizontal'\r\n ? 'flex-row items-center w-full justify-between'\r\n : 'flex-col space-y-6',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {steps.map((step, index) => {\r\n const isCompleted = index < currentStep;\r\n const isActive = index === currentStep;\r\n const isPending = index > currentStep;\r\n\r\n return (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center',\r\n orientation === 'horizontal' ? 'flex-1 last:flex-none' : 'flex-row items-start'\r\n )}\r\n >\r\n <div className=\"flex items-center gap-3\">\r\n {/* Step indicator circle */}\r\n <div\r\n className={cn(\r\n 'flex items-center justify-center w-8 h-8 rounded-full text-xs font-bold transition-colors flex-shrink-0',\r\n isCompleted && 'bg-[var(--ui-primary)] text-[var(--ui-primary-fg)]',\r\n isActive && 'border-2 border-[var(--ui-primary)] text-[var(--ui-primary)] bg-[var(--ui-bg-surface)] ring-4 ring-[var(--ui-primary)]/20',\r\n isPending && 'border border-[var(--ui-border-default)] text-[var(--ui-text-muted)] bg-[var(--ui-bg-tertiary)]'\r\n )}\r\n >\r\n {isCompleted ? <Check className=\"w-4 h-4 stroke-[3]\" /> : index + 1}\r\n </div>\r\n\r\n {/* Step details */}\r\n <div className=\"flex flex-col\">\r\n <span\r\n className={cn(\r\n 'text-xs font-semibold',\r\n isActive ? 'text-[var(--ui-text-primary)]' : 'text-[var(--ui-text-muted)]'\r\n )}\r\n >\r\n {step.title}\r\n </span>\r\n {step.description && (\r\n <span className=\"text-[11px] text-[var(--ui-text-muted)] opacity-80\">\r\n {step.description}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Connecting line */}\r\n {orientation === 'horizontal' && index < steps.length - 1 && (\r\n <div\r\n className={cn(\r\n 'flex-1 h-0.5 mx-4 transition-colors',\r\n isCompleted ? 'bg-[var(--ui-primary)]' : 'bg-[var(--ui-border-subtle)]'\r\n )}\r\n />\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nStepper.displayName = 'Stepper';\r\n","import React, { createContext, useContext, useState, useRef, useEffect, forwardRef } from 'react';\r\nimport { Portal } from '../overlays/Portal';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface DropdownContextType {\r\n isOpen: boolean;\r\n setIsOpen: (val: boolean) => void;\r\n triggerRect: DOMRect | null;\r\n setTriggerRect: (rect: DOMRect | null) => void;\r\n}\r\n\r\nconst DropdownContext = createContext<DropdownContextType | null>(null);\r\n\r\nexport function useDropdown() {\r\n const context = useContext(DropdownContext);\r\n if (!context) throw new Error('DropdownMenu components must be used within <DropdownMenu />');\r\n return context;\r\n}\r\n\r\nexport interface DropdownMenuProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function DropdownMenu({ children }: DropdownMenuProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [triggerRect, setTriggerRect] = useState<DOMRect | null>(null);\r\n\r\n return (\r\n <DropdownContext.Provider value={{ isOpen, setIsOpen, triggerRect, setTriggerRect }}>\r\n <div className=\"relative inline-block text-left\">{children}</div>\r\n </DropdownContext.Provider>\r\n );\r\n}\r\n\r\nexport const DropdownMenuTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ children, onClick, ...props }, ref) => {\r\n const { isOpen, setIsOpen, setTriggerRect } = useDropdown();\r\n const triggerRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (triggerRef.current) {\r\n setTriggerRect(triggerRef.current.getBoundingClientRect());\r\n }\r\n setIsOpen(!isOpen);\r\n onClick?.(e);\r\n };\r\n\r\n return (\r\n <div ref={triggerRef} onClick={handleClick} className=\"inline-flex cursor-pointer\" {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nDropdownMenuTrigger.displayName = 'DropdownMenuTrigger';\r\n\r\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n align?: 'start' | 'end';\r\n}\r\n\r\nexport const DropdownMenuContent = forwardRef<HTMLDivElement, DropdownMenuContentProps>(\r\n ({ className, align = 'start', children, ...props }, ref) => {\r\n const { isOpen, setIsOpen, triggerRect } = useDropdown();\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleOutside = (e: MouseEvent) => {\r\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n if (isOpen) {\r\n document.addEventListener('mousedown', handleOutside);\r\n }\r\n return () => document.removeEventListener('mousedown', handleOutside);\r\n }, [isOpen, setIsOpen]);\r\n\r\n if (!isOpen || !triggerRect) return null;\r\n\r\n const top = triggerRect.bottom + window.scrollY + 6;\r\n const left =\r\n align === 'end'\r\n ? triggerRect.right + window.scrollX\r\n : triggerRect.left + window.scrollX;\r\n\r\n return (\r\n <Portal>\r\n <div\r\n ref={menuRef}\r\n style={{\r\n position: 'absolute',\r\n top: `${top}px`,\r\n left: `${left}px`,\r\n }}\r\n className={cn(\r\n 'z-50 min-w-[12rem] overflow-hidden rounded-[var(--ui-radius-lg)] border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)] p-1 text-[var(--ui-text-primary)] shadow-xl animate-in fade-in zoom-in-95',\r\n align === 'end' && '-translate-x-full',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </Portal>\r\n );\r\n }\r\n);\r\nDropdownMenuContent.displayName = 'DropdownMenuContent';\r\n\r\nexport interface DropdownMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n icon?: React.ReactNode;\r\n shortcut?: string;\r\n destructive?: boolean;\r\n}\r\n\r\nexport const DropdownMenuItem = forwardRef<HTMLButtonElement, DropdownMenuItemProps>(\r\n ({ className, icon, shortcut, destructive = false, children, onClick, ...props }, ref) => {\r\n const { setIsOpen } = useDropdown();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n onClick={(e) => {\r\n onClick?.(e);\r\n setIsOpen(false);\r\n }}\r\n className={cn(\r\n 'relative flex w-full cursor-pointer select-none items-center gap-2 rounded-[var(--ui-radius-sm)] px-2.5 py-1.5 text-xs font-medium outline-none transition-colors hover:bg-[var(--ui-bg-tertiary)] disabled:pointer-events-none disabled:opacity-50 text-left',\r\n destructive && 'text-[var(--ui-error)] hover:bg-[var(--ui-error-subtle)]',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {icon && <span className=\"flex-shrink-0 text-current\">{icon}</span>}\r\n <span className=\"flex-1 truncate\">{children}</span>\r\n {shortcut && <span className=\"ml-auto text-[10px] text-[var(--ui-text-muted)] tracking-widest\">{shortcut}</span>}\r\n </button>\r\n );\r\n }\r\n);\r\nDropdownMenuItem.displayName = 'DropdownMenuItem';\r\n\r\nexport const DropdownMenuSeparator = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n return <div ref={ref} className={cn('-mx-1 my-1 h-px bg-[var(--ui-border-subtle)]', className)} {...props} />;\r\n }\r\n);\r\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\r\n\r\nexport const DropdownMenuLabel = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('px-2.5 py-1.5 text-[11px] font-semibold text-[var(--ui-text-muted)] uppercase tracking-wider', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Search } from 'lucide-react';\r\nimport { Portal } from '../overlays/Portal';\r\nimport { FocusTrap } from '../overlays/FocusTrap';\r\nimport { Kbd } from '../typography/Kbd';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface CommandItem {\r\n id: string;\r\n title: string;\r\n category?: string;\r\n icon?: React.ReactNode;\r\n shortcut?: string;\r\n onSelect: () => void;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n items: CommandItem[];\r\n placeholder?: string;\r\n}\r\n\r\nexport function CommandPalette({\r\n isOpen,\r\n onClose,\r\n items,\r\n placeholder = 'Type a command or search...',\r\n}: CommandPaletteProps) {\r\n const [query, setQuery] = useState('');\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n\r\n const filteredItems = items.filter((item) =>\r\n item.title.toLowerCase().includes(query.toLowerCase()) ||\r\n item.category?.toLowerCase().includes(query.toLowerCase())\r\n );\r\n\r\n useEffect(() => {\r\n setSelectedIndex(0);\r\n }, [query]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setQuery('');\r\n setSelectedIndex(0);\r\n return;\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n onClose();\r\n } else if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => (prev < filteredItems.length - 1 ? prev + 1 : 0));\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => (prev > 0 ? prev - 1 : filteredItems.length - 1));\r\n } else if (e.key === 'Enter') {\r\n e.preventDefault();\r\n if (filteredItems[selectedIndex]) {\r\n filteredItems[selectedIndex].onSelect();\r\n onClose();\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => window.removeEventListener('keydown', handleKeyDown);\r\n }, [isOpen, filteredItems, selectedIndex, onClose]);\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <Portal>\r\n <FocusTrap active={isOpen}>\r\n <div className=\"fixed inset-0 z-50 flex items-start justify-center pt-20 p-4 sm:p-6\">\r\n {/* Backdrop */}\r\n <div\r\n aria-hidden=\"true\"\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-[var(--ui-bg-overlay)] backdrop-blur-sm transition-opacity animate-in fade-in duration-200\"\r\n />\r\n\r\n {/* Palette Box */}\r\n <div className=\"relative w-full max-w-xl rounded-[var(--ui-radius-xl)] bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] shadow-2xl overflow-hidden z-10 animate-in zoom-in-95 duration-150\">\r\n {/* Search Bar */}\r\n <div className=\"flex items-center px-4 py-3 border-b border-[var(--ui-border-subtle)] gap-3\">\r\n <Search className=\"w-5 h-5 text-[var(--ui-text-muted)]\" />\r\n <input\r\n type=\"text\"\r\n autoFocus\r\n placeholder={placeholder}\r\n value={query}\r\n onChange={(e) => setQuery(e.target.value)}\r\n className=\"flex-1 bg-transparent text-sm text-[var(--ui-text-primary)] placeholder:text-[var(--ui-text-muted)] focus:outline-none\"\r\n />\r\n <Kbd>ESC</Kbd>\r\n </div>\r\n\r\n {/* List items */}\r\n <div className=\"max-h-80 overflow-y-auto p-2\">\r\n {filteredItems.length === 0 ? (\r\n <div className=\"py-8 text-center text-xs text-[var(--ui-text-muted)]\">\r\n No commands found matching \"{query}\".\r\n </div>\r\n ) : (\r\n filteredItems.map((item, idx) => {\r\n const isSelected = idx === selectedIndex;\r\n return (\r\n <div\r\n key={item.id}\r\n onClick={() => {\r\n item.onSelect();\r\n onClose();\r\n }}\r\n onMouseEnter={() => setSelectedIndex(idx)}\r\n className={cn(\r\n 'flex items-center gap-3 px-3 py-2.5 rounded-[var(--ui-radius-md)] cursor-pointer text-xs font-medium transition-colors',\r\n isSelected\r\n ? 'bg-[var(--ui-primary)] text-[var(--ui-primary-fg)]'\r\n : 'text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)]'\r\n )}\r\n >\r\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\r\n <span className=\"flex-1 truncate\">{item.title}</span>\r\n {item.category && (\r\n <span className={cn('text-[10px] uppercase font-semibold tracking-wider opacity-70', isSelected ? 'text-white' : 'text-[var(--ui-text-muted)]')}>\r\n {item.category}\r\n </span>\r\n )}\r\n {item.shortcut && <Kbd>{item.shortcut}</Kbd>}\r\n </div>\r\n );\r\n })\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </FocusTrap>\r\n </Portal>\r\n );\r\n}\r\n","export * from './Card';\nexport * from './Table';\nexport * from './Avatar';\nexport * from './Accordion';\nexport * from './Chip';\nexport * from './StatCard';\nexport * from './Timeline';\nexport * from './DataTablePro';\nexport * from './TreeView';\nexport * from './Carousel';\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const cardVariants = cva(\r\n 'relative overflow-hidden rounded-[var(--ui-radius-xl)] transition-all duration-200 border',\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'bg-[var(--ui-bg-surface)] backdrop-blur-xl border-[var(--ui-border-default)] shadow-[var(--ui-shadow-md)] text-[var(--ui-text-primary)]',\r\n bordered:\r\n 'bg-transparent border-[var(--ui-border-strong)] text-[var(--ui-text-primary)]',\r\n elevated:\r\n 'bg-[var(--ui-bg-surface)] backdrop-blur-2xl border-[var(--ui-border-default)] shadow-[var(--ui-shadow-xl)] hover:shadow-2xl text-[var(--ui-text-primary)]',\r\n interactive:\r\n 'bg-[var(--ui-bg-surface)] backdrop-blur-xl border-[var(--ui-border-default)] shadow-[var(--ui-shadow-md)] hover:border-[var(--ui-primary)] cursor-pointer hover:-translate-y-1 hover:shadow-[0_12px_32px_rgba(99,102,241,0.15)] text-[var(--ui-text-primary)] active:translate-y-0',\r\n glow:\r\n 'bg-[var(--ui-bg-surface)] backdrop-blur-xl border-indigo-500/30 shadow-[0_0_30px_rgba(99,102,241,0.12)] text-[var(--ui-text-primary)]',\r\n },\r\n padding: {\r\n none: 'p-0',\r\n sm: 'p-4 sm:p-5',\r\n md: 'p-6 sm:p-7',\r\n lg: 'p-8 sm:p-10',\r\n },\r\n specular: {\r\n true: 'before:absolute before:inset-x-0 before:top-0 before:h-px before:bg-gradient-to-r before:from-transparent before:via-white/30 before:to-transparent before:pointer-events-none',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n padding: 'md',\r\n specular: true,\r\n },\r\n }\r\n);\r\n\r\nexport interface CardProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> {}\r\n\r\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, variant, padding, specular = true, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant, padding, specular }), className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nCard.displayName = 'Card';\r\n\r\nexport const CardHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('flex flex-col space-y-1.5 mb-5', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nCardHeader.displayName = 'CardHeader';\r\n\r\nexport const CardTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <h3 ref={ref} className={cn('text-lg sm:text-xl font-bold tracking-tight text-[var(--ui-text-primary)]', className)} {...props}>\r\n {children}\r\n </h3>\r\n );\r\n }\r\n);\r\nCardTitle.displayName = 'CardTitle';\r\n\r\nexport const CardDescription = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <p ref={ref} className={cn('text-xs sm:text-sm text-[var(--ui-text-muted)] font-normal leading-relaxed', className)} {...props}>\r\n {children}\r\n </p>\r\n );\r\n }\r\n);\r\nCardDescription.displayName = 'CardDescription';\r\n\r\nexport const CardContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('pt-0', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nCardContent.displayName = 'CardContent';\r\n\r\nexport const CardFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('flex items-center pt-4 mt-5 border-t border-[var(--ui-border-subtle)]', className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nCardFooter.displayName = 'CardFooter';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const Table = forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto rounded-[var(--ui-radius-lg)] border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)]\">\r\n <table ref={ref} className={cn('w-full caption-bottom text-sm text-left', className)} {...props} />\r\n </div>\r\n )\r\n);\r\nTable.displayName = 'Table';\r\n\r\nexport const TableHeader = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn('bg-[var(--ui-bg-secondary)] border-b border-[var(--ui-border-default)]', className)} {...props} />\r\n )\r\n);\r\nTableHeader.displayName = 'TableHeader';\r\n\r\nexport const TableBody = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\r\n )\r\n);\r\nTableBody.displayName = 'TableBody';\r\n\r\nexport const TableFooter = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tfoot ref={ref} className={cn('bg-[var(--ui-bg-secondary)] font-medium border-t border-[var(--ui-border-default)]', className)} {...props} />\r\n )\r\n);\r\nTableFooter.displayName = 'TableFooter';\r\n\r\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n 'border-b border-[var(--ui-border-subtle)] transition-colors hover:bg-[var(--ui-bg-tertiary)]/50 data-[state=selected]:bg-[var(--ui-bg-tertiary)]',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\nTableRow.displayName = 'TableRow';\r\n\r\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n 'h-11 px-4 text-left align-middle font-semibold text-xs text-[var(--ui-text-muted)] uppercase tracking-wider',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\nTableHead.displayName = 'TableHead';\r\n\r\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <td ref={ref} className={cn('p-4 align-middle text-sm text-[var(--ui-text-primary)]', className)} {...props} />\r\n )\r\n);\r\nTableCell.displayName = 'TableCell';\r\n\r\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <caption ref={ref} className={cn('mt-4 text-xs text-[var(--ui-text-muted)]', className)} {...props} />\r\n )\r\n);\r\nTableCaption.displayName = 'TableCaption';\r\n","import React, { forwardRef, useState } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const avatarVariants = cva(\r\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-[var(--ui-bg-tertiary)] select-none border border-[var(--ui-border-subtle)]',\r\n {\r\n variants: {\r\n size: {\r\n xs: 'h-6 w-6 text-[10px]',\r\n sm: 'h-8 w-8 text-xs',\r\n md: 'h-10 w-10 text-sm font-semibold',\r\n lg: 'h-12 w-12 text-base font-semibold',\r\n xl: 'h-16 w-16 text-lg font-bold',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport const statusVariants = cva(\r\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-[var(--ui-bg-surface)]',\r\n {\r\n variants: {\r\n status: {\r\n online: 'bg-[var(--ui-success)]',\r\n offline: 'bg-[var(--ui-text-muted)]',\r\n busy: 'bg-[var(--ui-error)]',\r\n away: 'bg-[var(--ui-warning)]',\r\n },\r\n size: {\r\n xs: 'h-1.5 w-1.5',\r\n sm: 'h-2 w-2',\r\n md: 'h-2.5 w-2.5',\r\n lg: 'h-3 w-3',\r\n xl: 'h-4 w-4',\r\n },\r\n },\r\n defaultVariants: {\r\n status: 'online',\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface AvatarProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof avatarVariants> {\r\n src?: string;\r\n alt?: string;\r\n name?: string;\r\n status?: 'online' | 'offline' | 'busy' | 'away';\r\n}\r\n\r\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\r\n ({ className, size = 'md', src, alt, name, status, children, ...props }, ref) => {\r\n const [hasError, setHasError] = useState(false);\r\n\r\n const getInitials = (n?: string) => {\r\n if (!n) return '';\r\n const parts = n.trim().split(' ');\r\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\r\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\r\n };\r\n\r\n const initials = name ? getInitials(name) : '';\r\n\r\n return (\r\n <div ref={ref} className={cn(avatarVariants({ size }), className)} {...props}>\r\n {src && !hasError ? (\r\n <img\r\n src={src}\r\n alt={alt || name || 'Avatar'}\r\n onError={() => setHasError(true)}\r\n className=\"h-full w-full object-cover\"\r\n />\r\n ) : initials ? (\r\n <span className=\"font-semibold text-[var(--ui-text-secondary)]\">{initials}</span>\r\n ) : (\r\n children || <span className=\"font-semibold text-[var(--ui-text-muted)]\">?</span>\r\n )}\r\n\r\n {status && (\r\n <span\r\n aria-label={`Status: ${status}`}\r\n className={cn(statusVariants({ status, size }))}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nAvatar.displayName = 'Avatar';\r\n\r\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n max?: number;\r\n spacing?: 'tight' | 'normal';\r\n}\r\n\r\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\r\n ({ className, max = 4, spacing = 'tight', children, ...props }, ref) => {\r\n const childArray = React.Children.toArray(children);\r\n const visibleChildren = childArray.slice(0, max);\r\n const remainingCount = childArray.length - max;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n className={cn(\r\n 'flex items-center',\r\n spacing === 'tight' ? '-space-x-3' : '-space-x-1.5',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {visibleChildren.map((child, i) => (\r\n <div key={i} className=\"ring-2 ring-[var(--ui-bg-surface)] rounded-full\">\r\n {child}\r\n </div>\r\n ))}\r\n\r\n {remainingCount > 0 && (\r\n <div className=\"relative inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-[var(--ui-bg-secondary)] border border-[var(--ui-border-default)] ring-2 ring-[var(--ui-bg-surface)] text-xs font-bold text-[var(--ui-text-secondary)] select-none\">\r\n +{remainingCount}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nAvatarGroup.displayName = 'AvatarGroup';\r\n","import React, { createContext, useContext, useState, forwardRef } from 'react';\r\nimport { ChevronDown } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface AccordionContextType {\r\n openItems: string[];\r\n toggleItem: (id: string) => void;\r\n}\r\n\r\nconst AccordionContext = createContext<AccordionContextType | null>(null);\r\n\r\nexport function useAccordion() {\r\n const context = useContext(AccordionContext);\r\n if (!context) throw new Error('AccordionItem components must be used within <Accordion />');\r\n return context;\r\n}\r\n\r\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\r\n type?: 'single' | 'multiple';\r\n defaultValue?: string | string[];\r\n value?: string | string[];\r\n onValueChange?: (val: any) => void;\r\n}\r\n\r\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\r\n (\r\n {\r\n className,\r\n type = 'single',\r\n defaultValue,\r\n value: controlledValue,\r\n onValueChange,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [internalOpen, setInternalOpen] = useState<string[]>(() => {\r\n if (Array.isArray(defaultValue)) return defaultValue;\r\n if (typeof defaultValue === 'string') return [defaultValue];\r\n return [];\r\n });\r\n\r\n const openItems =\r\n controlledValue !== undefined\r\n ? Array.isArray(controlledValue)\r\n ? controlledValue\r\n : [controlledValue]\r\n : internalOpen;\r\n\r\n const toggleItem = (id: string) => {\r\n let next: string[];\r\n if (type === 'single') {\r\n next = openItems.includes(id) ? [] : [id];\r\n } else {\r\n next = openItems.includes(id) ? openItems.filter((i) => i !== id) : [...openItems, id];\r\n }\r\n\r\n setInternalOpen(next);\r\n onValueChange?.(type === 'single' ? next[0] || '' : next);\r\n };\r\n\r\n return (\r\n <AccordionContext.Provider value={{ openItems, toggleItem }}>\r\n <div ref={ref} className={cn('divide-y divide-[var(--ui-border-subtle)] border-y border-[var(--ui-border-subtle)]', className)} {...props}>\r\n {children}\r\n </div>\r\n </AccordionContext.Provider>\r\n );\r\n }\r\n);\r\nAccordion.displayName = 'Accordion';\r\n\r\ninterface AccordionItemContextType {\r\n id: string;\r\n}\r\n\r\nconst AccordionItemContext = createContext<AccordionItemContextType | null>(null);\r\n\r\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n}\r\n\r\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\r\n ({ className, value, children, ...props }, ref) => {\r\n return (\r\n <AccordionItemContext.Provider value={{ id: value }}>\r\n <div ref={ref} className={cn('w-full', className)} {...props}>\r\n {children}\r\n </div>\r\n </AccordionItemContext.Provider>\r\n );\r\n }\r\n);\r\nAccordionItem.displayName = 'AccordionItem';\r\n\r\nexport const AccordionTrigger = forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { openItems, toggleItem } = useAccordion();\r\n const item = useContext(AccordionItemContext);\r\n const isOpen = item ? openItems.includes(item.id) : false;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-expanded={isOpen}\r\n onClick={() => item && toggleItem(item.id)}\r\n className={cn(\r\n 'flex w-full items-center justify-between py-4 text-sm font-semibold text-[var(--ui-text-primary)] transition-all hover:text-[var(--ui-primary)] text-left',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDown\r\n className={cn(\r\n 'h-4 w-4 shrink-0 text-[var(--ui-text-muted)] transition-transform duration-200',\r\n isOpen && 'rotate-180 text-[var(--ui-primary)]'\r\n )}\r\n />\r\n </button>\r\n );\r\n }\r\n);\r\nAccordionTrigger.displayName = 'AccordionTrigger';\r\n\r\nexport const AccordionContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { openItems } = useAccordion();\r\n const item = useContext(AccordionItemContext);\r\n const isOpen = item ? openItems.includes(item.id) : false;\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn('pb-4 pt-0 text-sm text-[var(--ui-text-secondary)] animate-in fade-in duration-200', className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\nAccordionContent.displayName = 'AccordionContent';\r\n","import React, { forwardRef } from 'react';\r\nimport { ArrowUpRight, ArrowDownRight, Minus } from 'lucide-react';\r\nimport { Card } from './Card';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n label: string;\r\n value: string | number;\r\n change?: string | number;\r\n trend?: 'up' | 'down' | 'neutral';\r\n trendLabel?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const StatCard = forwardRef<HTMLDivElement, StatCardProps>(\r\n ({ className, label, value, change, trend, trendLabel, icon, ...props }, ref) => {\r\n return (\r\n <Card ref={ref} className={cn('p-6', className)} {...props}>\r\n <div className=\"flex items-center justify-between\">\r\n <span className=\"text-xs font-semibold uppercase tracking-wider text-[var(--ui-text-muted)]\">\r\n {label}\r\n </span>\r\n {icon && (\r\n <div className=\"p-2 rounded-[var(--ui-radius-md)] bg-[var(--ui-bg-secondary)] text-[var(--ui-text-secondary)]\">\r\n {icon}\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"mt-3 flex items-baseline gap-2\">\r\n <span className=\"text-2xl sm:text-3xl font-extrabold tracking-tight text-[var(--ui-text-primary)]\">\r\n {value}\r\n </span>\r\n\r\n {change !== undefined && (\r\n <div\r\n className={cn(\r\n 'inline-flex items-center gap-0.5 text-xs font-bold px-1.5 py-0.5 rounded-full',\r\n trend === 'up' && 'text-[var(--ui-success)] bg-[var(--ui-success-subtle)]',\r\n trend === 'down' && 'text-[var(--ui-error)] bg-[var(--ui-error-subtle)]',\r\n trend === 'neutral' && 'text-[var(--ui-text-muted)] bg-[var(--ui-bg-tertiary)]'\r\n )}\r\n >\r\n {trend === 'up' && <ArrowUpRight className=\"w-3.5 h-3.5\" />}\r\n {trend === 'down' && <ArrowDownRight className=\"w-3.5 h-3.5\" />}\r\n {trend === 'neutral' && <Minus className=\"w-3.5 h-3.5\" />}\r\n <span>{change}</span>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {trendLabel && (\r\n <p className=\"mt-2 text-xs text-[var(--ui-text-muted)]\">{trendLabel}</p>\r\n )}\r\n </Card>\r\n );\r\n }\r\n);\r\n\r\nStatCard.displayName = 'StatCard';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface TimelineItem {\r\n id: string | number;\r\n title: React.ReactNode;\r\n description?: React.ReactNode;\r\n timestamp?: string;\r\n icon?: React.ReactNode;\r\n status?: 'completed' | 'active' | 'pending';\r\n}\r\n\r\nexport interface TimelineProps extends React.HTMLAttributes<HTMLDivElement> {\r\n items: TimelineItem[];\r\n}\r\n\r\nexport const Timeline = forwardRef<HTMLDivElement, TimelineProps>(\r\n ({ className, items, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('relative pl-6 space-y-6', className)} {...props}>\r\n {/* Vertical track line */}\r\n <div className=\"absolute left-[11px] top-2 bottom-2 w-0.5 bg-[var(--ui-border-subtle)]\" />\r\n\r\n {items.map((item) => {\r\n const isCompleted = item.status === 'completed';\r\n const isActive = item.status === 'active';\r\n\r\n return (\r\n <div key={item.id} className=\"relative flex items-start gap-4\">\r\n {/* Dot */}\r\n <div\r\n className={cn(\r\n 'absolute -left-6 flex items-center justify-center w-6 h-6 rounded-full ring-4 ring-[var(--ui-bg-surface)] text-xs font-bold transition-all',\r\n isCompleted && 'bg-[var(--ui-primary)] text-[var(--ui-primary-fg)]',\r\n isActive && 'bg-[var(--ui-bg-surface)] border-2 border-[var(--ui-primary)] text-[var(--ui-primary)]',\r\n (!item.status || item.status === 'pending') && 'bg-[var(--ui-bg-tertiary)] border border-[var(--ui-border-default)] text-[var(--ui-text-muted)]'\r\n )}\r\n >\r\n {item.icon || <span className=\"w-1.5 h-1.5 rounded-full bg-current\" />}\r\n </div>\r\n\r\n {/* Content */}\r\n <div className=\"flex-1 space-y-1 pt-0.5\">\r\n <div className=\"flex items-center justify-between gap-2\">\r\n <h4 className=\"text-sm font-semibold text-[var(--ui-text-primary)]\">{item.title}</h4>\r\n {item.timestamp && (\r\n <span className=\"text-xs text-[var(--ui-text-muted)] font-mono\">{item.timestamp}</span>\r\n )}\r\n </div>\r\n {item.description && (\r\n <p className=\"text-xs text-[var(--ui-text-secondary)] leading-relaxed\">{item.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTimeline.displayName = 'Timeline';\r\n","import React, { useState, useMemo, forwardRef } from 'react';\nimport {\n ChevronUp,\n ChevronDown,\n ChevronsUpDown,\n Search,\n Download,\n Trash2,\n ChevronLeft,\n ChevronRight,\n Filter,\n} from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from './Table';\nimport { Button } from '../buttons/Button';\nimport { Input } from '../forms/Input';\nimport { Checkbox } from '../forms/Checkbox';\nimport { Chip } from './Chip';\n\nexport interface ColumnDef<T> {\n key: string;\n header: string | React.ReactNode;\n accessor?: (row: T) => any;\n render?: (row: T, index: number) => React.ReactNode;\n sortable?: boolean;\n width?: string;\n}\n\nexport interface DataTableProProps<T> {\n data: T[];\n columns: ColumnDef<T>[];\n keyExtractor: (row: T) => string;\n searchable?: boolean;\n searchPlaceholder?: string;\n selectable?: boolean;\n onSelectionChange?: (selectedKeys: string[]) => void;\n pageSize?: number;\n pageSizeOptions?: number[];\n title?: string;\n description?: string;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function DataTablePro<T extends Record<string, any>>({\n data,\n columns,\n keyExtractor,\n searchable = true,\n searchPlaceholder = 'Search all records...',\n selectable = true,\n onSelectionChange,\n pageSize: initialPageSize = 10,\n pageSizeOptions = [5, 10, 25, 50],\n title,\n description,\n actions,\n className,\n}: DataTableProProps<T>) {\n const [search, setSearch] = useState('');\n const [sortKey, setSortKey] = useState<string | null>(null);\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\n const [currentPage, setCurrentPage] = useState(1);\n const [pageSize, setPageSize] = useState(initialPageSize);\n const [selectedKeys, setSelectedKeys] = useState<string[]>([]);\n\n // 1. Search filter\n const filteredData = useMemo(() => {\n if (!search.trim()) return data;\n const q = search.toLowerCase();\n return data.filter((row) => {\n return Object.values(row).some((val) => {\n if (val === null || val === undefined) return false;\n return String(val).toLowerCase().includes(q);\n });\n });\n }, [data, search]);\n\n // 2. Sorting\n const sortedData = useMemo(() => {\n if (!sortKey) return filteredData;\n const col = columns.find((c) => c.key === sortKey);\n\n return [...filteredData].sort((a, b) => {\n const valA = col?.accessor ? col.accessor(a) : a[sortKey];\n const valB = col?.accessor ? col.accessor(b) : b[sortKey];\n\n if (valA === valB) return 0;\n if (valA === null || valA === undefined) return 1;\n if (valB === null || valB === undefined) return -1;\n\n const comp = valA < valB ? -1 : 1;\n return sortDirection === 'asc' ? comp : -comp;\n });\n }, [filteredData, sortKey, sortDirection, columns]);\n\n // 3. Pagination\n const totalPages = Math.max(1, Math.ceil(sortedData.length / pageSize));\n const paginatedData = useMemo(() => {\n const start = (currentPage - 1) * pageSize;\n return sortedData.slice(start, start + pageSize);\n }, [sortedData, currentPage, pageSize]);\n\n const handleSort = (key: string) => {\n if (sortKey === key) {\n if (sortDirection === 'asc') {\n setSortDirection('desc');\n } else {\n setSortKey(null);\n setSortDirection('asc');\n }\n } else {\n setSortKey(key);\n setSortDirection('asc');\n }\n };\n\n const toggleSelectAll = () => {\n if (selectedKeys.length === paginatedData.length) {\n setSelectedKeys([]);\n onSelectionChange?.([]);\n } else {\n const allKeys = paginatedData.map(keyExtractor);\n setSelectedKeys(allKeys);\n onSelectionChange?.(allKeys);\n }\n };\n\n const toggleSelectRow = (key: string) => {\n const next = selectedKeys.includes(key)\n ? selectedKeys.filter((k) => k !== key)\n : [...selectedKeys, key];\n setSelectedKeys(next);\n onSelectionChange?.(next);\n };\n\n const exportCSV = () => {\n const headers = columns.map((c) => (typeof c.header === 'string' ? c.header : c.key));\n const rows = sortedData.map((row) =>\n columns.map((c) => {\n const val = c.accessor ? c.accessor(row) : row[c.key];\n return `\"${String(val ?? '').replace(/\"/g, '\"\"')}\"`;\n }).join(',')\n );\n const csvContent = 'data:text/csv;charset=utf-8,' + [headers.join(','), ...rows].join('\\n');\n const encodedUri = encodeURI(csvContent);\n const link = document.createElement('a');\n link.setAttribute('href', encodedUri);\n link.setAttribute('download', `export_${Date.now()}.csv`);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n const isAllSelected =\n paginatedData.length > 0 && selectedKeys.length === paginatedData.length;\n\n return (\n <div className={cn('w-full space-y-4', className)}>\n {/* Header Toolbar */}\n <div className=\"flex flex-col sm:flex-row sm:items-center justify-between gap-4\">\n {(title || description) && (\n <div>\n {title && <h3 className=\"text-base font-bold tracking-tight text-[var(--ui-text-primary)]\">{title}</h3>}\n {description && <p className=\"text-xs text-[var(--ui-text-muted)]\">{description}</p>}\n </div>\n )}\n\n <div className=\"flex flex-wrap items-center gap-2.5\">\n {searchable && (\n <div className=\"relative w-full sm:w-64\">\n <Search className=\"absolute left-3 w-3.5 h-3.5 text-[var(--ui-text-muted)] pointer-events-none\" />\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setCurrentPage(1);\n }}\n className=\"w-full h-8 pl-8 pr-3 text-xs rounded-xl bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] hover:border-[var(--ui-border-strong)] focus:outline-none focus:ring-2 focus:ring-[var(--ui-primary)]/40 text-[var(--ui-text-primary)] placeholder:text-[var(--ui-text-muted)] transition-all shadow-inner\"\n />\n </div>\n )}\n\n <Button size=\"xs\" variant=\"outline\" leftIcon={<Download className=\"w-3 h-3\" />} onClick={exportCSV}>\n Export CSV\n </Button>\n\n {actions}\n </div>\n </div>\n\n {/* Bulk selection pill */}\n {selectedKeys.length > 0 && (\n <div className=\"px-4 py-2 rounded-xl bg-[var(--ui-primary)]/15 border border-[var(--ui-primary)]/30 flex items-center justify-between animate-in fade-in duration-200\">\n <div className=\"flex items-center gap-2 text-xs font-semibold text-[var(--ui-primary)]\">\n <span>Selected {selectedKeys.length} of {sortedData.length} records</span>\n </div>\n <Button\n size=\"xs\"\n variant=\"ghost\"\n className=\"text-xs text-rose-500 hover:text-rose-600 hover:bg-rose-500/10\"\n onClick={() => {\n setSelectedKeys([]);\n onSelectionChange?.([]);\n }}\n >\n Clear Selection\n </Button>\n </div>\n )}\n\n {/* Table Container */}\n <div className=\"relative w-full overflow-x-auto rounded-2xl border border-[var(--ui-border-default)] bg-[var(--ui-bg-surface)] shadow-sm\">\n <Table>\n <TableHeader>\n <TableRow>\n {selectable && (\n <TableHead className=\"w-10 px-4\">\n <input\n type=\"checkbox\"\n checked={isAllSelected}\n onChange={toggleSelectAll}\n className=\"rounded border-[var(--ui-border-default)] text-[var(--ui-primary)] focus:ring-[var(--ui-primary)] cursor-pointer\"\n />\n </TableHead>\n )}\n\n {columns.map((col) => (\n <TableHead\n key={col.key}\n style={{ width: col.width }}\n onClick={() => col.sortable !== false && handleSort(col.key)}\n className={cn(\n col.sortable !== false && 'cursor-pointer select-none hover:text-[var(--ui-text-primary)] transition-colors'\n )}\n >\n <div className=\"flex items-center gap-1.5\">\n <span>{col.header}</span>\n {col.sortable !== false && (\n <span className=\"text-[var(--ui-text-muted)]\">\n {sortKey === col.key ? (\n sortDirection === 'asc' ? (\n <ChevronUp className=\"w-3.5 h-3.5 text-[var(--ui-primary)] font-bold\" />\n ) : (\n <ChevronDown className=\"w-3.5 h-3.5 text-[var(--ui-primary)] font-bold\" />\n )\n ) : (\n <ChevronsUpDown className=\"w-3 h-3 opacity-40\" />\n )}\n </span>\n )}\n </div>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n\n <TableBody>\n {paginatedData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length + (selectable ? 1 : 0)} className=\"h-32 text-center text-xs text-[var(--ui-text-muted)]\">\n No matching records found.\n </TableCell>\n </TableRow>\n ) : (\n paginatedData.map((row, rowIdx) => {\n const key = keyExtractor(row);\n const isSelected = selectedKeys.includes(key);\n\n return (\n <TableRow\n key={key}\n data-state={isSelected ? 'selected' : undefined}\n className={cn(isSelected && 'bg-[var(--ui-primary)]/10')}\n >\n {selectable && (\n <TableCell className=\"w-10 px-4\">\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={() => toggleSelectRow(key)}\n className=\"rounded border-[var(--ui-border-default)] text-[var(--ui-primary)] focus:ring-[var(--ui-primary)] cursor-pointer\"\n />\n </TableCell>\n )}\n\n {columns.map((col) => {\n const cellContent = col.render\n ? col.render(row, rowIdx)\n : col.accessor\n ? col.accessor(row)\n : row[col.key];\n\n return <TableCell key={col.key}>{cellContent}</TableCell>;\n })}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination Footer */}\n <div className=\"flex flex-col sm:flex-row sm:items-center justify-between gap-3 px-1 text-xs text-[var(--ui-text-muted)] font-mono\">\n <div className=\"flex items-center gap-2\">\n <span>Rows per page:</span>\n <select\n value={pageSize}\n onChange={(e) => {\n setPageSize(Number(e.target.value));\n setCurrentPage(1);\n }}\n className=\"px-2 py-1 rounded-lg bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] text-[var(--ui-text-primary)] font-mono text-xs focus:outline-none\"\n >\n {pageSizeOptions.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n <span className=\"text-[var(--ui-text-muted)]\">\n Showing {Math.min((currentPage - 1) * pageSize + 1, sortedData.length)}–\n {Math.min(currentPage * pageSize, sortedData.length)} of {sortedData.length}\n </span>\n </div>\n\n <div className=\"flex items-center gap-1.5\">\n <Button\n size=\"xs\"\n variant=\"outline\"\n disabled={currentPage === 1}\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n >\n <ChevronLeft className=\"w-3.5 h-3.5\" />\n </Button>\n\n <span className=\"px-2 font-bold text-[var(--ui-text-primary)]\">\n {currentPage} / {totalPages}\n </span>\n\n <Button\n size=\"xs\"\n variant=\"outline\"\n disabled={currentPage === totalPages}\n onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n >\n <ChevronRight className=\"w-3.5 h-3.5\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useState, forwardRef } from 'react';\nimport { ChevronRight, Folder, FolderOpen, File, FileCode, FileText, Image as ImageIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport interface TreeItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n badge?: string | number;\n children?: TreeItem[];\n defaultExpanded?: boolean;\n}\n\nexport interface TreeViewProps {\n data: TreeItem[];\n selectedId?: string;\n onSelect?: (item: TreeItem) => void;\n className?: string;\n}\n\ninterface TreeNodeProps {\n item: TreeItem;\n level: number;\n selectedId?: string;\n onSelect?: (item: TreeItem) => void;\n}\n\nfunction TreeNode({ item, level, selectedId, onSelect }: TreeNodeProps) {\n const [isExpanded, setIsExpanded] = useState(Boolean(item.defaultExpanded));\n const hasChildren = Boolean(item.children && item.children.length > 0);\n const isSelected = selectedId === item.id;\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (hasChildren) {\n setIsExpanded(!isExpanded);\n }\n onSelect?.(item);\n };\n\n const getIcon = () => {\n if (item.icon) return item.icon;\n if (hasChildren) {\n return isExpanded ? (\n <FolderOpen className=\"w-4 h-4 text-amber-500 shrink-0\" />\n ) : (\n <Folder className=\"w-4 h-4 text-amber-500 shrink-0\" />\n );\n }\n if (item.label.endsWith('.tsx') || item.label.endsWith('.ts') || item.label.endsWith('.js')) {\n return <FileCode className=\"w-4 h-4 text-blue-500 shrink-0\" />;\n }\n if (item.label.endsWith('.png') || item.label.endsWith('.jpg') || item.label.endsWith('.svg')) {\n return <ImageIcon className=\"w-4 h-4 text-purple-500 shrink-0\" />;\n }\n return <FileText className=\"w-4 h-4 text-[var(--ui-text-muted)] shrink-0\" />;\n };\n\n return (\n <div className=\"select-none text-xs\">\n <div\n onClick={handleClick}\n style={{ paddingLeft: `${level * 16 + 8}px` }}\n className={cn(\n 'flex items-center justify-between py-1.5 pr-2.5 rounded-xl cursor-pointer transition-colors group',\n isSelected\n ? 'bg-[var(--ui-primary)] text-white font-semibold shadow-xs'\n : 'text-[var(--ui-text-primary)] hover:bg-[var(--ui-bg-tertiary)]'\n )}\n >\n <div className=\"flex items-center gap-2 truncate\">\n {hasChildren ? (\n <span className={cn('p-0.5 rounded transition-transform duration-200', isExpanded && 'rotate-90')}>\n <ChevronRight className={cn('w-3 h-3', isSelected ? 'text-white' : 'text-[var(--ui-text-muted)]')} />\n </span>\n ) : (\n <span className=\"w-4\" />\n )}\n\n {getIcon()}\n <span className=\"truncate\">{item.label}</span>\n </div>\n\n {item.badge !== undefined && (\n <span\n className={cn(\n 'px-1.5 py-0.5 rounded-md text-[10px] font-mono',\n isSelected ? 'bg-white/20 text-white' : 'bg-[var(--ui-bg-secondary)] text-[var(--ui-text-muted)]'\n )}\n >\n {item.badge}\n </span>\n )}\n </div>\n\n {hasChildren && isExpanded && (\n <div className=\"relative space-y-0.5 animate-in fade-in duration-150\">\n <div\n className=\"absolute left-[15px] top-0 bottom-0 w-[1px] bg-[var(--ui-border-subtle)]\"\n style={{ left: `${level * 16 + 15}px` }}\n />\n {item.children!.map((child) => (\n <TreeNode\n key={child.id}\n item={child}\n level={level + 1}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport const TreeView = forwardRef<HTMLDivElement, TreeViewProps>(\n ({ data, selectedId, onSelect, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full p-2 rounded-2xl bg-[var(--ui-bg-surface)] border border-[var(--ui-border-default)] space-y-0.5 shadow-sm overflow-hidden',\n className\n )}\n >\n {data.map((item) => (\n <TreeNode\n key={item.id}\n item={item}\n level={0}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ))}\n </div>\n );\n }\n);\nTreeView.displayName = 'TreeView';\n","import React, { useState, useEffect, useRef, forwardRef } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport interface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {\n autoplay?: boolean;\n autoplayInterval?: number;\n loop?: boolean;\n showArrows?: boolean;\n showDots?: boolean;\n children: React.ReactNode[];\n}\n\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n autoplay = false,\n autoplayInterval = 4000,\n loop = true,\n showArrows = true,\n showDots = true,\n children,\n className,\n ...props\n },\n ref\n ) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const totalSlides = React.Children.count(children);\n const timerRef = useRef<any>(null);\n\n const nextSlide = () => {\n setCurrentIndex((prev) => {\n if (prev === totalSlides - 1) {\n return loop ? 0 : prev;\n }\n return prev + 1;\n });\n };\n\n const prevSlide = () => {\n setCurrentIndex((prev) => {\n if (prev === 0) {\n return loop ? totalSlides - 1 : prev;\n }\n return prev - 1;\n });\n };\n\n useEffect(() => {\n if (autoplay && totalSlides > 1) {\n timerRef.current = setInterval(nextSlide, autoplayInterval);\n return () => clearInterval(timerRef.current);\n }\n }, [autoplay, autoplayInterval, totalSlides, currentIndex]);\n\n return (\n <div\n ref={ref}\n onMouseEnter={() => autoplay && clearInterval(timerRef.current)}\n onMouseLeave={() => {\n if (autoplay && totalSlides > 1) {\n timerRef.current = setInterval(nextSlide, autoplayInterval);\n }\n }}\n className={cn('relative w-full overflow-hidden rounded-3xl group', className)}\n {...props}\n >\n {/* Slides Track */}\n <div\n className=\"flex transition-transform duration-500 ease-out\"\n style={{ transform: `translateX(-${currentIndex * 100}%)` }}\n >\n {React.Children.map(children, (child, idx) => (\n <div key={idx} className=\"w-full flex-shrink-0\">\n {child}\n </div>\n ))}\n </div>\n\n {/* Previous Button */}\n {showArrows && totalSlides > 1 && (\n <button\n type=\"button\"\n onClick={prevSlide}\n disabled={!loop && currentIndex === 0}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-[var(--ui-bg-surface)]/80 hover:bg-[var(--ui-bg-surface)] backdrop-blur-xl border border-[var(--ui-border-default)] shadow-lg flex items-center justify-center text-[var(--ui-text-primary)] opacity-0 group-hover:opacity-100 transition-all disabled:opacity-0 cursor-pointer\"\n aria-label=\"Previous Slide\"\n >\n <ChevronLeft className=\"w-5 h-5\" />\n </button>\n )}\n\n {/* Next Button */}\n {showArrows && totalSlides > 1 && (\n <button\n type=\"button\"\n onClick={nextSlide}\n disabled={!loop && currentIndex === totalSlides - 1}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-[var(--ui-bg-surface)]/80 hover:bg-[var(--ui-bg-surface)] backdrop-blur-xl border border-[var(--ui-border-default)] shadow-lg flex items-center justify-center text-[var(--ui-text-primary)] opacity-0 group-hover:opacity-100 transition-all disabled:opacity-0 cursor-pointer\"\n aria-label=\"Next Slide\"\n >\n <ChevronRight className=\"w-5 h-5\" />\n </button>\n )}\n\n {/* Dots Pagination */}\n {showDots && totalSlides > 1 && (\n <div className=\"absolute bottom-4 inset-x-0 flex items-center justify-center gap-1.5 pointer-events-auto\">\n {Array.from({ length: totalSlides }).map((_, idx) => (\n <button\n key={idx}\n type=\"button\"\n onClick={() => setCurrentIndex(idx)}\n className={cn(\n 'h-2 rounded-full transition-all cursor-pointer shadow-xs',\n currentIndex === idx\n ? 'w-6 bg-[var(--ui-primary)]'\n : 'w-2 bg-white/40 dark:bg-white/30 hover:bg-white/60'\n )}\n aria-label={`Go to slide ${idx + 1}`}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\nCarousel.displayName = 'Carousel';\n","export * from './Spinner';\r\nexport * from './Skeleton';\r\nexport * from './ProgressBar';\r\nexport * from './Alert';\r\nexport * from './EmptyState';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const spinnerVariants = cva('animate-spin inline-block', {\r\n variants: {\r\n size: {\r\n xs: 'w-3 h-3',\r\n sm: 'w-4 h-4',\r\n md: 'w-6 h-6',\r\n lg: 'w-8 h-8',\r\n xl: 'w-12 h-12',\r\n },\r\n variant: {\r\n primary: 'text-[var(--ui-primary)]',\r\n secondary: 'text-[var(--ui-secondary)]',\r\n current: 'text-current',\r\n muted: 'text-[var(--ui-text-muted)]',\r\n white: 'text-white',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'primary',\r\n },\r\n});\r\n\r\nexport interface SpinnerProps\r\n extends React.SVGAttributes<SVGSVGElement>,\r\n VariantProps<typeof spinnerVariants> {\r\n label?: string;\r\n}\r\n\r\nexport const Spinner = forwardRef<SVGSVGElement, SpinnerProps>(\r\n ({ className, size, variant, label = 'Loading...', ...props }, ref) => {\r\n return (\r\n <svg\r\n ref={ref}\r\n role=\"status\"\r\n aria-label={label}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={cn(spinnerVariants({ size, variant }), className)}\r\n {...props}\r\n >\r\n <circle\r\n className=\"opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\r\n />\r\n </svg>\r\n );\r\n }\r\n);\r\n\r\nSpinner.displayName = 'Spinner';\r\n","import React, { forwardRef } from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\r\n circle?: boolean;\r\n}\r\n\r\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\r\n ({ className, circle = false, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n aria-hidden=\"true\"\r\n className={cn(\r\n 'animate-pulse bg-[var(--ui-bg-tertiary)]',\r\n circle ? 'rounded-full' : 'rounded-[var(--ui-radius-md)]',\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nSkeleton.displayName = 'Skeleton';\r\n\r\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\r\n lines?: number;\r\n gap?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\r\n ({ className, lines = 3, gap = 'md', ...props }, ref) => {\r\n const gapClass = gap === 'sm' ? 'space-y-1.5' : gap === 'lg' ? 'space-y-3' : 'space-y-2';\r\n\r\n return (\r\n <div ref={ref} aria-hidden=\"true\" className={cn('w-full', gapClass, className)} {...props}>\r\n {Array.from({ length: lines }).map((_, i) => (\r\n <Skeleton\r\n key={i}\r\n className={cn('h-4 w-full', i === lines - 1 && 'w-4/5')}\r\n />\r\n ))}\r\n </div>\r\n );\r\n }\r\n);\r\nSkeletonText.displayName = 'SkeletonText';\r\n\r\nexport interface SkeletonCircleProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: number | string;\r\n}\r\n\r\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\r\n ({ className, size = '2.5rem', style, ...props }, ref) => {\r\n return (\r\n <Skeleton\r\n ref={ref}\r\n circle\r\n style={{ width: size, height: size, ...style }}\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nSkeletonCircle.displayName = 'SkeletonCircle';\r\n","import React, { forwardRef, useId } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../utils/cn';\n\nexport const progressVariants = cva('w-full overflow-hidden rounded-full bg-[var(--ui-bg-tertiary)]', {\n variants: {\n size: {\n sm: 'h-1.5',\n md: 'h-2.5',\n lg: 'h-4',\n },\n variant: {\n primary: '[&>div]:bg-[var(--ui-primary)]',\n secondary: '[&>div]:bg-[var(--ui-secondary)]',\n success: '[&>div]:bg-[var(--ui-success)]',\n warning: '[&>div]:bg-[var(--ui-warning)]',\n error: '[&>div]:bg-[var(--ui-error)]',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'primary',\n },\n});\n\nexport interface ProgressBarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n value: number;\n max?: number;\n showValue?: boolean;\n striped?: boolean;\n}\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ className, size, variant, value, max = 100, showValue = false, striped = false, ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n return (\n <div className=\"w-full space-y-1\">\n {showValue && (\n <div className=\"flex justify-between text-xs font-semibold text-[var(--ui-text-muted)] font-mono\">\n <span>Progress</span>\n <span>{Math.round(percentage)}%</span>\n </div>\n )}\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn(progressVariants({ size, variant }), className)}\n {...props}\n >\n <div\n className={cn(\n 'h-full transition-all duration-300 ease-out rounded-full',\n striped && 'bg-[length:1rem_1rem] bg-gradient-to-r from-transparent via-white/20 to-transparent animate-pulse'\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n );\n }\n);\nProgressBar.displayName = 'ProgressBar';\n\nexport interface CircularProgressProps extends React.SVGAttributes<SVGSVGElement> {\n value: number;\n max?: number;\n size?: number;\n strokeWidth?: number;\n showValue?: boolean;\n variant?: 'primary' | 'success' | 'warning' | 'error' | 'purple' | 'cyan';\n trackColor?: string;\n glow?: boolean;\n}\n\nexport const CircularProgress = forwardRef<SVGSVGElement, CircularProgressProps>(\n (\n {\n className,\n value,\n max = 100,\n size = 64,\n strokeWidth = 6,\n showValue = true,\n variant = 'primary',\n trackColor,\n glow = false,\n ...props\n },\n ref\n ) => {\n const gradId = useId().replace(/:/g, '');\n const radius = (size - strokeWidth) / 2;\n const circumference = radius * 2 * Math.PI;\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n const gradients: Record<string, [string, string]> = {\n primary: ['#0071e3', '#2997ff'],\n success: ['#34c759', '#30d158'],\n warning: ['#ff9f0a', '#ffd60a'],\n error: ['#ff3b30', '#ff453a'],\n purple: ['#af52de', '#bf5af2'],\n cyan: ['#00c7be', '#30b0c7'],\n };\n\n const [startColor, endColor] = gradients[variant] || gradients.primary;\n\n return (\n <div\n className={cn('relative inline-flex items-center justify-center select-none', glow && 'drop-shadow-md')}\n style={{ width: size, height: size }}\n >\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className={cn('-rotate-90', className)}\n {...props}\n >\n <defs>\n <linearGradient id={`circle-grad-${gradId}`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n </defs>\n\n {/* Apple Background track */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke={trackColor || 'currentColor'}\n strokeWidth={strokeWidth}\n fill=\"none\"\n className=\"text-[var(--ui-border-default)]/40 dark:text-white/10 opacity-70\"\n />\n\n {/* Apple Progress gradient stroke */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke={`url(#circle-grad-${gradId})`}\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap=\"round\"\n fill=\"none\"\n className=\"transition-all duration-500 ease-out\"\n />\n </svg>\n\n {showValue && (\n <div className=\"absolute inset-0 flex items-center justify-center leading-none\">\n <span\n className=\"font-sans font-extrabold tracking-tight text-[var(--ui-text-primary)]\"\n style={{ fontSize: `${Math.max(10, Math.round(size * 0.23))}px` }}\n >\n {Math.round(percentage)}%\n </span>\n </div>\n )}\n </div>\n );\n }\n);\nCircularProgress.displayName = 'CircularProgress';\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { CheckCircle2, AlertTriangle, AlertCircle, Info, X } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport const alertVariants = cva(\r\n 'relative w-full rounded-[var(--ui-radius-lg)] border p-4 text-sm flex items-start gap-3.5 shadow-sm',\r\n {\r\n variants: {\r\n status: {\r\n info: 'bg-[var(--ui-info-subtle)] border-[var(--ui-info)]/30 text-[var(--ui-text-primary)] [&>svg]:text-[var(--ui-info)]',\r\n success: 'bg-[var(--ui-success-subtle)] border-[var(--ui-success)]/30 text-[var(--ui-text-primary)] [&>svg]:text-[var(--ui-success)]',\r\n warning: 'bg-[var(--ui-warning-subtle)] border-[var(--ui-warning)]/30 text-[var(--ui-text-primary)] [&>svg]:text-[var(--ui-warning)]',\r\n error: 'bg-[var(--ui-error-subtle)] border-[var(--ui-error)]/30 text-[var(--ui-text-primary)] [&>svg]:text-[var(--ui-error)]',\r\n },\r\n },\r\n defaultVariants: {\r\n status: 'info',\r\n },\r\n }\r\n);\r\n\r\nconst statusIcons = {\r\n info: <Info className=\"w-5 h-5 flex-shrink-0\" />,\r\n success: <CheckCircle2 className=\"w-5 h-5 flex-shrink-0\" />,\r\n warning: <AlertTriangle className=\"w-5 h-5 flex-shrink-0\" />,\r\n error: <AlertCircle className=\"w-5 h-5 flex-shrink-0\" />,\r\n};\r\n\r\nexport interface AlertProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof alertVariants> {\r\n icon?: React.ReactNode;\r\n onClose?: () => void;\r\n}\r\n\r\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\r\n ({ className, status = 'info', icon, onClose, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cn(alertVariants({ status }), className)}\r\n {...props}\r\n >\r\n {icon !== undefined ? icon : statusIcons[status || 'info']}\r\n <div className=\"flex-1 space-y-1\">{children}</div>\r\n {onClose && (\r\n <button\r\n type=\"button\"\r\n onClick={onClose}\r\n aria-label=\"Dismiss alert\"\r\n className=\"p-1 rounded text-[var(--ui-text-muted)] hover:text-[var(--ui-text-primary)] hover:bg-black/5 dark:hover:bg-white/5 transition-colors -mr-1 -mt-1\"\r\n >\r\n <X className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nAlert.displayName = 'Alert';\r\n\r\nexport const AlertTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <h5 ref={ref} className={cn('font-semibold leading-none tracking-tight text-[var(--ui-text-primary)]', className)} {...props}>\r\n {children}\r\n </h5>\r\n )\r\n);\r\nAlertTitle.displayName = 'AlertTitle';\r\n\r\nexport const AlertDescription = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <p ref={ref} className={cn('text-xs text-[var(--ui-text-secondary)] leading-relaxed', className)} {...props}>\r\n {children}\r\n </p>\r\n )\r\n);\r\nAlertDescription.displayName = 'AlertDescription';\r\n","import React, { forwardRef } from 'react';\r\nimport { Inbox } from 'lucide-react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\r\n icon?: React.ReactNode;\r\n title: React.ReactNode;\r\n description?: React.ReactNode;\r\n action?: React.ReactNode;\r\n}\r\n\r\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\r\n ({ className, icon, title, description, action, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n 'flex flex-col items-center justify-center p-8 sm:p-12 text-center rounded-[var(--ui-radius-xl)] border border-dashed border-[var(--ui-border-default)] bg-[var(--ui-bg-secondary)]/50',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex items-center justify-center w-14 h-14 rounded-full bg-[var(--ui-bg-tertiary)] text-[var(--ui-text-muted)] mb-4\">\r\n {icon || <Inbox className=\"w-7 h-7 stroke-[1.5]\" />}\r\n </div>\r\n\r\n <h3 className=\"text-base sm:text-lg font-bold text-[var(--ui-text-primary)] mb-1\">\r\n {title}\r\n </h3>\r\n\r\n {description && (\r\n <p className=\"text-xs sm:text-sm text-[var(--ui-text-muted)] max-w-sm mb-6 leading-relaxed\">\r\n {description}\r\n </p>\r\n )}\r\n\r\n {action && <div className=\"inline-flex items-center gap-3\">{action}</div>}\r\n\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nEmptyState.displayName = 'EmptyState';\r\n","export * from './GlassCard';\r\nexport * from './GlassButton';\r\nexport * from './GlassBadge';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nconst glassCardVariants = cva(\r\n 'relative overflow-hidden transition-all duration-300 text-[var(--ui-glass-text-primary)]',\r\n {\r\n variants: {\r\n intensity: {\r\n subtle:\r\n 'bg-[var(--ui-glass-subtle-bg)] backdrop-blur-[var(--ui-glass-subtle-blur)] border border-[var(--ui-glass-subtle-border)]',\r\n standard:\r\n 'bg-[var(--ui-glass-standard-bg)] backdrop-blur-[var(--ui-glass-standard-blur)] border border-[var(--ui-glass-standard-border)] shadow-[var(--ui-glass-standard-shadow)]',\r\n frosted:\r\n 'bg-[var(--ui-glass-frosted-bg)] backdrop-blur-[var(--ui-glass-frosted-blur)] border border-[var(--ui-glass-frosted-border)] shadow-[var(--ui-glass-frosted-shadow)]',\r\n acrylic:\r\n 'bg-[image:var(--ui-glass-acrylic-bg)] backdrop-blur-[var(--ui-glass-acrylic-blur)] border border-[var(--ui-glass-acrylic-border)] shadow-[var(--ui-glass-acrylic-shadow)]',\r\n },\r\n glow: {\r\n none: '',\r\n cyan: 'hover:shadow-[0_0_40px_-8px_rgba(56,189,248,0.3)] hover:border-sky-400/40',\r\n purple: 'hover:shadow-[0_0_40px_-8px_rgba(192,132,252,0.3)] hover:border-purple-400/40',\r\n white: 'hover:shadow-[0_0_35px_-8px_rgba(255,255,255,0.25)] hover:border-white/30',\r\n },\r\n radius: {\r\n md: 'rounded-xl',\r\n lg: 'rounded-2xl',\r\n xl: 'rounded-3xl',\r\n },\r\n padding: {\r\n sm: 'p-4',\r\n md: 'p-6',\r\n lg: 'p-8',\r\n },\r\n },\r\n defaultVariants: {\r\n intensity: 'standard',\r\n glow: 'none',\r\n radius: 'lg',\r\n padding: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface GlassCardProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof glassCardVariants> {\r\n specularLight?: boolean;\r\n}\r\n\r\nexport const GlassCard = forwardRef<HTMLDivElement, GlassCardProps>(\r\n ({ className, intensity, glow, radius, padding, specularLight = true, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(glassCardVariants({ intensity, glow, radius, padding, className }))}\r\n {...props}\r\n >\r\n {specularLight && (\r\n <div\r\n className=\"pointer-events-none absolute inset-x-0 top-0 h-px bg-[image:var(--ui-glass-specular-light)] opacity-80\"\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nGlassCard.displayName = 'GlassCard';\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nconst glassButtonVariants = cva(\r\n 'group relative inline-flex items-center justify-center font-medium tracking-tight transition-all duration-300 active:scale-[0.97] disabled:pointer-events-none disabled:opacity-40 overflow-hidden cursor-pointer select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-900 dark:focus-visible:ring-white/90 focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--ui-focus-ring-offset)]',\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'bg-[var(--ui-glass-btn-default-bg)] hover:bg-[var(--ui-glass-btn-default-hover)] backdrop-blur-md border border-[var(--ui-glass-btn-default-border)] text-[var(--ui-glass-btn-default-text)] shadow-sm dark:shadow-[0_4px_24px_rgba(0,0,0,0.35)] hover:border-black/20 dark:hover:border-white/35',\r\n primary:\r\n 'bg-slate-900 text-white dark:bg-white dark:text-slate-950 font-semibold shadow-md hover:bg-slate-800 dark:hover:bg-slate-100 border border-slate-700 dark:border-white shadow-[0_4px_20px_rgba(0,0,0,0.2)] dark:shadow-[0_0_24px_rgba(255,255,255,0.25)]',\r\n luminescent:\r\n 'bg-gradient-to-r from-slate-800/80 to-slate-900/80 text-white dark:from-white/15 dark:to-white/5 dark:text-white backdrop-blur-xl border border-white/20 dark:border-white/30 shadow-[0_0_20px_-4px_rgba(255,255,255,0.15)] hover:border-white/50 hover:shadow-[0_0_30px_-4px_rgba(255,255,255,0.3)]',\r\n ghost:\r\n 'bg-transparent hover:bg-black/5 dark:hover:bg-white/10 backdrop-blur-sm border border-transparent hover:border-black/10 dark:hover:border-white/15 text-[var(--ui-glass-text-secondary)] hover:text-[var(--ui-glass-text-primary)]',\r\n },\r\n size: {\r\n sm: 'h-8 px-3.5 text-xs rounded-xl gap-1.5',\r\n md: 'h-10 px-5 text-sm rounded-2xl gap-2',\r\n lg: 'h-12 px-7 text-base rounded-2xl gap-2.5',\r\n icon: 'h-10 w-10 rounded-2xl',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface GlassButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof glassButtonVariants> {\r\n shimmer?: boolean;\r\n}\r\n\r\nexport const GlassButton = forwardRef<HTMLButtonElement, GlassButtonProps>(\r\n ({ className, variant, size, shimmer = true, children, ...props }, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n className={cn(glassButtonVariants({ variant, size, className }))}\r\n {...props}\r\n >\r\n {shimmer && (\r\n <span\r\n className=\"pointer-events-none absolute -inset-full top-0 block -rotate-45 bg-gradient-to-r from-transparent via-white/25 dark:via-white/15 to-transparent transition-all duration-700 motion-safe:group-hover:translate-x-full\"\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n <span className=\"relative z-10 inline-flex items-center gap-2\">{children}</span>\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nGlassButton.displayName = 'GlassButton';\r\n","import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../utils/cn';\n\nconst glassBadgeVariants = cva(\n 'inline-flex items-center font-sans font-semibold tracking-tight rounded-full backdrop-blur-xl border transition-all select-none',\n {\n variants: {\n variant: {\n default:\n 'bg-[var(--ui-bg-secondary)]/80 text-[var(--ui-text-primary)] border-[var(--ui-border-default)] shadow-xs',\n emerald:\n 'bg-emerald-500/15 text-emerald-600 dark:text-emerald-400 border-emerald-500/25 shadow-xs shadow-emerald-500/10',\n cyan:\n 'bg-blue-500/15 text-blue-600 dark:text-blue-400 border-blue-500/25 shadow-xs shadow-blue-500/10',\n purple:\n 'bg-purple-500/15 text-purple-600 dark:text-purple-400 border-purple-500/25 shadow-xs shadow-purple-500/10',\n amber:\n 'bg-amber-500/15 text-amber-600 dark:text-amber-400 border-amber-500/25 shadow-xs shadow-amber-500/10',\n rose:\n 'bg-rose-500/15 text-rose-600 dark:text-rose-400 border-rose-500/25 shadow-xs shadow-rose-500/10',\n },\n size: {\n sm: 'text-[10px] px-2 py-0.5 gap-1',\n md: 'text-[11px] px-2.5 py-0.5 gap-1.5',\n lg: 'text-xs px-3 py-1 gap-1.5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\nexport interface GlassBadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof glassBadgeVariants> {\n dot?: boolean;\n}\n\nexport const GlassBadge: React.FC<GlassBadgeProps> = ({\n className,\n variant,\n size,\n dot = false,\n children,\n ...props\n}) => {\n return (\n <span className={cn(glassBadgeVariants({ variant, size, className }))} {...props}>\n {dot && (\n <span\n className=\"h-1.5 w-1.5 rounded-full bg-current motion-safe:animate-pulse shrink-0\"\n aria-hidden=\"true\"\n />\n )}\n <span>{children}</span>\n </span>\n );\n};\n","export * from './BentoGrid';\r\nexport * from './BentoCard';\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nconst bentoGridVariants = cva('grid w-full auto-rows-[minmax(240px,auto)]', {\r\n variants: {\r\n cols: {\r\n 1: 'grid-cols-1',\r\n 2: 'grid-cols-1 md:grid-cols-2',\r\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\r\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\r\n },\r\n gap: {\r\n sm: 'gap-4',\r\n md: 'gap-6',\r\n lg: 'gap-8',\r\n },\r\n flow: {\r\n row: 'grid-flow-row',\r\n col: 'grid-flow-col',\r\n dense: 'grid-flow-dense',\r\n 'row-dense': 'grid-flow-row-dense',\r\n 'col-dense': 'grid-flow-col-dense',\r\n },\r\n },\r\n defaultVariants: {\r\n cols: 3,\r\n gap: 'md',\r\n flow: 'row',\r\n },\r\n});\r\n\r\nexport interface BentoGridProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof bentoGridVariants> {}\r\n\r\nexport const BentoGrid: React.FC<BentoGridProps> = ({\r\n className,\r\n cols,\r\n gap,\r\n flow,\r\n children,\r\n ...props\r\n}) => {\r\n return (\r\n <div className={cn(bentoGridVariants({ cols, gap, flow, className }))} {...props}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import React, { forwardRef } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nconst bentoCardVariants = cva(\r\n 'group relative flex flex-col justify-between overflow-hidden transition-all duration-500 ease-out border text-[var(--ui-bento-text-title)]',\r\n {\r\n variants: {\r\n colSpan: {\r\n 1: 'col-span-1',\r\n 2: 'col-span-1 md:col-span-2',\r\n 3: 'col-span-1 md:col-span-2 lg:col-span-3',\r\n },\r\n rowSpan: {\r\n 1: 'row-span-1',\r\n 2: 'row-span-1 md:row-span-2 md:min-h-[460px]',\r\n 3: 'row-span-1 md:row-span-3 md:min-h-[680px]',\r\n },\r\n variant: {\r\n default:\r\n 'bg-[var(--ui-bento-bg-card)] border-[var(--ui-bento-border)] hover:border-[var(--ui-bento-border-hover)] hover:bg-[var(--ui-bento-bg-card-hover)] shadow-[var(--ui-bento-shadow)]',\r\n spotlight:\r\n 'bg-[var(--ui-bento-bg-card)] border-[var(--ui-bento-border)] hover:border-white/30 dark:hover:border-white/30 hover:shadow-[0_0_35px_-8px_rgba(255,255,255,0.12)]',\r\n elevated:\r\n 'bg-[image:var(--ui-bento-bg-elevated)] border-[var(--ui-bento-border)] hover:border-[var(--ui-bento-border-hover)] shadow-[var(--ui-bento-shadow-elevated)]',\r\n },\r\n radius: {\r\n md: 'rounded-[var(--ui-bento-radius-md)]',\r\n lg: 'rounded-[var(--ui-bento-radius-lg)]',\r\n },\r\n padding: {\r\n sm: 'p-4 sm:p-5',\r\n md: 'p-5 sm:p-7',\r\n lg: 'p-6 sm:p-9',\r\n },\r\n },\r\n defaultVariants: {\r\n colSpan: 1,\r\n rowSpan: 1,\r\n variant: 'default',\r\n radius: 'lg',\r\n padding: 'md',\r\n },\r\n }\r\n);\r\n\r\nexport interface BentoCardProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,\r\n VariantProps<typeof bentoCardVariants> {\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n icon?: React.ReactNode;\r\n tag?: React.ReactNode;\r\n /**\r\n * Decorative background graphic. Non-interactive backdrop element.\r\n */\r\n backgroundGraphic?: React.ReactNode;\r\n /**\r\n * @deprecated Use `backgroundGraphic` instead.\r\n */\r\n graphic?: React.ReactNode;\r\n}\r\n\r\nexport const BentoCard = forwardRef<HTMLDivElement, BentoCardProps>(\r\n (\r\n {\r\n className,\r\n colSpan,\r\n rowSpan,\r\n variant,\r\n radius,\r\n padding,\r\n title,\r\n description,\r\n icon,\r\n tag,\r\n backgroundGraphic,\r\n graphic,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const bgGraphic = backgroundGraphic ?? graphic;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(bentoCardVariants({ colSpan, rowSpan, variant, radius, padding, className }))}\r\n {...props}\r\n >\r\n {/* Subtle Specular Top Line */}\r\n <div\r\n className=\"pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-white/20 to-transparent opacity-50\"\r\n aria-hidden=\"true\"\r\n />\r\n\r\n {/* Background Visual Graphic Slot (Decorative) */}\r\n {bgGraphic && (\r\n <div className=\"absolute inset-0 z-0 overflow-hidden pointer-events-none opacity-70 transition-transform duration-700 ease-out motion-safe:group-hover:scale-105\">\r\n {bgGraphic}\r\n </div>\r\n )}\r\n\r\n {/* Top Header Section */}\r\n {(icon || tag) && (\r\n <div className=\"relative z-10 flex items-start justify-between gap-4\">\r\n {icon && (\r\n <div className=\"flex h-11 w-11 items-center justify-center rounded-2xl bg-[var(--ui-bento-icon-bg)] border border-[var(--ui-bento-icon-border)] backdrop-blur-md shadow-inner transition-transform duration-300 group-hover:scale-105\">\r\n {icon}\r\n </div>\r\n )}\r\n {tag && (\r\n <div className=\"font-mono text-[10px] font-semibold uppercase tracking-widest text-[var(--ui-bento-text-tag)] border border-[var(--ui-bento-icon-border)] bg-[var(--ui-bento-icon-bg)] px-2.5 py-1 rounded-md backdrop-blur-sm\">\r\n {tag}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Main Content Area */}\r\n <div className=\"relative z-10 mt-auto pt-6\">\r\n {title && (\r\n <h3 className=\"text-xl font-bold tracking-tight text-[var(--ui-bento-text-title)] transition-colors group-hover:text-[var(--ui-primary)] dark:group-hover:text-white\">\r\n {title}\r\n </h3>\r\n )}\r\n {description && (\r\n <p className=\"mt-2 text-sm leading-relaxed text-[var(--ui-bento-text-desc)] font-normal\">\r\n {description}\r\n </p>\r\n )}\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nBentoCard.displayName = 'BentoCard';\r\n"]}