@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,116 +1,116 @@
1
1
  import { jsxs as w, jsx as e } from "react/jsx-runtime";
2
- import n, { useMemo as F } from "react";
2
+ import a, { useMemo as F } from "react";
3
3
  import { switchVariants as S, Switch as G } from "../../packages/ui/src/components/switch.js";
4
4
  import { cn as v } from "../../packages/ui/src/lib/utils.js";
5
5
  import { animationEffect as I } from "../../utils/animations.js";
6
6
  import L from "../Glass/Glass.js";
7
- const V = n.forwardRef(
7
+ const V = a.forwardRef(
8
8
  (z, E) => {
9
9
  const {
10
- animation: s,
10
+ animation: n,
11
11
  label: p,
12
- labelPosition: d = "right",
12
+ labelPosition: o = "right",
13
13
  offLabel: r,
14
- onLabel: i,
14
+ onLabel: d,
15
15
  showLabels: N = "none",
16
16
  checked: x = !1,
17
17
  onCheckedChange: j,
18
18
  className: b,
19
- variant: c = "default",
19
+ variant: i = "default",
20
20
  size: m = "normal",
21
21
  color: u,
22
22
  ...C
23
- } = z, k = n.useId(), [_, y] = n.useState(x);
24
- n.useEffect(() => {
23
+ } = z, k = a.useId(), [_, y] = a.useState(x);
24
+ a.useEffect(() => {
25
25
  y(x);
26
26
  }, [x]);
27
- const g = (t) => {
28
- y(t), j?.(t);
29
- }, a = F(() => s ? s === "glass" ? {
27
+ const g = (s) => {
28
+ y(s), j?.(s);
29
+ }, t = F(() => n ? n === "glass" ? {
30
30
  className: "!bg-transparent !shadow-none !border-none",
31
31
  isGlass: !0,
32
32
  // Custom flag for glass effect
33
33
  variant: "default"
34
34
  } : I({
35
- animation: s,
35
+ animation: n,
36
36
  children: null,
37
37
  className: b,
38
38
  rootClassName: S({
39
- variant: c,
39
+ variant: i,
40
40
  size: m,
41
41
  color: u
42
42
  }),
43
- variantType: c
44
- }) : null, [s, b, c, m, u]), h = (t) => {
45
- const l = /* @__PURE__ */ e(
43
+ variantType: i
44
+ }) : null, [n, b, i, m, u]), h = (s) => {
45
+ const c = /* @__PURE__ */ e(
46
46
  G,
47
47
  {
48
48
  ref: E,
49
49
  id: k,
50
50
  checked: _,
51
51
  onCheckedChange: g,
52
- className: v(b, t, a?.className),
53
- variant: c,
52
+ className: v(b, s, t?.className),
53
+ variant: i,
54
54
  size: m,
55
55
  color: u,
56
- style: { ...C.style || {}, ...a?.style || {} },
56
+ style: { ...C.style || {}, ...t?.style || {} },
57
57
  ...C
58
58
  }
59
59
  );
60
- if (s === "glass" && a?.isGlass) {
61
- const o = S({
62
- variant: c,
60
+ if (n === "glass" && t?.isGlass) {
61
+ const l = S({
62
+ variant: i,
63
63
  size: m,
64
64
  color: u
65
- })?.match(/((?:!)?rounded-\S+)/g), f = o ? o[o.length - 1] : "rounded-full";
65
+ })?.match(/((?:!)?rounded-\S+)/g), f = l ? l[l.length - 1] : "rounded-full";
66
66
  return /* @__PURE__ */ e(
67
67
  L,
68
68
  {
69
- className: v("hover:scale-110 [&_span]:opacity-80", f),
70
- children: l
69
+ className: v("ds:hover:scale-110 ds:[&_span]:opacity-80", f),
70
+ children: c
71
71
  }
72
72
  );
73
73
  }
74
- return a?.children && n.isValidElement(a.children) ? n.cloneElement(a.children, l) : l;
74
+ return t?.children && a.isValidElement(t.children) ? a.cloneElement(t.children, c) : c;
75
75
  };
76
- if (N === "inside" && (r || i))
77
- return /* @__PURE__ */ w("div", { className: "relative inline-grid h-7 w-fit grid-cols-[1fr_1fr] items-center text-sm font-medium", children: [
76
+ if (N === "inside" && (r || d))
77
+ return /* @__PURE__ */ w("div", { className: "ds:relative ds:inline-grid ds:h-7 ds:w-fit ds:grid-cols-[1fr_1fr] ds:items-center ds:text-sm ds:font-medium", children: [
78
78
  h(
79
79
  "peer data-[state=unchecked]:bg-input/50 absolute inset-0 h-[inherit] w-14 [&_span]:z-10 [&_span]:size-6.5 [&_span]:transition-transform [&_span]:duration-300 [&_span]:ease-[cubic-bezier(0.16,1,0.3,1)] [&_span]:data-[state=checked]:translate-x-7 [&_span]:data-[state=checked]:rtl:-translate-x-7"
80
80
  ),
81
- /* @__PURE__ */ e("span", { className: "pointer-events-none relative ml-0.5 flex min-w-8 items-center justify-center text-center transition-transform duration-300 ease-[cubic-bezier(0.16,1,0.3,1)] peer-data-[state=checked]:invisible peer-data-[state=unchecked]:translate-x-6 peer-data-[state=unchecked]:rtl:-translate-x-6", children: r }),
82
- /* @__PURE__ */ e("span", { className: "peer-data-[state=checked]:text-background pointer-events-none relative flex min-w-8 items-center justify-center text-center transition-transform duration-300 ease-[cubic-bezier(0.16,1,0.3,1)] peer-data-[state=checked]:-translate-x-full peer-data-[state=unchecked]:invisible peer-data-[state=checked]:rtl:translate-x-full", children: i })
81
+ /* @__PURE__ */ e("span", { className: "ds:pointer-events-none ds:relative ds:ml-0.5 ds:flex ds:min-w-8 ds:items-center ds:justify-center ds:text-center ds:transition-transform ds:duration-300 ds:ease-[cubic-bezier(0.16,1,0.3,1)] ds:peer-data-[state=checked]:invisible ds:peer-data-[state=unchecked]:translate-x-6 ds:peer-data-[state=unchecked]:rtl:-translate-x-6", children: r }),
82
+ /* @__PURE__ */ e("span", { className: "ds:peer-data-[state=checked]:text-background ds:pointer-events-none ds:relative ds:flex ds:min-w-8 ds:items-center ds:justify-center ds:text-center ds:transition-transform ds:duration-300 ds:ease-[cubic-bezier(0.16,1,0.3,1)] ds:peer-data-[state=checked]:-translate-x-full ds:peer-data-[state=unchecked]:invisible ds:peer-data-[state=checked]:rtl:translate-x-full", children: d })
83
83
  ] });
84
- if (N === "outside" && (r || i))
84
+ if (N === "outside" && (r || d))
85
85
  return /* @__PURE__ */ w(
86
86
  "div",
87
87
  {
88
- className: "group inline-flex items-center gap-2",
88
+ className: "ds:group ds:inline-flex ds:items-center ds:gap-2",
89
89
  "data-state": _ ? "checked" : "unchecked",
90
90
  children: [
91
91
  r && /* @__PURE__ */ e(
92
92
  "span",
93
93
  {
94
- className: "flex-1 cursor-pointer text-sm font-medium group-data-[state=checked]:text-muted-foreground/70",
94
+ className: "ds:flex-1 ds:cursor-pointer ds:text-sm ds:font-medium ds:group-data-[state=checked]:text-muted-foreground/70",
95
95
  onClick: () => g(!1),
96
96
  children: r
97
97
  }
98
98
  ),
99
99
  h(),
100
- i && /* @__PURE__ */ e(
100
+ d && /* @__PURE__ */ e(
101
101
  "span",
102
102
  {
103
- className: "flex-1 cursor-pointer text-sm font-medium group-data-[state=unchecked]:text-muted-foreground/70",
103
+ className: "ds:flex-1 ds:cursor-pointer ds:text-sm ds:font-medium ds:group-data-[state=unchecked]:text-muted-foreground/70",
104
104
  onClick: () => g(!0),
105
- children: i
105
+ children: d
106
106
  }
107
107
  )
108
108
  ]
109
109
  }
110
110
  );
111
111
  if (p) {
112
- const t = d === "top" || d === "bottom", l = t ? "flex-col" : "flex-row", o = t ? "items-start" : "items-center", f = d === "left" || d === "top";
113
- return /* @__PURE__ */ w("div", { className: v("flex gap-2", l, o), children: [
112
+ const s = o === "top" || o === "bottom", c = s ? "flex-col" : "flex-row", l = s ? "items-start" : "items-center", f = o === "left" || o === "top";
113
+ return /* @__PURE__ */ w("div", { className: v("ds:flex ds:gap-2", c, l), children: [
114
114
  f && /* @__PURE__ */ e("label", { htmlFor: k, children: p }),
115
115
  h(),
116
116
  !f && /* @__PURE__ */ e("label", { htmlFor: k, children: p })
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Switch as SSwitch,\n switchVariants,\n type SwitchVariant,\n} from \"@dsui/ui/components/switch\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { SwitchAnimation } from \"@/types/variables\";\nimport { animationEffect } from \"@/utils/animations\";\nimport { Glass } from \"../Glass\";\n\nexport type SwitchProps = Omit<\n React.ComponentPropsWithoutRef<typeof SSwitch>,\n \"onCheckedChange\" | \"variant\" | \"size\" | \"color\"\n> & {\n onCheckedChange?: (checked: boolean) => void;\n variant?: \"default\" | \"square1\" | \"square2\" | \"mini\";\n size?: \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n animation?: SwitchAnimation;\n label?: React.ReactNode;\n labelPosition?: \"left\" | \"right\" | \"top\" | \"bottom\";\n offLabel?: React.ReactNode;\n onLabel?: React.ReactNode;\n showLabels?: \"outside\" | \"inside\" | \"none\";\n};\n\ntype AnimResult = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n variant?: SwitchVariant[\"variant\"];\n isGlass?: boolean; // Flag for glass effect\n};\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (props, ref) => {\n const {\n animation,\n label,\n labelPosition = \"right\",\n offLabel,\n onLabel,\n showLabels = \"none\",\n checked = false,\n onCheckedChange,\n className,\n variant = \"default\",\n size = \"normal\",\n color,\n ...rest\n } = props;\n const id = React.useId();\n\n const [isChecked, setIsChecked] = React.useState(checked);\n\n React.useEffect(() => {\n setIsChecked(checked as boolean);\n }, [checked]);\n\n const handleCheckedChange = (newChecked: boolean) => {\n setIsChecked(newChecked);\n onCheckedChange?.(newChecked);\n };\n\n const switchAnimation = useMemo<AnimResult | null>(() => {\n if (!animation) return null;\n\n // Handle glass animation separately for Switch (don't affect other components)\n if (animation === \"glass\") {\n return {\n className: \"!bg-transparent !shadow-none !border-none\",\n isGlass: true, // Custom flag for glass effect\n variant: \"default\",\n };\n }\n\n return animationEffect<SwitchAnimation, SwitchVariant[\"variant\"]>({\n animation,\n children: null,\n className,\n rootClassName: switchVariants({\n variant: variant,\n size: size,\n color: color,\n }),\n variantType: variant,\n });\n }, [animation, className, variant, size, color]);\n\n const switchElement = (switchClassName?: string) => {\n const baseSwitchElement = (\n <SSwitch\n ref={ref}\n id={id}\n checked={isChecked}\n onCheckedChange={handleCheckedChange}\n className={cn(className, switchClassName, switchAnimation?.className)}\n variant={variant}\n size={size}\n color={color}\n style={{ ...(rest.style || {}), ...(switchAnimation?.style || {}) }}\n {...rest}\n />\n );\n\n // If animation is glass effect, wrap the switch in Glass component\n if (animation === \"glass\" && switchAnimation?.isGlass) {\n const roundedMatches = switchVariants({\n variant: variant,\n size: size,\n color: color,\n })?.match(/((?:!)?rounded-\\S+)/g);\n const roundedClass = roundedMatches\n ? roundedMatches[roundedMatches.length - 1]\n : \"rounded-full\";\n\n return (\n <Glass\n className={cn(\"hover:scale-110 [&_span]:opacity-80\", roundedClass)}\n >\n {baseSwitchElement}\n </Glass>\n );\n }\n\n // If animation returns children wrapper, use it\n if (\n switchAnimation?.children &&\n React.isValidElement(switchAnimation.children)\n ) {\n return React.cloneElement(switchAnimation.children, baseSwitchElement);\n }\n\n return baseSwitchElement;\n };\n\n // Render with inside labels (icons inside thumb position)\n if (showLabels === \"inside\" && (offLabel || onLabel)) {\n return (\n <div className=\"relative inline-grid h-7 w-fit grid-cols-[1fr_1fr] items-center text-sm font-medium\">\n {switchElement(\n \"peer data-[state=unchecked]:bg-input/50 absolute inset-0 h-[inherit] w-14 [&_span]:z-10 [&_span]:size-6.5 [&_span]:transition-transform [&_span]:duration-300 [&_span]:ease-[cubic-bezier(0.16,1,0.3,1)] [&_span]:data-[state=checked]:translate-x-7 [&_span]:data-[state=checked]:rtl:-translate-x-7\"\n )}\n <span className=\"pointer-events-none relative ml-0.5 flex min-w-8 items-center justify-center text-center transition-transform duration-300 ease-[cubic-bezier(0.16,1,0.3,1)] peer-data-[state=checked]:invisible peer-data-[state=unchecked]:translate-x-6 peer-data-[state=unchecked]:rtl:-translate-x-6\">\n {offLabel}\n </span>\n <span className=\"peer-data-[state=checked]:text-background pointer-events-none relative flex min-w-8 items-center justify-center text-center transition-transform duration-300 ease-[cubic-bezier(0.16,1,0.3,1)] peer-data-[state=checked]:-translate-x-full peer-data-[state=unchecked]:invisible peer-data-[state=checked]:rtl:translate-x-full\">\n {onLabel}\n </span>\n </div>\n );\n }\n\n // Render with outside labels\n if (showLabels === \"outside\" && (offLabel || onLabel)) {\n return (\n <div\n className=\"group inline-flex items-center gap-2\"\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n >\n {offLabel && (\n <span\n className=\"flex-1 cursor-pointer text-sm font-medium group-data-[state=checked]:text-muted-foreground/70\"\n onClick={() => handleCheckedChange(false)}\n >\n {offLabel}\n </span>\n )}\n {switchElement()}\n {onLabel && (\n <span\n className=\"flex-1 cursor-pointer text-sm font-medium group-data-[state=unchecked]:text-muted-foreground/70\"\n onClick={() => handleCheckedChange(true)}\n >\n {onLabel}\n </span>\n )}\n </div>\n );\n }\n\n // Render with label (outside wrap)\n if (label) {\n const isVertical = labelPosition === \"top\" || labelPosition === \"bottom\";\n const flexDirection = isVertical ? \"flex-col\" : \"flex-row\";\n const alignItems = isVertical ? \"items-start\" : \"items-center\";\n const labelFirst = labelPosition === \"left\" || labelPosition === \"top\";\n\n return (\n <div className={cn(\"flex gap-2\", flexDirection, alignItems)}>\n {labelFirst && <label htmlFor={id}>{label}</label>}\n {switchElement()}\n {!labelFirst && <label htmlFor={id}>{label}</label>}\n </div>\n );\n }\n\n // Default render\n return switchElement();\n }\n);\n\nSwitch.displayName = \"Switch\";\nexport default Switch;\n"],"names":["Switch","React","props","ref","animation","label","labelPosition","offLabel","onLabel","showLabels","checked","onCheckedChange","className","variant","size","color","rest","id","isChecked","setIsChecked","handleCheckedChange","newChecked","switchAnimation","useMemo","animationEffect","switchVariants","switchElement","switchClassName","baseSwitchElement","jsx","SSwitch","cn","roundedMatches","roundedClass","Glass","jsxs","isVertical","flexDirection","alignItems","labelFirst"],"mappings":"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"}
1
+ {"version":3,"file":"Switch.js","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Switch as SSwitch,\n switchVariants,\n type SwitchVariant,\n} from \"@dsui/ui/components/switch\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { SwitchAnimation } from \"@/types/variables\";\nimport { animationEffect } from \"@/utils/animations\";\nimport { Glass } from \"../Glass\";\n\nexport type SwitchProps = Omit<\n React.ComponentPropsWithoutRef<typeof SSwitch>,\n \"onCheckedChange\" | \"variant\" | \"size\" | \"color\"\n> & {\n onCheckedChange?: (checked: boolean) => void;\n variant?: \"default\" | \"square1\" | \"square2\" | \"mini\";\n size?: \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n animation?: SwitchAnimation;\n label?: React.ReactNode;\n labelPosition?: \"left\" | \"right\" | \"top\" | \"bottom\";\n offLabel?: React.ReactNode;\n onLabel?: React.ReactNode;\n showLabels?: \"outside\" | \"inside\" | \"none\";\n};\n\ntype AnimResult = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n variant?: SwitchVariant[\"variant\"];\n isGlass?: boolean; // Flag for glass effect\n};\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (props, ref) => {\n const {\n animation,\n label,\n labelPosition = \"right\",\n offLabel,\n onLabel,\n showLabels = \"none\",\n checked = false,\n onCheckedChange,\n className,\n variant = \"default\",\n size = \"normal\",\n color,\n ...rest\n } = props;\n const id = React.useId();\n\n const [isChecked, setIsChecked] = React.useState(checked);\n\n React.useEffect(() => {\n setIsChecked(checked as boolean);\n }, [checked]);\n\n const handleCheckedChange = (newChecked: boolean) => {\n setIsChecked(newChecked);\n onCheckedChange?.(newChecked);\n };\n\n const switchAnimation = useMemo<AnimResult | null>(() => {\n if (!animation) return null;\n\n // Handle glass animation separately for Switch (don't affect other components)\n if (animation === \"glass\") {\n return {\n className: \"!bg-transparent !shadow-none !border-none\",\n isGlass: true, // Custom flag for glass effect\n variant: \"default\",\n };\n }\n\n return animationEffect<SwitchAnimation, SwitchVariant[\"variant\"]>({\n animation,\n children: null,\n className,\n rootClassName: switchVariants({\n variant: variant,\n size: size,\n color: color,\n }),\n variantType: variant,\n });\n }, [animation, className, variant, size, color]);\n\n const switchElement = (switchClassName?: string) => {\n const baseSwitchElement = (\n <SSwitch\n ref={ref}\n id={id}\n checked={isChecked}\n onCheckedChange={handleCheckedChange}\n className={cn(className, switchClassName, switchAnimation?.className)}\n variant={variant}\n size={size}\n color={color}\n style={{ ...(rest.style || {}), ...(switchAnimation?.style || {}) }}\n {...rest}\n />\n );\n\n // If animation is glass effect, wrap the switch in Glass component\n if (animation === \"glass\" && switchAnimation?.isGlass) {\n const roundedMatches = switchVariants({\n variant: variant,\n size: size,\n color: color,\n })?.match(/((?:!)?rounded-\\S+)/g);\n const roundedClass = roundedMatches\n ? roundedMatches[roundedMatches.length - 1]\n : \"rounded-full\";\n\n return (\n <Glass\n className={cn(\"ds:hover:scale-110 ds:[&_span]:opacity-80\", roundedClass)}\n >\n {baseSwitchElement}\n </Glass>\n );\n }\n\n // If animation returns children wrapper, use it\n if (\n switchAnimation?.children &&\n React.isValidElement(switchAnimation.children)\n ) {\n return React.cloneElement(switchAnimation.children, baseSwitchElement);\n }\n\n return baseSwitchElement;\n };\n\n // Render with inside labels (icons inside thumb position)\n if (showLabels === \"inside\" && (offLabel || onLabel)) {\n return (\n <div className=\"ds:relative ds:inline-grid ds:h-7 ds:w-fit ds:grid-cols-[1fr_1fr] ds:items-center ds:text-sm ds:font-medium\">\n {switchElement(\n \"peer data-[state=unchecked]:bg-input/50 absolute inset-0 h-[inherit] w-14 [&_span]:z-10 [&_span]:size-6.5 [&_span]:transition-transform [&_span]:duration-300 [&_span]:ease-[cubic-bezier(0.16,1,0.3,1)] [&_span]:data-[state=checked]:translate-x-7 [&_span]:data-[state=checked]:rtl:-translate-x-7\"\n )}\n <span className=\"ds:pointer-events-none ds:relative ds:ml-0.5 ds:flex ds:min-w-8 ds:items-center ds:justify-center ds:text-center ds:transition-transform ds:duration-300 ds:ease-[cubic-bezier(0.16,1,0.3,1)] ds:peer-data-[state=checked]:invisible ds:peer-data-[state=unchecked]:translate-x-6 ds:peer-data-[state=unchecked]:rtl:-translate-x-6\">\n {offLabel}\n </span>\n <span className=\"ds:peer-data-[state=checked]:text-background ds:pointer-events-none ds:relative ds:flex ds:min-w-8 ds:items-center ds:justify-center ds:text-center ds:transition-transform ds:duration-300 ds:ease-[cubic-bezier(0.16,1,0.3,1)] ds:peer-data-[state=checked]:-translate-x-full ds:peer-data-[state=unchecked]:invisible ds:peer-data-[state=checked]:rtl:translate-x-full\">\n {onLabel}\n </span>\n </div>\n );\n }\n\n // Render with outside labels\n if (showLabels === \"outside\" && (offLabel || onLabel)) {\n return (\n <div\n className=\"ds:group ds:inline-flex ds:items-center ds:gap-2\"\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n >\n {offLabel && (\n <span\n className=\"ds:flex-1 ds:cursor-pointer ds:text-sm ds:font-medium ds:group-data-[state=checked]:text-muted-foreground/70\"\n onClick={() => handleCheckedChange(false)}\n >\n {offLabel}\n </span>\n )}\n {switchElement()}\n {onLabel && (\n <span\n className=\"ds:flex-1 ds:cursor-pointer ds:text-sm ds:font-medium ds:group-data-[state=unchecked]:text-muted-foreground/70\"\n onClick={() => handleCheckedChange(true)}\n >\n {onLabel}\n </span>\n )}\n </div>\n );\n }\n\n // Render with label (outside wrap)\n if (label) {\n const isVertical = labelPosition === \"top\" || labelPosition === \"bottom\";\n const flexDirection = isVertical ? \"flex-col\" : \"flex-row\";\n const alignItems = isVertical ? \"items-start\" : \"items-center\";\n const labelFirst = labelPosition === \"left\" || labelPosition === \"top\";\n\n return (\n <div className={cn(\"ds:flex ds:gap-2\", flexDirection, alignItems)}>\n {labelFirst && <label htmlFor={id}>{label}</label>}\n {switchElement()}\n {!labelFirst && <label htmlFor={id}>{label}</label>}\n </div>\n );\n }\n\n // Default render\n return switchElement();\n }\n);\n\nSwitch.displayName = \"Switch\";\nexport default Switch;\n"],"names":["Switch","React","props","ref","animation","label","labelPosition","offLabel","onLabel","showLabels","checked","onCheckedChange","className","variant","size","color","rest","id","isChecked","setIsChecked","handleCheckedChange","newChecked","switchAnimation","useMemo","animationEffect","switchVariants","switchElement","switchClassName","baseSwitchElement","jsx","SSwitch","cn","roundedMatches","roundedClass","Glass","jsxs","isVertical","flexDirection","alignItems","labelFirst"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsxs as f, jsx as n, Fragment as g } from "react/jsx-runtime";
1
+ import { jsxs as d, jsx as n, Fragment as g } from "react/jsx-runtime";
2
2
  import { formatDate as m } from "../../../utils/datetime.js";
3
3
  import { XCircle as T, CalendarIcon as V } from "lucide-react";
4
4
  import * as c from "react";
@@ -6,46 +6,46 @@ import { Popover as A } from "../../Popover/index.js";
6
6
  import b from "../../Separator/Separator.js";
7
7
  import { Calendar as y } from "../../Calendar/Calendar.js";
8
8
  import S from "../../Button/Button.js";
9
- function l(e) {
9
+ function f(e) {
10
10
  return e && typeof e == "object" && !Array.isArray(e);
11
11
  }
12
12
  function u(e) {
13
13
  if (!e) return;
14
- const i = typeof e == "string" ? Number(e) : e, o = new Date(i);
14
+ const s = typeof e == "string" ? Number(e) : e, o = new Date(s);
15
15
  return Number.isNaN(o.getTime()) ? void 0 : o;
16
16
  }
17
17
  function v(e) {
18
- return e == null ? [] : Array.isArray(e) ? e.map((i) => {
19
- if (typeof i == "number" || typeof i == "string")
20
- return i;
18
+ return e == null ? [] : Array.isArray(e) ? e.map((s) => {
19
+ if (typeof s == "number" || typeof s == "string")
20
+ return s;
21
21
  }) : typeof e == "string" || typeof e == "number" ? [e] : [];
22
22
  }
23
23
  function $({
24
24
  column: e,
25
- title: i,
25
+ title: s,
26
26
  multiple: o
27
27
  }) {
28
- const d = e.getFilterValue(), r = c.useMemo(() => {
29
- if (!d)
28
+ const l = e.getFilterValue(), r = c.useMemo(() => {
29
+ if (!l)
30
30
  return o ? { from: void 0, to: void 0 } : [];
31
31
  if (o) {
32
- const a = v(d);
32
+ const i = v(l);
33
33
  return {
34
- from: u(a[0]),
35
- to: u(a[1])
34
+ from: u(i[0]),
35
+ to: u(i[1])
36
36
  };
37
37
  }
38
- const t = v(d), s = u(t[0]);
39
- return s ? [s] : [];
40
- }, [d, o]), p = c.useCallback(
38
+ const t = v(l), a = u(t[0]);
39
+ return a ? [a] : [];
40
+ }, [l, o]), p = c.useCallback(
41
41
  (t) => {
42
42
  if (!t) {
43
43
  e.setFilterValue(void 0);
44
44
  return;
45
45
  }
46
46
  if (o && !("getTime" in t)) {
47
- const s = t.from?.getTime(), a = t.to?.getTime();
48
- e.setFilterValue(s || a ? [s, a] : void 0);
47
+ const a = t.from?.getTime(), i = t.to?.getTime();
48
+ e.setFilterValue(a || i ? [a, i] : void 0);
49
49
  } else !o && "getTime" in t && e.setFilterValue(t.getTime());
50
50
  },
51
51
  [e, o]
@@ -54,46 +54,46 @@ function $({
54
54
  t.stopPropagation(), e.setFilterValue(void 0);
55
55
  },
56
56
  [e]
57
- ), x = c.useMemo(() => o ? l(r) ? r.from || r.to : !1 : Array.isArray(r) ? r.length > 0 : !1, [o, r]), h = c.useCallback((t) => !t.from && !t.to ? "" : t.from && t.to ? `${m(t.from)} - ${m(t.to)}` : m(t.from ?? t.to), []), C = c.useMemo(() => {
57
+ ), x = c.useMemo(() => o ? f(r) ? r.from || r.to : !1 : Array.isArray(r) ? r.length > 0 : !1, [o, r]), h = c.useCallback((t) => !t.from && !t.to ? "" : t.from && t.to ? `${m(t.from)} - ${m(t.to)}` : m(t.from ?? t.to), []), C = c.useMemo(() => {
58
58
  if (o) {
59
- if (!l(r)) return null;
60
- const a = r.from || r.to, F = a ? h(r) : "Select date range";
61
- return /* @__PURE__ */ f("span", { className: "flex items-center gap-2", children: [
62
- /* @__PURE__ */ n("span", { children: i }),
63
- a && /* @__PURE__ */ f(g, { children: [
59
+ if (!f(r)) return null;
60
+ const i = r.from || r.to, F = i ? h(r) : "Select date range";
61
+ return /* @__PURE__ */ d("span", { className: "ds:flex ds:items-center ds:gap-2", children: [
62
+ /* @__PURE__ */ n("span", { children: s }),
63
+ i && /* @__PURE__ */ d(g, { children: [
64
64
  /* @__PURE__ */ n(
65
65
  b,
66
66
  {
67
67
  orientation: "vertical",
68
- className: "mx-0.5 data-[orientation=vertical]:h-4"
68
+ className: "ds:mx-0.5 ds:data-[orientation=vertical]:h-4"
69
69
  }
70
70
  ),
71
71
  /* @__PURE__ */ n("span", { children: F })
72
72
  ] })
73
73
  ] });
74
74
  }
75
- if (l(r)) return null;
76
- const t = r.length > 0, s = t ? m(r[0]) : "Select date";
77
- return /* @__PURE__ */ f("span", { className: "flex items-center gap-2", children: [
78
- /* @__PURE__ */ n("span", { children: i }),
79
- t && /* @__PURE__ */ f(g, { children: [
75
+ if (f(r)) return null;
76
+ const t = r.length > 0, a = t ? m(r[0]) : "Select date";
77
+ return /* @__PURE__ */ d("span", { className: "ds:flex ds:items-center ds:gap-2", children: [
78
+ /* @__PURE__ */ n("span", { children: s }),
79
+ t && /* @__PURE__ */ d(g, { children: [
80
80
  /* @__PURE__ */ n(
81
81
  b,
82
82
  {
83
83
  orientation: "vertical",
84
- className: "mx-0.5 data-[orientation=vertical]:h-4"
84
+ className: "ds:mx-0.5 ds:data-[orientation=vertical]:h-4"
85
85
  }
86
86
  ),
87
- /* @__PURE__ */ n("span", { children: s })
87
+ /* @__PURE__ */ n("span", { children: a })
88
88
  ] })
89
89
  ] });
90
- }, [r, o, h, i]), D = /* @__PURE__ */ n("div", { className: "w-auto p-0", children: o ? /* @__PURE__ */ n(
90
+ }, [r, o, h, s]), D = /* @__PURE__ */ n("div", { className: "ds:w-auto ds:p-0", children: o ? /* @__PURE__ */ n(
91
91
  y,
92
92
  {
93
93
  autoFocus: !0,
94
94
  captionLayout: "dropdown",
95
95
  mode: "range",
96
- selected: l(r) ? r : { from: void 0, to: void 0 },
96
+ selected: f(r) ? r : { from: void 0, to: void 0 },
97
97
  onSelect: p
98
98
  }
99
99
  ) : /* @__PURE__ */ n(
@@ -101,19 +101,19 @@ function $({
101
101
  {
102
102
  captionLayout: "dropdown",
103
103
  mode: "single",
104
- selected: l(r) ? void 0 : r[0],
104
+ selected: f(r) ? void 0 : r[0],
105
105
  onSelect: p
106
106
  }
107
107
  ) });
108
- return /* @__PURE__ */ n(A, { content: D, children: /* @__PURE__ */ f(S, { variant: "outline", size: "sm", className: "border-dashed font-normal", children: [
108
+ return /* @__PURE__ */ n(A, { content: D, children: /* @__PURE__ */ d(S, { variant: "outline", size: "sm", className: "ds:border-dashed ds:font-normal", children: [
109
109
  x ? /* @__PURE__ */ n(
110
110
  "div",
111
111
  {
112
112
  role: "button",
113
- "aria-label": `Clear ${i} filter`,
113
+ "aria-label": `Clear ${s} filter`,
114
114
  tabIndex: 0,
115
115
  onClick: N,
116
- className: "rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
116
+ className: "ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring",
117
117
  children: /* @__PURE__ */ n(T, {})
118
118
  }
119
119
  ) : /* @__PURE__ */ n(V, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-date-filter.js","sources":["../../../../../src/components/Table/TableFilter/data-table-date-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { formatDate } from \"@/utils/datetime\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { CalendarIcon, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Separator } from \"../../Separator\";\nimport { Popover } from \"../../Popover\";\nimport { Button } from \"../../Button\";\nimport { Calendar } from \"../../Calendar\";\n\ntype DateSelection = Date[] | DateRange;\n\nfunction getIsDateRange(value: DateSelection): value is DateRange {\n return value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\n if (!timestamp) return undefined;\n const numericTimestamp =\n typeof timestamp === \"string\" ? Number(timestamp) : timestamp;\n const date = new Date(numericTimestamp);\n return !Number.isNaN(date.getTime()) ? date : undefined;\n}\n\nfunction parseColumnFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (typeof item === \"number\" || typeof item === \"string\") {\n return item;\n }\n return undefined;\n });\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return [value];\n }\n\n return [];\n}\n\ninterface DataTableDateFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n multiple?: boolean;\n}\n\nexport function DataTableDateFilter<TData>({\n column,\n title,\n multiple,\n}: DataTableDateFilterProps<TData>) {\n const columnFilterValue = column.getFilterValue();\n\n const selectedDates = React.useMemo<DateSelection>(() => {\n if (!columnFilterValue) {\n return multiple ? { from: undefined, to: undefined } : [];\n }\n\n if (multiple) {\n const timestamps = parseColumnFilterValue(columnFilterValue);\n return {\n from: parseAsDate(timestamps[0]),\n to: parseAsDate(timestamps[1]),\n };\n }\n\n const timestamps = parseColumnFilterValue(columnFilterValue);\n const date = parseAsDate(timestamps[0]);\n return date ? [date] : [];\n }, [columnFilterValue, multiple]);\n\n const onSelect = React.useCallback(\n (date: Date | DateRange | undefined) => {\n if (!date) {\n column.setFilterValue(undefined);\n return;\n }\n\n if (multiple && !(\"getTime\" in date)) {\n const from = date.from?.getTime();\n const to = date.to?.getTime();\n column.setFilterValue(from || to ? [from, to] : undefined);\n } else if (!multiple && \"getTime\" in date) {\n column.setFilterValue(date.getTime());\n }\n },\n [column, multiple]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const hasValue = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return false;\n return selectedDates.from || selectedDates.to;\n }\n if (!Array.isArray(selectedDates)) return false;\n return selectedDates.length > 0;\n }, [multiple, selectedDates]);\n\n const formatDateRange = React.useCallback((range: DateRange) => {\n if (!range.from && !range.to) return \"\";\n if (range.from && range.to) {\n return `${formatDate(range.from)} - ${formatDate(range.to)}`;\n }\n return formatDate(range.from ?? range.to);\n }, []);\n\n const label = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDates = selectedDates.from || selectedDates.to;\n const dateText = hasSelectedDates\n ? formatDateRange(selectedDates)\n : \"Select date range\";\n\n return (\n <span className=\"flex items-center gap-2\">\n <span>{title}</span>\n {hasSelectedDates && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }\n\n if (getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDate = selectedDates.length > 0;\n const dateText = hasSelectedDate\n ? formatDate(selectedDates[0])\n : \"Select date\";\n\n return (\n <span className=\"flex items-center gap-2\">\n <span>{title}</span>\n {hasSelectedDate && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }, [selectedDates, multiple, formatDateRange, title]);\n\n const PopContent = (\n <div className=\"w-auto p-0\">\n {multiple ? (\n <Calendar\n autoFocus\n captionLayout=\"dropdown\"\n mode=\"range\"\n selected={\n getIsDateRange(selectedDates)\n ? selectedDates\n : { from: undefined, to: undefined }\n }\n onSelect={onSelect}\n />\n ) : (\n <Calendar\n captionLayout=\"dropdown\"\n mode=\"single\"\n selected={\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\n }\n onSelect={onSelect}\n />\n )}\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"border-dashed font-normal\">\n {hasValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n onClick={onReset}\n className=\"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <XCircle />\n </div>\n ) : (\n <CalendarIcon />\n )}\n {label}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsDateRange","value","parseAsDate","timestamp","numericTimestamp","date","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","jsxs","jsx","Fragment","Separator","hasSelectedDate","PopContent","Calendar","Popover","Button","XCircle","CalendarIcon"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-date-filter.js","sources":["../../../../../src/components/Table/TableFilter/data-table-date-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { formatDate } from \"@/utils/datetime\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { CalendarIcon, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Separator } from \"../../Separator\";\nimport { Popover } from \"../../Popover\";\nimport { Button } from \"../../Button\";\nimport { Calendar } from \"../../Calendar\";\n\ntype DateSelection = Date[] | DateRange;\n\nfunction getIsDateRange(value: DateSelection): value is DateRange {\n return value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\n if (!timestamp) return undefined;\n const numericTimestamp =\n typeof timestamp === \"string\" ? Number(timestamp) : timestamp;\n const date = new Date(numericTimestamp);\n return !Number.isNaN(date.getTime()) ? date : undefined;\n}\n\nfunction parseColumnFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (typeof item === \"number\" || typeof item === \"string\") {\n return item;\n }\n return undefined;\n });\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return [value];\n }\n\n return [];\n}\n\ninterface DataTableDateFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n multiple?: boolean;\n}\n\nexport function DataTableDateFilter<TData>({\n column,\n title,\n multiple,\n}: DataTableDateFilterProps<TData>) {\n const columnFilterValue = column.getFilterValue();\n\n const selectedDates = React.useMemo<DateSelection>(() => {\n if (!columnFilterValue) {\n return multiple ? { from: undefined, to: undefined } : [];\n }\n\n if (multiple) {\n const timestamps = parseColumnFilterValue(columnFilterValue);\n return {\n from: parseAsDate(timestamps[0]),\n to: parseAsDate(timestamps[1]),\n };\n }\n\n const timestamps = parseColumnFilterValue(columnFilterValue);\n const date = parseAsDate(timestamps[0]);\n return date ? [date] : [];\n }, [columnFilterValue, multiple]);\n\n const onSelect = React.useCallback(\n (date: Date | DateRange | undefined) => {\n if (!date) {\n column.setFilterValue(undefined);\n return;\n }\n\n if (multiple && !(\"getTime\" in date)) {\n const from = date.from?.getTime();\n const to = date.to?.getTime();\n column.setFilterValue(from || to ? [from, to] : undefined);\n } else if (!multiple && \"getTime\" in date) {\n column.setFilterValue(date.getTime());\n }\n },\n [column, multiple]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const hasValue = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return false;\n return selectedDates.from || selectedDates.to;\n }\n if (!Array.isArray(selectedDates)) return false;\n return selectedDates.length > 0;\n }, [multiple, selectedDates]);\n\n const formatDateRange = React.useCallback((range: DateRange) => {\n if (!range.from && !range.to) return \"\";\n if (range.from && range.to) {\n return `${formatDate(range.from)} - ${formatDate(range.to)}`;\n }\n return formatDate(range.from ?? range.to);\n }, []);\n\n const label = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDates = selectedDates.from || selectedDates.to;\n const dateText = hasSelectedDates\n ? formatDateRange(selectedDates)\n : \"Select date range\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDates && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }\n\n if (getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDate = selectedDates.length > 0;\n const dateText = hasSelectedDate\n ? formatDate(selectedDates[0])\n : \"Select date\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDate && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }, [selectedDates, multiple, formatDateRange, title]);\n\n const PopContent = (\n <div className=\"ds:w-auto ds:p-0\">\n {multiple ? (\n <Calendar\n autoFocus\n captionLayout=\"dropdown\"\n mode=\"range\"\n selected={\n getIsDateRange(selectedDates)\n ? selectedDates\n : { from: undefined, to: undefined }\n }\n onSelect={onSelect}\n />\n ) : (\n <Calendar\n captionLayout=\"dropdown\"\n mode=\"single\"\n selected={\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\n }\n onSelect={onSelect}\n />\n )}\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {hasValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n onClick={onReset}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n >\n <XCircle />\n </div>\n ) : (\n <CalendarIcon />\n )}\n {label}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsDateRange","value","parseAsDate","timestamp","numericTimestamp","date","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","jsxs","jsx","Fragment","Separator","hasSelectedDate","PopContent","Calendar","Popover","Button","XCircle","CalendarIcon"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsx as a, jsxs as s, Fragment as o } from "react/jsx-runtime";
1
+ import { jsx as a, jsxs as i, Fragment as d } from "react/jsx-runtime";
2
2
  import { X as V } from "lucide-react";
3
3
  import * as C from "react";
4
4
  import { Popover as N } from "../../Popover/index.js";
@@ -8,35 +8,35 @@ import D from "../../Separator/Separator.js";
8
8
  import O from "../../Button/Button.js";
9
9
  import S from "../../Checkbox/Checkbox.js";
10
10
  import k from "../../Radio/Radio.js";
11
- import c from "../../Input/Input.js";
11
+ import o from "../../Input/Input.js";
12
12
  function A({
13
13
  column: e,
14
- trigger: u,
14
+ trigger: c,
15
15
  open: n,
16
- onOpenChange: m
16
+ onOpenChange: u
17
17
  }) {
18
- const [p, d] = C.useState(!1), v = n !== void 0 ? n : p, h = m || d, t = e.columnDef.meta, f = () => {
18
+ const [m, p] = C.useState(!1), v = n !== void 0 ? n : m, h = u || p, t = e.columnDef.meta, f = () => {
19
19
  if (!t?.variant) return /* @__PURE__ */ a("div", { children: "No filter available" });
20
20
  switch (t.variant) {
21
21
  case "text":
22
22
  return /* @__PURE__ */ a(
23
- c,
23
+ o,
24
24
  {
25
25
  placeholder: t.placeholder ?? t.label,
26
26
  value: e.getFilterValue() ?? "",
27
27
  onChange: (r) => e.setFilterValue(r.target.value),
28
- className: "h-8 w-full"
28
+ className: "ds:h-8 ds:w-full"
29
29
  }
30
30
  );
31
31
  case "number":
32
32
  return /* @__PURE__ */ a(
33
- c,
33
+ o,
34
34
  {
35
35
  type: "number",
36
36
  placeholder: t.placeholder ?? t.label,
37
37
  value: e.getFilterValue() ?? "",
38
38
  onChange: (r) => e.setFilterValue(r.target.value),
39
- className: "h-8 w-full"
39
+ className: "ds:h-8 ds:w-full"
40
40
  }
41
41
  );
42
42
  case "date":
@@ -61,21 +61,21 @@ function A({
61
61
  case "multiSelect": {
62
62
  const r = t.options || [];
63
63
  if (t.variant === "multiSelect") {
64
- const i = e.getFilterValue() || [];
65
- return /* @__PURE__ */ a(o, { children: /* @__PURE__ */ a("div", { className: "space-y-2 max-h-48 overflow-y-auto text-sm", children: r.map((l) => /* @__PURE__ */ a(
64
+ const s = e.getFilterValue() || [];
65
+ return /* @__PURE__ */ a(d, { children: /* @__PURE__ */ a("div", { className: "ds:space-y-2 ds:max-h-48 ds:overflow-y-auto ds:text-sm", children: r.map((l) => /* @__PURE__ */ a(
66
66
  "div",
67
67
  {
68
- className: "flex items-center space-x-2",
68
+ className: "ds:flex ds:items-center ds:space-x-2",
69
69
  children: /* @__PURE__ */ a(
70
70
  S,
71
71
  {
72
- checked: i.includes(l.value),
72
+ checked: s.includes(l.value),
73
73
  onCheckedChange: (b) => {
74
74
  b ? e.setFilterValue([
75
- ...i,
75
+ ...s,
76
76
  l.value
77
77
  ]) : e.setFilterValue(
78
- i.filter((g) => g !== l.value)
78
+ s.filter((g) => g !== l.value)
79
79
  );
80
80
  },
81
81
  label: l.label
@@ -85,17 +85,17 @@ function A({
85
85
  l.value
86
86
  )) }) });
87
87
  } else {
88
- const i = e.getFilterValue();
88
+ const s = e.getFilterValue();
89
89
  return /* @__PURE__ */ a(
90
90
  k,
91
91
  {
92
- value: i,
92
+ value: s,
93
93
  onValueChange: (l) => e.setFilterValue(l),
94
94
  options: r.map((l) => ({
95
95
  label: l.label,
96
96
  value: l.value
97
97
  })),
98
- className: "p-1"
98
+ className: "ds:p-1"
99
99
  }
100
100
  );
101
101
  }
@@ -109,26 +109,26 @@ function A({
109
109
  {
110
110
  open: v,
111
111
  onOpenChange: h,
112
- trigger: u,
113
- content: /* @__PURE__ */ s("div", { className: "p-2 min-w-32", children: [
112
+ trigger: c,
113
+ content: /* @__PURE__ */ i("div", { className: "ds:p-2 ds:min-w-32", children: [
114
114
  f(),
115
- F && /* @__PURE__ */ s(o, { children: [
116
- /* @__PURE__ */ a(D, { className: "mt-3 mb-1" }),
117
- /* @__PURE__ */ s(
115
+ F && /* @__PURE__ */ i(d, { children: [
116
+ /* @__PURE__ */ a(D, { className: "ds:mt-3 ds:mb-1" }),
117
+ /* @__PURE__ */ i(
118
118
  O,
119
119
  {
120
120
  variant: "ghost",
121
121
  size: "sm",
122
122
  onClick: () => e.setFilterValue(void 0),
123
123
  children: [
124
- /* @__PURE__ */ a(V, { className: "size-3" }),
124
+ /* @__PURE__ */ a(V, { className: "ds:size-3" }),
125
125
  "Clear Filter"
126
126
  ]
127
127
  }
128
128
  )
129
129
  ] })
130
130
  ] }),
131
- contentClassName: "p-0"
131
+ contentClassName: "ds:p-0"
132
132
  }
133
133
  );
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-filter-popover.js","sources":["../../../../../src/components/Table/TableFilter/data-table-filter-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Popover } from \"../../Popover\";\nimport { Input } from \"../../Input\";\nimport { Checkbox } from \"../../Checkbox\";\nimport { Radio } from \"../../Radio\";\nimport { DataTableSliderFilter } from \"./data-table-slider-filter\";\nimport { DataTableDateFilter } from \"./data-table-date-filter\";\nimport { Separator } from \"@/components/Separator\";\nimport { Button } from \"@/components/Button\";\n\ninterface DataTableFilterPopoverProps<TData> {\n column: Column<TData>;\n trigger: React.ReactNode;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DataTableFilterPopover<TData>({\n column,\n trigger,\n open,\n onOpenChange,\n}: DataTableFilterPopoverProps<TData>) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n\n const isOpen = open !== undefined ? open : internalOpen;\n const setIsOpen = onOpenChange || setInternalOpen;\n\n const columnMeta = column.columnDef.meta;\n\n const renderFilterContent = () => {\n if (!columnMeta?.variant) return <div>No filter available</div>;\n\n switch (columnMeta.variant) {\n case \"text\":\n return (\n <Input\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"h-8 w-full\"\n />\n );\n\n case \"number\":\n return (\n <Input\n type=\"number\"\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"h-8 w-full\"\n />\n );\n\n case \"date\":\n case \"dateRange\":\n return (\n <DataTableDateFilter\n column={column}\n title={columnMeta.label ?? column.id}\n multiple={columnMeta.variant === \"dateRange\"}\n />\n );\n\n case \"range\":\n return (\n <DataTableSliderFilter\n column={column}\n title={columnMeta.label ?? column.id}\n />\n );\n\n case \"select\":\n case \"multiSelect\": {\n const options = columnMeta.options || [];\n const multiple = columnMeta.variant === \"multiSelect\";\n\n if (multiple) {\n const currentValues = (column.getFilterValue() as string[]) || [];\n return (\n <>\n <div className=\"space-y-2 max-h-48 overflow-y-auto text-sm\">\n {options.map((option) => (\n <div\n key={option.value}\n className=\"flex items-center space-x-2\"\n >\n <Checkbox\n checked={currentValues.includes(option.value)}\n onCheckedChange={(checked) => {\n if (checked) {\n column.setFilterValue([\n ...currentValues,\n option.value,\n ]);\n } else {\n column.setFilterValue(\n currentValues.filter((v) => v !== option.value)\n );\n }\n }}\n label={option.label}\n />\n </div>\n ))}\n </div>\n {/* <Separator className=\"my-2\" /> */}\n {/* <div className=\"flex justify-center gap-0 mt-2\">\n <Button\n variant=\"ghost\"\n onClick={() =>\n column.setFilterValue(options.map((o) => o.value))\n }\n >\n Check All\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"size-3\" />\n Clear Filter\n </Button>\n </div> */}\n </>\n );\n } else {\n const currentValue = column.getFilterValue() as string;\n return (\n <Radio\n value={currentValue}\n onValueChange={(value) => column.setFilterValue(value)}\n options={options.map((option) => ({\n label: option.label,\n value: option.value,\n }))}\n className=\"p-1\"\n />\n );\n }\n }\n\n default:\n return <div>No filter available</div>;\n }\n };\n\n const hasFilterValue = column.getFilterValue() != null;\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={trigger}\n content={\n <div className=\"p-2 min-w-32\">\n {renderFilterContent()}\n {hasFilterValue && (\n <>\n <Separator className=\"mt-3 mb-1\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"size-3\" />\n Clear Filter\n </Button>\n </>\n )}\n </div>\n }\n contentClassName=\"p-0\"\n />\n );\n}\n"],"names":["DataTableFilterPopover","column","trigger","open","onOpenChange","internalOpen","setInternalOpen","React","isOpen","setIsOpen","columnMeta","renderFilterContent","jsx","Input","event","DataTableDateFilter","DataTableSliderFilter","options","currentValues","Fragment","option","Checkbox","checked","v","currentValue","Radio","value","hasFilterValue","Popover","jsxs","Separator","Button","X"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-filter-popover.js","sources":["../../../../../src/components/Table/TableFilter/data-table-filter-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Popover } from \"../../Popover\";\nimport { Input } from \"../../Input\";\nimport { Checkbox } from \"../../Checkbox\";\nimport { Radio } from \"../../Radio\";\nimport { DataTableSliderFilter } from \"./data-table-slider-filter\";\nimport { DataTableDateFilter } from \"./data-table-date-filter\";\nimport { Separator } from \"@/components/Separator\";\nimport { Button } from \"@/components/Button\";\n\ninterface DataTableFilterPopoverProps<TData> {\n column: Column<TData>;\n trigger: React.ReactNode;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DataTableFilterPopover<TData>({\n column,\n trigger,\n open,\n onOpenChange,\n}: DataTableFilterPopoverProps<TData>) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n\n const isOpen = open !== undefined ? open : internalOpen;\n const setIsOpen = onOpenChange || setInternalOpen;\n\n const columnMeta = column.columnDef.meta;\n\n const renderFilterContent = () => {\n if (!columnMeta?.variant) return <div>No filter available</div>;\n\n switch (columnMeta.variant) {\n case \"text\":\n return (\n <Input\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"number\":\n return (\n <Input\n type=\"number\"\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"date\":\n case \"dateRange\":\n return (\n <DataTableDateFilter\n column={column}\n title={columnMeta.label ?? column.id}\n multiple={columnMeta.variant === \"dateRange\"}\n />\n );\n\n case \"range\":\n return (\n <DataTableSliderFilter\n column={column}\n title={columnMeta.label ?? column.id}\n />\n );\n\n case \"select\":\n case \"multiSelect\": {\n const options = columnMeta.options || [];\n const multiple = columnMeta.variant === \"multiSelect\";\n\n if (multiple) {\n const currentValues = (column.getFilterValue() as string[]) || [];\n return (\n <>\n <div className=\"ds:space-y-2 ds:max-h-48 ds:overflow-y-auto ds:text-sm\">\n {options.map((option) => (\n <div\n key={option.value}\n className=\"ds:flex ds:items-center ds:space-x-2\"\n >\n <Checkbox\n checked={currentValues.includes(option.value)}\n onCheckedChange={(checked) => {\n if (checked) {\n column.setFilterValue([\n ...currentValues,\n option.value,\n ]);\n } else {\n column.setFilterValue(\n currentValues.filter((v) => v !== option.value)\n );\n }\n }}\n label={option.label}\n />\n </div>\n ))}\n </div>\n {/* <Separator className=\"my-2\" /> */}\n {/* <div className=\"flex justify-center gap-0 mt-2\">\n <Button\n variant=\"ghost\"\n onClick={() =>\n column.setFilterValue(options.map((o) => o.value))\n }\n >\n Check All\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"size-3\" />\n Clear Filter\n </Button>\n </div> */}\n </>\n );\n } else {\n const currentValue = column.getFilterValue() as string;\n return (\n <Radio\n value={currentValue}\n onValueChange={(value) => column.setFilterValue(value)}\n options={options.map((option) => ({\n label: option.label,\n value: option.value,\n }))}\n className=\"ds:p-1\"\n />\n );\n }\n }\n\n default:\n return <div>No filter available</div>;\n }\n };\n\n const hasFilterValue = column.getFilterValue() != null;\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={trigger}\n content={\n <div className=\"ds:p-2 ds:min-w-32\">\n {renderFilterContent()}\n {hasFilterValue && (\n <>\n <Separator className=\"ds:mt-3 ds:mb-1\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"ds:size-3\" />\n Clear Filter\n </Button>\n </>\n )}\n </div>\n }\n contentClassName=\"ds:p-0\"\n />\n );\n}\n"],"names":["DataTableFilterPopover","column","trigger","open","onOpenChange","internalOpen","setInternalOpen","React","isOpen","setIsOpen","columnMeta","renderFilterContent","jsx","Input","event","DataTableDateFilter","DataTableSliderFilter","options","currentValues","Fragment","option","Checkbox","checked","v","currentValue","Radio","value","hasFilterValue","Popover","jsxs","Separator","Button","X"],"mappings":";;;;;;;;;;;AAsBO,SAASA,EAA8B;AAAA,EAC5C,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AACF,GAAuC;AACrC,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAM,SAAS,EAAK,GAEtDC,IAASL,MAAS,SAAYA,IAAOE,GACrCI,IAAYL,KAAgBE,GAE5BI,IAAaT,EAAO,UAAU,MAE9BU,IAAsB,MAAM;AAChC,QAAI,CAACD,GAAY,QAAS,QAAO,gBAAAE,EAAC,SAAI,UAAA,uBAAmB;AAEzD,YAAQF,EAAW,SAAA;AAAA,MACjB,KAAK;AACH,eACE,gBAAAE;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,aAAaH,EAAW,eAAeA,EAAW;AAAA,YAClD,OAAQT,EAAO,eAAA,KAA+B;AAAA,YAC9C,UAAU,CAACa,MACTb,EAAO,eAAea,EAAM,OAAO,KAAK;AAAA,YAE1C,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAIhB,KAAK;AACH,eACE,gBAAAF;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,aAAaH,EAAW,eAAeA,EAAW;AAAA,YAClD,OAAQT,EAAO,eAAA,KAA+B;AAAA,YAC9C,UAAU,CAACa,MACTb,EAAO,eAAea,EAAM,OAAO,KAAK;AAAA,YAE1C,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAIhB,KAAK;AAAA,MACL,KAAK;AACH,eACE,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,QAAAd;AAAA,YACA,OAAOS,EAAW,SAAST,EAAO;AAAA,YAClC,UAAUS,EAAW,YAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MAIvC,KAAK;AACH,eACE,gBAAAE;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,QAAAf;AAAA,YACA,OAAOS,EAAW,SAAST,EAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAIxC,KAAK;AAAA,MACL,KAAK,eAAe;AAClB,cAAMgB,IAAUP,EAAW,WAAW,CAAA;AAGtC,YAFiBA,EAAW,YAAY,eAE1B;AACZ,gBAAMQ,IAAiBjB,EAAO,eAAA,KAAiC,CAAA;AAC/D,iBACE,gBAAAW,EAAAO,GAAA,EACE,4BAAC,OAAA,EAAI,WAAU,0DACZ,UAAAF,EAAQ,IAAI,CAACG,MACZ,gBAAAR;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAU;AAAA,cAEV,UAAA,gBAAAA;AAAA,gBAACS;AAAA,gBAAA;AAAA,kBACC,SAASH,EAAc,SAASE,EAAO,KAAK;AAAA,kBAC5C,iBAAiB,CAACE,MAAY;AAC5B,oBAAIA,IACFrB,EAAO,eAAe;AAAA,sBACpB,GAAGiB;AAAA,sBACHE,EAAO;AAAA,oBAAA,CACR,IAEDnB,EAAO;AAAA,sBACLiB,EAAc,OAAO,CAACK,MAAMA,MAAMH,EAAO,KAAK;AAAA,oBAAA;AAAA,kBAGpD;AAAA,kBACA,OAAOA,EAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YAChB;AAAA,YAlBKA,EAAO;AAAA,UAAA,CAoBf,GACH,EAAA,CAmBF;AAAA,QAEJ,OAAO;AACL,gBAAMI,IAAevB,EAAO,eAAA;AAC5B,iBACE,gBAAAW;AAAA,YAACa;AAAA,YAAA;AAAA,cACC,OAAOD;AAAA,cACP,eAAe,CAACE,MAAUzB,EAAO,eAAeyB,CAAK;AAAA,cACrD,SAAST,EAAQ,IAAI,CAACG,OAAY;AAAA,gBAChC,OAAOA,EAAO;AAAA,gBACd,OAAOA,EAAO;AAAA,cAAA,EACd;AAAA,cACF,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QAGhB;AAAA,MACF;AAAA,MAEA;AACE,eAAO,gBAAAR,EAAC,SAAI,UAAA,sBAAA,CAAmB;AAAA,IAAA;AAAA,EAErC,GAEMe,IAAiB1B,EAAO,eAAA,KAAoB;AAElD,SACE,gBAAAW;AAAA,IAACgB;AAAA,IAAA;AAAA,MACC,MAAMpB;AAAA,MACN,cAAcC;AAAA,MACd,SAAAP;AAAA,MACA,SACE,gBAAA2B,EAAC,OAAA,EAAI,WAAU,sBACZ,UAAA;AAAA,QAAAlB,EAAA;AAAA,QACAgB,KACC,gBAAAE,EAAAV,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAP,EAACkB,GAAA,EAAU,WAAU,kBAAA,CAAkB;AAAA,UACvC,gBAAAD;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,MAAM9B,EAAO,eAAe,MAAS;AAAA,cAE9C,UAAA;AAAA,gBAAA,gBAAAW,EAACoB,GAAA,EAAE,WAAU,YAAA,CAAY;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAE7B,EAAA,CACF;AAAA,MAAA,GAEJ;AAAA,MAEF,kBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}