@sth87/shadcn-design-system 0.0.35 → 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 (421) hide show
  1. package/README.md +20 -2
  2. package/dist/AI_CONTEXT.md +212 -214
  3. package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
  4. package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
  5. package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
  6. package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
  7. package/dist/cjs/components/Badge/Badge.cjs +1 -1
  8. package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
  9. package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +1 -1
  10. package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
  11. package/dist/cjs/components/Button/Button.cjs +1 -1
  12. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  13. package/dist/cjs/components/Calendar/Calendar.cjs +1 -1
  14. package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
  15. package/dist/cjs/components/Carousel/Carousel.cjs +1 -1
  16. package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
  17. package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
  18. package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  19. package/dist/cjs/components/Collapsible/Collapsible.cjs +1 -1
  20. package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -1
  21. package/dist/cjs/components/Command/Command.cjs +1 -1
  22. package/dist/cjs/components/Command/Command.cjs.map +1 -1
  23. package/dist/cjs/components/ContextMenu/ContextMenu.cjs +1 -1
  24. package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -1
  25. package/dist/cjs/components/Cropper/Cropper.cjs +1 -1
  26. package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -1
  27. package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
  28. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  29. package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
  30. package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
  31. package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -1
  32. package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -1
  33. package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
  34. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  35. package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +1 -1
  36. package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  37. package/dist/cjs/components/FloatLabel.cjs +1 -1
  38. package/dist/cjs/components/FloatLabel.cjs.map +1 -1
  39. package/dist/cjs/components/Glass/Glass.cjs +1 -1
  40. package/dist/cjs/components/Glass/Glass.cjs.map +1 -1
  41. package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
  42. package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
  43. package/dist/cjs/components/Input/Input.cjs +1 -1
  44. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  45. package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -1
  46. package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -1
  47. package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -1
  48. package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -1
  49. package/dist/cjs/components/Marquee/Marquee.cjs +1 -1
  50. package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -1
  51. package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
  52. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  53. package/dist/cjs/components/QrCode/QrCode.cjs +1 -1
  54. package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -1
  55. package/dist/cjs/components/Radio/Radio.cjs +1 -1
  56. package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
  57. package/dist/cjs/components/Rate/Rate.cjs +1 -1
  58. package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
  59. package/dist/cjs/components/Resizable/Resizable.cjs +1 -1
  60. package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -1
  61. package/dist/cjs/components/ScrollArea/ScrollArea.cjs +1 -1
  62. package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  63. package/dist/cjs/components/Select/Select.cjs +1 -1
  64. package/dist/cjs/components/Select/Select.cjs.map +1 -1
  65. package/dist/cjs/components/Sheet/Sheet.cjs +2 -2
  66. package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
  67. package/dist/cjs/components/Slider/Slider.cjs +1 -1
  68. package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
  69. package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
  70. package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
  71. package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
  72. package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
  73. package/dist/cjs/components/Switch/Switch.cjs +1 -1
  74. package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
  75. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -1
  76. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
  77. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -1
  78. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
  79. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -1
  80. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
  81. package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
  82. package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
  83. package/dist/cjs/components/Table/data-table-pagination.cjs +1 -1
  84. package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -1
  85. package/dist/cjs/components/Table/data-table.cjs +1 -1
  86. package/dist/cjs/components/Table/data-table.cjs.map +1 -1
  87. package/dist/cjs/components/Tabs/Tabs.cjs +1 -1
  88. package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
  89. package/dist/cjs/components/Tabs/classes.cjs +1 -1
  90. package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
  91. package/dist/cjs/components/Textarea/Textarea.cjs +1 -1
  92. package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -1
  93. package/dist/cjs/components/TimeGridView.cjs +1 -1
  94. package/dist/cjs/components/TimeGridView.cjs.map +1 -1
  95. package/dist/cjs/components/Toast/Toast.cjs +1 -1
  96. package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
  97. package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
  98. package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  99. package/dist/cjs/components/Tour/Tour.cjs +1 -1
  100. package/dist/cjs/components/Tour/Tour.cjs.map +1 -1
  101. package/dist/cjs/components/Tour/TourWrapper.cjs +1 -1
  102. package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -1
  103. package/dist/cjs/components/Upload/Upload.cjs +3 -3
  104. package/dist/cjs/components/Upload/Upload.cjs.map +1 -1
  105. package/dist/cjs/components/WheelColumn.cjs +1 -1
  106. package/dist/cjs/components/WheelColumn.cjs.map +1 -1
  107. package/dist/cjs/lib/TextAnimation/BlurText.cjs +1 -1
  108. package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -1
  109. package/dist/cjs/lib/TextAnimation/CircularText.cjs +1 -1
  110. package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -1
  111. package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -1
  112. package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -1
  113. package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -1
  114. package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -1
  115. package/dist/cjs/lib/TextAnimation/RollingText.cjs +1 -1
  116. package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -1
  117. package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -1
  118. package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -1
  119. package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -1
  120. package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -1
  121. package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -1
  122. package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -1
  123. package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +1 -1
  124. package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -1
  125. package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +2 -2
  126. package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -1
  127. package/dist/cjs/lib/TextAnimation/TypingText.cjs +1 -1
  128. package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -1
  129. package/dist/cjs/lib/TextAnimation/WritingText.cjs +1 -1
  130. package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -1
  131. package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +1 -0
  132. package/dist/cjs/packages/ui/src/components/accordion.cjs +1 -1
  133. package/dist/cjs/packages/ui/src/components/accordion.cjs.map +1 -1
  134. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
  135. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
  136. package/dist/cjs/packages/ui/src/components/avatar.cjs +1 -1
  137. package/dist/cjs/packages/ui/src/components/avatar.cjs.map +1 -1
  138. package/dist/cjs/packages/ui/src/components/badge.cjs +1 -1
  139. package/dist/cjs/packages/ui/src/components/badge.cjs.map +1 -1
  140. package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +1 -1
  141. package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +1 -1
  142. package/dist/cjs/packages/ui/src/components/button-group.cjs +1 -1
  143. package/dist/cjs/packages/ui/src/components/button-group.cjs.map +1 -1
  144. package/dist/cjs/packages/ui/src/components/button.cjs +1 -1
  145. package/dist/cjs/packages/ui/src/components/button.cjs.map +1 -1
  146. package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
  147. package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
  148. package/dist/cjs/packages/ui/src/components/checkbox.cjs +1 -1
  149. package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +1 -1
  150. package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
  151. package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
  152. package/dist/cjs/packages/ui/src/components/command.cjs +1 -1
  153. package/dist/cjs/packages/ui/src/components/command.cjs.map +1 -1
  154. package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
  155. package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
  156. package/dist/cjs/packages/ui/src/components/dialog.cjs +1 -1
  157. package/dist/cjs/packages/ui/src/components/dialog.cjs.map +1 -1
  158. package/dist/cjs/packages/ui/src/components/drawer.cjs +1 -1
  159. package/dist/cjs/packages/ui/src/components/drawer.cjs.map +1 -1
  160. package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +1 -1
  161. package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +1 -1
  162. package/dist/cjs/packages/ui/src/components/input-otp.cjs +1 -1
  163. package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +1 -1
  164. package/dist/cjs/packages/ui/src/components/input.cjs +1 -1
  165. package/dist/cjs/packages/ui/src/components/input.cjs.map +1 -1
  166. package/dist/cjs/packages/ui/src/components/label.cjs +1 -1
  167. package/dist/cjs/packages/ui/src/components/label.cjs.map +1 -1
  168. package/dist/cjs/packages/ui/src/components/pagination.cjs +1 -1
  169. package/dist/cjs/packages/ui/src/components/pagination.cjs.map +1 -1
  170. package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
  171. package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
  172. package/dist/cjs/packages/ui/src/components/radio-group.cjs +1 -1
  173. package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +1 -1
  174. package/dist/cjs/packages/ui/src/components/resizable.cjs +1 -1
  175. package/dist/cjs/packages/ui/src/components/resizable.cjs.map +1 -1
  176. package/dist/cjs/packages/ui/src/components/scroll-area.cjs +1 -1
  177. package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +1 -1
  178. package/dist/cjs/packages/ui/src/components/select.cjs +1 -1
  179. package/dist/cjs/packages/ui/src/components/select.cjs.map +1 -1
  180. package/dist/cjs/packages/ui/src/components/separator.cjs +1 -1
  181. package/dist/cjs/packages/ui/src/components/separator.cjs.map +1 -1
  182. package/dist/cjs/packages/ui/src/components/sheet.cjs +1 -1
  183. package/dist/cjs/packages/ui/src/components/sheet.cjs.map +1 -1
  184. package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
  185. package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
  186. package/dist/cjs/packages/ui/src/components/skeleton.cjs +1 -1
  187. package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +1 -1
  188. package/dist/cjs/packages/ui/src/components/switch.cjs +1 -1
  189. package/dist/cjs/packages/ui/src/components/switch.cjs.map +1 -1
  190. package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
  191. package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
  192. package/dist/cjs/packages/ui/src/components/tabs.cjs +1 -1
  193. package/dist/cjs/packages/ui/src/components/tabs.cjs.map +1 -1
  194. package/dist/cjs/packages/ui/src/components/textarea.cjs +1 -1
  195. package/dist/cjs/packages/ui/src/components/textarea.cjs.map +1 -1
  196. package/dist/cjs/packages/ui/src/components/toggle.cjs +1 -1
  197. package/dist/cjs/packages/ui/src/components/toggle.cjs.map +1 -1
  198. package/dist/cjs/packages/ui/src/components/tooltip.cjs +1 -1
  199. package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +1 -1
  200. package/dist/cjs/packages/ui/src/components/tree-view.cjs +1 -1
  201. package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +1 -1
  202. package/dist/cjs/styles/index.css +1 -1
  203. package/dist/cjs/utils/animations.cjs +1 -1
  204. package/dist/cjs/utils/animations.cjs.map +1 -1
  205. package/dist/cjs/utils/css.cjs +1 -1
  206. package/dist/cjs/utils/css.cjs.map +1 -1
  207. package/dist/cjs/utils/parsers.cjs +1 -1
  208. package/dist/cjs/utils/parsers.cjs.map +1 -1
  209. package/dist/esm/components/Accordion/Accordion.js +60 -60
  210. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  211. package/dist/esm/components/Avatar/Avatar.js +40 -40
  212. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  213. package/dist/esm/components/Badge/Badge.js +1 -1
  214. package/dist/esm/components/Badge/Badge.js.map +1 -1
  215. package/dist/esm/components/Breadcrumb/Breadcrumb.js +36 -36
  216. package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
  217. package/dist/esm/components/Button/Button.js +9 -9
  218. package/dist/esm/components/Button/Button.js.map +1 -1
  219. package/dist/esm/components/Calendar/Calendar.js +4 -4
  220. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  221. package/dist/esm/components/Carousel/Carousel.js +165 -165
  222. package/dist/esm/components/Carousel/Carousel.js.map +1 -1
  223. package/dist/esm/components/Checkbox/Checkbox.js +26 -26
  224. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  225. package/dist/esm/components/Collapsible/Collapsible.js +43 -43
  226. package/dist/esm/components/Collapsible/Collapsible.js.map +1 -1
  227. package/dist/esm/components/Command/Command.js +28 -28
  228. package/dist/esm/components/Command/Command.js.map +1 -1
  229. package/dist/esm/components/ContextMenu/ContextMenu.js +11 -11
  230. package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -1
  231. package/dist/esm/components/Cropper/Cropper.js +132 -132
  232. package/dist/esm/components/Cropper/Cropper.js.map +1 -1
  233. package/dist/esm/components/DatePicker/DatePicker.js +75 -75
  234. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  235. package/dist/esm/components/DatePicker/RangePicker.js +136 -136
  236. package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
  237. package/dist/esm/components/DatePicker/TimePicker.js +150 -150
  238. package/dist/esm/components/DatePicker/TimePicker.js.map +1 -1
  239. package/dist/esm/components/Dialog/Dialog.js +114 -114
  240. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  241. package/dist/esm/components/DropdownMenu/DropdownMenu.js +13 -13
  242. package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
  243. package/dist/esm/components/FloatLabel.js +44 -44
  244. package/dist/esm/components/FloatLabel.js.map +1 -1
  245. package/dist/esm/components/Glass/Glass.js +15 -15
  246. package/dist/esm/components/Glass/Glass.js.map +1 -1
  247. package/dist/esm/components/ImageViewer/ImageViewer.js +53 -53
  248. package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
  249. package/dist/esm/components/Input/Input.js +104 -104
  250. package/dist/esm/components/Input/Input.js.map +1 -1
  251. package/dist/esm/components/InputOTP/InputOTP.js +16 -16
  252. package/dist/esm/components/InputOTP/InputOTP.js.map +1 -1
  253. package/dist/esm/components/Interactive/CursorFollow.js +49 -49
  254. package/dist/esm/components/Interactive/CursorFollow.js.map +1 -1
  255. package/dist/esm/components/Marquee/Marquee.js +130 -130
  256. package/dist/esm/components/Marquee/Marquee.js.map +1 -1
  257. package/dist/esm/components/Pagination/Pagination.js +68 -68
  258. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  259. package/dist/esm/components/QrCode/QrCode.js +37 -37
  260. package/dist/esm/components/QrCode/QrCode.js.map +1 -1
  261. package/dist/esm/components/Radio/Radio.js +16 -16
  262. package/dist/esm/components/Radio/Radio.js.map +1 -1
  263. package/dist/esm/components/Rate/Rate.js +62 -62
  264. package/dist/esm/components/Rate/Rate.js.map +1 -1
  265. package/dist/esm/components/Resizable/Resizable.js +6 -6
  266. package/dist/esm/components/Resizable/Resizable.js.map +1 -1
  267. package/dist/esm/components/ScrollArea/ScrollArea.js +10 -10
  268. package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -1
  269. package/dist/esm/components/Select/Select.js +64 -64
  270. package/dist/esm/components/Select/Select.js.map +1 -1
  271. package/dist/esm/components/Sheet/Sheet.js +21 -21
  272. package/dist/esm/components/Sheet/Sheet.js.map +1 -1
  273. package/dist/esm/components/Slider/Slider.js +54 -54
  274. package/dist/esm/components/Slider/Slider.js.map +1 -1
  275. package/dist/esm/components/Stepper/Stepper.js +198 -198
  276. package/dist/esm/components/Stepper/Stepper.js.map +1 -1
  277. package/dist/esm/components/Stepper/StepperWrapper.js +15 -15
  278. package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
  279. package/dist/esm/components/Switch/Switch.js +38 -38
  280. package/dist/esm/components/Switch/Switch.js.map +1 -1
  281. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +37 -37
  282. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
  283. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +25 -25
  284. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
  285. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +64 -64
  286. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
  287. package/dist/esm/components/Table/data-table-column-header.js +18 -18
  288. package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
  289. package/dist/esm/components/Table/data-table-pagination.js +21 -21
  290. package/dist/esm/components/Table/data-table-pagination.js.map +1 -1
  291. package/dist/esm/components/Table/data-table.js +18 -18
  292. package/dist/esm/components/Table/data-table.js.map +1 -1
  293. package/dist/esm/components/Tabs/Tabs.js +242 -242
  294. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  295. package/dist/esm/components/Tabs/classes.js +51 -51
  296. package/dist/esm/components/Tabs/classes.js.map +1 -1
  297. package/dist/esm/components/Textarea/Textarea.js +49 -49
  298. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  299. package/dist/esm/components/TimeGridView.js +12 -12
  300. package/dist/esm/components/TimeGridView.js.map +1 -1
  301. package/dist/esm/components/Toast/Toast.js +45 -45
  302. package/dist/esm/components/Toast/Toast.js.map +1 -1
  303. package/dist/esm/components/Tooltip/Tooltip.js +19 -19
  304. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  305. package/dist/esm/components/Tour/Tour.js +11 -11
  306. package/dist/esm/components/Tour/Tour.js.map +1 -1
  307. package/dist/esm/components/Tour/TourWrapper.js +15 -15
  308. package/dist/esm/components/Tour/TourWrapper.js.map +1 -1
  309. package/dist/esm/components/Upload/Upload.js +405 -405
  310. package/dist/esm/components/Upload/Upload.js.map +1 -1
  311. package/dist/esm/components/WheelColumn.js +47 -47
  312. package/dist/esm/components/WheelColumn.js.map +1 -1
  313. package/dist/esm/lib/TextAnimation/BlurText.js +18 -18
  314. package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -1
  315. package/dist/esm/lib/TextAnimation/CircularText.js +7 -7
  316. package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -1
  317. package/dist/esm/lib/TextAnimation/FlipWords.js +21 -21
  318. package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -1
  319. package/dist/esm/lib/TextAnimation/GradientText.js +4 -4
  320. package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -1
  321. package/dist/esm/lib/TextAnimation/RollingText.js +24 -24
  322. package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -1
  323. package/dist/esm/lib/TextAnimation/RotatingText.js +6 -6
  324. package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -1
  325. package/dist/esm/lib/TextAnimation/ShimmeringText.js +9 -9
  326. package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -1
  327. package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +14 -14
  328. package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -1
  329. package/dist/esm/lib/TextAnimation/TextHoverEffect.js +9 -9
  330. package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -1
  331. package/dist/esm/lib/TextAnimation/TextPressureEffect.js +3 -3
  332. package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -1
  333. package/dist/esm/lib/TextAnimation/TypingText.js +17 -17
  334. package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -1
  335. package/dist/esm/lib/TextAnimation/WritingText.js +10 -10
  336. package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -1
  337. package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +1 -0
  338. package/dist/esm/packages/ui/src/components/accordion.js +31 -31
  339. package/dist/esm/packages/ui/src/components/accordion.js.map +1 -1
  340. package/dist/esm/packages/ui/src/components/alert-dialog.js +33 -33
  341. package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
  342. package/dist/esm/packages/ui/src/components/avatar.js +20 -20
  343. package/dist/esm/packages/ui/src/components/avatar.js.map +1 -1
  344. package/dist/esm/packages/ui/src/components/badge.js +53 -53
  345. package/dist/esm/packages/ui/src/components/badge.js.map +1 -1
  346. package/dist/esm/packages/ui/src/components/breadcrumb.js +20 -20
  347. package/dist/esm/packages/ui/src/components/breadcrumb.js.map +1 -1
  348. package/dist/esm/packages/ui/src/components/button-group.js +31 -31
  349. package/dist/esm/packages/ui/src/components/button-group.js.map +1 -1
  350. package/dist/esm/packages/ui/src/components/button.js +90 -90
  351. package/dist/esm/packages/ui/src/components/button.js.map +1 -1
  352. package/dist/esm/packages/ui/src/components/calendar.js +94 -94
  353. package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
  354. package/dist/esm/packages/ui/src/components/checkbox.js +47 -47
  355. package/dist/esm/packages/ui/src/components/checkbox.js.map +1 -1
  356. package/dist/esm/packages/ui/src/components/combobox.js +64 -64
  357. package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
  358. package/dist/esm/packages/ui/src/components/command.js +77 -77
  359. package/dist/esm/packages/ui/src/components/command.js.map +1 -1
  360. package/dist/esm/packages/ui/src/components/context-menu.js +76 -76
  361. package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
  362. package/dist/esm/packages/ui/src/components/dialog.js +54 -54
  363. package/dist/esm/packages/ui/src/components/dialog.js.map +1 -1
  364. package/dist/esm/packages/ui/src/components/drawer.js +39 -39
  365. package/dist/esm/packages/ui/src/components/drawer.js.map +1 -1
  366. package/dist/esm/packages/ui/src/components/dropdown-menu.js +109 -109
  367. package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +1 -1
  368. package/dist/esm/packages/ui/src/components/input-otp.js +30 -30
  369. package/dist/esm/packages/ui/src/components/input-otp.js.map +1 -1
  370. package/dist/esm/packages/ui/src/components/input.js +19 -19
  371. package/dist/esm/packages/ui/src/components/input.js.map +1 -1
  372. package/dist/esm/packages/ui/src/components/label.js +9 -9
  373. package/dist/esm/packages/ui/src/components/label.js.map +1 -1
  374. package/dist/esm/packages/ui/src/components/pagination.js +26 -26
  375. package/dist/esm/packages/ui/src/components/pagination.js.map +1 -1
  376. package/dist/esm/packages/ui/src/components/popover.js +13 -13
  377. package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
  378. package/dist/esm/packages/ui/src/components/radio-group.js +45 -45
  379. package/dist/esm/packages/ui/src/components/radio-group.js.map +1 -1
  380. package/dist/esm/packages/ui/src/components/resizable.js +18 -18
  381. package/dist/esm/packages/ui/src/components/resizable.js.map +1 -1
  382. package/dist/esm/packages/ui/src/components/scroll-area.js +31 -31
  383. package/dist/esm/packages/ui/src/components/scroll-area.js.map +1 -1
  384. package/dist/esm/packages/ui/src/components/select.js +119 -119
  385. package/dist/esm/packages/ui/src/components/select.js.map +1 -1
  386. package/dist/esm/packages/ui/src/components/separator.js +86 -86
  387. package/dist/esm/packages/ui/src/components/separator.js.map +1 -1
  388. package/dist/esm/packages/ui/src/components/sheet.js +50 -50
  389. package/dist/esm/packages/ui/src/components/sheet.js.map +1 -1
  390. package/dist/esm/packages/ui/src/components/sidebar.js +198 -198
  391. package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
  392. package/dist/esm/packages/ui/src/components/skeleton.js +3 -3
  393. package/dist/esm/packages/ui/src/components/skeleton.js.map +1 -1
  394. package/dist/esm/packages/ui/src/components/switch.js +57 -57
  395. package/dist/esm/packages/ui/src/components/switch.js.map +1 -1
  396. package/dist/esm/packages/ui/src/components/table.js +17 -17
  397. package/dist/esm/packages/ui/src/components/table.js.map +1 -1
  398. package/dist/esm/packages/ui/src/components/tabs.js +33 -33
  399. package/dist/esm/packages/ui/src/components/tabs.js.map +1 -1
  400. package/dist/esm/packages/ui/src/components/textarea.js +17 -17
  401. package/dist/esm/packages/ui/src/components/textarea.js.map +1 -1
  402. package/dist/esm/packages/ui/src/components/toggle.js +36 -36
  403. package/dist/esm/packages/ui/src/components/toggle.js.map +1 -1
  404. package/dist/esm/packages/ui/src/components/tooltip.js +20 -20
  405. package/dist/esm/packages/ui/src/components/tooltip.js.map +1 -1
  406. package/dist/esm/packages/ui/src/components/tree-view.js +218 -218
  407. package/dist/esm/packages/ui/src/components/tree-view.js.map +1 -1
  408. package/dist/esm/styles/index.css +1 -1
  409. package/dist/esm/utils/animations.js +55 -55
  410. package/dist/esm/utils/animations.js.map +1 -1
  411. package/dist/esm/utils/css.js +7 -7
  412. package/dist/esm/utils/css.js.map +1 -1
  413. package/dist/esm/utils/parsers.js +1 -1
  414. package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -1
  415. package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -1
  416. package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -1
  417. package/package.json +1 -1
  418. package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +0 -1
  419. package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +0 -1
  420. /package/dist/cjs/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.cjs +0 -0
  421. /package/dist/esm/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.js +0 -0
@@ -1,4 +1,4 @@
1
- import { jsxs as h, jsx as a } from "react/jsx-runtime";
1
+ import { jsxs as h, jsx as n } from "react/jsx-runtime";
2
2
  import * as f from "react";
3
3
  import { Calendar as ge } from "../../packages/ui/src/components/calendar.js";
4
4
  import { Popover as ve, PopoverTrigger as we, PopoverContent as he } from "../../packages/ui/src/components/popover.js";
@@ -39,39 +39,39 @@ import { enUS as ke, vi as Se } from "date-fns/locale";
39
39
  import { DATE_FORMAT as _ } from "../../constants/common.js";
40
40
  import Re from "../Button/Button.js";
41
41
  import Oe from "../Input/Input.js";
42
- function Fe(t, i = _, o) {
43
- return t ? B(t, i, o ? { locale: o } : void 0) : "";
42
+ function Fe(t, s = _, o) {
43
+ return t ? B(t, s, o ? { locale: o } : void 0) : "";
44
44
  }
45
- const z = (t, i = _) => {
46
- const o = Ne(t, i, /* @__PURE__ */ new Date());
45
+ const z = (t, s = _) => {
46
+ const o = Ne(t, s, /* @__PURE__ */ new Date());
47
47
  return Pe(o) ? o : void 0;
48
48
  };
49
49
  function Ie(t) {
50
- return t.replace(/dd|MM|yyyy/g, (i) => {
51
- switch (i) {
50
+ return t.replace(/dd|MM|yyyy/g, (s) => {
51
+ switch (s) {
52
52
  case "dd":
53
53
  case "MM":
54
54
  return "99";
55
55
  case "yyyy":
56
56
  return "9999";
57
57
  default:
58
- return i;
58
+ return s;
59
59
  }
60
- }).replace(/d|M|y/g, (i) => {
61
- switch (i) {
60
+ }).replace(/d|M|y/g, (s) => {
61
+ switch (s) {
62
62
  case "d":
63
63
  case "M":
64
64
  return "9";
65
65
  case "y":
66
66
  return "9";
67
67
  default:
68
- return i;
68
+ return s;
69
69
  }
70
70
  });
71
71
  }
72
72
  function Dr({
73
73
  value: t,
74
- onChange: i,
74
+ onChange: s,
75
75
  onSelect: o,
76
76
  calendarClassName: q,
77
77
  side: G = "bottom",
@@ -96,93 +96,93 @@ function Dr({
96
96
  hourInterval: re = 1,
97
97
  minuteInterval: te = 1,
98
98
  secondInterval: oe = 1,
99
- disabledTimes: ie,
100
- disabledTimeRanges: ne,
101
- showNowButton: ae = !1,
102
- nowButtonLabel: se = "Now",
103
- timePickerLabel: le,
104
- openOnFocus: de = !0,
105
- ...n
99
+ disabledTimes: se,
100
+ disabledTimeRanges: ie,
101
+ showNowButton: ne = !1,
102
+ nowButtonLabel: ae = "Now",
103
+ timePickerLabel: de,
104
+ openOnFocus: le = !0,
105
+ ...i
106
106
  }) {
107
107
  let m, O;
108
108
  typeof y == "string" ? (m = y, O = y) : (m = y.input, O = y.output);
109
109
  let C;
110
110
  N === !0 ? C = Ie(m) : typeof N == "string" && (C = N);
111
- const F = R && c ? g : c ? `${m} ${g}` : m, T = t ? z(t, F) : void 0, [b, D] = f.useState(!1), [s, l] = f.useState(T), [ce, v] = f.useState(T), [w, u] = f.useState(t || ""), me = f.useRef(null), I = f.useRef(!1), V = P?.locale ? P?.locale : Q === "en" ? ke : Se, A = x ? X : k;
111
+ const F = R && c ? g : c ? `${m} ${g}` : m, T = t ? z(t, F) : void 0, [b, D] = f.useState(!1), [a, d] = f.useState(T), [ce, v] = f.useState(T), [w, u] = f.useState(t || ""), me = f.useRef(null), I = f.useRef(!1), V = P?.locale ? P?.locale : Q === "en" ? ke : Se, A = x ? X : k;
112
112
  f.useEffect(() => {
113
113
  if (t !== w && !I.current) {
114
114
  u(t || "");
115
115
  const e = t ? z(t, F) : void 0;
116
- e ? (l(e), v(e)) : t || (l(void 0), v(void 0));
116
+ e ? (d(e), v(e)) : t || (d(void 0), v(void 0));
117
117
  }
118
118
  }, [t, w, F]);
119
- const d = (e) => {
119
+ const l = (e) => {
120
120
  if (!e) return "";
121
121
  let r = Fe(e, O, V);
122
122
  return c && (r += ` ${B(e, g)}`), r;
123
123
  }, ue = (e) => {
124
- l(e), u(d(e)), o?.(e, d(e));
124
+ d(e), u(l(e)), o?.(e, l(e));
125
125
  }, pe = (e) => {
126
126
  if (!e) {
127
- u(""), l(void 0), o?.(void 0, void 0);
127
+ u(""), d(void 0), o?.(void 0, void 0);
128
128
  return;
129
129
  }
130
130
  u(e);
131
131
  const r = z(e, m);
132
- r ? (l(r), v(r), o?.(r, d(r))) : (l(void 0), o?.(void 0, void 0));
132
+ r ? (d(r), v(r), o?.(r, l(r))) : (d(void 0), o?.(void 0, void 0));
133
133
  }, fe = (e, r, H) => {
134
134
  if (!H) {
135
- i?.(e, r, void 0);
135
+ s?.(e, r, void 0);
136
136
  return;
137
137
  }
138
- const p = new Date(s || /* @__PURE__ */ new Date());
138
+ const p = new Date(a || /* @__PURE__ */ new Date());
139
139
  p.setHours(
140
140
  H.getHours(),
141
141
  H.getMinutes(),
142
142
  H.getSeconds(),
143
143
  0
144
- ), l(p), u(d(p)), o?.(p, d(p)), i?.(e, d(p), p);
144
+ ), d(p), u(l(p)), o?.(p, l(p)), s?.(e, l(p), p);
145
145
  }, U = S ? S({
146
146
  value: w,
147
- date: s,
147
+ date: a,
148
148
  onSelect: ue,
149
149
  onChange: pe
150
150
  }) : /* @__PURE__ */ h(
151
151
  Re,
152
152
  {
153
153
  variant: "ghost",
154
- className: "!p-1 !leading-0 h-auto rounded hover:bg-accent transition-colors",
155
- size: n.size,
154
+ className: "ds:!p-1 ds:!leading-0 ds:h-auto ds:rounded ds:hover:bg-accent ds:transition-colors",
155
+ size: i.size,
156
156
  children: [
157
- /* @__PURE__ */ a(
157
+ /* @__PURE__ */ n(
158
158
  Ce,
159
159
  {
160
160
  className: M({
161
- "size-3": n.size === "xs" || n.size === "sm",
162
- "size-3.5": !n.size || n.size === "normal",
163
- "size-4": n.size === "lg" || n.size === "xl"
161
+ "ds:size-3": i.size === "xs" || i.size === "sm",
162
+ "ds:size-3.5": !i.size || i.size === "normal",
163
+ "ds:size-4": i.size === "lg" || i.size === "xl"
164
164
  })
165
165
  }
166
166
  ),
167
- /* @__PURE__ */ a("span", { className: "sr-only", children: "Select date" })
167
+ /* @__PURE__ */ n("span", { className: "ds:sr-only", children: "Select date" })
168
168
  ]
169
169
  }
170
170
  ), j = /* @__PURE__ */ h(
171
171
  "div",
172
172
  {
173
173
  className: M(
174
- "flex items-stretch mx-auto w-full",
175
- c && !R ? "gap-0 md:max-w-lg" : "",
174
+ "ds:flex ds:items-stretch ds:mx-auto ds:w-full",
175
+ c && !R ? "ds:gap-0 ds:md:max-w-lg" : "",
176
176
  // mode === "drawer" ? "mb-6" : "",
177
- x ? "max-w-md md:max-w-md lg:max-w-lg" : ""
177
+ x ? "ds:max-w-md ds:md:max-w-md ds:lg:max-w-lg" : ""
178
178
  ),
179
179
  children: [
180
- !R && /* @__PURE__ */ a(
180
+ !R && /* @__PURE__ */ n(
181
181
  ge,
182
182
  {
183
183
  ...P,
184
184
  mode: "single",
185
- selected: s,
185
+ selected: a,
186
186
  captionLayout: "dropdown",
187
187
  month: ce,
188
188
  onMonthChange: v,
@@ -191,12 +191,12 @@ function Dr({
191
191
  color: L,
192
192
  onSelect: (e) => {
193
193
  let r = e;
194
- e && s && c && (r = new Date(e), r.setHours(
195
- s.getHours(),
196
- s.getMinutes(),
197
- s.getSeconds(),
198
- s.getMilliseconds()
199
- )), l(r), u(d(r)), o?.(r, d(r)), W && !c && D(!1);
194
+ e && a && c && (r = new Date(e), r.setHours(
195
+ a.getHours(),
196
+ a.getMinutes(),
197
+ a.getSeconds(),
198
+ a.getMilliseconds()
199
+ )), d(r), u(l(r)), o?.(r, l(r)), W && !c && D(!1);
200
200
  },
201
201
  locale: V,
202
202
  formatters: {
@@ -204,20 +204,20 @@ function Dr({
204
204
  },
205
205
  showOutsideDays: Y,
206
206
  className: M(
207
- "my-auto bg-transparent mx-auto",
207
+ "ds:my-auto ds:bg-transparent ds:mx-auto",
208
208
  {
209
- "[--cell-size:clamp(0px,calc(100vw/7.5),52px)] mb-8 bg-transparent": x && !c || k === "drawer",
210
- "[--cell-size:clamp(0px,calc(100vw/7.5),34px)]": !x && k !== "drawer",
211
- "w-full": A === "drawer" && c
209
+ "ds:[--cell-size:clamp(0px,calc(100vw/7.5),52px)] ds:mb-8 ds:bg-transparent": x && !c || k === "drawer",
210
+ "ds:[--cell-size:clamp(0px,calc(100vw/7.5),34px)]": !x && k !== "drawer",
211
+ "ds:w-full": A === "drawer" && c
212
212
  },
213
213
  q
214
214
  )
215
215
  }
216
216
  ),
217
- c && /* @__PURE__ */ a("div", { className: "border-l border-border", children: /* @__PURE__ */ a(
217
+ c && /* @__PURE__ */ n("div", { className: "ds:border-l ds:border-border", children: /* @__PURE__ */ n(
218
218
  He,
219
219
  {
220
- value: s ? B(s, g) : void 0,
220
+ value: a ? B(a, g) : void 0,
221
221
  format: g,
222
222
  onChange: fe,
223
223
  showHours: !0,
@@ -227,11 +227,11 @@ function Dr({
227
227
  hourInterval: re,
228
228
  minuteInterval: te,
229
229
  secondInterval: oe,
230
- disabledTimes: ie,
231
- disabledTimeRanges: ne,
232
- showNowButton: ae,
233
- nowButtonLabel: se,
234
- timeLabel: le,
230
+ disabledTimes: se,
231
+ disabledTimeRanges: ie,
232
+ showNowButton: ne,
233
+ nowButtonLabel: ae,
234
+ timeLabel: de,
235
235
  standalone: !1,
236
236
  color: L,
237
237
  isOpen: b
@@ -240,13 +240,13 @@ function Dr({
240
240
  ]
241
241
  }
242
242
  ), E = /* @__PURE__ */ h(ve, { open: b, onOpenChange: D, children: [
243
- /* @__PURE__ */ a(we, { asChild: !0, disabled: n.disabled, children: U }),
244
- /* @__PURE__ */ a(
243
+ /* @__PURE__ */ n(we, { asChild: !0, disabled: i.disabled, children: U }),
244
+ /* @__PURE__ */ n(
245
245
  he,
246
246
  {
247
247
  className: M(
248
- "w-auto overflow-hidden p-0",
249
- "backdrop-blur bg-background/50"
248
+ "ds:w-auto ds:overflow-hidden ds:p-0",
249
+ "ds:backdrop-blur ds:bg-background/50"
250
250
  ),
251
251
  side: G,
252
252
  align: J,
@@ -254,28 +254,28 @@ function Dr({
254
254
  }
255
255
  )
256
256
  ] }), K = /* @__PURE__ */ h(ye, { open: b, onOpenChange: D, children: [
257
- /* @__PURE__ */ a(be, { asChild: !0, children: U }),
257
+ /* @__PURE__ */ n(be, { asChild: !0, children: U }),
258
258
  /* @__PURE__ */ h(
259
259
  De,
260
260
  {
261
261
  className: M(
262
- "w-auto overflow-hidden p-0",
263
- "backdrop-blur bg-background"
262
+ "ds:w-auto ds:overflow-hidden ds:p-0",
263
+ "ds:backdrop-blur ds:bg-background"
264
264
  ),
265
265
  children: [
266
- /* @__PURE__ */ h(Me, { className: "sr-only", children: [
267
- /* @__PURE__ */ a(xe, { children: "Select date" }),
268
- /* @__PURE__ */ a(ze, { children: "Set date" })
266
+ /* @__PURE__ */ h(Me, { className: "ds:sr-only", children: [
267
+ /* @__PURE__ */ n(xe, { children: "Select date" }),
268
+ /* @__PURE__ */ n(ze, { children: "Set date" })
269
269
  ] }),
270
270
  j
271
271
  ]
272
272
  }
273
273
  )
274
274
  ] });
275
- return S ? A === "drawer" ? K : E : /* @__PURE__ */ a(
275
+ return S ? A === "drawer" ? K : E : /* @__PURE__ */ n(
276
276
  Oe,
277
277
  {
278
- ...n,
278
+ ...i,
279
279
  ref: me,
280
280
  type: "text",
281
281
  clearable: !0,
@@ -284,18 +284,18 @@ function Dr({
284
284
  onChange: (e) => {
285
285
  I.current = !0, u(e.target.value);
286
286
  const r = z(e.target.value, m);
287
- r ? (l(r), v(r), o?.(r, d(r)), i?.(e, d(r), r)) : (o?.(void 0, void 0), i?.(e, void 0, void 0));
287
+ r ? (d(r), v(r), o?.(r, l(r)), s?.(e, l(r), r)) : (o?.(void 0, void 0), s?.(e, void 0, void 0));
288
288
  },
289
289
  onFocus: (e) => {
290
- de && !b && !C && D(!0), n.onFocus?.(e);
290
+ le && !b && !C && D(!0), i.onFocus?.(e);
291
291
  },
292
292
  onBlur: (e) => {
293
293
  setTimeout(() => {
294
- I.current = !1, b || !z(w, m) && w && (u(""), l(void 0), v(void 0), o?.(void 0, void 0));
295
- }, 150), n.onBlur?.(e);
294
+ I.current = !1, b || !z(w, m) && w && (u(""), d(void 0), v(void 0), o?.(void 0, void 0));
295
+ }, 150), i.onBlur?.(e);
296
296
  },
297
297
  onKeyDown: (e) => {
298
- e.key === "ArrowDown" && (e.preventDefault(), D(!0)), n.onKeyDown?.(e);
298
+ e.key === "ArrowDown" && (e.preventDefault(), D(!0)), i.onKeyDown?.(e);
299
299
  },
300
300
  suffixIcon: A === "drawer" ? K : E
301
301
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n CalendarDayButton as SCalendarDayButton,\n type CalendarDayButtonProps as SCalendarDayButtonProps,\n Calendar,\n type CalendarProps,\n type CalendarColor,\n} from \"@dsui/ui/components/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Drawer,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@dsui/ui/components/drawer\";\nimport { cn } from \"@dsui/ui/index\";\nimport { Input, type InputProps } from \"../Input\";\nimport { Button } from \"../Button\";\nimport {\n TimePicker,\n type TimePickerMode,\n type DisabledTimeRange,\n} from \"./TimePicker\";\nimport { CalendarIcon } from \"lucide-react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { isMobile } from \"react-device-detect\";\nimport { format as dfFormat, parse, isValid, type Locale } from \"date-fns\";\nimport { vi, enUS } from \"date-fns/locale\";\nimport { DATE_FORMAT } from \"@/constants/common\";\n\nfunction formatDate(\n date: Date | undefined,\n outputFormat: string = DATE_FORMAT,\n locale?: Locale\n) {\n if (!date) return \"\";\n\n return dfFormat(date, outputFormat, locale ? { locale } : undefined);\n}\n\nconst parseDate = (\n str: string,\n inputFormat: string = DATE_FORMAT\n): Date | undefined => {\n const date = parse(str, inputFormat, new Date());\n return isValid(date) ? date : undefined;\n};\n\nfunction generateMaskFromFormat(format: string): string {\n return format\n .replace(/dd|MM|yyyy/g, (match) => {\n switch (match) {\n case \"dd\":\n case \"MM\":\n return \"99\";\n case \"yyyy\":\n return \"9999\";\n default:\n return match;\n }\n })\n .replace(/d|M|y/g, (match) => {\n switch (match) {\n case \"d\":\n case \"M\":\n return \"9\";\n case \"y\":\n return \"9\";\n default:\n return match;\n }\n });\n}\n\nexport type FormatType = string | { input: string; output: string };\n\nexport type DatePickerRenderProps = {\n value: string;\n date?: Date;\n onSelect: (date?: Date) => void;\n onChange: (text?: string) => void;\n};\n\nexport type DatePickerProps = Omit<\n InputProps,\n \"value\" | \"onChange\" | \"onSelect\" | \"mask\" | \"children\"\n> & {\n value?: string;\n onChange?: (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n date?: Date\n ) => void;\n onSelect?: (date?: Date, value?: string) => void;\n calendarClassName?: string;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n size?: VariantProps<typeof Input>[\"size\"];\n format?: FormatType;\n language?: \"vi\" | \"en\";\n mask?: boolean | string;\n closeOnSelect?: boolean;\n calendarConfig?: CalendarProps;\n desktopMode?: \"popover\" | \"drawer\";\n mobileMode?: \"popover\" | \"drawer\";\n showOutsideDays?: boolean;\n children?: (props: DatePickerRenderProps) => React.ReactNode;\n showTime?: boolean;\n timeFormat?: \"HH:mm\" | \"HH:mm:ss\";\n hideDate?: boolean;\n numberOfMonths?: number;\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n\n // TimePicker configuration options\n timePickerMode?: TimePickerMode; // Display mode: 'wheel' (default), 'select', 'compact'\n hourInterval?: number; // Hour interval (e.g., 1, 2, 3) - defaults to 1\n minuteInterval?: number; // Minute interval (e.g., 5, 10, 15, 30) - defaults to 1\n secondInterval?: number; // Second interval (e.g., 5, 10, 15, 30) - defaults to 1\n disabledTimes?: string[]; // Array of disabled times in \"HH:mm\" or \"HH:mm:ss\" format\n disabledTimeRanges?: DisabledTimeRange[]; // Array of disabled time ranges\n showNowButton?: boolean; // Show \"Now\" button to select current time\n nowButtonLabel?: string; // Label for \"Now\" button (defaults to \"Now\")\n timePickerLabel?:\n | boolean\n | { hours?: string; minutes?: string; seconds?: string };\n openOnFocus?: boolean; // Auto open datepicker when input is focused (default: true)\n};\n\nexport function DatePicker({\n value,\n onChange,\n onSelect,\n calendarClassName,\n side = \"bottom\",\n align = \"end\",\n format = \"dd/MM/yyyy\",\n language = \"vi\",\n mask,\n closeOnSelect = false,\n calendarConfig,\n desktopMode = \"popover\",\n mobileMode = \"drawer\",\n showOutsideDays = true,\n children,\n showTime = false,\n timeFormat = \"HH:mm\",\n hideDate = false,\n numberOfMonths = 1,\n variant = \"default\",\n color = \"primary\",\n // TimePicker props\n timePickerMode = \"wheel\",\n hourInterval = 1,\n minuteInterval = 1,\n secondInterval = 1,\n disabledTimes,\n disabledTimeRanges,\n showNowButton = false,\n nowButtonLabel = \"Now\",\n timePickerLabel,\n openOnFocus = true,\n ...props\n}: DatePickerProps) {\n let inputFormat: string;\n let outputFormat: string;\n if (typeof format === \"string\") {\n inputFormat = format;\n outputFormat = format;\n } else {\n inputFormat = format.input;\n outputFormat = format.output;\n }\n\n // Determine the mask to use\n let maskToUse: string | undefined;\n if (mask === true) {\n maskToUse = generateMaskFromFormat(inputFormat);\n } else if (typeof mask === \"string\") {\n maskToUse = mask;\n }\n // If mask is false or undefined, maskToUse remains undefined\n\n // Parse initial value with correct format\n // - hideDate + showTime: time only (e.g., \"HH:mm\")\n // - showTime: date + time (e.g., \"dd/MM/yyyy HH:mm\")\n // - default: date only (e.g., \"dd/MM/yyyy\")\n const fullFormat =\n hideDate && showTime\n ? timeFormat\n : showTime\n ? `${inputFormat} ${timeFormat}`\n : inputFormat;\n\n const initialDate = value ? parseDate(value, fullFormat) : undefined;\n\n const [open, setOpen] = React.useState(false);\n const [date, setDate] = React.useState<Date | undefined>(initialDate);\n const [month, setMonth] = React.useState<Date | undefined>(initialDate);\n const [inputValue, setInputValue] = React.useState(value || \"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isUserTyping = React.useRef(false);\n\n const _locale: Locale = calendarConfig?.locale\n ? (calendarConfig?.locale as Locale)\n : language === \"en\"\n ? enUS\n : vi;\n\n const mode = isMobile ? mobileMode : desktopMode;\n\n // Sync inputValue when value prop changes from outside\n React.useEffect(() => {\n if (value !== inputValue && !isUserTyping.current) {\n setInputValue(value || \"\");\n const parsedDate = value ? parseDate(value, fullFormat) : undefined;\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n } else if (!value) {\n // Clear states if value is empty\n setDate(undefined);\n setMonth(undefined);\n }\n }\n }, [value, inputValue, fullFormat]);\n\n // Helper to format date-time based on showTime and timeFormat\n const formatDateTimeValue = (d: Date | undefined): string => {\n if (!d) return \"\";\n let result = formatDate(d, outputFormat, _locale);\n if (showTime) {\n result += ` ${dfFormat(d, timeFormat)}`;\n }\n return result;\n };\n\n // Helper functions for render props\n const handleSelectForRenderProp = (date?: Date) => {\n setDate(date);\n setInputValue(formatDateTimeValue(date));\n onSelect?.(date, formatDateTimeValue(date));\n };\n\n const handleChangeForRenderProp = (text?: string) => {\n if (!text) {\n setInputValue(\"\");\n setDate(undefined);\n onSelect?.(undefined, undefined);\n return;\n }\n setInputValue(text);\n const parsedDate = parseDate(text, inputFormat);\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n onSelect?.(parsedDate, formatDateTimeValue(parsedDate));\n } else {\n setDate(undefined);\n onSelect?.(undefined, undefined);\n }\n };\n\n const handleTimeChange = (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n newDate?: Date\n ) => {\n if (!newDate) {\n // Handle clear/invalid time\n onChange?.(event, value, undefined);\n return;\n }\n\n // Merge: keep date (year, month, day) from Calendar, take time (hours, minutes, seconds) from TimePicker\n const mergedDate = new Date(date || new Date());\n mergedDate.setHours(\n newDate.getHours(),\n newDate.getMinutes(),\n newDate.getSeconds(),\n 0\n );\n\n setDate(mergedDate);\n setInputValue(formatDateTimeValue(mergedDate));\n onSelect?.(mergedDate, formatDateTimeValue(mergedDate));\n onChange?.(event, formatDateTimeValue(mergedDate), mergedDate);\n };\n\n // Determine trigger component\n const triggerComponent = children ? (\n children({\n value: inputValue,\n date,\n onSelect: handleSelectForRenderProp,\n onChange: handleChangeForRenderProp,\n })\n ) : (\n <Button\n variant=\"ghost\"\n className=\"!p-1 !leading-0 h-auto rounded hover:bg-accent transition-colors\"\n size={props.size}\n >\n <CalendarIcon\n className={cn({\n \"size-3\": props.size === \"xs\" || props.size === \"sm\",\n \"size-3.5\": !props.size || props.size === \"normal\",\n \"size-4\": props.size === \"lg\" || props.size === \"xl\",\n })}\n />\n <span className=\"sr-only\">Select date</span>\n </Button>\n );\n\n const calendarSelection = (\n <div\n className={cn(\n \"flex items-stretch mx-auto w-full\",\n showTime && !hideDate ? \"gap-0 md:max-w-lg\" : \"\",\n // mode === \"drawer\" ? \"mb-6\" : \"\",\n isMobile ? \"max-w-md md:max-w-md lg:max-w-lg\" : \"\"\n )}\n >\n {!hideDate && (\n <Calendar\n {...calendarConfig}\n mode=\"single\"\n selected={date}\n captionLayout=\"dropdown\"\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={isMobile ? 1 : numberOfMonths || 1}\n variant={variant}\n color={color}\n onSelect={(selectedDate) => {\n // Preserve time from current date when selecting new date\n let newDate = selectedDate;\n if (selectedDate && date && showTime) {\n newDate = new Date(selectedDate);\n newDate.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n setDate(newDate);\n setInputValue(formatDateTimeValue(newDate));\n onSelect?.(newDate, formatDateTimeValue(newDate));\n if (closeOnSelect && !showTime) setOpen(false);\n }}\n locale={_locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(_locale.code, { month: \"short\" }),\n }}\n showOutsideDays={showOutsideDays}\n className={cn(\n \"my-auto bg-transparent mx-auto\",\n {\n \"[--cell-size:clamp(0px,calc(100vw/7.5),52px)] mb-8 bg-transparent\":\n (isMobile && !showTime) || desktopMode === \"drawer\",\n \"[--cell-size:clamp(0px,calc(100vw/7.5),34px)]\":\n !isMobile && desktopMode !== \"drawer\",\n \"w-full\": mode === \"drawer\" && showTime,\n },\n calendarClassName\n )}\n />\n )}\n {showTime && (\n <div className=\"border-l border-border\">\n <TimePicker\n value={date ? dfFormat(date, timeFormat) : undefined}\n format={timeFormat}\n onChange={handleTimeChange}\n showHours\n showMinutes\n showSeconds={timeFormat === \"HH:mm:ss\"}\n mode={timePickerMode}\n hourInterval={hourInterval}\n minuteInterval={minuteInterval}\n secondInterval={secondInterval}\n disabledTimes={disabledTimes}\n disabledTimeRanges={disabledTimeRanges}\n showNowButton={showNowButton}\n nowButtonLabel={nowButtonLabel}\n timeLabel={timePickerLabel}\n standalone={false}\n color={color}\n isOpen={open}\n />\n </div>\n )}\n </div>\n );\n\n const popPicker = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={props.disabled}>\n {triggerComponent}\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n \"w-auto overflow-hidden p-0\",\n \"backdrop-blur bg-background/50\"\n )}\n side={side}\n align={align}\n >\n {calendarSelection}\n </PopoverContent>\n </Popover>\n );\n\n const drawPicker = (\n <Drawer open={open} onOpenChange={setOpen}>\n <DrawerTrigger asChild>{triggerComponent}</DrawerTrigger>\n <DrawerContent\n className={cn(\n \"w-auto overflow-hidden p-0\",\n \"backdrop-blur bg-background\"\n )}\n >\n <DrawerHeader className=\"sr-only\">\n <DrawerTitle>Select date</DrawerTitle>\n <DrawerDescription>Set date</DrawerDescription>\n </DrawerHeader>\n {calendarSelection}\n </DrawerContent>\n </Drawer>\n );\n\n // If children is provided, use render prop pattern with picker\n if (children) {\n return mode === \"drawer\" ? drawPicker : popPicker;\n }\n\n // Default input rendering\n return (\n <Input\n {...props}\n ref={inputRef}\n type=\"text\"\n clearable\n value={inputValue}\n mask={maskToUse}\n onChange={(e) => {\n isUserTyping.current = true;\n setInputValue(e.target.value);\n const date = parseDate(e.target.value, inputFormat);\n if (date) {\n setDate(date);\n setMonth(date);\n onSelect?.(date, formatDateTimeValue(date));\n onChange?.(e, formatDateTimeValue(date), date);\n } else {\n onSelect?.(undefined, undefined);\n onChange?.(e, undefined, undefined);\n }\n }}\n onFocus={(e) => {\n // Don't auto-open if mask is enabled - user wants to type directly\n if (openOnFocus && !open && !maskToUse) {\n setOpen(true);\n }\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n // Don't clear value when picker is open - user might be interacting with it\n // The onBlur fires when focus moves to the picker\n setTimeout(() => {\n isUserTyping.current = false;\n // Only validate and clear if picker is closed\n if (!open) {\n const parsedDate = parseDate(inputValue, inputFormat);\n if (!parsedDate && inputValue) {\n setInputValue(\"\");\n setDate(undefined);\n setMonth(undefined);\n onSelect?.(undefined, undefined);\n }\n }\n }, 150);\n props.onBlur?.(e);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setOpen(true);\n }\n props.onKeyDown?.(e);\n }}\n suffixIcon={mode === \"drawer\" ? drawPicker : popPicker}\n />\n );\n}\n"],"names":["formatDate","date","outputFormat","DATE_FORMAT","locale","dfFormat","parseDate","str","inputFormat","parse","isValid","generateMaskFromFormat","format","match","DatePicker","value","onChange","onSelect","calendarClassName","side","align","language","mask","closeOnSelect","calendarConfig","desktopMode","mobileMode","showOutsideDays","children","showTime","timeFormat","hideDate","numberOfMonths","variant","color","timePickerMode","hourInterval","minuteInterval","secondInterval","disabledTimes","disabledTimeRanges","showNowButton","nowButtonLabel","timePickerLabel","openOnFocus","props","maskToUse","fullFormat","initialDate","open","setOpen","React","setDate","month","setMonth","inputValue","setInputValue","inputRef","isUserTyping","_locale","enUS","vi","mode","isMobile","parsedDate","formatDateTimeValue","d","result","handleSelectForRenderProp","handleChangeForRenderProp","text","handleTimeChange","event","newDate","mergedDate","triggerComponent","jsxs","Button","jsx","CalendarIcon","cn","calendarSelection","Calendar","selectedDate","TimePicker","popPicker","Popover","PopoverTrigger","PopoverContent","drawPicker","Drawer","DrawerTrigger","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","Input"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n CalendarDayButton as SCalendarDayButton,\n type CalendarDayButtonProps as SCalendarDayButtonProps,\n Calendar,\n type CalendarProps,\n type CalendarColor,\n} from \"@dsui/ui/components/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Drawer,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@dsui/ui/components/drawer\";\nimport { cn } from \"@dsui/ui/index\";\nimport { Input, type InputProps } from \"../Input\";\nimport { Button } from \"../Button\";\nimport {\n TimePicker,\n type TimePickerMode,\n type DisabledTimeRange,\n} from \"./TimePicker\";\nimport { CalendarIcon } from \"lucide-react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { isMobile } from \"react-device-detect\";\nimport { format as dfFormat, parse, isValid, type Locale } from \"date-fns\";\nimport { vi, enUS } from \"date-fns/locale\";\nimport { DATE_FORMAT } from \"@/constants/common\";\n\nfunction formatDate(\n date: Date | undefined,\n outputFormat: string = DATE_FORMAT,\n locale?: Locale\n) {\n if (!date) return \"\";\n\n return dfFormat(date, outputFormat, locale ? { locale } : undefined);\n}\n\nconst parseDate = (\n str: string,\n inputFormat: string = DATE_FORMAT\n): Date | undefined => {\n const date = parse(str, inputFormat, new Date());\n return isValid(date) ? date : undefined;\n};\n\nfunction generateMaskFromFormat(format: string): string {\n return format\n .replace(/dd|MM|yyyy/g, (match) => {\n switch (match) {\n case \"dd\":\n case \"MM\":\n return \"99\";\n case \"yyyy\":\n return \"9999\";\n default:\n return match;\n }\n })\n .replace(/d|M|y/g, (match) => {\n switch (match) {\n case \"d\":\n case \"M\":\n return \"9\";\n case \"y\":\n return \"9\";\n default:\n return match;\n }\n });\n}\n\nexport type FormatType = string | { input: string; output: string };\n\nexport type DatePickerRenderProps = {\n value: string;\n date?: Date;\n onSelect: (date?: Date) => void;\n onChange: (text?: string) => void;\n};\n\nexport type DatePickerProps = Omit<\n InputProps,\n \"value\" | \"onChange\" | \"onSelect\" | \"mask\" | \"children\"\n> & {\n value?: string;\n onChange?: (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n date?: Date\n ) => void;\n onSelect?: (date?: Date, value?: string) => void;\n calendarClassName?: string;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n size?: VariantProps<typeof Input>[\"size\"];\n format?: FormatType;\n language?: \"vi\" | \"en\";\n mask?: boolean | string;\n closeOnSelect?: boolean;\n calendarConfig?: CalendarProps;\n desktopMode?: \"popover\" | \"drawer\";\n mobileMode?: \"popover\" | \"drawer\";\n showOutsideDays?: boolean;\n children?: (props: DatePickerRenderProps) => React.ReactNode;\n showTime?: boolean;\n timeFormat?: \"HH:mm\" | \"HH:mm:ss\";\n hideDate?: boolean;\n numberOfMonths?: number;\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n\n // TimePicker configuration options\n timePickerMode?: TimePickerMode; // Display mode: 'wheel' (default), 'select', 'compact'\n hourInterval?: number; // Hour interval (e.g., 1, 2, 3) - defaults to 1\n minuteInterval?: number; // Minute interval (e.g., 5, 10, 15, 30) - defaults to 1\n secondInterval?: number; // Second interval (e.g., 5, 10, 15, 30) - defaults to 1\n disabledTimes?: string[]; // Array of disabled times in \"HH:mm\" or \"HH:mm:ss\" format\n disabledTimeRanges?: DisabledTimeRange[]; // Array of disabled time ranges\n showNowButton?: boolean; // Show \"Now\" button to select current time\n nowButtonLabel?: string; // Label for \"Now\" button (defaults to \"Now\")\n timePickerLabel?:\n | boolean\n | { hours?: string; minutes?: string; seconds?: string };\n openOnFocus?: boolean; // Auto open datepicker when input is focused (default: true)\n};\n\nexport function DatePicker({\n value,\n onChange,\n onSelect,\n calendarClassName,\n side = \"bottom\",\n align = \"end\",\n format = \"dd/MM/yyyy\",\n language = \"vi\",\n mask,\n closeOnSelect = false,\n calendarConfig,\n desktopMode = \"popover\",\n mobileMode = \"drawer\",\n showOutsideDays = true,\n children,\n showTime = false,\n timeFormat = \"HH:mm\",\n hideDate = false,\n numberOfMonths = 1,\n variant = \"default\",\n color = \"primary\",\n // TimePicker props\n timePickerMode = \"wheel\",\n hourInterval = 1,\n minuteInterval = 1,\n secondInterval = 1,\n disabledTimes,\n disabledTimeRanges,\n showNowButton = false,\n nowButtonLabel = \"Now\",\n timePickerLabel,\n openOnFocus = true,\n ...props\n}: DatePickerProps) {\n let inputFormat: string;\n let outputFormat: string;\n if (typeof format === \"string\") {\n inputFormat = format;\n outputFormat = format;\n } else {\n inputFormat = format.input;\n outputFormat = format.output;\n }\n\n // Determine the mask to use\n let maskToUse: string | undefined;\n if (mask === true) {\n maskToUse = generateMaskFromFormat(inputFormat);\n } else if (typeof mask === \"string\") {\n maskToUse = mask;\n }\n // If mask is false or undefined, maskToUse remains undefined\n\n // Parse initial value with correct format\n // - hideDate + showTime: time only (e.g., \"HH:mm\")\n // - showTime: date + time (e.g., \"dd/MM/yyyy HH:mm\")\n // - default: date only (e.g., \"dd/MM/yyyy\")\n const fullFormat =\n hideDate && showTime\n ? timeFormat\n : showTime\n ? `${inputFormat} ${timeFormat}`\n : inputFormat;\n\n const initialDate = value ? parseDate(value, fullFormat) : undefined;\n\n const [open, setOpen] = React.useState(false);\n const [date, setDate] = React.useState<Date | undefined>(initialDate);\n const [month, setMonth] = React.useState<Date | undefined>(initialDate);\n const [inputValue, setInputValue] = React.useState(value || \"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isUserTyping = React.useRef(false);\n\n const _locale: Locale = calendarConfig?.locale\n ? (calendarConfig?.locale as Locale)\n : language === \"en\"\n ? enUS\n : vi;\n\n const mode = isMobile ? mobileMode : desktopMode;\n\n // Sync inputValue when value prop changes from outside\n React.useEffect(() => {\n if (value !== inputValue && !isUserTyping.current) {\n setInputValue(value || \"\");\n const parsedDate = value ? parseDate(value, fullFormat) : undefined;\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n } else if (!value) {\n // Clear states if value is empty\n setDate(undefined);\n setMonth(undefined);\n }\n }\n }, [value, inputValue, fullFormat]);\n\n // Helper to format date-time based on showTime and timeFormat\n const formatDateTimeValue = (d: Date | undefined): string => {\n if (!d) return \"\";\n let result = formatDate(d, outputFormat, _locale);\n if (showTime) {\n result += ` ${dfFormat(d, timeFormat)}`;\n }\n return result;\n };\n\n // Helper functions for render props\n const handleSelectForRenderProp = (date?: Date) => {\n setDate(date);\n setInputValue(formatDateTimeValue(date));\n onSelect?.(date, formatDateTimeValue(date));\n };\n\n const handleChangeForRenderProp = (text?: string) => {\n if (!text) {\n setInputValue(\"\");\n setDate(undefined);\n onSelect?.(undefined, undefined);\n return;\n }\n setInputValue(text);\n const parsedDate = parseDate(text, inputFormat);\n if (parsedDate) {\n setDate(parsedDate);\n setMonth(parsedDate);\n onSelect?.(parsedDate, formatDateTimeValue(parsedDate));\n } else {\n setDate(undefined);\n onSelect?.(undefined, undefined);\n }\n };\n\n const handleTimeChange = (\n event?: React.ChangeEvent<HTMLInputElement>,\n value?: string,\n newDate?: Date\n ) => {\n if (!newDate) {\n // Handle clear/invalid time\n onChange?.(event, value, undefined);\n return;\n }\n\n // Merge: keep date (year, month, day) from Calendar, take time (hours, minutes, seconds) from TimePicker\n const mergedDate = new Date(date || new Date());\n mergedDate.setHours(\n newDate.getHours(),\n newDate.getMinutes(),\n newDate.getSeconds(),\n 0\n );\n\n setDate(mergedDate);\n setInputValue(formatDateTimeValue(mergedDate));\n onSelect?.(mergedDate, formatDateTimeValue(mergedDate));\n onChange?.(event, formatDateTimeValue(mergedDate), mergedDate);\n };\n\n // Determine trigger component\n const triggerComponent = children ? (\n children({\n value: inputValue,\n date,\n onSelect: handleSelectForRenderProp,\n onChange: handleChangeForRenderProp,\n })\n ) : (\n <Button\n variant=\"ghost\"\n className=\"ds:!p-1 ds:!leading-0 ds:h-auto ds:rounded ds:hover:bg-accent ds:transition-colors\"\n size={props.size}\n >\n <CalendarIcon\n className={cn({\n \"ds:size-3\": props.size === \"xs\" || props.size === \"sm\",\n \"ds:size-3.5\": !props.size || props.size === \"normal\",\n \"ds:size-4\": props.size === \"lg\" || props.size === \"xl\",\n })}\n />\n <span className=\"ds:sr-only\">Select date</span>\n </Button>\n );\n\n const calendarSelection = (\n <div\n className={cn(\n \"ds:flex ds:items-stretch ds:mx-auto ds:w-full\",\n showTime && !hideDate ? \"ds:gap-0 ds:md:max-w-lg\" : \"\",\n // mode === \"drawer\" ? \"mb-6\" : \"\",\n isMobile ? \"ds:max-w-md ds:md:max-w-md ds:lg:max-w-lg\" : \"\"\n )}\n >\n {!hideDate && (\n <Calendar\n {...calendarConfig}\n mode=\"single\"\n selected={date}\n captionLayout=\"dropdown\"\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={isMobile ? 1 : numberOfMonths || 1}\n variant={variant}\n color={color}\n onSelect={(selectedDate) => {\n // Preserve time from current date when selecting new date\n let newDate = selectedDate;\n if (selectedDate && date && showTime) {\n newDate = new Date(selectedDate);\n newDate.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n setDate(newDate);\n setInputValue(formatDateTimeValue(newDate));\n onSelect?.(newDate, formatDateTimeValue(newDate));\n if (closeOnSelect && !showTime) setOpen(false);\n }}\n locale={_locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(_locale.code, { month: \"short\" }),\n }}\n showOutsideDays={showOutsideDays}\n className={cn(\n \"ds:my-auto ds:bg-transparent ds:mx-auto\",\n {\n \"ds:[--cell-size:clamp(0px,calc(100vw/7.5),52px)] ds:mb-8 ds:bg-transparent\":\n (isMobile && !showTime) || desktopMode === \"drawer\",\n \"ds:[--cell-size:clamp(0px,calc(100vw/7.5),34px)]\":\n !isMobile && desktopMode !== \"drawer\",\n \"ds:w-full\": mode === \"drawer\" && showTime,\n },\n calendarClassName\n )}\n />\n )}\n {showTime && (\n <div className=\"ds:border-l ds:border-border\">\n <TimePicker\n value={date ? dfFormat(date, timeFormat) : undefined}\n format={timeFormat}\n onChange={handleTimeChange}\n showHours\n showMinutes\n showSeconds={timeFormat === \"HH:mm:ss\"}\n mode={timePickerMode}\n hourInterval={hourInterval}\n minuteInterval={minuteInterval}\n secondInterval={secondInterval}\n disabledTimes={disabledTimes}\n disabledTimeRanges={disabledTimeRanges}\n showNowButton={showNowButton}\n nowButtonLabel={nowButtonLabel}\n timeLabel={timePickerLabel}\n standalone={false}\n color={color}\n isOpen={open}\n />\n </div>\n )}\n </div>\n );\n\n const popPicker = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={props.disabled}>\n {triggerComponent}\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n \"ds:w-auto ds:overflow-hidden ds:p-0\",\n \"ds:backdrop-blur ds:bg-background/50\"\n )}\n side={side}\n align={align}\n >\n {calendarSelection}\n </PopoverContent>\n </Popover>\n );\n\n const drawPicker = (\n <Drawer open={open} onOpenChange={setOpen}>\n <DrawerTrigger asChild>{triggerComponent}</DrawerTrigger>\n <DrawerContent\n className={cn(\n \"ds:w-auto ds:overflow-hidden ds:p-0\",\n \"ds:backdrop-blur ds:bg-background\"\n )}\n >\n <DrawerHeader className=\"ds:sr-only\">\n <DrawerTitle>Select date</DrawerTitle>\n <DrawerDescription>Set date</DrawerDescription>\n </DrawerHeader>\n {calendarSelection}\n </DrawerContent>\n </Drawer>\n );\n\n // If children is provided, use render prop pattern with picker\n if (children) {\n return mode === \"drawer\" ? drawPicker : popPicker;\n }\n\n // Default input rendering\n return (\n <Input\n {...props}\n ref={inputRef}\n type=\"text\"\n clearable\n value={inputValue}\n mask={maskToUse}\n onChange={(e) => {\n isUserTyping.current = true;\n setInputValue(e.target.value);\n const date = parseDate(e.target.value, inputFormat);\n if (date) {\n setDate(date);\n setMonth(date);\n onSelect?.(date, formatDateTimeValue(date));\n onChange?.(e, formatDateTimeValue(date), date);\n } else {\n onSelect?.(undefined, undefined);\n onChange?.(e, undefined, undefined);\n }\n }}\n onFocus={(e) => {\n // Don't auto-open if mask is enabled - user wants to type directly\n if (openOnFocus && !open && !maskToUse) {\n setOpen(true);\n }\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n // Don't clear value when picker is open - user might be interacting with it\n // The onBlur fires when focus moves to the picker\n setTimeout(() => {\n isUserTyping.current = false;\n // Only validate and clear if picker is closed\n if (!open) {\n const parsedDate = parseDate(inputValue, inputFormat);\n if (!parsedDate && inputValue) {\n setInputValue(\"\");\n setDate(undefined);\n setMonth(undefined);\n onSelect?.(undefined, undefined);\n }\n }\n }, 150);\n props.onBlur?.(e);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setOpen(true);\n }\n props.onKeyDown?.(e);\n }}\n suffixIcon={mode === \"drawer\" ? drawPicker : popPicker}\n />\n );\n}\n"],"names":["formatDate","date","outputFormat","DATE_FORMAT","locale","dfFormat","parseDate","str","inputFormat","parse","isValid","generateMaskFromFormat","format","match","DatePicker","value","onChange","onSelect","calendarClassName","side","align","language","mask","closeOnSelect","calendarConfig","desktopMode","mobileMode","showOutsideDays","children","showTime","timeFormat","hideDate","numberOfMonths","variant","color","timePickerMode","hourInterval","minuteInterval","secondInterval","disabledTimes","disabledTimeRanges","showNowButton","nowButtonLabel","timePickerLabel","openOnFocus","props","maskToUse","fullFormat","initialDate","open","setOpen","React","setDate","month","setMonth","inputValue","setInputValue","inputRef","isUserTyping","_locale","enUS","vi","mode","isMobile","parsedDate","formatDateTimeValue","d","result","handleSelectForRenderProp","handleChangeForRenderProp","text","handleTimeChange","event","newDate","mergedDate","triggerComponent","jsxs","Button","jsx","CalendarIcon","cn","calendarSelection","Calendar","selectedDate","TimePicker","popPicker","Popover","PopoverTrigger","PopoverContent","drawPicker","Drawer","DrawerTrigger","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","Input"],"mappings":"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"}