@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/utils/cn.ts","../../src/typography/Label.tsx","../../src/forms/FormField.tsx","../../src/forms/Input.tsx","../../src/typography/Kbd.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/buttons/Button.tsx","../../src/forms/FileUpload.tsx","../../src/forms/NumberInput.tsx","../../src/forms/MaskedInput.tsx"],"names":["twMerge","clsx","cva","forwardRef","jsxs","jsx","createContext","useContext","useId","useState","React","X","Search","EyeOff","Eye","useRef","useEffect","ChevronDown","Minus","Check","createPortal","Fragment","CalendarIcon","ChevronLeft","ChevronRight","Clock","ChevronsUpDown","Loader2","UploadCloud","FileText","File","CheckCircle2","AlertCircle","Plus"],"mappings":"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","file":"index.cjs","sourcesContent":["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","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, { 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 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","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 } 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, 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"]}
@@ -0,0 +1,5 @@
1
+ export { C as Checkbox, a as CheckboxGroup, b as CheckboxGroupProps, c as CheckboxProps, d as Combobox, e as ComboboxOption, f as ComboboxProps, g as CurrencyInput, h as CurrencyInputProps, D as DatePicker, i as DatePickerProps, j as DateRange, k as DateRangePicker, l as DateRangePickerProps, F as FileUpload, m as FileUploadProps, n as FormErrorMessage, o as FormField, p as FormFieldProps, q as FormHelperText, r as FormLabel, I as Input, t as InputProps, M as MaskedInput, u as MaskedInputProps, v as MultiSelect, w as MultiSelectProps, N as NumberInput, x as NumberInputProps, P as PasswordInput, y as PasswordInputProps, z as PinInput, A as PinInputProps, R as Radio, B as RadioGroup, E as RadioGroupProps, G as RadioProps, H as RangeSlider, J as RangeSliderProps, S as SearchInput, K as SearchInputProps, L as Select, O as SelectOption, Q as SelectProps, T as Slider, U as SliderProps, V as Switch, W as SwitchProps, X as Textarea, Y as TextareaProps, Z as TimePicker, _ as TimePickerProps, $ as UploadedFile, a0 as applyMask, a1 as checkboxVariants, a2 as formatCurrencyString, a3 as formatDate, a4 as formatDisplayDate, a5 as formatFileSize, a6 as inputVariants, a7 as radioVariants, a8 as selectVariants, a9 as switchThumbVariants, aa as switchVariants, ab as textareaVariants, ac as useFormField } from '../index-TyK-Ldpy.cjs';
2
+ import 'react';
3
+ import '../Label-DWOlgSNW.cjs';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
@@ -0,0 +1,5 @@
1
+ export { C as Checkbox, a as CheckboxGroup, b as CheckboxGroupProps, c as CheckboxProps, d as Combobox, e as ComboboxOption, f as ComboboxProps, g as CurrencyInput, h as CurrencyInputProps, D as DatePicker, i as DatePickerProps, j as DateRange, k as DateRangePicker, l as DateRangePickerProps, F as FileUpload, m as FileUploadProps, n as FormErrorMessage, o as FormField, p as FormFieldProps, q as FormHelperText, r as FormLabel, I as Input, t as InputProps, M as MaskedInput, u as MaskedInputProps, v as MultiSelect, w as MultiSelectProps, N as NumberInput, x as NumberInputProps, P as PasswordInput, y as PasswordInputProps, z as PinInput, A as PinInputProps, R as Radio, B as RadioGroup, E as RadioGroupProps, G as RadioProps, H as RangeSlider, J as RangeSliderProps, S as SearchInput, K as SearchInputProps, L as Select, O as SelectOption, Q as SelectProps, T as Slider, U as SliderProps, V as Switch, W as SwitchProps, X as Textarea, Y as TextareaProps, Z as TimePicker, _ as TimePickerProps, $ as UploadedFile, a0 as applyMask, a1 as checkboxVariants, a2 as formatCurrencyString, a3 as formatDate, a4 as formatDisplayDate, a5 as formatFileSize, a6 as inputVariants, a7 as radioVariants, a8 as selectVariants, a9 as switchThumbVariants, aa as switchVariants, ab as textareaVariants, ac as useFormField } from '../index-Cle6QzQl.js';
2
+ import 'react';
3
+ import '../Label-DWOlgSNW.js';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
@@ -0,0 +1,10 @@
1
+ export { Checkbox, CheckboxGroup, Combobox, CurrencyInput, DatePicker, DateRangePicker, FileUpload, FormErrorMessage, FormField, FormHelperText, FormLabel, Input, MaskedInput, MultiSelect, NumberInput, PasswordInput, PinInput, Radio, RadioGroup, RangeSlider, SearchInput, Select, Slider, Switch, Textarea, TimePicker, applyMask, checkboxVariants, formatCurrencyString, formatDate, formatDisplayDate, formatFileSize, inputVariants, radioVariants, selectVariants, switchThumbVariants, switchVariants, textareaVariants, useFormField } from '../chunk-F5Q7BTMH.js';
2
+ import '../chunk-X76KBH4Y.js';
3
+ import '../chunk-GXI2H5XA.js';
4
+ import '../chunk-H3LCNPMC.js';
5
+ import '../chunk-IABPUCAQ.js';
6
+ import '../chunk-EU2LPUYP.js';
7
+ import '../chunk-66VWUJEI.js';
8
+ import '../chunk-4S6L5V7X.js';
9
+ //# sourceMappingURL=index.js.map
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,6 @@
1
+ /* Forms Tokens */
2
+ :root {
3
+ --ui-input-height-sm: 2rem;
4
+ --ui-input-height-md: 2.5rem;
5
+ --ui-input-height-lg: 3rem;
6
+ }