@sth87/shadcn-design-system 0.1.8 → 0.2.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 (788) hide show
  1. package/AI_README.md +114 -51
  2. package/README.md +83 -27
  3. package/dist/AI_CONTEXT.md +51 -52
  4. package/dist/cjs/_virtual/_commonjsHelpers.cjs +0 -1
  5. package/dist/cjs/_virtual/index.cjs +0 -1
  6. package/dist/cjs/_virtual/index2.cjs +0 -1
  7. package/dist/cjs/components/Accordion/Accordion.cjs +0 -1
  8. package/dist/cjs/components/Accordion/index.cjs +1 -0
  9. package/dist/cjs/components/Avatar/Avatar.cjs +1 -2
  10. package/dist/cjs/components/Avatar/index.cjs +1 -0
  11. package/dist/cjs/components/Badge/Badge.cjs +0 -1
  12. package/dist/cjs/components/Badge/index.cjs +1 -0
  13. package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +0 -1
  14. package/dist/cjs/components/Breadcrumb/index.cjs +1 -0
  15. package/dist/cjs/components/Button/Button.cjs +0 -1
  16. package/dist/cjs/components/Button/ButtonGroup.cjs +0 -1
  17. package/dist/cjs/components/Button/index.cjs +1 -0
  18. package/dist/cjs/components/Calendar/Calendar.cjs +1 -2
  19. package/dist/cjs/components/Calendar/index.cjs +1 -0
  20. package/dist/cjs/components/Carousel/Carousel.cjs +0 -1
  21. package/dist/cjs/components/Carousel/index.cjs +1 -0
  22. package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -2
  23. package/dist/cjs/components/Checkbox/index.cjs +1 -0
  24. package/dist/cjs/components/Collapsible/Collapsible.cjs +0 -1
  25. package/dist/cjs/components/Collapsible/index.cjs +1 -0
  26. package/dist/cjs/components/Command/Command.cjs +0 -1
  27. package/dist/cjs/components/Command/index.cjs +0 -1
  28. package/dist/cjs/components/ContextMenu/ContextMenu.cjs +0 -1
  29. package/dist/cjs/components/ContextMenu/index.cjs +0 -1
  30. package/dist/cjs/components/Cropper/Cropper.cjs +1 -2
  31. package/dist/cjs/components/Cropper/CropperTool.cjs +0 -1
  32. package/dist/cjs/components/Cropper/index.cjs +1 -0
  33. package/dist/cjs/components/Cropper/utils.cjs +0 -1
  34. package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -2
  35. package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -2
  36. package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -2
  37. package/dist/cjs/components/DatePicker/index.cjs +1 -0
  38. package/dist/cjs/components/Dialog/Dialog.cjs +0 -1
  39. package/dist/cjs/components/Dialog/index.cjs +1 -0
  40. package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +0 -1
  41. package/dist/cjs/components/DropdownMenu/index.cjs +0 -1
  42. package/dist/cjs/components/FloatLabel.cjs +0 -1
  43. package/dist/cjs/components/Glass/Glass.cjs +1 -2
  44. package/dist/cjs/components/Glass/index.cjs +1 -0
  45. package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -2
  46. package/dist/cjs/components/ImageViewer/index.cjs +1 -0
  47. package/dist/cjs/components/Input/Input.cjs +1 -2
  48. package/dist/cjs/components/Input/index.cjs +1 -0
  49. package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -2
  50. package/dist/cjs/components/InputOTP/index.cjs +1 -0
  51. package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -2
  52. package/dist/cjs/components/Interactive/index.cjs +1 -0
  53. package/dist/cjs/components/Label/index.cjs +1 -0
  54. package/dist/cjs/components/Marquee/Marquee.cjs +1 -2
  55. package/dist/cjs/components/Marquee/MarqueeWrapper.cjs +0 -1
  56. package/dist/cjs/components/Marquee/index.cjs +0 -1
  57. package/dist/cjs/components/Masonry/Masonry.cjs +1 -2
  58. package/dist/cjs/components/Masonry/MasonryWrapper.cjs +0 -1
  59. package/dist/cjs/components/Masonry/index.cjs +1 -0
  60. package/dist/cjs/components/Pagination/Pagination.cjs +0 -1
  61. package/dist/cjs/components/Pagination/index.cjs +0 -1
  62. package/dist/cjs/components/Popover/Popover.cjs +0 -1
  63. package/dist/cjs/components/Popover/index.cjs +1 -2
  64. package/dist/cjs/components/QrCode/QrCode.cjs +1 -2
  65. package/dist/cjs/components/QrCode/index.cjs +0 -1
  66. package/dist/cjs/components/Radio/Radio.cjs +1 -2
  67. package/dist/cjs/components/Radio/index.cjs +1 -0
  68. package/dist/cjs/components/Rate/Rate.cjs +0 -1
  69. package/dist/cjs/components/Rate/index.cjs +1 -0
  70. package/dist/cjs/components/Resizable/Resizable.cjs +0 -1
  71. package/dist/cjs/components/Resizable/index.cjs +1 -0
  72. package/dist/cjs/components/ScrollArea/ScrollArea.cjs +0 -1
  73. package/dist/cjs/components/ScrollArea/index.cjs +1 -0
  74. package/dist/cjs/components/Select/Select.cjs +1 -2
  75. package/dist/cjs/components/Select/index.cjs +1 -0
  76. package/dist/cjs/components/Separator/Separator.cjs +0 -1
  77. package/dist/cjs/components/Separator/index.cjs +1 -0
  78. package/dist/cjs/components/Sheet/Sheet.cjs +0 -1
  79. package/dist/cjs/components/Sheet/index.cjs +1 -0
  80. package/dist/cjs/components/Sidebar/Sidebar.cjs +0 -1
  81. package/dist/cjs/components/Sidebar/index.cjs +1 -0
  82. package/dist/cjs/components/Skeleton/Skeleton.cjs +0 -1
  83. package/dist/cjs/components/Skeleton/index.cjs +1 -0
  84. package/dist/cjs/components/Slider/Slider.cjs +0 -1
  85. package/dist/cjs/components/Slider/index.cjs +1 -0
  86. package/dist/cjs/components/Stepper/Stepper.cjs +1 -2
  87. package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -2
  88. package/dist/cjs/components/Stepper/index.cjs +0 -1
  89. package/dist/cjs/components/Switch/Switch.cjs +0 -1
  90. package/dist/cjs/components/Switch/index.cjs +1 -0
  91. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -2
  92. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -2
  93. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -2
  94. package/dist/cjs/components/Table/data-table-column-header.cjs +1 -2
  95. package/dist/cjs/components/Table/data-table-pagination.cjs +1 -2
  96. package/dist/cjs/components/Table/data-table-toolbar.cjs +1 -2
  97. package/dist/cjs/components/Table/data-table-view-options.cjs +1 -2
  98. package/dist/cjs/components/Table/data-table.cjs +1 -2
  99. package/dist/cjs/components/Table/index.cjs +1 -0
  100. package/dist/cjs/components/Table/select-column.cjs +0 -1
  101. package/dist/cjs/components/Tabs/Tabs.cjs +1 -2
  102. package/dist/cjs/components/Tabs/classes.cjs +1 -2
  103. package/dist/cjs/components/Tabs/index.cjs +1 -0
  104. package/dist/cjs/components/Textarea/Textarea.cjs +1 -2
  105. package/dist/cjs/components/Textarea/index.cjs +1 -0
  106. package/dist/cjs/components/TimeGridView.cjs +1 -2
  107. package/dist/cjs/components/Toast/Toast.cjs +1 -2
  108. package/dist/cjs/components/Toast/index.cjs +1 -0
  109. package/dist/cjs/components/Toggle/Toggle.cjs +0 -1
  110. package/dist/cjs/components/Toggle/index.cjs +1 -0
  111. package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -2
  112. package/dist/cjs/components/Tooltip/index.cjs +1 -0
  113. package/dist/cjs/components/Tour/Tour.cjs +1 -2
  114. package/dist/cjs/components/Tour/TourWrapper.cjs +0 -1
  115. package/dist/cjs/components/Tour/index.cjs +0 -1
  116. package/dist/cjs/components/TreeSelect/TreeSelect.cjs +0 -1
  117. package/dist/cjs/components/TreeSelect/index.cjs +1 -0
  118. package/dist/cjs/components/Upload/Upload.cjs +0 -1
  119. package/dist/cjs/components/Upload/index.cjs +1 -0
  120. package/dist/cjs/components/WheelColumn.cjs +1 -2
  121. package/dist/cjs/config/data-table.cjs +0 -1
  122. package/dist/cjs/constants/common.cjs +0 -1
  123. package/dist/cjs/hooks/index.cjs +1 -0
  124. package/dist/cjs/hooks/use-callback-ref.cjs +0 -1
  125. package/dist/cjs/hooks/use-data-table.cjs +1 -2
  126. package/dist/cjs/hooks/use-debounced-callback.cjs +1 -2
  127. package/dist/cjs/hooks/use-debounced-value.cjs +1 -2
  128. package/dist/cjs/hooks/use-event-listener.cjs +1 -2
  129. package/dist/cjs/hooks/use-intersection-observer.cjs +0 -1
  130. package/dist/cjs/hooks/use-isomorphic-layout-effect.cjs +0 -1
  131. package/dist/cjs/hooks/use-media-query.cjs +1 -2
  132. package/dist/cjs/hooks/use-mouse-position.cjs +1 -0
  133. package/dist/cjs/hooks/use-on-click-outside.cjs +1 -2
  134. package/dist/cjs/hooks/use-script.cjs +0 -1
  135. package/dist/cjs/hooks/use-scroll-lock.cjs +1 -2
  136. package/dist/cjs/index.cjs +1 -2
  137. package/dist/cjs/lib/TextAnimation/BlurText.cjs +0 -1
  138. package/dist/cjs/lib/TextAnimation/CircularText.cjs +0 -1
  139. package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -2
  140. package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -2
  141. package/dist/cjs/lib/TextAnimation/RollingText.cjs +0 -1
  142. package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -2
  143. package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -2
  144. package/dist/cjs/lib/TextAnimation/SplittingText.cjs +0 -1
  145. package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -2
  146. package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +0 -1
  147. package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +0 -1
  148. package/dist/cjs/lib/TextAnimation/TypingText.cjs +0 -1
  149. package/dist/cjs/lib/TextAnimation/WritingText.cjs +0 -1
  150. package/dist/cjs/lib/TextAnimation/index.cjs +1 -0
  151. package/dist/cjs/lib/utils.cjs +1 -0
  152. package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs +0 -1
  153. package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs +0 -1
  154. package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +0 -1
  155. package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs +0 -1
  156. 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 +0 -1
  157. package/dist/cjs/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.cjs +0 -1
  158. package/dist/cjs/packages/ui/src/components/accordion.cjs +0 -1
  159. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +0 -1
  160. package/dist/cjs/packages/ui/src/components/avatar.cjs +0 -1
  161. package/dist/cjs/packages/ui/src/components/badge.cjs +0 -1
  162. package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +0 -1
  163. package/dist/cjs/packages/ui/src/components/button-group.cjs +0 -1
  164. package/dist/cjs/packages/ui/src/components/button.cjs +0 -1
  165. package/dist/cjs/packages/ui/src/components/calendar.cjs +0 -1
  166. package/dist/cjs/packages/ui/src/components/checkbox.cjs +0 -1
  167. package/dist/cjs/packages/ui/src/components/collapsible.cjs +0 -1
  168. package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -2
  169. package/dist/cjs/packages/ui/src/components/command.cjs +0 -1
  170. package/dist/cjs/packages/ui/src/components/context-menu.cjs +0 -1
  171. package/dist/cjs/packages/ui/src/components/dialog.cjs +0 -1
  172. package/dist/cjs/packages/ui/src/components/drawer.cjs +0 -1
  173. package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +0 -1
  174. package/dist/cjs/packages/ui/src/components/input-otp.cjs +0 -1
  175. package/dist/cjs/packages/ui/src/components/input.cjs +0 -1
  176. package/dist/cjs/packages/ui/src/components/label.cjs +0 -1
  177. package/dist/cjs/packages/ui/src/components/pagination.cjs +0 -1
  178. package/dist/cjs/packages/ui/src/components/popover.cjs +0 -1
  179. package/dist/cjs/packages/ui/src/components/radio-group.cjs +0 -1
  180. package/dist/cjs/packages/ui/src/components/resizable.cjs +0 -1
  181. package/dist/cjs/packages/ui/src/components/scroll-area.cjs +0 -1
  182. package/dist/cjs/packages/ui/src/components/select.cjs +1 -2
  183. package/dist/cjs/packages/ui/src/components/separator.cjs +0 -1
  184. package/dist/cjs/packages/ui/src/components/sheet.cjs +0 -1
  185. package/dist/cjs/packages/ui/src/components/sidebar.cjs +0 -1
  186. package/dist/cjs/packages/ui/src/components/skeleton.cjs +0 -1
  187. package/dist/cjs/packages/ui/src/components/switch.cjs +0 -1
  188. package/dist/cjs/packages/ui/src/components/table.cjs +0 -1
  189. package/dist/cjs/packages/ui/src/components/tabs.cjs +0 -1
  190. package/dist/cjs/packages/ui/src/components/textarea.cjs +0 -1
  191. package/dist/cjs/packages/ui/src/components/toggle.cjs +0 -1
  192. package/dist/cjs/packages/ui/src/components/tooltip.cjs +0 -1
  193. package/dist/cjs/packages/ui/src/components/tree-view.cjs +0 -1
  194. package/dist/cjs/packages/ui/src/hooks/use-mobile.cjs +0 -1
  195. package/dist/cjs/packages/ui/src/lib/compose-refs.cjs +0 -1
  196. package/dist/cjs/packages/ui/src/lib/utils.cjs +0 -1
  197. package/dist/cjs/utils/animations.cjs +1 -2
  198. package/dist/cjs/utils/css.cjs +0 -1
  199. package/dist/cjs/utils/data-table.cjs +0 -1
  200. package/dist/cjs/utils/datetime.cjs +0 -1
  201. package/dist/cjs/utils/parsers.cjs +0 -1
  202. package/dist/esm/_virtual/_commonjsHelpers.js +0 -1
  203. package/dist/esm/_virtual/index.js +0 -1
  204. package/dist/esm/_virtual/index2.js +0 -1
  205. package/dist/esm/components/Accordion/Accordion.js +0 -1
  206. package/dist/esm/components/Accordion/index.js +9 -0
  207. package/dist/esm/components/Avatar/Avatar.js +32 -63
  208. package/dist/esm/components/Avatar/index.js +4 -0
  209. package/dist/esm/components/Badge/Badge.js +0 -1
  210. package/dist/esm/components/Badge/index.js +5 -0
  211. package/dist/esm/components/Breadcrumb/Breadcrumb.js +0 -1
  212. package/dist/esm/components/Breadcrumb/index.js +5 -0
  213. package/dist/esm/components/Button/Button.js +0 -1
  214. package/dist/esm/components/Button/ButtonGroup.js +0 -1
  215. package/dist/esm/components/Button/index.js +10 -0
  216. package/dist/esm/components/Calendar/Calendar.js +25 -57
  217. package/dist/esm/components/Calendar/index.js +5 -0
  218. package/dist/esm/components/Carousel/Carousel.js +0 -1
  219. package/dist/esm/components/Carousel/index.js +6 -0
  220. package/dist/esm/components/Checkbox/Checkbox.js +29 -58
  221. package/dist/esm/components/Checkbox/index.js +5 -0
  222. package/dist/esm/components/Collapsible/Collapsible.js +0 -1
  223. package/dist/esm/components/Collapsible/index.js +5 -0
  224. package/dist/esm/components/Command/Command.js +0 -1
  225. package/dist/esm/components/Command/index.js +0 -1
  226. package/dist/esm/components/ContextMenu/ContextMenu.js +0 -1
  227. package/dist/esm/components/ContextMenu/index.js +0 -1
  228. package/dist/esm/components/Cropper/Cropper.js +261 -292
  229. package/dist/esm/components/Cropper/CropperTool.js +0 -1
  230. package/dist/esm/components/Cropper/index.js +17 -0
  231. package/dist/esm/components/Cropper/utils.js +0 -1
  232. package/dist/esm/components/DatePicker/DatePicker.js +94 -122
  233. package/dist/esm/components/DatePicker/RangePicker.js +202 -230
  234. package/dist/esm/components/DatePicker/TimePicker.js +63 -92
  235. package/dist/esm/components/DatePicker/index.js +8 -0
  236. package/dist/esm/components/Dialog/Dialog.js +0 -1
  237. package/dist/esm/components/Dialog/index.js +5 -0
  238. package/dist/esm/components/DropdownMenu/DropdownMenu.js +0 -1
  239. package/dist/esm/components/DropdownMenu/index.js +0 -1
  240. package/dist/esm/components/FloatLabel.js +0 -1
  241. package/dist/esm/components/Glass/Glass.js +7 -39
  242. package/dist/esm/components/Glass/index.js +5 -0
  243. package/dist/esm/components/ImageViewer/ImageViewer.js +95 -126
  244. package/dist/esm/components/ImageViewer/index.js +7 -0
  245. package/dist/esm/components/Input/Input.js +0 -1
  246. package/dist/esm/components/Input/index.js +5 -0
  247. package/dist/esm/components/InputOTP/InputOTP.js +28 -58
  248. package/dist/esm/components/InputOTP/index.js +5 -0
  249. package/dist/esm/components/Interactive/CursorFollow.js +90 -122
  250. package/dist/esm/components/Interactive/index.js +9 -0
  251. package/dist/esm/components/Label/index.js +4 -0
  252. package/dist/esm/components/Marquee/Marquee.js +78 -109
  253. package/dist/esm/components/Marquee/MarqueeWrapper.js +0 -1
  254. package/dist/esm/components/Marquee/index.js +0 -1
  255. package/dist/esm/components/Masonry/Masonry.js +67 -100
  256. package/dist/esm/components/Masonry/MasonryWrapper.js +0 -1
  257. package/dist/esm/components/Masonry/index.js +10 -0
  258. package/dist/esm/components/Pagination/Pagination.js +0 -1
  259. package/dist/esm/components/Pagination/index.js +0 -1
  260. package/dist/esm/components/Popover/Popover.js +0 -1
  261. package/dist/esm/components/Popover/index.js +3 -3
  262. package/dist/esm/components/QrCode/QrCode.js +126 -157
  263. package/dist/esm/components/QrCode/index.js +0 -1
  264. package/dist/esm/components/Radio/Radio.js +36 -67
  265. package/dist/esm/components/Radio/index.js +5 -0
  266. package/dist/esm/components/Rate/Rate.js +0 -1
  267. package/dist/esm/components/Rate/index.js +5 -0
  268. package/dist/esm/components/Resizable/Resizable.js +0 -1
  269. package/dist/esm/components/Resizable/index.js +13 -0
  270. package/dist/esm/components/ScrollArea/ScrollArea.js +0 -1
  271. package/dist/esm/components/ScrollArea/index.js +5 -0
  272. package/dist/esm/components/Select/Select.js +0 -1
  273. package/dist/esm/components/Select/index.js +5 -0
  274. package/dist/esm/components/Separator/Separator.js +0 -1
  275. package/dist/esm/components/Separator/index.js +5 -0
  276. package/dist/esm/components/Sheet/Sheet.js +0 -1
  277. package/dist/esm/components/Sheet/index.js +5 -0
  278. package/dist/esm/components/Sidebar/Sidebar.js +0 -1
  279. package/dist/esm/components/Sidebar/index.js +29 -0
  280. package/dist/esm/components/Skeleton/Skeleton.js +0 -1
  281. package/dist/esm/components/Skeleton/index.js +5 -0
  282. package/dist/esm/components/Slider/Slider.js +0 -1
  283. package/dist/esm/components/Slider/index.js +5 -0
  284. package/dist/esm/components/Stepper/Stepper.js +72 -102
  285. package/dist/esm/components/Stepper/StepperWrapper.js +42 -74
  286. package/dist/esm/components/Stepper/index.js +0 -1
  287. package/dist/esm/components/Switch/Switch.js +0 -1
  288. package/dist/esm/components/Switch/index.js +5 -0
  289. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +2 -3
  290. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +12 -13
  291. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +66 -97
  292. package/dist/esm/components/Table/data-table-column-header.js +41 -73
  293. package/dist/esm/components/Table/data-table-pagination.js +30 -63
  294. package/dist/esm/components/Table/data-table-toolbar.js +43 -74
  295. package/dist/esm/components/Table/data-table-view-options.js +85 -116
  296. package/dist/esm/components/Table/data-table.js +52 -85
  297. package/dist/esm/components/Table/index.js +20 -0
  298. package/dist/esm/components/Table/select-column.js +0 -1
  299. package/dist/esm/components/Tabs/Tabs.js +0 -1
  300. package/dist/esm/components/Tabs/classes.js +23 -57
  301. package/dist/esm/components/Tabs/index.js +5 -0
  302. package/dist/esm/components/Textarea/Textarea.js +0 -1
  303. package/dist/esm/components/Textarea/index.js +5 -0
  304. package/dist/esm/components/TimeGridView.js +33 -65
  305. package/dist/esm/components/Toast/Toast.js +39 -71
  306. package/dist/esm/components/Toast/index.js +6 -0
  307. package/dist/esm/components/Toggle/Toggle.js +0 -1
  308. package/dist/esm/components/Toggle/index.js +5 -0
  309. package/dist/esm/components/Tooltip/Tooltip.js +34 -65
  310. package/dist/esm/components/Tooltip/index.js +4 -0
  311. package/dist/esm/components/Tour/Tour.js +331 -361
  312. package/dist/esm/components/Tour/TourWrapper.js +0 -1
  313. package/dist/esm/components/Tour/index.js +0 -1
  314. package/dist/esm/components/TreeSelect/TreeSelect.js +0 -1
  315. package/dist/esm/components/TreeSelect/index.js +5 -0
  316. package/dist/esm/components/Upload/Upload.js +0 -1
  317. package/dist/esm/components/Upload/index.js +4 -0
  318. package/dist/esm/components/WheelColumn.js +37 -69
  319. package/dist/esm/config/data-table.js +0 -1
  320. package/dist/esm/constants/common.js +0 -1
  321. package/dist/esm/hooks/index.js +26 -0
  322. package/dist/esm/hooks/use-callback-ref.js +0 -1
  323. package/dist/esm/hooks/use-data-table.js +45 -44
  324. package/dist/esm/hooks/use-debounced-callback.js +0 -1
  325. package/dist/esm/hooks/use-debounced-value.js +0 -1
  326. package/dist/esm/hooks/use-event-listener.js +0 -1
  327. package/dist/esm/hooks/use-intersection-observer.js +0 -1
  328. package/dist/esm/hooks/use-isomorphic-layout-effect.js +0 -1
  329. package/dist/esm/hooks/use-media-query.js +0 -1
  330. package/dist/esm/hooks/use-mouse-position.js +27 -0
  331. package/dist/esm/hooks/use-on-click-outside.js +0 -1
  332. package/dist/esm/hooks/use-script.js +0 -1
  333. package/dist/esm/hooks/use-scroll-lock.js +0 -1
  334. package/dist/esm/index.js +241 -268
  335. package/dist/esm/lib/TextAnimation/BlurText.js +0 -1
  336. package/dist/esm/lib/TextAnimation/CircularText.js +0 -1
  337. package/dist/esm/lib/TextAnimation/FlipWords.js +28 -60
  338. package/dist/esm/lib/TextAnimation/GradientText.js +26 -58
  339. package/dist/esm/lib/TextAnimation/RollingText.js +0 -1
  340. package/dist/esm/lib/TextAnimation/RotatingText.js +27 -59
  341. package/dist/esm/lib/TextAnimation/ShimmeringText.js +26 -58
  342. package/dist/esm/lib/TextAnimation/SplittingText.js +0 -1
  343. package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +29 -61
  344. package/dist/esm/lib/TextAnimation/TextHoverEffect.js +0 -1
  345. package/dist/esm/lib/TextAnimation/TextPressureEffect.js +0 -1
  346. package/dist/esm/lib/TextAnimation/TypingText.js +0 -1
  347. package/dist/esm/lib/TextAnimation/WritingText.js +0 -1
  348. package/dist/esm/lib/TextAnimation/index.js +28 -0
  349. package/dist/esm/lib/utils.js +12 -0
  350. package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +0 -1
  351. package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js +0 -1
  352. package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +0 -1
  353. package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +0 -1
  354. 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 +0 -1
  355. package/dist/esm/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.js +0 -1
  356. package/dist/esm/packages/ui/src/components/accordion.js +0 -1
  357. package/dist/esm/packages/ui/src/components/alert-dialog.js +0 -1
  358. package/dist/esm/packages/ui/src/components/avatar.js +0 -1
  359. package/dist/esm/packages/ui/src/components/badge.js +0 -1
  360. package/dist/esm/packages/ui/src/components/breadcrumb.js +0 -1
  361. package/dist/esm/packages/ui/src/components/button-group.js +0 -1
  362. package/dist/esm/packages/ui/src/components/button.js +0 -1
  363. package/dist/esm/packages/ui/src/components/calendar.js +0 -1
  364. package/dist/esm/packages/ui/src/components/checkbox.js +0 -1
  365. package/dist/esm/packages/ui/src/components/collapsible.js +0 -1
  366. package/dist/esm/packages/ui/src/components/combobox.js +96 -81
  367. package/dist/esm/packages/ui/src/components/command.js +0 -1
  368. package/dist/esm/packages/ui/src/components/context-menu.js +0 -1
  369. package/dist/esm/packages/ui/src/components/dialog.js +0 -1
  370. package/dist/esm/packages/ui/src/components/drawer.js +0 -1
  371. package/dist/esm/packages/ui/src/components/dropdown-menu.js +0 -1
  372. package/dist/esm/packages/ui/src/components/input-otp.js +0 -1
  373. package/dist/esm/packages/ui/src/components/input.js +0 -1
  374. package/dist/esm/packages/ui/src/components/label.js +0 -1
  375. package/dist/esm/packages/ui/src/components/pagination.js +0 -1
  376. package/dist/esm/packages/ui/src/components/popover.js +0 -1
  377. package/dist/esm/packages/ui/src/components/radio-group.js +0 -1
  378. package/dist/esm/packages/ui/src/components/resizable.js +0 -1
  379. package/dist/esm/packages/ui/src/components/scroll-area.js +0 -1
  380. package/dist/esm/packages/ui/src/components/select.js +89 -83
  381. package/dist/esm/packages/ui/src/components/separator.js +0 -1
  382. package/dist/esm/packages/ui/src/components/sheet.js +0 -1
  383. package/dist/esm/packages/ui/src/components/sidebar.js +0 -1
  384. package/dist/esm/packages/ui/src/components/skeleton.js +0 -1
  385. package/dist/esm/packages/ui/src/components/switch.js +0 -1
  386. package/dist/esm/packages/ui/src/components/table.js +0 -1
  387. package/dist/esm/packages/ui/src/components/tabs.js +0 -1
  388. package/dist/esm/packages/ui/src/components/textarea.js +0 -1
  389. package/dist/esm/packages/ui/src/components/toggle.js +0 -1
  390. package/dist/esm/packages/ui/src/components/tooltip.js +0 -1
  391. package/dist/esm/packages/ui/src/components/tree-view.js +1 -2
  392. package/dist/esm/packages/ui/src/hooks/use-mobile.js +0 -1
  393. package/dist/esm/packages/ui/src/lib/compose-refs.js +0 -1
  394. package/dist/esm/packages/ui/src/lib/utils.js +0 -1
  395. package/dist/esm/utils/animations.js +40 -73
  396. package/dist/esm/utils/css.js +0 -1
  397. package/dist/esm/utils/data-table.js +0 -1
  398. package/dist/esm/utils/datetime.js +0 -1
  399. package/dist/esm/utils/parsers.js +0 -1
  400. package/dist/types/components/Accordion/index.d.ts +1 -1
  401. package/dist/types/components/Accordion/index.d.ts.map +1 -1
  402. package/dist/types/components/Badge/index.d.ts +1 -1
  403. package/dist/types/components/Badge/index.d.ts.map +1 -1
  404. package/dist/types/components/Breadcrumb/index.d.ts +1 -1
  405. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  406. package/dist/types/components/Button/index.d.ts +1 -1
  407. package/dist/types/components/Button/index.d.ts.map +1 -1
  408. package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
  409. package/dist/types/components/Checkbox/index.d.ts +1 -1
  410. package/dist/types/components/Checkbox/index.d.ts.map +1 -1
  411. package/dist/types/components/Collapsible/index.d.ts +1 -1
  412. package/dist/types/components/Collapsible/index.d.ts.map +1 -1
  413. package/dist/types/components/Cropper/Cropper.d.ts.map +1 -1
  414. package/dist/types/components/Dialog/index.d.ts +1 -1
  415. package/dist/types/components/Dialog/index.d.ts.map +1 -1
  416. package/dist/types/components/Glass/index.d.ts +1 -1
  417. package/dist/types/components/Glass/index.d.ts.map +1 -1
  418. package/dist/types/components/Input/index.d.ts +1 -1
  419. package/dist/types/components/Input/index.d.ts.map +1 -1
  420. package/dist/types/components/InputOTP/index.d.ts +1 -1
  421. package/dist/types/components/InputOTP/index.d.ts.map +1 -1
  422. package/dist/types/components/Label/Label.d.ts +1 -1
  423. package/dist/types/components/Label/Label.d.ts.map +1 -1
  424. package/dist/types/components/Marquee/Marquee.d.ts +1 -1
  425. package/dist/types/components/Marquee/Marquee.d.ts.map +1 -1
  426. package/dist/types/components/Masonry/Masonry.d.ts.map +1 -1
  427. package/dist/types/components/Popover/index.d.ts +1 -0
  428. package/dist/types/components/Popover/index.d.ts.map +1 -1
  429. package/dist/types/components/QrCode/QrCode.d.ts.map +1 -1
  430. package/dist/types/components/Radio/index.d.ts +1 -1
  431. package/dist/types/components/Radio/index.d.ts.map +1 -1
  432. package/dist/types/components/ScrollArea/index.d.ts +1 -1
  433. package/dist/types/components/ScrollArea/index.d.ts.map +1 -1
  434. package/dist/types/components/Select/index.d.ts +1 -1
  435. package/dist/types/components/Select/index.d.ts.map +1 -1
  436. package/dist/types/components/Sheet/index.d.ts +1 -1
  437. package/dist/types/components/Sheet/index.d.ts.map +1 -1
  438. package/dist/types/components/Skeleton/index.d.ts +1 -1
  439. package/dist/types/components/Skeleton/index.d.ts.map +1 -1
  440. package/dist/types/components/Slider/Slider.d.ts +1 -1
  441. package/dist/types/components/Slider/index.d.ts +1 -1
  442. package/dist/types/components/Slider/index.d.ts.map +1 -1
  443. package/dist/types/components/Stepper/Stepper.d.ts.map +1 -1
  444. package/dist/types/components/Switch/Switch.d.ts +1 -1
  445. package/dist/types/components/Switch/index.d.ts +1 -1
  446. package/dist/types/components/Switch/index.d.ts.map +1 -1
  447. package/dist/types/components/Tabs/index.d.ts +1 -1
  448. package/dist/types/components/Tabs/index.d.ts.map +1 -1
  449. package/dist/types/components/Textarea/index.d.ts +1 -1
  450. package/dist/types/components/Textarea/index.d.ts.map +1 -1
  451. package/dist/types/components/Toggle/Toggle.d.ts +1 -1
  452. package/dist/types/components/Toggle/index.d.ts +1 -1
  453. package/dist/types/components/Toggle/index.d.ts.map +1 -1
  454. package/dist/types/components/Tour/Tour.d.ts.map +1 -1
  455. package/dist/types/hooks/index.d.ts +3 -0
  456. package/dist/types/hooks/index.d.ts.map +1 -1
  457. package/dist/types/hooks/use-data-table.d.ts.map +1 -1
  458. package/dist/types/index.d.ts +23 -6
  459. package/dist/types/index.d.ts.map +1 -1
  460. package/dist/types/lib/utils.d.ts +1 -1
  461. package/dist/types/lib/utils.d.ts.map +1 -1
  462. package/dist/types/packages/ui/src/components/badge.d.ts +3 -3
  463. package/dist/types/packages/ui/src/components/button.d.ts +2 -2
  464. package/dist/types/packages/ui/src/components/checkbox.d.ts +1 -1
  465. package/dist/types/packages/ui/src/components/combobox.d.ts +2 -2
  466. package/dist/types/packages/ui/src/components/combobox.d.ts.map +1 -1
  467. package/dist/types/packages/ui/src/components/input-otp.d.ts +1 -1
  468. package/dist/types/packages/ui/src/components/input.d.ts +1 -1
  469. package/dist/types/packages/ui/src/components/radio-group.d.ts +1 -1
  470. package/dist/types/packages/ui/src/components/select.d.ts +2 -2
  471. package/dist/types/packages/ui/src/components/select.d.ts.map +1 -1
  472. package/dist/types/packages/ui/src/components/switch.d.ts +1 -1
  473. package/dist/types/packages/ui/src/components/textarea.d.ts +1 -1
  474. package/dist/types/packages/ui/src/components/toggle.d.ts +1 -1
  475. package/dist/types/utils/parsers.d.ts +1 -1
  476. package/package.json +258 -258
  477. package/dist/cjs/_virtual/_commonjsHelpers.cjs.map +0 -1
  478. package/dist/cjs/_virtual/index.cjs.map +0 -1
  479. package/dist/cjs/_virtual/index2.cjs.map +0 -1
  480. package/dist/cjs/components/Accordion/Accordion.cjs.map +0 -1
  481. package/dist/cjs/components/Avatar/Avatar.cjs.map +0 -1
  482. package/dist/cjs/components/Badge/Badge.cjs.map +0 -1
  483. package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +0 -1
  484. package/dist/cjs/components/Button/Button.cjs.map +0 -1
  485. package/dist/cjs/components/Button/ButtonGroup.cjs.map +0 -1
  486. package/dist/cjs/components/Calendar/Calendar.cjs.map +0 -1
  487. package/dist/cjs/components/Carousel/Carousel.cjs.map +0 -1
  488. package/dist/cjs/components/Checkbox/Checkbox.cjs.map +0 -1
  489. package/dist/cjs/components/Collapsible/Collapsible.cjs.map +0 -1
  490. package/dist/cjs/components/Command/Command.cjs.map +0 -1
  491. package/dist/cjs/components/Command/index.cjs.map +0 -1
  492. package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +0 -1
  493. package/dist/cjs/components/ContextMenu/index.cjs.map +0 -1
  494. package/dist/cjs/components/Cropper/Cropper.cjs.map +0 -1
  495. package/dist/cjs/components/Cropper/CropperTool.cjs.map +0 -1
  496. package/dist/cjs/components/Cropper/utils.cjs.map +0 -1
  497. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +0 -1
  498. package/dist/cjs/components/DatePicker/RangePicker.cjs.map +0 -1
  499. package/dist/cjs/components/DatePicker/TimePicker.cjs.map +0 -1
  500. package/dist/cjs/components/Dialog/Dialog.cjs.map +0 -1
  501. package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +0 -1
  502. package/dist/cjs/components/DropdownMenu/index.cjs.map +0 -1
  503. package/dist/cjs/components/FloatLabel.cjs.map +0 -1
  504. package/dist/cjs/components/Glass/Glass.cjs.map +0 -1
  505. package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +0 -1
  506. package/dist/cjs/components/Input/Input.cjs.map +0 -1
  507. package/dist/cjs/components/InputOTP/InputOTP.cjs.map +0 -1
  508. package/dist/cjs/components/Interactive/CursorFollow.cjs.map +0 -1
  509. package/dist/cjs/components/Marquee/Marquee.cjs.map +0 -1
  510. package/dist/cjs/components/Marquee/MarqueeWrapper.cjs.map +0 -1
  511. package/dist/cjs/components/Marquee/index.cjs.map +0 -1
  512. package/dist/cjs/components/Masonry/Masonry.cjs.map +0 -1
  513. package/dist/cjs/components/Masonry/MasonryWrapper.cjs.map +0 -1
  514. package/dist/cjs/components/Pagination/Pagination.cjs.map +0 -1
  515. package/dist/cjs/components/Pagination/index.cjs.map +0 -1
  516. package/dist/cjs/components/Popover/Popover.cjs.map +0 -1
  517. package/dist/cjs/components/Popover/index.cjs.map +0 -1
  518. package/dist/cjs/components/QrCode/QrCode.cjs.map +0 -1
  519. package/dist/cjs/components/QrCode/index.cjs.map +0 -1
  520. package/dist/cjs/components/Radio/Radio.cjs.map +0 -1
  521. package/dist/cjs/components/Rate/Rate.cjs.map +0 -1
  522. package/dist/cjs/components/Resizable/Resizable.cjs.map +0 -1
  523. package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +0 -1
  524. package/dist/cjs/components/Select/Select.cjs.map +0 -1
  525. package/dist/cjs/components/Separator/Separator.cjs.map +0 -1
  526. package/dist/cjs/components/Sheet/Sheet.cjs.map +0 -1
  527. package/dist/cjs/components/Sidebar/Sidebar.cjs.map +0 -1
  528. package/dist/cjs/components/Skeleton/Skeleton.cjs.map +0 -1
  529. package/dist/cjs/components/Slider/Slider.cjs.map +0 -1
  530. package/dist/cjs/components/Stepper/Stepper.cjs.map +0 -1
  531. package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +0 -1
  532. package/dist/cjs/components/Stepper/index.cjs.map +0 -1
  533. package/dist/cjs/components/Switch/Switch.cjs.map +0 -1
  534. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +0 -1
  535. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +0 -1
  536. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +0 -1
  537. package/dist/cjs/components/Table/data-table-column-header.cjs.map +0 -1
  538. package/dist/cjs/components/Table/data-table-pagination.cjs.map +0 -1
  539. package/dist/cjs/components/Table/data-table-toolbar.cjs.map +0 -1
  540. package/dist/cjs/components/Table/data-table-view-options.cjs.map +0 -1
  541. package/dist/cjs/components/Table/data-table.cjs.map +0 -1
  542. package/dist/cjs/components/Table/select-column.cjs.map +0 -1
  543. package/dist/cjs/components/Tabs/Tabs.cjs.map +0 -1
  544. package/dist/cjs/components/Tabs/classes.cjs.map +0 -1
  545. package/dist/cjs/components/Textarea/Textarea.cjs.map +0 -1
  546. package/dist/cjs/components/TimeGridView.cjs.map +0 -1
  547. package/dist/cjs/components/Toast/Toast.cjs.map +0 -1
  548. package/dist/cjs/components/Toggle/Toggle.cjs.map +0 -1
  549. package/dist/cjs/components/Tooltip/Tooltip.cjs.map +0 -1
  550. package/dist/cjs/components/Tour/Tour.cjs.map +0 -1
  551. package/dist/cjs/components/Tour/TourWrapper.cjs.map +0 -1
  552. package/dist/cjs/components/Tour/index.cjs.map +0 -1
  553. package/dist/cjs/components/TreeSelect/TreeSelect.cjs.map +0 -1
  554. package/dist/cjs/components/Upload/Upload.cjs.map +0 -1
  555. package/dist/cjs/components/WheelColumn.cjs.map +0 -1
  556. package/dist/cjs/config/data-table.cjs.map +0 -1
  557. package/dist/cjs/constants/common.cjs.map +0 -1
  558. package/dist/cjs/hooks/use-callback-ref.cjs.map +0 -1
  559. package/dist/cjs/hooks/use-data-table.cjs.map +0 -1
  560. package/dist/cjs/hooks/use-debounced-callback.cjs.map +0 -1
  561. package/dist/cjs/hooks/use-debounced-value.cjs.map +0 -1
  562. package/dist/cjs/hooks/use-event-listener.cjs.map +0 -1
  563. package/dist/cjs/hooks/use-intersection-observer.cjs.map +0 -1
  564. package/dist/cjs/hooks/use-isomorphic-layout-effect.cjs.map +0 -1
  565. package/dist/cjs/hooks/use-media-query.cjs.map +0 -1
  566. package/dist/cjs/hooks/use-on-click-outside.cjs.map +0 -1
  567. package/dist/cjs/hooks/use-script.cjs.map +0 -1
  568. package/dist/cjs/hooks/use-scroll-lock.cjs.map +0 -1
  569. package/dist/cjs/index.cjs.map +0 -1
  570. package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +0 -1
  571. package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +0 -1
  572. package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +0 -1
  573. package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +0 -1
  574. package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +0 -1
  575. package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +0 -1
  576. package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +0 -1
  577. package/dist/cjs/lib/TextAnimation/SplittingText.cjs.map +0 -1
  578. package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +0 -1
  579. package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +0 -1
  580. package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +0 -1
  581. package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +0 -1
  582. package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +0 -1
  583. package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs.map +0 -1
  584. package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs.map +0 -1
  585. package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs.map +0 -1
  586. package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.map +0 -1
  587. 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
  588. package/dist/cjs/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.cjs.map +0 -1
  589. package/dist/cjs/packages/ui/src/components/accordion.cjs.map +0 -1
  590. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +0 -1
  591. package/dist/cjs/packages/ui/src/components/avatar.cjs.map +0 -1
  592. package/dist/cjs/packages/ui/src/components/badge.cjs.map +0 -1
  593. package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +0 -1
  594. package/dist/cjs/packages/ui/src/components/button-group.cjs.map +0 -1
  595. package/dist/cjs/packages/ui/src/components/button.cjs.map +0 -1
  596. package/dist/cjs/packages/ui/src/components/calendar.cjs.map +0 -1
  597. package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +0 -1
  598. package/dist/cjs/packages/ui/src/components/collapsible.cjs.map +0 -1
  599. package/dist/cjs/packages/ui/src/components/combobox.cjs.map +0 -1
  600. package/dist/cjs/packages/ui/src/components/command.cjs.map +0 -1
  601. package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +0 -1
  602. package/dist/cjs/packages/ui/src/components/dialog.cjs.map +0 -1
  603. package/dist/cjs/packages/ui/src/components/drawer.cjs.map +0 -1
  604. package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +0 -1
  605. package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +0 -1
  606. package/dist/cjs/packages/ui/src/components/input.cjs.map +0 -1
  607. package/dist/cjs/packages/ui/src/components/label.cjs.map +0 -1
  608. package/dist/cjs/packages/ui/src/components/pagination.cjs.map +0 -1
  609. package/dist/cjs/packages/ui/src/components/popover.cjs.map +0 -1
  610. package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +0 -1
  611. package/dist/cjs/packages/ui/src/components/resizable.cjs.map +0 -1
  612. package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +0 -1
  613. package/dist/cjs/packages/ui/src/components/select.cjs.map +0 -1
  614. package/dist/cjs/packages/ui/src/components/separator.cjs.map +0 -1
  615. package/dist/cjs/packages/ui/src/components/sheet.cjs.map +0 -1
  616. package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +0 -1
  617. package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +0 -1
  618. package/dist/cjs/packages/ui/src/components/switch.cjs.map +0 -1
  619. package/dist/cjs/packages/ui/src/components/table.cjs.map +0 -1
  620. package/dist/cjs/packages/ui/src/components/tabs.cjs.map +0 -1
  621. package/dist/cjs/packages/ui/src/components/textarea.cjs.map +0 -1
  622. package/dist/cjs/packages/ui/src/components/toggle.cjs.map +0 -1
  623. package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +0 -1
  624. package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +0 -1
  625. package/dist/cjs/packages/ui/src/hooks/use-mobile.cjs.map +0 -1
  626. package/dist/cjs/packages/ui/src/lib/compose-refs.cjs.map +0 -1
  627. package/dist/cjs/packages/ui/src/lib/utils.cjs.map +0 -1
  628. package/dist/cjs/utils/animations.cjs.map +0 -1
  629. package/dist/cjs/utils/css.cjs.map +0 -1
  630. package/dist/cjs/utils/data-table.cjs.map +0 -1
  631. package/dist/cjs/utils/datetime.cjs.map +0 -1
  632. package/dist/cjs/utils/parsers.cjs.map +0 -1
  633. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  634. package/dist/esm/_virtual/index.js.map +0 -1
  635. package/dist/esm/_virtual/index2.js.map +0 -1
  636. package/dist/esm/components/Accordion/Accordion.js.map +0 -1
  637. package/dist/esm/components/Avatar/Avatar.js.map +0 -1
  638. package/dist/esm/components/Badge/Badge.js.map +0 -1
  639. package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +0 -1
  640. package/dist/esm/components/Button/Button.js.map +0 -1
  641. package/dist/esm/components/Button/ButtonGroup.js.map +0 -1
  642. package/dist/esm/components/Calendar/Calendar.js.map +0 -1
  643. package/dist/esm/components/Carousel/Carousel.js.map +0 -1
  644. package/dist/esm/components/Checkbox/Checkbox.js.map +0 -1
  645. package/dist/esm/components/Collapsible/Collapsible.js.map +0 -1
  646. package/dist/esm/components/Command/Command.js.map +0 -1
  647. package/dist/esm/components/Command/index.js.map +0 -1
  648. package/dist/esm/components/ContextMenu/ContextMenu.js.map +0 -1
  649. package/dist/esm/components/ContextMenu/index.js.map +0 -1
  650. package/dist/esm/components/Cropper/Cropper.js.map +0 -1
  651. package/dist/esm/components/Cropper/CropperTool.js.map +0 -1
  652. package/dist/esm/components/Cropper/utils.js.map +0 -1
  653. package/dist/esm/components/DatePicker/DatePicker.js.map +0 -1
  654. package/dist/esm/components/DatePicker/RangePicker.js.map +0 -1
  655. package/dist/esm/components/DatePicker/TimePicker.js.map +0 -1
  656. package/dist/esm/components/Dialog/Dialog.js.map +0 -1
  657. package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +0 -1
  658. package/dist/esm/components/DropdownMenu/index.js.map +0 -1
  659. package/dist/esm/components/FloatLabel.js.map +0 -1
  660. package/dist/esm/components/Glass/Glass.js.map +0 -1
  661. package/dist/esm/components/ImageViewer/ImageViewer.js.map +0 -1
  662. package/dist/esm/components/Input/Input.js.map +0 -1
  663. package/dist/esm/components/InputOTP/InputOTP.js.map +0 -1
  664. package/dist/esm/components/Interactive/CursorFollow.js.map +0 -1
  665. package/dist/esm/components/Marquee/Marquee.js.map +0 -1
  666. package/dist/esm/components/Marquee/MarqueeWrapper.js.map +0 -1
  667. package/dist/esm/components/Marquee/index.js.map +0 -1
  668. package/dist/esm/components/Masonry/Masonry.js.map +0 -1
  669. package/dist/esm/components/Masonry/MasonryWrapper.js.map +0 -1
  670. package/dist/esm/components/Pagination/Pagination.js.map +0 -1
  671. package/dist/esm/components/Pagination/index.js.map +0 -1
  672. package/dist/esm/components/Popover/Popover.js.map +0 -1
  673. package/dist/esm/components/Popover/index.js.map +0 -1
  674. package/dist/esm/components/QrCode/QrCode.js.map +0 -1
  675. package/dist/esm/components/QrCode/index.js.map +0 -1
  676. package/dist/esm/components/Radio/Radio.js.map +0 -1
  677. package/dist/esm/components/Rate/Rate.js.map +0 -1
  678. package/dist/esm/components/Resizable/Resizable.js.map +0 -1
  679. package/dist/esm/components/ScrollArea/ScrollArea.js.map +0 -1
  680. package/dist/esm/components/Select/Select.js.map +0 -1
  681. package/dist/esm/components/Separator/Separator.js.map +0 -1
  682. package/dist/esm/components/Sheet/Sheet.js.map +0 -1
  683. package/dist/esm/components/Sidebar/Sidebar.js.map +0 -1
  684. package/dist/esm/components/Skeleton/Skeleton.js.map +0 -1
  685. package/dist/esm/components/Slider/Slider.js.map +0 -1
  686. package/dist/esm/components/Stepper/Stepper.js.map +0 -1
  687. package/dist/esm/components/Stepper/StepperWrapper.js.map +0 -1
  688. package/dist/esm/components/Stepper/index.js.map +0 -1
  689. package/dist/esm/components/Switch/Switch.js.map +0 -1
  690. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +0 -1
  691. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +0 -1
  692. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +0 -1
  693. package/dist/esm/components/Table/data-table-column-header.js.map +0 -1
  694. package/dist/esm/components/Table/data-table-pagination.js.map +0 -1
  695. package/dist/esm/components/Table/data-table-toolbar.js.map +0 -1
  696. package/dist/esm/components/Table/data-table-view-options.js.map +0 -1
  697. package/dist/esm/components/Table/data-table.js.map +0 -1
  698. package/dist/esm/components/Table/select-column.js.map +0 -1
  699. package/dist/esm/components/Tabs/Tabs.js.map +0 -1
  700. package/dist/esm/components/Tabs/classes.js.map +0 -1
  701. package/dist/esm/components/Textarea/Textarea.js.map +0 -1
  702. package/dist/esm/components/TimeGridView.js.map +0 -1
  703. package/dist/esm/components/Toast/Toast.js.map +0 -1
  704. package/dist/esm/components/Toggle/Toggle.js.map +0 -1
  705. package/dist/esm/components/Tooltip/Tooltip.js.map +0 -1
  706. package/dist/esm/components/Tour/Tour.js.map +0 -1
  707. package/dist/esm/components/Tour/TourWrapper.js.map +0 -1
  708. package/dist/esm/components/Tour/index.js.map +0 -1
  709. package/dist/esm/components/TreeSelect/TreeSelect.js.map +0 -1
  710. package/dist/esm/components/Upload/Upload.js.map +0 -1
  711. package/dist/esm/components/WheelColumn.js.map +0 -1
  712. package/dist/esm/config/data-table.js.map +0 -1
  713. package/dist/esm/constants/common.js.map +0 -1
  714. package/dist/esm/hooks/use-callback-ref.js.map +0 -1
  715. package/dist/esm/hooks/use-data-table.js.map +0 -1
  716. package/dist/esm/hooks/use-debounced-callback.js.map +0 -1
  717. package/dist/esm/hooks/use-debounced-value.js.map +0 -1
  718. package/dist/esm/hooks/use-event-listener.js.map +0 -1
  719. package/dist/esm/hooks/use-intersection-observer.js.map +0 -1
  720. package/dist/esm/hooks/use-isomorphic-layout-effect.js.map +0 -1
  721. package/dist/esm/hooks/use-media-query.js.map +0 -1
  722. package/dist/esm/hooks/use-on-click-outside.js.map +0 -1
  723. package/dist/esm/hooks/use-script.js.map +0 -1
  724. package/dist/esm/hooks/use-scroll-lock.js.map +0 -1
  725. package/dist/esm/index.js.map +0 -1
  726. package/dist/esm/lib/TextAnimation/BlurText.js.map +0 -1
  727. package/dist/esm/lib/TextAnimation/CircularText.js.map +0 -1
  728. package/dist/esm/lib/TextAnimation/FlipWords.js.map +0 -1
  729. package/dist/esm/lib/TextAnimation/GradientText.js.map +0 -1
  730. package/dist/esm/lib/TextAnimation/RollingText.js.map +0 -1
  731. package/dist/esm/lib/TextAnimation/RotatingText.js.map +0 -1
  732. package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +0 -1
  733. package/dist/esm/lib/TextAnimation/SplittingText.js.map +0 -1
  734. package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +0 -1
  735. package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +0 -1
  736. package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +0 -1
  737. package/dist/esm/lib/TextAnimation/TypingText.js.map +0 -1
  738. package/dist/esm/lib/TextAnimation/WritingText.js.map +0 -1
  739. package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +0 -1
  740. package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js.map +0 -1
  741. package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +0 -1
  742. package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +0 -1
  743. 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
  744. package/dist/esm/node_modules/.pnpm/react-viewer@3.2.2/node_modules/react-viewer/dist/index.js.map +0 -1
  745. package/dist/esm/packages/ui/src/components/accordion.js.map +0 -1
  746. package/dist/esm/packages/ui/src/components/alert-dialog.js.map +0 -1
  747. package/dist/esm/packages/ui/src/components/avatar.js.map +0 -1
  748. package/dist/esm/packages/ui/src/components/badge.js.map +0 -1
  749. package/dist/esm/packages/ui/src/components/breadcrumb.js.map +0 -1
  750. package/dist/esm/packages/ui/src/components/button-group.js.map +0 -1
  751. package/dist/esm/packages/ui/src/components/button.js.map +0 -1
  752. package/dist/esm/packages/ui/src/components/calendar.js.map +0 -1
  753. package/dist/esm/packages/ui/src/components/checkbox.js.map +0 -1
  754. package/dist/esm/packages/ui/src/components/collapsible.js.map +0 -1
  755. package/dist/esm/packages/ui/src/components/combobox.js.map +0 -1
  756. package/dist/esm/packages/ui/src/components/command.js.map +0 -1
  757. package/dist/esm/packages/ui/src/components/context-menu.js.map +0 -1
  758. package/dist/esm/packages/ui/src/components/dialog.js.map +0 -1
  759. package/dist/esm/packages/ui/src/components/drawer.js.map +0 -1
  760. package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +0 -1
  761. package/dist/esm/packages/ui/src/components/input-otp.js.map +0 -1
  762. package/dist/esm/packages/ui/src/components/input.js.map +0 -1
  763. package/dist/esm/packages/ui/src/components/label.js.map +0 -1
  764. package/dist/esm/packages/ui/src/components/pagination.js.map +0 -1
  765. package/dist/esm/packages/ui/src/components/popover.js.map +0 -1
  766. package/dist/esm/packages/ui/src/components/radio-group.js.map +0 -1
  767. package/dist/esm/packages/ui/src/components/resizable.js.map +0 -1
  768. package/dist/esm/packages/ui/src/components/scroll-area.js.map +0 -1
  769. package/dist/esm/packages/ui/src/components/select.js.map +0 -1
  770. package/dist/esm/packages/ui/src/components/separator.js.map +0 -1
  771. package/dist/esm/packages/ui/src/components/sheet.js.map +0 -1
  772. package/dist/esm/packages/ui/src/components/sidebar.js.map +0 -1
  773. package/dist/esm/packages/ui/src/components/skeleton.js.map +0 -1
  774. package/dist/esm/packages/ui/src/components/switch.js.map +0 -1
  775. package/dist/esm/packages/ui/src/components/table.js.map +0 -1
  776. package/dist/esm/packages/ui/src/components/tabs.js.map +0 -1
  777. package/dist/esm/packages/ui/src/components/textarea.js.map +0 -1
  778. package/dist/esm/packages/ui/src/components/toggle.js.map +0 -1
  779. package/dist/esm/packages/ui/src/components/tooltip.js.map +0 -1
  780. package/dist/esm/packages/ui/src/components/tree-view.js.map +0 -1
  781. package/dist/esm/packages/ui/src/hooks/use-mobile.js.map +0 -1
  782. package/dist/esm/packages/ui/src/lib/compose-refs.js.map +0 -1
  783. package/dist/esm/packages/ui/src/lib/utils.js.map +0 -1
  784. package/dist/esm/utils/animations.js.map +0 -1
  785. package/dist/esm/utils/css.js.map +0 -1
  786. package/dist/esm/utils/data-table.js.map +0 -1
  787. package/dist/esm/utils/datetime.js.map +0 -1
  788. package/dist/esm/utils/parsers.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Dialog as SDialog,\n DialogContent as SDialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@dsui/ui/components/dialog\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@dsui/ui/components/alert-dialog\";\nimport { ScrollArea } from \"@dsui/ui/components/scroll-area\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { BasicAnimation } from \"@/types/variables\";\nimport { animationClass } from \"@/utils/animations\";\nimport { AlertTriangle, Info, CheckCircle2, AlertCircle } from \"lucide-react\";\nimport Button, { type ButtonProps } from \"../Button/Button\";\n\nexport type DialogVariant = \"dialog\" | \"confirm\" | \"alert\" | \"info\" | \"warning\";\nexport type DialogSize =\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"full\";\nexport type DialogPosition =\n | \"center\"\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface DialogButtonConfig extends Omit<ButtonProps, \"children\"> {\n text?: React.ReactNode;\n onClick?: () => void;\n}\n\nexport interface DialogProps {\n // Core props\n variant?: DialogVariant;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n // Content\n title?: React.ReactNode;\n description?: React.ReactNode;\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Behavior\n closeOnEsc?: boolean;\n closeOnOutside?: boolean;\n showCloseButton?: boolean;\n\n // Layout\n position?: DialogPosition;\n size?: DialogSize;\n fullscreen?: boolean;\n scrollable?: boolean;\n stickyHeader?: boolean;\n stickyFooter?: boolean;\n\n // Animation\n animation?: BasicAnimation;\n\n // Styling\n className?: string;\n contentClassName?: string;\n headerClassName?: string;\n titleClassName?: string;\n descriptionClassName?: string;\n footerClassName?: string;\n overlayClassName?: string;\n\n // Overlay\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n\n // Alert/Confirm buttons\n confirmButton?: DialogButtonConfig;\n cancelButton?: DialogButtonConfig;\n\n // Alert/Confirm specific\n showIcon?: boolean;\n}\n\nconst variantIcons = {\n dialog: null,\n confirm: (\n <div className=\"ds:size-12 ds:flex ds:items-center ds:justify-center ds:rounded-full ds:bg-success/10 ds:mx-auto ds:mb-4\">\n <CheckCircle2 className=\"ds:size-6 ds:text-success\" />\n </div>\n ),\n alert: (\n <div className=\"ds:size-12 ds:flex ds:items-center ds:justify-center ds:rounded-full ds:bg-error/10 ds:mx-auto ds:mb-4\">\n <AlertCircle className=\"ds:size-5 ds:text-error\" />\n </div>\n ),\n info: (\n <div className=\"ds:size-12 ds:flex ds:items-center ds:justify-center ds:rounded-full ds:bg-blue-500/10 ds:mx-auto ds:mb-4\">\n <Info className=\"ds:size-5 ds:text-blue-500\" />\n </div>\n ),\n warning: (\n <div className=\"ds:size-12 ds:flex ds:items-center ds:justify-center ds:rounded-full ds:bg-warning/10 ds:mx-auto ds:mb-4\">\n <AlertTriangle className=\"ds:size-5 ds:text-warning\" />\n </div>\n ),\n};\n\nconst variantColors = {\n dialog: \"\",\n confirm: \"border-blue-500/20\",\n alert: \"border-red-500/20\",\n info: \"border-blue-500/20\",\n warning: \"border-yellow-500/20\",\n};\n\nconst sizeClasses: Record<DialogSize, string> = {\n sm: \"ds:sm:max-w-sm\",\n md: \"ds:sm:max-w-md\",\n lg: \"ds:sm:max-w-lg\",\n xl: \"ds:sm:max-w-xl\",\n \"2xl\": \"ds:sm:max-w-2xl ds:max-h-[90vh]\",\n \"3xl\": \"ds:sm:max-w-3xl ds:max-h-[90vh]\",\n \"4xl\": \"ds:sm:max-w-4xl ds:max-h-[90vh]\",\n full: \"ds:sm:max-w-[95vw] ds:h-[98vh]\",\n};\n\nconst positionClasses: Record<DialogPosition, string> = {\n center: \"ds:!top-[50%] ds:!left-[50%] ds:!translate-x-[-50%] ds:!translate-y-[-50%]\",\n top: \"ds:!top-4 ds:!left-[50%] ds:!translate-x-[-50%] ds:!translate-y-0\",\n bottom: \"ds:!top-auto ds:!bottom-4 ds:!left-[50%] ds:!translate-x-[-50%] ds:!translate-y-0\",\n left: \"ds:!left-4 ds:!top-[50%] ds:!translate-x-0 ds:!translate-y-[-50%]\",\n right: \"ds:!left-auto ds:!right-4 ds:!top-[50%] ds:!translate-x-0 ds:!translate-y-[-50%]\",\n \"top-left\": \"ds:!top-4 ds:!left-4 ds:!translate-x-0 ds:!translate-y-0\",\n \"top-right\": \"ds:!top-4 ds:!left-auto ds:!right-4 ds:!translate-x-0 ds:!translate-y-0\",\n \"bottom-left\": \"ds:!top-auto ds:!bottom-4 ds:!left-4 ds:!translate-x-0 ds:!translate-y-0\",\n \"bottom-right\":\n \"ds:!top-auto ds:!bottom-4 ds:!left-auto ds:!right-4 ds:!translate-x-0 ds:!translate-y-0\",\n};\n\nconst Dialog = React.forwardRef<HTMLDivElement, DialogProps>((props, ref) => {\n const {\n variant = \"dialog\",\n open,\n onOpenChange,\n title,\n description,\n children,\n trigger,\n footer,\n closeOnEsc = true,\n closeOnOutside = true,\n showCloseButton = true,\n position = \"center\",\n size = \"md\",\n fullscreen = false,\n scrollable = true,\n stickyHeader = false,\n stickyFooter = false,\n animation,\n className,\n contentClassName,\n headerClassName,\n titleClassName,\n descriptionClassName,\n footerClassName,\n // overlayClassName, // Not used in current implementation\n confirmButton,\n cancelButton,\n showIcon = true,\n backdropFilter = 2,\n overlay = \"dark\",\n } = props;\n\n const animationResult = useMemo(() => {\n return animation ? animationClass(animation) : { className: \"\" };\n }, [animation]);\n\n const contentClasses = cn(\n // Remove default padding and gap to allow custom header/footer\n \"ds:!p-0 ds:!gap-0 ds:flex ds:flex-col\",\n sizeClasses[fullscreen ? \"full\" : size],\n positionClasses[position],\n variantColors[variant],\n animationResult.className,\n fullscreen ? \"ds:h-[98vh]\" : \"ds:max-h-[90vh]\"\n );\n\n const headerClasses = cn(\n \"ds:px-6 ds:pt-6 ds:text-left\",\n !scrollable && \"ds:contents ds:space-y-0\",\n headerClassName\n );\n\n const footerClasses = cn(\n \"ds:px-6 ds:pb-6 ds:sm:justify-end\",\n !scrollable && \"ds:border-t ds:py-4\",\n footerClassName\n );\n\n const icon = showIcon ? variantIcons[variant] : null;\n\n const headerComponents = useMemo(() => {\n return title || icon || description ? (\n <AlertDialogHeader\n className={cn(\n \"ds:flex ds:items-center ds:gap-2 ds:py-4\",\n { \"ds:border-b\": stickyHeader },\n headerClasses\n )}\n >\n {(title || icon) && (\n <AlertDialogTitle className={cn(titleClassName)}>\n {icon}\n {title}\n </AlertDialogTitle>\n )}\n {description && (\n <AlertDialogDescription className={descriptionClassName}>\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n ) : null;\n }, [\n title,\n icon,\n description,\n headerClasses,\n titleClassName,\n descriptionClassName,\n stickyHeader,\n ]);\n\n const footerComponents = useMemo(() => {\n // Merge configs with defaults\n const mergedConfirmButton: DialogButtonConfig = {\n variant: \"solid\",\n color: \"primary\",\n ...confirmButton,\n text: confirmButton?.text ?? \"Confirm\",\n };\n\n const mergedCancelButton: DialogButtonConfig = {\n variant: \"outline\",\n ...cancelButton,\n text: cancelButton?.text ?? \"Cancel\",\n };\n\n return footer || confirmButton || cancelButton ? (\n <AlertDialogFooter\n className={cn(\"ds:py-4\", { \"ds:border-t\": stickyFooter }, footerClasses)}\n >\n {footer || (\n <>\n {cancelButton && (\n <Button\n {...mergedCancelButton}\n onClick={() => {\n mergedCancelButton.onClick?.();\n }}\n >\n {mergedCancelButton.text}\n </Button>\n )}\n {confirmButton && (\n <Button\n {...mergedConfirmButton}\n onClick={() => {\n mergedConfirmButton.onClick?.();\n }}\n >\n {mergedConfirmButton.text}\n </Button>\n )}\n </>\n )}\n </AlertDialogFooter>\n ) : null;\n }, [footer, footerClasses, confirmButton, cancelButton, stickyFooter]);\n\n // For alert-style dialogs (confirm, alert, info, warning)\n if (variant !== \"dialog\") {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n ref={ref}\n className={cn(className, contentClasses)}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n noDefaultAnimation={!!animation}\n backdropFilter={backdropFilter}\n overlay={overlay}\n >\n {stickyHeader && headerComponents}\n\n <ScrollArea className=\"ds:flex ds:max-h-full ds:flex-col ds:overflow-hidden\">\n {!stickyHeader && headerComponents}\n {children && (\n <div className={cn(\"ds:px-6 ds:py-4\", contentClassName)}>\n {children}\n </div>\n )}\n {!stickyFooter && footerComponents}\n </ScrollArea>\n\n {stickyFooter && footerComponents}\n </AlertDialogContent>\n </AlertDialog>\n );\n }\n\n // Regular dialog\n return (\n <SDialog open={open} onOpenChange={onOpenChange}>\n {trigger && <DialogTrigger asChild>{trigger}</DialogTrigger>}\n <SDialogContent\n ref={ref}\n className={cn(className, contentClasses)}\n showCloseButton={showCloseButton}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n onInteractOutside={(e) => !closeOnOutside && e.preventDefault()}\n noDefaultAnimation={!!animation}\n backdropFilter={backdropFilter}\n overlay={overlay}\n >\n {stickyHeader && (title || description) && (\n <DialogHeader\n className={cn({ \"ds:py-4 ds:border-b\": stickyHeader }, headerClasses)}\n >\n {title && (\n <DialogTitle className={titleClassName}>{title}</DialogTitle>\n )}\n {description && (\n <DialogDescription className={descriptionClassName}>\n {description}\n </DialogDescription>\n )}\n </DialogHeader>\n )}\n <ScrollArea className=\"ds:flex ds:max-h-full ds:flex-col ds:overflow-hidden\">\n {!stickyHeader && (title || description) && (\n <DialogHeader className={cn(\"ds:py-4\", headerClasses)}>\n {title && (\n <DialogTitle className={titleClassName}>{title}</DialogTitle>\n )}\n {description && (\n <DialogDescription className={descriptionClassName}>\n {description}\n </DialogDescription>\n )}\n </DialogHeader>\n )}\n {children && (\n <div className={cn(\"ds:px-6 ds:py-4\", contentClassName)}>{children}</div>\n )}\n {!stickyFooter && footer && (\n <DialogFooter className={cn(\"ds:py-4\", footerClasses)}>\n {footer}\n </DialogFooter>\n )}\n </ScrollArea>\n {stickyFooter && footer && (\n <DialogFooter\n className={cn({ \"ds:py-4 ds:border-t\": stickyFooter }, footerClasses)}\n >\n {footer}\n </DialogFooter>\n )}\n </SDialogContent>\n </SDialog>\n );\n});\n\nDialog.displayName = \"Dialog\";\n\nexport default Dialog;\n"],"names":["variantIcons","jsx","CheckCircle2","AlertCircle","Info","AlertTriangle","variantColors","sizeClasses","positionClasses","Dialog","React","props","ref","variant","open","onOpenChange","title","description","children","trigger","footer","closeOnEsc","closeOnOutside","showCloseButton","position","size","fullscreen","scrollable","stickyHeader","stickyFooter","animation","className","contentClassName","headerClassName","titleClassName","descriptionClassName","footerClassName","confirmButton","cancelButton","showIcon","backdropFilter","overlay","animationResult","useMemo","animationClass","contentClasses","cn","headerClasses","footerClasses","icon","headerComponents","jsxs","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","footerComponents","mergedConfirmButton","mergedCancelButton","AlertDialogFooter","Fragment","Button","AlertDialog","AlertDialogTrigger","AlertDialogContent","e","ScrollArea","SDialog","DialogTrigger","SDialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropdownMenu.js","sources":["../../../../src/components/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport {\n DropdownMenu as SDropdownMenu,\n DropdownMenuTrigger as SDropdownMenuTrigger,\n DropdownMenuContent as SDropdownMenuContent,\n DropdownMenuPortal as SDropdownMenuPortal,\n DropdownMenuItem as SDropdownMenuItem,\n DropdownMenuCheckboxItem as SDropdownMenuCheckboxItem,\n DropdownMenuRadioItem as SDropdownMenuRadioItem,\n DropdownMenuRadioGroup as SDropdownMenuRadioGroup,\n DropdownMenuLabel as SDropdownMenuLabel,\n DropdownMenuSeparator as SDropdownMenuSeparator,\n DropdownMenuGroup as SDropdownMenuGroup,\n DropdownMenuSub as SDropdownMenuSub,\n DropdownMenuSubTrigger as SDropdownMenuSubTrigger,\n DropdownMenuSubContent as SDropdownMenuSubContent,\n} from \"@dsui/ui/components/dropdown-menu\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport type DropdownMenuSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type DropdownMenuAlign = \"start\" | \"center\" | \"end\";\n\nexport type DropdownMenuItem =\n | {\n key: string;\n label?: string;\n icon?: React.ReactNode;\n children?: DropdownMenuItem[];\n type?: \"item\";\n checked?: boolean;\n disabled?: boolean;\n variant?: \"default\" | \"destructive\";\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"checkbox\";\n label?: string;\n icon?: React.ReactNode;\n checked?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"radio\";\n label?: string;\n icon?: React.ReactNode;\n group: string;\n checked?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"separator\";\n }\n | {\n key: string;\n type: \"group\";\n label?: string;\n children: DropdownMenuItem[];\n disabled?: boolean;\n };\n\nexport interface DropdownMenuProps {\n // Core props\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n\n // Content\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n content?: React.ReactNode;\n items?: DropdownMenuItem[];\n\n // Layout\n side?: DropdownMenuSide;\n align?: DropdownMenuAlign;\n sideOffset?: number;\n alignOffset?: number;\n\n // Portal\n portal?: boolean;\n\n // Context menu\n contextMenu?: boolean;\n\n // Styling\n className?: string;\n contentClassName?: string;\n triggerClassName?: string;\n}\n\nconst DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (props, ref) => {\n const {\n open,\n defaultOpen,\n onOpenChange,\n modal = false,\n children,\n trigger,\n content,\n items,\n side = \"bottom\",\n align = \"start\",\n sideOffset,\n alignOffset,\n portal = true,\n contextMenu = false,\n className,\n contentClassName,\n triggerClassName,\n } = props;\n\n // Context menu state\n const [contextMenuOpen, setContextMenuOpen] = useState(false);\n const [contextMenuPosition, setContextMenuPosition] = useState({\n x: 0,\n y: 0,\n });\n\n // Handle context menu trigger\n const handleContextMenu = (e: React.MouseEvent) => {\n if (contextMenu) {\n e.preventDefault();\n setContextMenuPosition({ x: e.clientX, y: e.clientY });\n setContextMenuOpen(true);\n }\n };\n\n // If children are provided (compound pattern), render them directly\n if (children) {\n return (\n <SDropdownMenu\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n modal={modal}\n >\n {children}\n </SDropdownMenu>\n );\n }\n\n // Render items if provided\n const renderItems = (menuItems: DropdownMenuItem[]): React.ReactNode => {\n return menuItems.map((item) => {\n switch (item.type) {\n case \"separator\":\n return <SDropdownMenuSeparator key={item.key} />;\n case \"group\":\n return (\n <SDropdownMenuGroup key={item.key}>\n {item.label && (\n <SDropdownMenuLabel>{item.label}</SDropdownMenuLabel>\n )}\n {renderItems(item.children)}\n </SDropdownMenuGroup>\n );\n case \"checkbox\":\n return (\n <SDropdownMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={item.className}\n onCheckedChange={(checked: boolean) => {\n if (checked && item.onClick) {\n item.onClick();\n }\n }}\n >\n {item.icon && <span className=\"ds:mr-2\">{item.icon}</span>}\n {item.label}\n </SDropdownMenuCheckboxItem>\n );\n case \"radio\":\n return (\n <SDropdownMenuRadioGroup key={item.key} value={item.group}>\n <SDropdownMenuRadioItem\n value={item.key}\n disabled={item.disabled}\n onClick={item.onClick}\n className={item.className}\n >\n {item.icon && <span className=\"ds:mr-2\">{item.icon}</span>}\n {item.label}\n </SDropdownMenuRadioItem>\n </SDropdownMenuRadioGroup>\n );\n default: {\n // item or undefined type\n if (item.children && item.children.length > 0) {\n // Submenu\n return (\n <SDropdownMenuSub key={item.key}>\n <SDropdownMenuSubTrigger\n disabled={item.disabled}\n className={cn(\n item.disabled ? \"ds:opacity-50 ds:cursor-not-allowed\" : \"\",\n item.className\n )}\n >\n {item.icon && <span className=\"ds:mr-2\">{item.icon}</span>}\n {item.label}\n </SDropdownMenuSubTrigger>\n <SDropdownMenuSubContent>\n {renderItems(item.children)}\n </SDropdownMenuSubContent>\n </SDropdownMenuSub>\n );\n } else {\n // Regular item\n return (\n <SDropdownMenuItem\n key={item.key}\n disabled={item.disabled}\n variant={item.variant}\n onClick={item.onClick}\n className={item.className}\n >\n {item.icon && <span className=\"ds:mr-2\">{item.icon}</span>}\n {item.label}\n </SDropdownMenuItem>\n );\n }\n }\n }\n });\n };\n\n // If context menu is enabled, render differently\n if (contextMenu) {\n return (\n <>\n {/* Trigger area for context menu */}\n <div\n onContextMenu={handleContextMenu}\n className={cn(triggerClassName)}\n >\n {trigger}\n </div>\n <SDropdownMenu\n open={contextMenuOpen}\n onOpenChange={setContextMenuOpen}\n modal={modal}\n >\n <SDropdownMenuTrigger asChild>\n <div\n className=\"ds:fixed\"\n style={{\n left: contextMenuPosition.x,\n top: contextMenuPosition.y,\n width: 1,\n height: 1,\n }}\n />\n </SDropdownMenuTrigger>\n <SDropdownMenuPortal>\n <SDropdownMenuContent\n ref={ref}\n className={cn(className, contentClassName)}\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n >\n {content}\n {items && renderItems(items)}\n </SDropdownMenuContent>\n </SDropdownMenuPortal>\n </SDropdownMenu>\n </>\n );\n }\n\n // Fallback to props-based pattern\n const triggerElement = trigger ? (\n <div onContextMenu={handleContextMenu} className={cn(triggerClassName)}>\n {trigger}\n </div>\n ) : null;\n\n const contentElement =\n content || items ? (\n <SDropdownMenuContent\n ref={ref}\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n className={cn(className, contentClassName)}\n >\n {content}\n {items && renderItems(items)}\n </SDropdownMenuContent>\n ) : null;\n\n return (\n <SDropdownMenu\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n modal={modal}\n >\n {triggerElement && (\n <SDropdownMenuTrigger asChild>{triggerElement}</SDropdownMenuTrigger>\n )}\n {portal ? (\n <SDropdownMenuPortal>{contentElement}</SDropdownMenuPortal>\n ) : (\n contentElement\n )}\n </SDropdownMenu>\n );\n }\n);\n\nDropdownMenu.displayName = \"DropdownMenu\";\n\nexport default DropdownMenu;\n"],"names":["DropdownMenu","React","props","ref","open","defaultOpen","onOpenChange","modal","children","trigger","content","items","side","align","sideOffset","alignOffset","portal","contextMenu","className","contentClassName","triggerClassName","contextMenuOpen","setContextMenuOpen","useState","contextMenuPosition","setContextMenuPosition","handleContextMenu","e","jsx","SDropdownMenu","renderItems","menuItems","item","SDropdownMenuSeparator","SDropdownMenuGroup","SDropdownMenuLabel","jsxs","SDropdownMenuCheckboxItem","checked","SDropdownMenuRadioGroup","SDropdownMenuRadioItem","SDropdownMenuSub","SDropdownMenuSubTrigger","cn","SDropdownMenuSubContent","SDropdownMenuItem","Fragment","SDropdownMenuTrigger","SDropdownMenuPortal","SDropdownMenuContent","triggerElement","contentElement"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/DropdownMenu/index.tsx"],"sourcesContent":["import DropdownMenuWrapper, { type DropdownMenuProps } from \"./DropdownMenu\";\nimport {\n DropdownMenu as DropdownMenuPrimitive,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n} from \"@dsui/ui/components/dropdown-menu\";\n\nconst DropdownMenu = Object.assign(DropdownMenuWrapper, {\n // Primitives\n Root: DropdownMenuPrimitive,\n Portal: DropdownMenuPortal,\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Group: DropdownMenuGroup,\n Label: DropdownMenuLabel,\n Item: DropdownMenuItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioGroup: DropdownMenuRadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Sub: DropdownMenuSub,\n SubTrigger: DropdownMenuSubTrigger,\n SubContent: DropdownMenuSubContent,\n});\n\nexport { DropdownMenu };\nexport type { DropdownMenuProps, DropdownMenuItem };\n"],"names":["DropdownMenu","DropdownMenuWrapper","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuGroup","DropdownMenuLabel","DropdownMenuItem","DropdownMenuCheckboxItem","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","DropdownMenuSubContent"],"mappings":";;AAmBA,MAAMA,IAAe,OAAO,OAAOC,GAAqB;AAAA;AAAA,EAEtD,MAAMC;AAAAA,EACN,QAAQC;AAAA,EACR,SAASC;AAAA,EACT,SAASC;AAAA,EACT,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,MAAMC;AAAA,EACN,cAAcC;AAAA,EACd,YAAYC;AAAA,EACZ,WAAWC;AAAA,EACX,WAAWC;AAAA,EACX,UAAUC;AAAA,EACV,KAAKC;AAAA,EACL,YAAYC;AAAA,EACZ,YAAYC;AACd,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FloatLabel.js","sources":["../../../src/components/FloatLabel.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Label } from \"@dsui/ui/components/label\";\nimport { Tooltip } from \"./Tooltip/Tooltip\";\nimport { Info } from \"lucide-react\";\n\nconst FloatingLabel = React.forwardRef<\n React.ElementRef<typeof Label>,\n React.ComponentPropsWithoutRef<typeof Label> & {\n infoTooltip?: React.ReactNode;\n size?: string;\n shouldFloat?: boolean;\n required?: boolean;\n }\n>(\n (\n {\n className,\n infoTooltip,\n size = \"xl\",\n shouldFloat,\n required,\n children,\n ...props\n },\n ref\n ) => {\n const lagerSize = size === \"lg\" || false;\n\n return (\n <Label\n className={cn(\n \"ds:absolute ds:start-2 ds:select-none ds:pointer-events-none\",\n \"ds:bg-background ds:px-3 ds:translate-y-2\",\n \"ds:flex\",\n {\n \"ds:top-0.5 ds:origin-left ds:scale-75 ds:translate-x-1 ds:max-w-full ds:h-3 ds:py-0 ds:bg-transparent\":\n !lagerSize,\n // State empty (placeholder shown) - ở giữa input\n \"ds:peer-placeholder-shown:top-0 ds:peer-placeholder-shown:scale-100 ds:peer-placeholder-shown:translate-x-0 ds:peer-placeholder-shown:w-[calc(100%-(--spacing(4)))] ds:peer-placeholder-shown:h-[calc(100%-(--spacing(4)))] ds:peer-placeholder-shown:py-3 ds:peer-placeholder-shown:bg-background\":\n !lagerSize,\n // // State focus - nằm trên input\n \"ds:peer-focus:top-0.5 ds:peer-focus:origin-left ds:peer-focus:scale-75 ds:peer-focus:translate-x-1 ds:peer-focus:text-primary ds:peer-focus:max-w-full ds:peer-focus:h-3 ds:peer-focus:py-0 ds:peer-focus:bg-transparent\":\n !lagerSize,\n \"ds:group-focus-within:top-0.5 ds:group-focus-within:origin-left ds:group-focus-within:scale-75 ds:group-focus-within:translate-x-1 ds:group-focus-within:text-primary ds:group-focus-within:max-w-full ds:group-focus-within:h-3 ds:group-focus-within:py-0 ds:group-focus-within:bg-transparent\":\n !lagerSize,\n },\n {\n \"ds:-top-3.5 ds:origin-left ds:scale-75 ds:translate-x-0 ds:max-w-full ds:w-auto ds:h-3 ds:py-0\":\n lagerSize,\n // State empty (placeholder shown) - ở giữa input\n \"ds:peer-placeholder-shown:-top-0.5 ds:peer-placeholder-shown:scale-100 ds:peer-placeholder-shown:w-[calc(100%-(--spacing(4)))] ds:peer-placeholder-shown:h-[calc(100%-(--spacing(3)))] ds:peer-placeholder-shown:py-2 ds:peer-placeholder-shown:bg-background\":\n lagerSize,\n // // State focus - nằm trên input\n \"ds:peer-focus:-top-3.5 ds:peer-focus:origin-left ds:peer-focus:scale-75 ds:peer-focus:text-primary ds:peer-focus:max-w-full ds:peer-focus:w-auto ds:peer-focus:h-3 ds:peer-focus:py-0\":\n lagerSize,\n \"ds:group-focus-within:-top-3.5 ds:group-focus-within:origin-left ds:group-focus-within:scale-75 ds:group-focus-within:text-primary ds:group-focus-within:max-w-full ds:group-focus-within:w-auto ds:group-focus-within:h-3 ds:group-focus-within:py-0\":\n lagerSize,\n },\n\n // State when shouldFloat prop is set\n {\n \"ds:top-0.5 ds:origin-left ds:scale-75 ds:translate-x-1 ds:max-w-full ds:h-3 ds:py-0\":\n typeof shouldFloat === \"boolean\" && shouldFloat && !lagerSize,\n \"ds:top-0 ds:scale-100 ds:translate-x-0 ds:w-[calc(100%-(--spacing(4)))] ds:h-[calc(100%-(--spacing(4)))] ds:py-3 ds:bg-background\":\n typeof shouldFloat === \"boolean\" && !shouldFloat && !lagerSize,\n },\n {\n \"ds:-top-3.5 ds:origin-left ds:scale-75 ds:translate-x-0 ds:max-w-full ds:h-3 ds:py-0\":\n typeof shouldFloat === \"boolean\" && shouldFloat && lagerSize,\n \"ds:top-0 ds:scale-100 ds:translate-x-0 ds:w-[calc(100%-(--spacing(4)))] ds:h-[calc(100%-(--spacing(4)))] ds:py-3 ds:bg-background\":\n typeof shouldFloat === \"boolean\" && !shouldFloat && lagerSize,\n },\n \"ds:will-change-transform ds:transition-all ds:duration-300 ds:ease-in-out\",\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"ds:truncate ds:whitespace-nowrap ds:max-w-full ds:pointer-events-none\">\n {children}\n {required && <span className=\"ds:text-error ds:ml-0.5\">*</span>}\n </span>\n\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5 ds:z-10 ds:pointer-events-auto\" />\n </Tooltip>\n )}\n </Label>\n );\n }\n);\n\nFloatingLabel.displayName = \"FloatingLabel\";\n\nexport { FloatingLabel };\n"],"names":["FloatingLabel","React","className","infoTooltip","size","shouldFloat","required","children","props","ref","lagerSize","jsxs","Label","cn","jsx","Tooltip","Info"],"mappings":";;;;;;AAOA,MAAMA,IAAgBC,EAAM;AAAA,EAS1B,CACE;AAAA,IACE,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,aAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAYN,MAAS,QAAQ;AAEnC,WACE,gBAAAO;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAWC;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,YACE,yGACE,CAACH;AAAA;AAAA,YAEH,sSACE,CAACA;AAAA;AAAA,YAEH,4NACE,CAACA;AAAA,YACH,oSACE,CAACA;AAAA,UAAA;AAAA,UAEL;AAAA,YACE,kGACEA;AAAA;AAAA,YAEF,iQACEA;AAAA;AAAA,YAEF,yLACEA;AAAA,YACF,yPACEA;AAAA,UAAA;AAAA;AAAA,UAIJ;AAAA,YACE,uFACE,OAAOL,KAAgB,aAAaA,KAAe,CAACK;AAAA,YACtD,qIACE,OAAOL,KAAgB,aAAa,CAACA,KAAe,CAACK;AAAA,UAAA;AAAA,UAEzD;AAAA,YACE,wFACE,OAAOL,KAAgB,aAAaA,KAAeK;AAAA,YACrD,qIACE,OAAOL,KAAgB,aAAa,CAACA,KAAeK;AAAA,UAAA;AAAA,UAExD;AAAA,UACAR;AAAA,QAAA;AAAA,QAEF,KAAAO;AAAA,QACC,GAAGD;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,yEACb,UAAA;AAAA,YAAAJ;AAAA,YACAD,KAAY,gBAAAQ,EAAC,QAAA,EAAK,WAAU,2BAA0B,UAAA,IAAA,CAAC;AAAA,UAAA,GAC1D;AAAA,UAECX,uBACEY,GAAA,EAAQ,SAASZ,GAChB,UAAA,gBAAAW,EAACE,GAAA,EAAK,WAAU,0DAAA,CAA0D,EAAA,CAC5E;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAhB,EAAc,cAAc;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Glass.js","sources":["../../../../src/components/Glass/Glass.tsx"],"sourcesContent":["import { cn } from \"@dsui/ui/index\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport React from \"react\";\n\nconst glassVariants = cva(\n \"ds:inline-flex ds:items-center ds:justify-center ds:gap-2 ds:whitespace-nowrap ds:text-sm ds:font-medium ds:transition-all ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg:not([class*='size-'])]:size-4 ds:shrink-0 ds:[&_svg]:shrink-0 ds:outline-none ds:focus-visible:border-ring ds:focus-visible:ring-ring/50 ds:focus-visible:ring-[3px] ds:aria-invalid:ring-destructive/20 ds:dark:aria-invalid:ring-destructive/40 ds:aria-invalid:border-destructive\",\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\nexport type GlassProps = {\n className?: string;\n children?: React.ReactNode;\n} & VariantProps<typeof glassVariants>;\n\nconst Glass: React.FC<GlassProps> = ({ className, children }) => {\n return (\n <div\n className={cn(\n \"ds:relative ds:inline-flex ds:overflow-hidden ds:cursor-pointer ds:shadow-[0_6px_6px_rgba(0,0,0,0.2),0_0_20px_rgba(0,0,0,0.1)] ds:transition-all ds:duration-400 ds:ease-[cubic-bezier(0.175,0.885,0.32,2.2)] ds:p-0 ds:rounded-md\",\n className\n )}\n >\n <div className=\"ds:absolute ds:z-0 ds:inset-0 ds:backdrop-blur-[2.5px] ds:overflow-hidden ds:isolate ds:[filter:url(#glass-distortion)] ds:rounded-[inherit]\"></div>\n <div className=\"ds:z-1 ds:absolute ds:inset-0 ds:bg-white/25 ds:rounded-[inherit]\"></div>\n <div className=\"ds:absolute ds:inset-0 ds:z-2 ds:overflow-hidden ds:shadow-[inset_2px_2px_1px_0_rgba(255,255,255,0.5),inset_-1px_-1px_1px_1px_rgba(255,255,255,0.5)] ds:rounded-[inherit]\"></div>\n <div className=\"ds:z-3 ds:relative\">\n <div className=\"ds:text-foreground ds:[text-shadow:0px_1px_3px_rgba(255, ds:255, ds:255, ds:0.3)] ds:transition-all ds:duration-100 ds:ease-in ds:inline-flex ds:gap-2\">\n {children}\n </div>\n </div>\n <svg className=\"ds:hidden\">\n <filter\n id=\"glass-distortion\"\n x=\"0%\"\n y=\"0%\"\n width=\"100%\"\n height=\"100%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feTurbulence\n type=\"fractalNoise\"\n baseFrequency=\"0.01 0.01\"\n numOctaves=\"1\"\n seed=\"5\"\n result=\"turbulence\"\n />\n\n <feComponentTransfer in=\"turbulence\" result=\"mapped\">\n <feFuncR type=\"gamma\" amplitude=\"1\" exponent=\"10\" offset=\"0.5\" />\n <feFuncG type=\"gamma\" amplitude=\"0\" exponent=\"1\" offset=\"0\" />\n <feFuncB type=\"gamma\" amplitude=\"0\" exponent=\"1\" offset=\"0.5\" />\n </feComponentTransfer>\n\n <feGaussianBlur in=\"turbulence\" stdDeviation=\"3\" result=\"softMap\" />\n\n <feSpecularLighting\n in=\"softMap\"\n surfaceScale=\"5\"\n specularConstant=\"1\"\n specularExponent=\"100\"\n lighting-color=\"white\"\n result=\"specLight\"\n >\n <fePointLight x=\"-200\" y=\"-200\" z=\"300\" />\n </feSpecularLighting>\n\n <feComposite\n in=\"specLight\"\n operator=\"arithmetic\"\n k1=\"0\"\n k2=\"1\"\n k3=\"1\"\n k4=\"0\"\n result=\"litImage\"\n />\n\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"softMap\"\n scale=\"120\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n />\n </filter>\n </svg>\n </div>\n );\n};\n\nexport default Glass;\n"],"names":["cva","Glass","className","children","jsxs","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIsBA;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU,CAAA;AAAA,IACV,iBAAiB,CAAA;AAAA,EAAC;AAEtB;AAOA,MAAMC,IAA8B,CAAC,EAAE,WAAAC,GAAW,UAAAC,QAE9C,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAH;AAAA,IAAA;AAAA,IAGF,UAAA;AAAA,MAAA,gBAAAI,EAAC,OAAA,EAAI,WAAU,+IAAA,CAA+I;AAAA,MAC9J,gBAAAA,EAAC,OAAA,EAAI,WAAU,oEAAA,CAAoE;AAAA,MACnF,gBAAAA,EAAC,OAAA,EAAI,WAAU,4KAAA,CAA4K;AAAA,MAC3L,gBAAAA,EAAC,SAAI,WAAU,sBACb,4BAAC,OAAA,EAAI,WAAU,0JACZ,UAAAH,EAAA,CACH,EAAA,CACF;AAAA,MACA,gBAAAG,EAAC,OAAA,EAAI,WAAU,aACb,UAAA,gBAAAF;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAG;AAAA,UACH,GAAE;AAAA,UACF,GAAE;AAAA,UACF,OAAM;AAAA,UACN,QAAO;AAAA,UACP,aAAY;AAAA,UAEZ,UAAA;AAAA,YAAA,gBAAAE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,eAAc;AAAA,gBACd,YAAW;AAAA,gBACX,MAAK;AAAA,gBACL,QAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAGT,gBAAAF,EAAC,uBAAA,EAAoB,IAAG,cAAa,QAAO,UAC1C,UAAA;AAAA,cAAA,gBAAAE,EAAC,WAAA,EAAQ,MAAK,SAAQ,WAAU,KAAI,UAAS,MAAK,QAAO,MAAA,CAAM;AAAA,cAC/D,gBAAAA,EAAC,aAAQ,MAAK,SAAQ,WAAU,KAAI,UAAS,KAAI,QAAO,IAAA,CAAI;AAAA,cAC5D,gBAAAA,EAAC,aAAQ,MAAK,SAAQ,WAAU,KAAI,UAAS,KAAI,QAAO,MAAA,CAAM;AAAA,YAAA,GAChE;AAAA,8BAEC,kBAAA,EAAe,IAAG,cAAa,cAAa,KAAI,QAAO,WAAU;AAAA,YAElE,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAG;AAAA,gBACH,cAAa;AAAA,gBACb,kBAAiB;AAAA,gBACjB,kBAAiB;AAAA,gBACjB,kBAAe;AAAA,gBACf,QAAO;AAAA,gBAEP,4BAAC,gBAAA,EAAa,GAAE,QAAO,GAAE,QAAO,GAAE,MAAA,CAAM;AAAA,cAAA;AAAA,YAAA;AAAA,YAG1C,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAG;AAAA,gBACH,UAAS;AAAA,gBACT,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,QAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAGT,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAG;AAAA,gBACH,KAAI;AAAA,gBACJ,OAAM;AAAA,gBACN,kBAAiB;AAAA,gBACjB,kBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnB;AAAA,QAAA;AAAA,MAAA,EACF,CACF;AAAA,IAAA;AAAA,EAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageViewer.js","sources":["../../../../src/components/ImageViewer/ImageViewer.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport { ZoomIn } from \"lucide-react\";\nimport { cn } from \"@dsui/ui/index\";\n\n// Dynamic import for react-viewer to avoid SSR issues\nlet Viewer: any = null;\nif (typeof window !== \"undefined\") {\n import(\"react-viewer\").then((module) => {\n Viewer = module.default;\n });\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ImageInfo {\n src: string;\n alt?: string;\n downloadUrl?: string;\n}\n\nexport interface ImageViewerProps {\n images: ImageInfo[];\n visible?: boolean;\n onClose?: () => void;\n activeIndex?: number;\n onIndexChange?: (_index: number) => void;\n zoomSpeed?: number;\n disableKeyboardSupport?: boolean;\n noNavbar?: boolean;\n noToolbar?: boolean;\n rotatable?: boolean;\n scalable?: boolean;\n changeable?: boolean;\n noClose?: boolean;\n minScale?: number;\n maxScale?: number;\n defaultScale?: number;\n className?: string;\n downloadable?: boolean;\n noImgDetails?: boolean;\n noResetZoomAfterChange?: boolean;\n drag?: boolean;\n}\n\nexport interface ImageViewerImageProps\n extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt?: string;\n width?: string | number;\n height?: string | number;\n preview?: boolean;\n previewSrc?: string;\n fallback?: string;\n placeholder?: React.ReactNode | boolean;\n className?: string;\n wrapperClassName?: string;\n onPreviewClick?: () => void;\n}\n\n// ============================================================================\n// ImageViewer Component\n// ============================================================================\n\nexport const ImageViewer: React.FC<ImageViewerProps> = ({\n images,\n visible = false,\n onClose,\n activeIndex = 0,\n onIndexChange,\n zoomSpeed = 0.1,\n disableKeyboardSupport = false,\n noNavbar = false,\n noToolbar = false,\n rotatable = true,\n scalable = true,\n changeable = true,\n noClose = false,\n minScale = 0.1,\n maxScale = 50,\n defaultScale = 1,\n className,\n downloadable = false,\n noImgDetails = false,\n noResetZoomAfterChange = false,\n drag = false,\n}) => {\n const [currentIndex, setCurrentIndex] = useState(activeIndex);\n const [ViewerComponent, setViewerComponent] = useState<any>(null);\n\n // Load Viewer dynamically on client-side only\n useEffect(() => {\n if (typeof window !== \"undefined\" && !ViewerComponent) {\n import(\"react-viewer\").then((module) => {\n setViewerComponent(() => module.default);\n });\n }\n }, [ViewerComponent]);\n\n useEffect(() => {\n setCurrentIndex(activeIndex);\n }, [activeIndex]);\n\n const handleClose = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n const handleIndexChange = useCallback(\n (_activeImage: any, index: number) => {\n setCurrentIndex(index);\n onIndexChange?.(index);\n },\n [onIndexChange]\n );\n\n // Handle download to save file locally\n const handleDownload = useCallback(() => {\n const currentImage = images[currentIndex];\n const downloadUrl = currentImage.downloadUrl || currentImage.src;\n\n // Create a temporary anchor element to trigger download\n const link = document.createElement(\"a\");\n link.href = downloadUrl;\n link.download = currentImage.alt || `image-${currentIndex + 1}`;\n\n // For cross-origin images, try to download via fetch\n fetch(downloadUrl)\n .then((response) => response.blob())\n .then((blob) => {\n const url = window.URL.createObjectURL(blob);\n link.href = url;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n })\n .catch(() => {\n // Fallback: do nothing if fetch fails\n });\n }, [images, currentIndex]);\n\n // Transform images to include downloadUrl\n const viewerImages = images.map((img) => ({\n src: img.src,\n alt: img.alt || \"\",\n downloadUrl: img.downloadUrl || img.src,\n }));\n\n // Don't render until Viewer is loaded\n if (!ViewerComponent) {\n return null;\n }\n\n return (\n <ViewerComponent\n visible={visible}\n onClose={handleClose}\n onMaskClick={handleClose}\n images={viewerImages}\n activeIndex={currentIndex}\n onChange={handleIndexChange}\n zoomSpeed={zoomSpeed}\n disableKeyboardSupport={disableKeyboardSupport}\n noNavbar={noNavbar}\n noToolbar={noToolbar}\n rotatable={rotatable}\n scalable={scalable}\n changeable={changeable}\n noClose={noClose}\n minScale={minScale}\n maxScale={maxScale}\n defaultScale={defaultScale}\n className={cn(\"ds:image-viewer-antd-style\", className)}\n downloadable={downloadable}\n noImgDetails={noImgDetails}\n noResetZoomAfterChange={noResetZoomAfterChange}\n showTotal={true}\n drag={drag}\n customToolbar={(toolbars: any) => {\n // Replace download button with a custom-rendered button to prevent viewer state change\n return toolbars.map((toolbar: any) => {\n if (toolbar.key === \"download\") {\n return {\n ...toolbar,\n actionType: undefined, // Remove default action\n onClick: undefined,\n render: (\n <button\n type=\"button\"\n className=\"ds:react-viewer-icon ds:react-viewer-download\"\n title=\"Download\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 0,\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDownload();\n }}\n >\n {/* SVG icon for download (Ant Design style) */}\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10 3v10m0 0l-4-4m4 4l4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <rect\n x=\"4\"\n y=\"17\"\n width=\"12\"\n height=\"2\"\n rx=\"1\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n ),\n };\n }\n return toolbar;\n });\n }}\n />\n );\n};\n\nImageViewer.displayName = \"ImageViewer\";\n\n// ============================================================================\n// ImageViewerImage Component (Wrapper for single image with preview)\n// ============================================================================\n\nexport const ImageViewerImage: React.FC<ImageViewerImageProps> = ({\n src,\n alt = \"\",\n width,\n height,\n preview = true,\n previewSrc,\n fallback,\n placeholder,\n className,\n wrapperClassName,\n onPreviewClick,\n onError,\n ...props\n}) => {\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n const [viewerVisible, setViewerVisible] = useState(false);\n\n const handleLoad = () => {\n setLoading(false);\n setError(false);\n };\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n setLoading(false);\n setError(true);\n onError?.(e);\n };\n\n const handlePreview = () => {\n if (!preview) return;\n setViewerVisible(true);\n onPreviewClick?.();\n };\n\n const handleCloseViewer = () => {\n setViewerVisible(false);\n };\n\n const showPlaceholder = loading && placeholder;\n const showFallback = error && fallback;\n const showPreviewMask = preview && !loading && !error;\n\n return (\n <>\n <div\n className={cn(\n \"ds:image-viewer-root ds:relative ds:inline-block\",\n wrapperClassName\n )}\n >\n <div className=\"ds:relative ds:inline-block\">\n {showPlaceholder && (\n <div\n className=\"ds:absolute ds:inset-0 ds:flex ds:items-center ds:justify-center ds:bg-muted ds:animate-pulse\"\n style={{ width, height }}\n >\n {placeholder === true ? (\n <div className=\"ds:w-8 ds:h-8 ds:border-2 ds:border-primary ds:border-t-transparent ds:rounded-full ds:animate-spin\" />\n ) : (\n placeholder\n )}\n </div>\n )}\n\n <img\n src={showFallback ? fallback : src}\n alt={alt}\n width={width}\n height={height}\n className={cn(\n \"ds:image-viewer-img ds:max-w-full ds:h-auto ds:align-middle\",\n loading && \"ds:opacity-0\",\n className\n )}\n onLoad={handleLoad}\n onError={handleError}\n {...props}\n />\n\n {showPreviewMask && (\n <div\n onClick={handlePreview}\n className={cn(\n \"ds:image-viewer-mask ds:absolute ds:inset-0 ds:flex ds:items-center ds:justify-center ds:opacity-0 ds:hover:opacity-100 ds:transition-opacity ds:cursor-pointer\",\n \"ds:bg-black/50 ds:backdrop-blur-sm\"\n )}\n >\n <div className=\"ds:text-white ds:text-sm ds:flex ds:items-center ds:gap-2\">\n <ZoomIn className=\"ds:w-5 ds:h-5\" />\n <span>Preview</span>\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* Viewer Modal */}\n <ImageViewer\n images={[{ src: previewSrc || src, alt }]}\n visible={viewerVisible}\n onClose={handleCloseViewer}\n rotatable\n scalable\n downloadable\n />\n </>\n );\n};\n\nImageViewerImage.displayName = \"ImageViewer.Image\";\n\n// ============================================================================\n// ImageViewerGroup Component\n// ============================================================================\n\ninterface ImageViewerGroupProps {\n children: React.ReactNode;\n images: ImageInfo[];\n preview?: boolean;\n}\n\nexport const ImageViewerGroup: React.FC<ImageViewerGroupProps> = ({\n children,\n images,\n preview = true,\n}) => {\n const [viewerVisible, setViewerVisible] = useState(false);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const handlePreview = useCallback((index: number) => {\n setCurrentIndex(index);\n setViewerVisible(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setViewerVisible(false);\n }, []);\n\n const contextValue = React.useMemo(\n () => ({\n handlePreview,\n preview,\n }),\n [handlePreview, preview]\n );\n\n return (\n <>\n <ImageViewerGroupContext.Provider value={contextValue}>\n {children}\n </ImageViewerGroupContext.Provider>\n\n <ImageViewer\n images={images}\n visible={viewerVisible}\n onClose={handleClose}\n activeIndex={currentIndex}\n onIndexChange={setCurrentIndex}\n rotatable\n scalable\n downloadable\n />\n </>\n );\n};\n\nImageViewerGroup.displayName = \"ImageViewer.Group\";\n\n// Context for Group\nconst ImageViewerGroupContext = React.createContext<{\n handlePreview?: (_index: number) => void;\n preview?: boolean;\n} | null>(null);\n\n// Export with namespace\nconst ImageViewerNamespace = Object.assign(ImageViewer, {\n Image: ImageViewerImage,\n Group: ImageViewerGroup,\n});\n\nexport default ImageViewerNamespace;\n"],"names":["n","module","ImageViewer","images","visible","onClose","activeIndex","onIndexChange","zoomSpeed","disableKeyboardSupport","noNavbar","noToolbar","rotatable","scalable","changeable","noClose","minScale","maxScale","defaultScale","className","downloadable","noImgDetails","noResetZoomAfterChange","drag","currentIndex","setCurrentIndex","useState","ViewerComponent","setViewerComponent","useEffect","handleClose","useCallback","handleIndexChange","_activeImage","index","handleDownload","currentImage","downloadUrl","link","response","blob","url","viewerImages","img","jsx","cn","toolbars","toolbar","e","jsxs","ImageViewerImage","src","alt","width","height","preview","previewSrc","fallback","placeholder","wrapperClassName","onPreviewClick","onError","props","loading","setLoading","error","setError","viewerVisible","setViewerVisible","handleLoad","handleError","handlePreview","handleCloseViewer","showPlaceholder","showFallback","showPreviewMask","Fragment","ZoomIn","ImageViewerGroup","children","contextValue","React","ImageViewerGroupContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMI,OAAO,SAAW,OACpB,OAAO,yBAAc,EAAA,KAAA,CAAAA,MAAAA,EAAA,CAAA,EAAE,KAAK,CAACC,MAAW;AAC7B,EAAAA,EAAO;AAClB,CAAC;AAwDI,MAAMC,IAA0C,CAAC;AAAA,EACtD,QAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,SAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,eAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,wBAAAC,IAAyB;AAAA,EACzB,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,cAAAC,IAAe;AAAA,EACf,WAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,cAAAC,IAAe;AAAA,EACf,wBAAAC,IAAyB;AAAA,EACzB,MAAAC,IAAO;AACT,MAAM;AACJ,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAASpB,CAAW,GACtD,CAACqB,GAAiBC,CAAkB,IAAIF,EAAc,IAAI;AAGhE,EAAAG,EAAU,MAAM;AACd,IAAI,OAAO,SAAW,OAAe,CAACF,KACpC,OAAO,yBAAc,EAAA,KAAA,CAAA3B,MAAAA,EAAA,CAAA,EAAE,KAAK,CAACC,MAAW;AACtC,MAAA2B,EAAmB,MAAM3B,EAAO,OAAO;AAAA,IACzC,CAAC;AAAA,EAEL,GAAG,CAAC0B,CAAe,CAAC,GAEpBE,EAAU,MAAM;AACd,IAAAJ,EAAgBnB,CAAW;AAAA,EAC7B,GAAG,CAACA,CAAW,CAAC;AAEhB,QAAMwB,IAAcC,EAAY,MAAM;AACpC,IAAA1B,IAAA;AAAA,EACF,GAAG,CAACA,CAAO,CAAC,GAEN2B,IAAoBD;AAAA,IACxB,CAACE,GAAmBC,MAAkB;AACpC,MAAAT,EAAgBS,CAAK,GACrB3B,IAAgB2B,CAAK;AAAA,IACvB;AAAA,IACA,CAAC3B,CAAa;AAAA,EAAA,GAIV4B,IAAiBJ,EAAY,MAAM;AACvC,UAAMK,IAAejC,EAAOqB,CAAY,GAClCa,IAAcD,EAAa,eAAeA,EAAa,KAGvDE,IAAO,SAAS,cAAc,GAAG;AACvC,IAAAA,EAAK,OAAOD,GACZC,EAAK,WAAWF,EAAa,OAAO,SAASZ,IAAe,CAAC,IAG7D,MAAMa,CAAW,EACd,KAAK,CAACE,MAAaA,EAAS,MAAM,EAClC,KAAK,CAACC,MAAS;AACd,YAAMC,IAAM,OAAO,IAAI,gBAAgBD,CAAI;AAC3C,MAAAF,EAAK,OAAOG,GACZ,SAAS,KAAK,YAAYH,CAAI,GAC9BA,EAAK,MAAA,GACL,SAAS,KAAK,YAAYA,CAAI,GAC9B,OAAO,IAAI,gBAAgBG,CAAG;AAAA,IAChC,CAAC,EACA,MAAM,MAAM;AAAA,IAEb,CAAC;AAAA,EACL,GAAG,CAACtC,GAAQqB,CAAY,CAAC,GAGnBkB,IAAevC,EAAO,IAAI,CAACwC,OAAS;AAAA,IACxC,KAAKA,EAAI;AAAA,IACT,KAAKA,EAAI,OAAO;AAAA,IAChB,aAAaA,EAAI,eAAeA,EAAI;AAAA,EAAA,EACpC;AAGF,SAAKhB,IAKH,gBAAAiB;AAAA,IAACjB;AAAA,IAAA;AAAA,MACC,SAAAvB;AAAA,MACA,SAAS0B;AAAA,MACT,aAAaA;AAAA,MACb,QAAQY;AAAA,MACR,aAAalB;AAAA,MACb,UAAUQ;AAAA,MACV,WAAAxB;AAAA,MACA,wBAAAC;AAAA,MACA,UAAAC;AAAA,MACA,WAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,YAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,cAAAC;AAAA,MACA,WAAW2B,EAAG,8BAA8B1B,CAAS;AAAA,MACrD,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,WAAW;AAAA,MACX,MAAAC;AAAA,MACA,eAAe,CAACuB,MAEPA,EAAS,IAAI,CAACC,MACfA,EAAQ,QAAQ,aACX;AAAA,QACL,GAAGA;AAAA,QACH,YAAY;AAAA;AAAA,QACZ,SAAS;AAAA,QACT,QACE,gBAAAH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,OAAM;AAAA,YACN,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,SAAS;AAAA,YAAA;AAAA,YAEX,SAAS,CAACI,MAAM;AACd,cAAAA,EAAE,eAAA,GACFA,EAAE,gBAAA,GACFb,EAAA;AAAA,YACF;AAAA,YAGA,UAAA,gBAAAc;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBAEN,UAAA;AAAA,kBAAA,gBAAAL;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,GAAE;AAAA,sBACF,QAAO;AAAA,sBACP,aAAY;AAAA,sBACZ,eAAc;AAAA,sBACd,gBAAe;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEjB,gBAAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,GAAE;AAAA,sBACF,GAAE;AAAA,sBACF,OAAM;AAAA,sBACN,QAAO;AAAA,sBACP,IAAG;AAAA,sBACH,MAAK;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACP;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,IAICG,CACR;AAAA,IACH;AAAA,EAAA,IAnFK;AAsFX;AAEA7C,EAAY,cAAc;AAMnB,MAAMgD,IAAoD,CAAC;AAAA,EAChE,KAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAvC;AAAA,EACA,kBAAAwC;AAAA,EACA,gBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAASC,CAAU,IAAItC,EAAS,EAAI,GACrC,CAACuC,GAAOC,CAAQ,IAAIxC,EAAS,EAAK,GAClC,CAACyC,GAAeC,CAAgB,IAAI1C,EAAS,EAAK,GAElD2C,IAAa,MAAM;AACvB,IAAAL,EAAW,EAAK,GAChBE,EAAS,EAAK;AAAA,EAChB,GAEMI,IAAc,CAACtB,MAAqD;AACxE,IAAAgB,EAAW,EAAK,GAChBE,EAAS,EAAI,GACbL,IAAUb,CAAC;AAAA,EACb,GAEMuB,IAAgB,MAAM;AAC1B,IAAKhB,MACLa,EAAiB,EAAI,GACrBR,IAAA;AAAA,EACF,GAEMY,IAAoB,MAAM;AAC9B,IAAAJ,EAAiB,EAAK;AAAA,EACxB,GAEMK,IAAkBV,KAAWL,GAC7BgB,IAAeT,KAASR,GACxBkB,IAAkBpB,KAAW,CAACQ,KAAW,CAACE;AAEhD,SACE,gBAAAhB,EAAA2B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAhC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC;AAAA,UACT;AAAA,UACAc;AAAA,QAAA;AAAA,QAGF,UAAA,gBAAAV,EAAC,OAAA,EAAI,WAAU,+BACZ,UAAA;AAAA,UAAAwB,KACC,gBAAA7B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,OAAAS,GAAO,QAAAC,EAAA;AAAA,cAEf,gBAAgB,KACf,gBAAAV,EAAC,OAAA,EAAI,WAAU,uGAAsG,IAErHc;AAAA,YAAA;AAAA,UAAA;AAAA,UAKN,gBAAAd;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK8B,IAAejB,IAAWN;AAAA,cAC/B,KAAAC;AAAA,cACA,OAAAC;AAAA,cACA,QAAAC;AAAA,cACA,WAAWT;AAAA,gBACT;AAAA,gBACAkB,KAAW;AAAA,gBACX5C;AAAA,cAAA;AAAA,cAEF,QAAQkD;AAAA,cACR,SAASC;AAAA,cACR,GAAGR;AAAA,YAAA;AAAA,UAAA;AAAA,UAGLa,KACC,gBAAA/B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS2B;AAAA,cACT,WAAW1B;AAAA,gBACT;AAAA,gBACA;AAAA,cAAA;AAAA,cAGF,UAAA,gBAAAI,EAAC,OAAA,EAAI,WAAU,6DACb,UAAA;AAAA,gBAAA,gBAAAL,EAACiC,GAAA,EAAO,WAAU,gBAAA,CAAgB;AAAA,gBAClC,gBAAAjC,EAAC,UAAK,UAAA,UAAA,CAAO;AAAA,cAAA,EAAA,CACf;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAIF,gBAAAA;AAAA,MAAC1C;AAAA,MAAA;AAAA,QACC,QAAQ,CAAC,EAAE,KAAKsD,KAAcL,GAAK,KAAAC,GAAK;AAAA,QACxC,SAASe;AAAA,QACT,SAASK;AAAA,QACT,WAAS;AAAA,QACT,UAAQ;AAAA,QACR,cAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GACF;AAEJ;AAEAtB,EAAiB,cAAc;AAYxB,MAAM4B,IAAoD,CAAC;AAAA,EAChE,UAAAC;AAAA,EACA,QAAA5E;AAAA,EACA,SAAAoD,IAAU;AACZ,MAAM;AACJ,QAAM,CAACY,GAAeC,CAAgB,IAAI1C,EAAS,EAAK,GAClD,CAACF,GAAcC,CAAe,IAAIC,EAAS,CAAC,GAE5C6C,IAAgBxC,EAAY,CAACG,MAAkB;AACnD,IAAAT,EAAgBS,CAAK,GACrBkC,EAAiB,EAAI;AAAA,EACvB,GAAG,CAAA,CAAE,GAECtC,IAAcC,EAAY,MAAM;AACpC,IAAAqC,EAAiB,EAAK;AAAA,EACxB,GAAG,CAAA,CAAE,GAECY,IAAeC,EAAM;AAAA,IACzB,OAAO;AAAA,MACL,eAAAV;AAAA,MACA,SAAAhB;AAAA,IAAA;AAAA,IAEF,CAACgB,GAAehB,CAAO;AAAA,EAAA;AAGzB,SACE,gBAAAN,EAAA2B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAhC,EAACsC,EAAwB,UAAxB,EAAiC,OAAOF,GACtC,UAAAD,GACH;AAAA,IAEA,gBAAAnC;AAAA,MAAC1C;AAAA,MAAA;AAAA,QACC,QAAAC;AAAA,QACA,SAASgE;AAAA,QACT,SAASrC;AAAA,QACT,aAAaN;AAAA,QACb,eAAeC;AAAA,QACf,WAAS;AAAA,QACT,UAAQ;AAAA,QACR,cAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GACF;AAEJ;AAEAqD,EAAiB,cAAc;AAG/B,MAAMI,IAA0BD,EAAM,cAG5B,IAAI;AAGe,OAAO,OAAO/E,GAAa;AAAA,EACtD,OAAOgD;AAAA,EACP,OAAO4B;AACT,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../src/components/Input/Input.tsx"],"sourcesContent":["import React, { type ChangeEvent } from \"react\";\nimport {\n Input as SInput,\n type InputProps as SInputProps,\n} from \"@dsui/ui/components/input\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { FloatingLabel } from \"@/components/FloatLabel\";\nimport { Eye, EyeOff, ChevronDown, ChevronUp, Info, X } from \"lucide-react\";\nimport { withMask, type Options } from \"use-mask-input\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { Label } from \"../Label\";\n\n// Re-export base input props to avoid external dependency issues\nexport type BaseInputProps = Omit<React.ComponentProps<\"input\">, \"size\"> & {\n size?: \"normal\" | \"sm\" | \"xs\" | \"lg\" | \"xl\";\n state?: \"default\" | \"success\" | \"error\" | \"warning\";\n};\n\nexport type InputProps = BaseInputProps & {\n label?: string;\n helperText?: React.ReactNode;\n isFloatLabel?: boolean;\n mask?: string;\n maskOptions?: {\n placeholder?: string;\n inputFormat?: string;\n outputFormat?: string;\n showMaskOnHover?: boolean;\n showMaskOnFocus?: boolean;\n separate?: boolean;\n } & Options;\n maxLength?: number;\n showCharCount?: boolean;\n infoTooltip?: React.ReactNode;\n clearable?: boolean;\n onClear?: () => void;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n required?: boolean;\n inputClassName?: string;\n};\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n label,\n helperText,\n state,\n size,\n isFloatLabel,\n type,\n mask,\n maskOptions,\n maxLength,\n showCharCount,\n infoTooltip,\n clearable,\n onClear,\n prefixIcon,\n suffixIcon,\n placeholder = \" \",\n required,\n inputClassName,\n ...props\n },\n ref\n ) => {\n // Character count state\n const [charCount, setCharCount] = React.useState(() => {\n if (typeof props.value === \"string\") return props.value.length;\n if (typeof props.defaultValue === \"string\")\n return props.defaultValue.length;\n return 0;\n });\n\n const handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n setCharCount(e.target.value.length);\n if (props.onChange) props.onChange(e);\n };\n\n const handleClear = () => {\n if (innerRef.current) {\n innerRef.current.value = \"\";\n setCharCount(0);\n const event = {\n target: innerRef.current,\n currentTarget: innerRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n props.onChange?.(event);\n if (onClear) onClear();\n }\n };\n\n const inputId = React.useId();\n const innerRef = React.useRef<HTMLInputElement>(null);\n\n // Combine refs\n const combinedRef = React.useCallback(\n (element: HTMLInputElement | null) => {\n // Set innerRef\n if (innerRef) {\n (\n innerRef as React.MutableRefObject<HTMLInputElement | null>\n ).current = element;\n }\n\n // Apply mask if provided\n if (mask && element) {\n const maskRefCallback = withMask(mask, maskOptions);\n if (typeof maskRefCallback === \"function\") {\n maskRefCallback(element);\n }\n }\n },\n [mask, maskOptions]\n );\n\n // Expose ref to parent\n React.useImperativeHandle(ref, () => innerRef.current!);\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n // State\n const helperTextStyles = {\n default: \"ds:text-muted-foreground\",\n success: \"ds:text-success\",\n warning: \"ds:text-warning\",\n error: \"ds:text-error\",\n };\n\n // Calculate current size\n const currentSize = isFloatLabel\n ? size === \"xl\" || size === \"lg\"\n ? size\n : \"xl\"\n : size || \"normal\";\n\n // Calculate padding based on size and icons\n const getPadding = () => {\n const sizeMap = {\n xs: { prefix: \"ds:pl-8\", suffix: \"ds:pr-8\" },\n sm: { prefix: \"ds:pl-9\", suffix: \"ds:pr-9\" },\n normal: { prefix: \"ds:pl-10\", suffix: \"ds:pr-10\" },\n lg: { prefix: \"ds:pl-11\", suffix: \"ds:pr-11\" },\n xl: { prefix: \"ds:pl-12\", suffix: \"ds:pr-12\" },\n };\n\n return sizeMap[currentSize as keyof typeof sizeMap] || sizeMap.normal;\n };\n\n const padding = getPadding();\n\n // Get icon size class based on current size\n const getIconSizeClass = () => {\n const sizeMap = {\n xs: \"ds:size-3\",\n sm: \"ds:size-3.5\",\n normal: \"ds:size-4\",\n lg: \"ds:size-4\",\n xl: \"ds:size-4\",\n };\n return sizeMap[currentSize as keyof typeof sizeMap] || \"ds:size-4\";\n };\n\n const iconSizeClass = getIconSizeClass();\n\n // Calculate right padding considering built-in icons\n const getRightPadding = () => {\n const hasBuiltInSuffix =\n type === \"number\" ||\n type === \"password\" ||\n type === \"datetime\" ||\n (clearable && (charCount > 0 || props?.value));\n\n if (hasBuiltInSuffix && suffixIcon) {\n return type === \"password\" &&\n clearable &&\n (charCount > 0 || props?.value)\n ? \"ds:pr-20\" // password + clear + custom icon\n : \"ds:pr-16\"; // one built-in + custom icon\n }\n\n if (hasBuiltInSuffix) {\n return type === \"password\" &&\n clearable &&\n (charCount > 0 || props?.value)\n ? \"ds:pr-16\" // password + clear\n : \"ds:pr-10\"; // single built-in icon\n }\n\n if (suffixIcon) {\n return padding.suffix;\n }\n\n return \"\";\n };\n\n // Icon position calculations\n const getIconPosition = () => {\n const sizeMap = {\n xs: { left: \"ds:left-2.5\", right: \"ds:right-2.5\" },\n sm: { left: \"ds:left-3\", right: \"ds:right-3\" },\n normal: { left: \"ds:left-3\", right: \"ds:right-3\" },\n lg: { left: \"ds:left-3.5\", right: \"ds:right-3.5\" },\n xl: { left: \"ds:left-4\", right: \"ds:right-4\" },\n };\n\n return sizeMap[currentSize as keyof typeof sizeMap] || sizeMap.normal;\n };\n\n const iconPosition = getIconPosition();\n\n /* Spinner Button Handlers */\n const handleIncrement = () => {\n if (innerRef.current) {\n const step = Number(props.step || 1);\n const max = props.max ? Number(props.max) : Infinity;\n const currentValue = Number(innerRef.current.value || 0);\n const newValue = Math.min(currentValue + step, max);\n\n innerRef.current.value = String(newValue);\n const event = new Event(\"input\", { bubbles: true });\n innerRef.current.dispatchEvent(event);\n props.onChange?.(event as unknown as ChangeEvent<HTMLInputElement>);\n }\n };\n\n const handleDecrement = () => {\n if (innerRef.current) {\n const step = Number(props.step || 1);\n const min = props.min ? Number(props.min) : -Infinity;\n const currentValue = Number(innerRef.current.value || 0);\n const newValue = Math.max(currentValue - step, min);\n\n innerRef.current.value = String(newValue);\n const event = new Event(\"input\", { bubbles: true });\n innerRef.current.dispatchEvent(event);\n props.onChange?.(event as unknown as ChangeEvent<HTMLInputElement>);\n }\n };\n /* End Spinner Button Handlers */\n\n return (\n <div className={className}>\n <div\n className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative ds:flex-auto\", {\n \"ds:floating-label ds:relative\": isFloatLabel,\n })}\n >\n {!isFloatLabel && label && (\n <Label\n htmlFor={inputId}\n className=\"ds:flex ds:gap-2 ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\"\n >\n <span>\n {label}\n {required && <span className=\"ds:text-error ds:ml-0.5\">*</span>}\n </span>\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </Label>\n )}\n\n <div className=\"ds:relative\">\n {/* Prefix Icon */}\n {prefixIcon && (\n <div\n className={cn(\n \"ds:absolute ds:top-1/2 ds:-translate-y-1/2 ds:text-muted-foreground ds:leading-0\",\n iconPosition.left\n )}\n >\n {React.isValidElement(prefixIcon)\n ? React.cloneElement(prefixIcon, {\n className: cn(\n iconSizeClass,\n (prefixIcon.props as any)?.className\n ),\n } as Partial<unknown>)\n : prefixIcon}\n </div>\n )}\n\n <SInput\n ref={combinedRef}\n id={inputId}\n className={cn(\n \"ds:peer\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n \"ds:[&::-webkit-outer-spin-button]:appearance-none ds:[&::-webkit-inner-spin-button]:appearance-none ds:[-moz-appearance:textfield] ds:pr-8\":\n type === \"number\",\n // \"[-webkit-text-fill-color:var(--foreground)]\": mask,\n },\n prefixIcon && padding.prefix,\n mask && \"ds:placeholder:text-slate-400 ds:placeholder:opacity-100\",\n getRightPadding(),\n inputClassName,\n )}\n state={state}\n size={\n isFloatLabel\n ? size === \"xl\" || size === \"lg\"\n ? size\n : \"xl\"\n : size\n }\n type={\n type === \"password\"\n ? showPassword\n ? \"text\"\n : \"password\"\n : type\n }\n placeholder={placeholder}\n maxLength={maxLength}\n onChange={handleInput}\n required={required}\n {...props}\n />\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={inputId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n >\n {label}\n </FloatingLabel>\n )}\n\n {/* Spinner Buttons */}\n {type === \"number\" && (\n <div className=\"ds:absolute ds:right-1 ds:top-0 ds:h-full ds:flex ds:flex-col ds:gap-0.5\">\n <button\n type=\"button\"\n onClick={handleIncrement}\n disabled={props.disabled}\n className={cn(\n \"ds:h-1/2 ds:w-6 ds:flex ds:items-center ds:justify-center ds:rounded ds:cursor-pointer ds:hover:scale-150 ds:transition-transform\",\n \"ds:disabled:opacity-50 ds:disabled:cursor-not-allowed ds:disabled:hover:bg-transparent\"\n )}\n tabIndex={-1}\n >\n <ChevronUp className=\"ds:size-3\" />\n </button>\n <button\n type=\"button\"\n onClick={handleDecrement}\n disabled={props.disabled}\n className={cn(\n \"ds:h-1/2 ds:w-6 ds:flex ds:items-center ds:justify-center ds:rounded ds:cursor-pointer ds:hover:scale-150 ds:transition-transform\",\n \"ds:disabled:opacity-50 ds:disabled:cursor-not-allowed ds:disabled:hover:bg-transparent\"\n )}\n tabIndex={-1}\n >\n <ChevronDown className=\"ds:size-3\" />\n </button>\n </div>\n )}\n\n {/* Clear Button */}\n {clearable &&\n (charCount > 0 || props?.value) &&\n !props.disabled &&\n type !== \"number\" && (\n <button\n type=\"button\"\n tabIndex={-1}\n className={cn(\n \"ds:absolute ds:top-1/2 ds:-translate-y-1/2 ds:p-1 ds:rounded ds:hover:bg-accent ds:transition-colors ds:cursor-pointer\",\n type === \"password\"\n ? suffixIcon\n ? \"ds:right-14\"\n : \"ds:right-10\"\n : suffixIcon\n ? \"ds:right-10\"\n : \"ds:right-2\"\n )}\n onClick={handleClear}\n disabled={props.disabled}\n >\n <X className=\"ds:size-4\" />\n </button>\n )}\n\n {/* Show/Hide Password Button */}\n {type === \"password\" && (\n <button\n type=\"button\"\n tabIndex={-1}\n className={cn(\n \"ds:absolute ds:top-1/2 ds:-translate-y-1/2 ds:p-1 ds:rounded ds:hover:bg-accent ds:transition-colors\",\n suffixIcon ? \"ds:right-10\" : \"ds:right-2\"\n )}\n onClick={() => setShowPassword((prev) => !prev)}\n disabled={props.disabled}\n >\n {showPassword ? (\n <EyeOff className=\"ds:size-4\" />\n ) : (\n <Eye className=\"ds:size-4\" />\n )}\n </button>\n )}\n\n {/* Suffix Icon */}\n {suffixIcon && (\n <div\n className={cn(\n \"ds:absolute ds:top-1/2 ds:-translate-y-1/2 ds:text-muted-foreground ds:leading-0\",\n iconPosition.right\n )}\n >\n {React.isValidElement(suffixIcon)\n ? React.cloneElement(suffixIcon, {\n className: cn(\n iconSizeClass,\n (suffixIcon.props as any)?.className\n ),\n } as Partial<unknown>)\n : suffixIcon}\n </div>\n )}\n </div>\n\n {(helperText || (showCharCount && typeof maxLength === \"number\")) && (\n <div className=\"ds:flex ds:items-center ds:justify-between ds:text-xs ds:gap-2\">\n {helperText && (\n <p\n className={cn(\n \"ds:text-xs\",\n state ? helperTextStyles?.[state] : \"\"\n )}\n >\n {helperText}\n </p>\n )}\n {showCharCount && typeof maxLength === \"number\" && (\n <span className=\"ds:ml-auto ds:text-muted-foreground\">\n {charCount} / {maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\nexport default Input;\n"],"names":["Input","React","className","label","helperText","state","size","isFloatLabel","type","mask","maskOptions","maxLength","showCharCount","infoTooltip","clearable","onClear","prefixIcon","suffixIcon","placeholder","required","inputClassName","props","ref","charCount","setCharCount","handleInput","e","handleClear","innerRef","event","inputId","combinedRef","element","maskRefCallback","withMask","showPassword","setShowPassword","helperTextStyles","currentSize","padding","sizeMap","iconSizeClass","getRightPadding","hasBuiltInSuffix","iconPosition","handleIncrement","step","max","currentValue","newValue","handleDecrement","min","jsx","jsxs","cn","Label","Tooltip","Info","SInput","FloatingLabel","ChevronUp","ChevronDown","X","prev","EyeOff","Eye"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputOTP.js","sources":["../../../../src/components/InputOTP/InputOTP.tsx"],"sourcesContent":["import React, { useId } from \"react\";\n\nimport {\n InputOTP as SInputOTP,\n InputOTPGroup,\n InputOTPSlot,\n type InputOTPProps as SInputOTPProps,\n REGEXP_ONLY_DIGITS,\n REGEXP_ONLY_CHARS,\n REGEXP_ONLY_DIGITS_AND_CHARS,\n inputOTPSlotVariants,\n} from \"@dsui/ui/components/input-otp\";\nimport { Label } from \"@dsui/ui/components/label\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@dsui/ui/index\";\n\nexport type InputOTPProps = Omit<\n SInputOTPProps,\n \"size\" | \"render\" | \"maxLength\"\n> & {\n label?: React.ReactNode;\n length?: number;\n inputType?: \"digits\" | \"chars\" | \"digits-and-chars\";\n size?: VariantProps<typeof inputOTPSlotVariants>[\"size\"];\n state?: VariantProps<typeof inputOTPSlotVariants>[\"state\"];\n variant?: VariantProps<typeof inputOTPSlotVariants>[\"variant\"];\n regexPattern?: string;\n helperText?: React.ReactNode;\n gapSize?: number;\n className?: string;\n rootClassName?: string;\n childClassName?: string;\n};\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof SInputOTP>,\n InputOTPProps\n>(\n (\n {\n label,\n inputType = \"digits\",\n regexPattern,\n length,\n size = \"normal\",\n state = \"default\",\n helperText,\n gapSize = 4,\n variant = \"outlined\",\n className,\n rootClassName,\n childClassName,\n ...rest\n },\n ref\n ) => {\n const id = useId();\n\n const pattern =\n inputType === \"digits\"\n ? REGEXP_ONLY_DIGITS\n : inputType === \"chars\"\n ? REGEXP_ONLY_CHARS\n : inputType === \"digits-and-chars\"\n ? REGEXP_ONLY_DIGITS_AND_CHARS\n : undefined;\n\n const helperTextStyles = {\n default: \"ds:text-muted-foreground\",\n success: \"ds:text-success\",\n warning: \"ds:text-warning\",\n error: \"ds:text-error\",\n };\n\n return (\n <div className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative\", rootClassName)}>\n <Label htmlFor={id}>{label}</Label>\n <SInputOTP\n id={id}\n maxLength={length ?? 4}\n pattern={regexPattern ?? pattern}\n ref={ref}\n {...rest}\n >\n <InputOTPGroup\n className={cn(\n {\n \"ds:gap-2 ds:*:data-[slot=input-otp-slot]:rounded-md ds:*:data-[slot=input-otp-slot]:border\":\n variant === \"outlined\" && gapSize > 0,\n },\n className\n )}\n style={gapSize > 0 ? { gap: `${gapSize}px` } : undefined}\n >\n {Array.from({ length: length ?? 4 }).map((_, index) => (\n <InputOTPSlot\n key={index}\n index={index}\n size={size}\n state={state ?? undefined}\n variant={variant}\n className={childClassName}\n />\n ))}\n </InputOTPGroup>\n </SInputOTP>\n {helperText && (\n <p className={cn(\"ds:text-xs\", state ? helperTextStyles?.[state] : \"\")}>\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nexport default InputOTP;\n"],"names":["InputOTP","React","label","inputType","regexPattern","length","size","state","helperText","gapSize","variant","className","rootClassName","childClassName","rest","ref","id","useId","pattern","REGEXP_ONLY_DIGITS","REGEXP_ONLY_CHARS","REGEXP_ONLY_DIGITS_AND_CHARS","helperTextStyles","cn","jsx","Label","SInputOTP","InputOTPGroup","_","index","InputOTPSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,KAAWC,EAAM;AAAA,EAIrB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,cAAAC;AAAA,IACA,QAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAKC,EAAA,GAELC,IACJf,MAAc,WACVgB,IACAhB,MAAc,UACZiB,IACAjB,MAAc,qBACZkB,IACA,QAEJC,IAAmB;AAAA,MACvB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAGT,6BACG,OAAA,EAAI,WAAWC,EAAG,8CAA8CX,CAAa,GAC5E,UAAA;AAAA,MAAA,gBAAAY,EAACC,GAAA,EAAM,SAAST,GAAK,UAAAd,GAAM;AAAA,MAC3B,gBAAAsB;AAAA,QAACE;AAAAA,QAAA;AAAA,UACC,IAAAV;AAAA,UACA,WAAWX,KAAU;AAAA,UACrB,SAASD,KAAgBc;AAAA,UACzB,KAAAH;AAAA,UACC,GAAGD;AAAA,UAEJ,UAAA,gBAAAU;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,WAAWJ;AAAA,gBACT;AAAA,kBACE,8FACEb,MAAY,cAAcD,IAAU;AAAA,gBAAA;AAAA,gBAExCE;AAAA,cAAA;AAAA,cAEF,OAAOF,IAAU,IAAI,EAAE,KAAK,GAAGA,CAAO,SAAS;AAAA,cAE9C,UAAA,MAAM,KAAK,EAAE,QAAQJ,KAAU,EAAA,CAAG,EAAE,IAAI,CAACuB,GAAGC,MAC3C,gBAAAL;AAAA,gBAACM;AAAA,gBAAA;AAAA,kBAEC,OAAAD;AAAA,kBACA,MAAAvB;AAAA,kBACA,OAAOC,KAAS;AAAA,kBAChB,SAAAG;AAAA,kBACA,WAAWG;AAAA,gBAAA;AAAA,gBALNgB;AAAA,cAAA,CAOR;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,MAEDrB,KACC,gBAAAgB,EAAC,KAAA,EAAE,WAAWD,EAAG,cAAchB,IAAQe,IAAmBf,CAAK,IAAI,EAAE,GAClE,UAAAC,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CursorFollow.js","sources":["../../../../src/components/Interactive/CursorFollow.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n motion,\n useMotionValue,\n useSpring,\n AnimatePresence,\n type HTMLMotionProps,\n type SpringOptions,\n} from \"motion/react\";\n\nimport { cn } from \"@dsui/ui/index\";\n\n// Transition presets\ntype TransitionPreset = \"slow\" | \"normal\" | \"fast\" | \"realtime\";\n\nconst TRANSITION_PRESETS: Record<TransitionPreset, SpringOptions> = {\n slow: { stiffness: 100, damping: 20, bounce: 0 },\n normal: { stiffness: 500, damping: 50, bounce: 0 },\n fast: { stiffness: 1000, damping: 80, bounce: 0 },\n realtime: { stiffness: 2000, damping: 100, bounce: 0 },\n};\n\ntype CursorContextType = {\n cursorPos: { x: number; y: number };\n isActive: boolean;\n containerRef: React.RefObject<HTMLDivElement | null>;\n cursorRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst CursorContext = React.createContext<CursorContextType | undefined>(\n undefined\n);\n\nconst useCursor = (): CursorContextType => {\n const context = React.useContext(CursorContext);\n if (!context) {\n throw new Error(\"useCursor must be used within a CursorProvider\");\n }\n return context;\n};\n\ntype Align =\n | \"top\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"left\"\n | \"right\"\n | \"center\";\n\ntype CursorVariantKey = \"default\" | \"pointer\";\ntype CursorVariant = CursorVariantKey | React.ReactNode;\n\n// Predefined cursor variants\nconst cursorVariants: Record<CursorVariantKey, React.ReactNode> = {\n default: null, // Use system cursor\n pointer: (\n <div className=\"ds:h-5 ds:w-5 ds:rounded-full ds:bg-white/30 ds:border-2 ds:border-white\" />\n ),\n};\n\ntype CursorProviderProps = React.ComponentProps<\"div\"> & {\n children: React.ReactNode;\n /** Auto-setup cursor with variant (preset key or custom ReactNode) */\n cursorType?: CursorVariant;\n /** Auto-setup follow element with content */\n followText?: React.ReactNode;\n /** Show follow element (default: true when followText is provided) */\n showFollow?: boolean;\n /** Follow element alignment */\n followAlign?: Align;\n /** Follow element side offset */\n followSideOffset?: number;\n /** Follow element transition preset */\n followTransition?: TransitionPreset;\n};\n\nfunction CursorProvider({\n ref,\n children,\n cursorType = \"default\",\n followText,\n showFollow,\n followAlign = \"bottom-right\",\n followSideOffset = 15,\n followTransition = \"normal\",\n ...props\n}: CursorProviderProps) {\n const [cursorPos, setCursorPos] = React.useState({ x: 0, y: 0 });\n const [isActive, setIsActive] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const cursorRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(ref as React.Ref<HTMLDivElement>, () => containerRef.current as HTMLDivElement);\n\n React.useEffect(() => {\n if (!containerRef.current) return;\n\n const parent = containerRef.current.parentElement;\n if (!parent) return;\n\n if (getComputedStyle(parent).position === \"static\") {\n parent.style.position = \"relative\";\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = parent.getBoundingClientRect();\n setCursorPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setIsActive(true);\n };\n const handleMouseLeave = () => setIsActive(false);\n\n parent.addEventListener(\"mousemove\", handleMouseMove);\n parent.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n parent.removeEventListener(\"mousemove\", handleMouseMove);\n parent.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n // Auto-setup: determine if we should show cursor and follow\n const shouldShowCursor = cursorType !== undefined;\n const shouldShowFollowElement = showFollow ?? followText !== undefined;\n\n // Convert preset to SpringOptions\n const transitionConfig = TRANSITION_PRESETS[followTransition];\n\n return (\n <CursorContext.Provider\n value={{ cursorPos, isActive, containerRef, cursorRef }}\n >\n <div ref={containerRef} data-slot=\"cursor-provider\" {...props}>\n {children}\n\n {/* Auto-setup Cursor */}\n {shouldShowCursor && <Cursor cursorType={cursorType} />}\n\n {/* Auto-setup CursorFollow */}\n {shouldShowFollowElement && (\n <CursorFollow\n followText={followText}\n align={followAlign}\n sideOffset={followSideOffset}\n transition={transitionConfig}\n />\n )}\n </div>\n </CursorContext.Provider>\n );\n}\n\ntype CursorProps = HTMLMotionProps<\"div\"> & {\n children?: React.ReactNode;\n cursorType?: CursorVariant;\n};\n\nfunction Cursor({\n ref,\n children,\n cursorType = \"default\",\n className,\n style,\n ...props\n}: CursorProps) {\n const { cursorPos, isActive, containerRef, cursorRef } = useCursor();\n React.useImperativeHandle(ref as React.Ref<HTMLDivElement>, () => cursorRef.current as HTMLDivElement);\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n // Determine which content to render\n const getCursorContent = () => {\n if (children) return children;\n\n // Check if cursorType is a preset key\n if (typeof cursorType === \"string\" && cursorType in cursorVariants) {\n return cursorVariants[cursorType as CursorVariantKey];\n }\n\n // Otherwise treat it as custom ReactNode\n return cursorType;\n };\n\n const cursorContent = getCursorContent();\n\n // Only hide system cursor if we have custom content to show\n const shouldHideSystemCursor = cursorContent !== null;\n\n React.useEffect(() => {\n const parentElement = containerRef.current?.parentElement;\n\n if (parentElement && isActive && shouldHideSystemCursor) {\n parentElement.style.cursor = \"none\";\n }\n\n return () => {\n if (parentElement) parentElement.style.cursor = \"default\";\n };\n }, [containerRef, isActive, shouldHideSystemCursor]);\n\n React.useEffect(() => {\n x.set(cursorPos.x);\n y.set(cursorPos.y);\n }, [cursorPos, x, y]);\n\n // Only render if we have content to show\n if (!cursorContent) return null;\n\n return (\n <AnimatePresence>\n {isActive && (\n <motion.div\n ref={cursorRef}\n data-slot=\"cursor\"\n className={cn(\n \"ds:transform-[translate(-50%,-50%)] ds:pointer-events-none ds:z-9999 ds:absolute\",\n className\n )}\n style={{ top: y, left: x, ...style }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n {...props}\n >\n {cursorContent}\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\ntype CursorFollowProps = HTMLMotionProps<\"div\"> & {\n sideOffset?: number;\n align?: Align;\n transition?: SpringOptions;\n transitionPreset?: TransitionPreset;\n children?: React.ReactNode;\n followText?: React.ReactNode;\n};\n\nfunction CursorFollow({\n ref,\n sideOffset = 15,\n align = \"bottom-right\",\n children,\n className,\n style,\n followText,\n transition,\n transitionPreset = \"normal\",\n ...props\n}: CursorFollowProps) {\n const { cursorPos, isActive, cursorRef } = useCursor();\n const cursorFollowRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(\n ref as React.Ref<HTMLDivElement>,\n () => cursorFollowRef.current as HTMLDivElement\n );\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n // Use custom transition if provided, otherwise use preset\n const finalTransition = transition || TRANSITION_PRESETS[transitionPreset];\n\n const springX = useSpring(x, finalTransition);\n const springY = useSpring(y, finalTransition);\n\n const calculateOffset = React.useCallback(() => {\n const rect = cursorFollowRef.current?.getBoundingClientRect();\n const width = rect?.width ?? 0;\n const height = rect?.height ?? 0;\n\n let newOffset;\n\n switch (align) {\n case \"center\":\n newOffset = { x: width / 2, y: height / 2 };\n break;\n case \"top\":\n newOffset = { x: width / 2, y: height + sideOffset };\n break;\n case \"top-left\":\n newOffset = { x: width + sideOffset, y: height + sideOffset };\n break;\n case \"top-right\":\n newOffset = { x: -sideOffset, y: height + sideOffset };\n break;\n case \"bottom\":\n newOffset = { x: width / 2, y: -sideOffset };\n break;\n case \"bottom-left\":\n newOffset = { x: width + sideOffset, y: -sideOffset };\n break;\n case \"bottom-right\":\n newOffset = { x: -sideOffset, y: -sideOffset };\n break;\n case \"left\":\n newOffset = { x: width + sideOffset, y: height / 2 };\n break;\n case \"right\":\n newOffset = { x: -sideOffset, y: height / 2 };\n break;\n default:\n newOffset = { x: 0, y: 0 };\n }\n\n return newOffset;\n }, [align, sideOffset]);\n\n React.useEffect(() => {\n const offset = calculateOffset();\n const cursorRect = cursorRef.current?.getBoundingClientRect();\n const cursorWidth = cursorRect?.width ?? 20;\n const cursorHeight = cursorRect?.height ?? 20;\n\n x.set(cursorPos.x - offset.x + cursorWidth / 2);\n y.set(cursorPos.y - offset.y + cursorHeight / 2);\n }, [calculateOffset, cursorPos, cursorRef, x, y]);\n\n // Determine follow content based on children or followText\n const getFollowContent = () => {\n if (children) return children;\n\n if (followText) {\n // If followText is a string, wrap it with default styling\n if (typeof followText === \"string\") {\n return (\n <div className=\"ds:px-4 ds:py-2 ds:bg-white ds:rounded-md ds:shadow-lg ds:text-sm ds:font-medium\">\n {followText}\n </div>\n );\n }\n // If it's a ReactNode, render it directly\n return followText;\n }\n\n return null;\n };\n\n return (\n <AnimatePresence>\n {isActive && (\n <motion.div\n ref={cursorFollowRef}\n data-slot=\"cursor-follow\"\n className={cn(\n \"ds:transform-[translate(-50%,-50%)] ds:pointer-events-none ds:z-9998 ds:absolute\",\n className\n )}\n style={{ top: springY, left: springX, ...style }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n {...props}\n >\n {getFollowContent()}\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\n// Hook for easy cursor setup (Method 2)\ntype useCursorFollowOptions = {\n /** Cursor variant type (preset key or custom ReactNode) */\n cursorType?: CursorVariant;\n /** Follow element content */\n followText?: React.ReactNode;\n /** Show follow element */\n showFollow?: boolean;\n /** Follow element alignment */\n align?: Align;\n /** Follow element side offset */\n sideOffset?: number;\n /** Follow element transition preset */\n transitionPreset?: TransitionPreset;\n /** Additional className for the container */\n className?: string;\n /** Additional style for the container */\n style?: React.CSSProperties;\n};\n\ntype UseCursorFollowType = {\n ref: React.RefObject<HTMLDivElement | null>;\n className: string;\n style: React.CSSProperties;\n \"data-cursor-container\": true;\n children: (children: React.ReactNode) => React.ReactElement;\n};\n\nfunction useCursorFollow(\n options: useCursorFollowOptions = {}\n): UseCursorFollowType {\n const {\n cursorType = \"default\",\n followText,\n showFollow,\n align = \"bottom-right\",\n sideOffset = 15,\n transitionPreset = \"normal\",\n className,\n style,\n } = options;\n\n const [cursorPos, setCursorPos] = React.useState({ x: 0, y: 0 });\n const [isActive, setIsActive] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const cursorRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!containerRef.current) return;\n\n const element = containerRef.current;\n if (getComputedStyle(element).position === \"static\") {\n element.style.position = \"relative\";\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = element.getBoundingClientRect();\n setCursorPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setIsActive(true);\n };\n const handleMouseLeave = () => setIsActive(false);\n\n element.addEventListener(\"mousemove\", handleMouseMove);\n element.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n element.removeEventListener(\"mousemove\", handleMouseMove);\n element.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n // Only hide system cursor if cursorType is not 'default'\n const shouldHideSystemCursor = cursorType !== \"default\";\n\n React.useEffect(() => {\n if (!containerRef.current || !isActive || !shouldHideSystemCursor) return;\n const element = containerRef.current;\n element.style.cursor = \"none\";\n return () => {\n element.style.cursor = \"default\";\n };\n }, [isActive, shouldHideSystemCursor]);\n\n // Render function for cursor elements\n const renderCursorElements = React.useCallback(() => {\n if (!isActive) return null;\n\n return (\n <CursorContext.Provider\n value={{ cursorPos, isActive, containerRef, cursorRef }}\n >\n <Cursor cursorType={cursorType} />\n {(showFollow ?? followText !== undefined) && (\n <CursorFollow\n followText={followText}\n align={align}\n sideOffset={sideOffset}\n transitionPreset={transitionPreset}\n />\n )}\n </CursorContext.Provider>\n );\n }, [\n isActive,\n cursorPos,\n cursorType,\n followText,\n showFollow,\n align,\n sideOffset,\n transitionPreset,\n ]);\n\n // Return props that can be spread on the container element\n return {\n ref: containerRef,\n className: cn(\"ds:relative\", className),\n style: { ...style },\n \"data-cursor-container\": true as const,\n children: (children: React.ReactNode) => (\n <>\n {children}\n {renderCursorElements()}\n </>\n ),\n };\n}\n\nexport {\n CursorProvider,\n Cursor,\n CursorFollow,\n useCursor,\n useCursorFollow,\n TRANSITION_PRESETS,\n type CursorContextType,\n type CursorProviderProps,\n type CursorProps,\n type CursorFollowProps,\n type CursorVariant,\n type CursorVariantKey,\n type Align,\n type useCursorFollowOptions,\n type TransitionPreset,\n};\n"],"names":["TRANSITION_PRESETS","CursorContext","React","useCursor","context","cursorVariants","jsx","CursorProvider","ref","children","cursorType","followText","showFollow","followAlign","followSideOffset","followTransition","props","cursorPos","setCursorPos","isActive","setIsActive","containerRef","cursorRef","parent","handleMouseMove","e","rect","handleMouseLeave","shouldShowCursor","shouldShowFollowElement","transitionConfig","Cursor","CursorFollow","className","style","x","useMotionValue","y","cursorContent","shouldHideSystemCursor","parentElement","AnimatePresence","motion","cn","sideOffset","align","transition","transitionPreset","cursorFollowRef","finalTransition","springX","useSpring","springY","calculateOffset","width","height","newOffset","offset","cursorRect","cursorWidth","cursorHeight","getFollowContent","useCursorFollow","options","element","renderCursorElements","jsxs","Fragment"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Marquee.js","sources":["../../../../src/components/Marquee/Marquee.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"Marquee\";\nconst CONTENT_NAME = \"MarqueeContent\";\n\ntype Side = \"left\" | \"right\" | \"top\" | \"bottom\";\ntype Orientation = \"horizontal\" | \"vertical\";\ntype Direction = \"ltr\" | \"rtl\";\n\ntype RootElement = React.ComponentRef<typeof MarqueeRoot>;\ntype ContentElement = React.ComponentRef<typeof MarqueeContent>;\n\ninterface Dimensions {\n width: number;\n height: number;\n}\n\ninterface ElementDimensions {\n rootSize: number;\n contentSize: number;\n}\n\nfunction createResizeObserverStore() {\n const listeners = new Set<() => void>();\n let observer: ResizeObserver | null = null;\n const elements = new Map<Element, Dimensions>();\n const refCounts = new Map<Element, number>();\n const isSupported = typeof ResizeObserver !== \"undefined\";\n let notificationScheduled = false;\n\n const snapshotCache = new WeakMap<\n Element,\n WeakMap<\n Element,\n { horizontal: ElementDimensions; vertical: ElementDimensions }\n >\n >();\n\n function notify() {\n if (notificationScheduled) return;\n notificationScheduled = true;\n queueMicrotask(() => {\n notificationScheduled = false;\n for (const callback of listeners) {\n callback();\n }\n });\n }\n\n function cleanup() {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n elements.clear();\n refCounts.clear();\n }\n\n function subscribe(callback: () => void) {\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) {\n cleanup();\n }\n };\n }\n\n function getSnapshot(\n rootElement: RootElement | null,\n contentElement: ContentElement | null,\n orientation: Orientation\n ): ElementDimensions | null {\n if (!rootElement || !contentElement) return null;\n\n const rootDims = elements.get(rootElement);\n const contentDims = elements.get(contentElement);\n\n if (!rootDims || !contentDims) return null;\n\n const rootSize =\n orientation === \"vertical\" ? rootDims.height : rootDims.width;\n const contentSize =\n orientation === \"vertical\" ? contentDims.height : contentDims.width;\n\n let rootCache = snapshotCache.get(rootElement);\n if (!rootCache) {\n rootCache = new WeakMap();\n snapshotCache.set(rootElement, rootCache);\n }\n\n let contentCache = rootCache.get(contentElement);\n if (!contentCache) {\n contentCache = {\n horizontal: { rootSize: -1, contentSize: -1 },\n vertical: { rootSize: -1, contentSize: -1 },\n };\n rootCache.set(contentElement, contentCache);\n }\n\n const cached = contentCache[orientation];\n if (cached.rootSize === rootSize && cached.contentSize === contentSize) {\n return cached;\n }\n\n const snapshot = { rootSize, contentSize };\n contentCache[orientation] = snapshot;\n return snapshot;\n }\n\n function observe(\n rootElement: RootElement | null,\n contentElement: Element | null\n ) {\n if (!isSupported || !rootElement || !contentElement) return;\n\n if (!observer) {\n observer = new ResizeObserver((entries) => {\n let hasChanged = false;\n\n for (const entry of entries) {\n const element = entry.target;\n const { width, height } = entry.contentRect;\n\n const currentData = elements.get(element);\n\n if (\n !currentData ||\n currentData.width !== width ||\n currentData.height !== height\n ) {\n elements.set(element, { width, height });\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n notify();\n }\n });\n }\n\n refCounts.set(rootElement, (refCounts.get(rootElement) ?? 0) + 1);\n refCounts.set(contentElement, (refCounts.get(contentElement) ?? 0) + 1);\n\n observer.observe(rootElement);\n observer.observe(contentElement);\n\n const rootRect = rootElement.getBoundingClientRect();\n const contentRect = contentElement.getBoundingClientRect();\n\n const rootData = { width: rootRect.width, height: rootRect.height };\n const contentData = {\n width: contentRect.width,\n height: contentRect.height,\n };\n\n elements.set(rootElement, rootData);\n elements.set(contentElement, contentData);\n\n if (\n rootData.width > 0 &&\n rootData.height > 0 &&\n contentData.width > 0 &&\n contentData.height > 0\n ) {\n notify();\n }\n }\n\n function unobserve(\n rootElement: RootElement | null,\n contentElement: Element | null\n ) {\n if (!observer || !rootElement || !contentElement) return;\n\n const rootCount = (refCounts.get(rootElement) ?? 1) - 1;\n const contentCount = (refCounts.get(contentElement) ?? 1) - 1;\n\n if (rootCount <= 0) {\n observer.unobserve(rootElement);\n elements.delete(rootElement);\n refCounts.delete(rootElement);\n } else {\n refCounts.set(rootElement, rootCount);\n }\n\n if (contentCount <= 0) {\n observer.unobserve(contentElement);\n elements.delete(contentElement);\n refCounts.delete(contentElement);\n } else {\n refCounts.set(contentElement, contentCount);\n }\n }\n\n return {\n subscribe,\n getSnapshot,\n observe,\n unobserve,\n };\n}\n\nconst resizeObserverStore = createResizeObserverStore();\n\nfunction useResizeObserverStore(\n rootRef: React.RefObject<RootElement | null>,\n contentRef: React.RefObject<ContentElement | null>,\n orientation: Orientation\n) {\n const onSubscribe = React.useCallback(\n (callback: () => void) => resizeObserverStore.subscribe(callback),\n []\n );\n\n const getSnapshot = React.useCallback(\n () =>\n resizeObserverStore.getSnapshot(\n rootRef.current,\n contentRef.current,\n orientation\n ),\n [rootRef, contentRef, orientation]\n );\n\n return React.useSyncExternalStore(onSubscribe, getSnapshot, getSnapshot);\n}\n\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\nfunction useDirection(dir?: Direction): Direction {\n const contextDir = React.useContext(DirectionContext);\n return dir ?? contextDir ?? \"ltr\";\n}\n\ninterface DivProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\ninterface MarqueeContextValue {\n side: Side;\n orientation: Orientation;\n dir: Direction;\n speed: number;\n loopCount: number;\n contentRef: React.RefObject<ContentElement | null>;\n rootRef: React.RefObject<RootElement | null>;\n autoFill: boolean;\n pauseOnHover: boolean;\n pauseOnKeyboard: boolean;\n reverse: boolean;\n paused: boolean;\n}\n\nconst MarqueeContext = React.createContext<MarqueeContextValue | null>(null);\n\nfunction useMarqueeContext(consumerName: string) {\n const context = React.useContext(MarqueeContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface MarqueeRootProps extends DivProps {\n side?: Side;\n dir?: Direction;\n speed?: number;\n delay?: number;\n loopCount?: number;\n gap?: string | number;\n autoFill?: boolean;\n pauseOnHover?: boolean;\n pauseOnKeyboard?: boolean;\n reverse?: boolean;\n}\n\nfunction MarqueeRoot(props: MarqueeRootProps) {\n const {\n side = \"left\",\n dir: dirProp,\n speed = 50,\n delay = 0,\n loopCount = 0,\n gap = \"1rem\",\n asChild,\n autoFill = false,\n pauseOnHover = false,\n pauseOnKeyboard = false,\n reverse = false,\n className,\n style: styleProp,\n ref,\n ...marqueeProps\n } = props;\n\n const orientation: Orientation =\n side === \"top\" || side === \"bottom\" ? \"vertical\" : \"horizontal\";\n\n const dir = useDirection(dirProp);\n\n const rootRef = React.useRef<RootElement>(null);\n const contentRef = React.useRef<ContentElement>(null);\n const composedRef = useComposedRefs(ref, rootRef);\n\n const [paused, setPaused] = React.useState(false);\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (pauseOnKeyboard && event.key === \" \") {\n event.preventDefault();\n setPaused((prev) => !prev);\n }\n },\n [pauseOnKeyboard]\n );\n\n const dimensions = useResizeObserverStore(rootRef, contentRef, orientation);\n\n const duration = React.useMemo(() => {\n const safeSpeed = Math.max(0.001, speed);\n\n if (!dimensions) {\n const defaultDistance = autoFill ? 1000 : 2000;\n return defaultDistance / safeSpeed;\n }\n\n const { rootSize, contentSize } = dimensions;\n\n if (autoFill) {\n const multiplier =\n contentSize < rootSize ? Math.ceil(rootSize / contentSize) : 1;\n return (contentSize * multiplier) / safeSpeed;\n } else {\n return contentSize < rootSize\n ? rootSize / safeSpeed\n : contentSize / safeSpeed;\n }\n }, [dimensions, speed, autoFill]);\n\n const style = React.useMemo<React.CSSProperties>(\n () => ({\n \"--marquee-duration\": `${duration}s`,\n \"--marquee-gap\": gap,\n \"--marquee-delay\": `${delay}s`,\n \"--marquee-loop-count\":\n loopCount === 0 || loopCount === Infinity\n ? \"infinite\"\n : loopCount.toString(),\n ...styleProp,\n }),\n [duration, gap, delay, loopCount, styleProp]\n );\n\n const contextValue = React.useMemo<MarqueeContextValue>(\n () => ({\n side,\n orientation,\n dir,\n speed,\n loopCount,\n contentRef,\n rootRef,\n autoFill,\n paused,\n pauseOnHover,\n pauseOnKeyboard,\n reverse,\n }),\n [\n side,\n orientation,\n dir,\n speed,\n loopCount,\n autoFill,\n paused,\n pauseOnHover,\n pauseOnKeyboard,\n reverse,\n ]\n );\n\n const MarqueePrimitive = asChild ? Slot : \"div\";\n\n return (\n <MarqueeContext.Provider value={contextValue}>\n <div data-slot=\"marquee-wrapper\" className=\"ds:grid\">\n <MarqueePrimitive\n role=\"marquee\"\n aria-live=\"off\"\n data-orientation={orientation}\n data-slot=\"marquee\"\n dir={dir}\n tabIndex={pauseOnKeyboard ? 0 : undefined}\n {...marqueeProps}\n ref={composedRef}\n className={cn(\n \"ds:relative ds:flex ds:overflow-hidden ds:motion-reduce:animate-none\",\n orientation === \"vertical\" && \"ds:h-full ds:flex-col\",\n orientation === \"horizontal\" && \"ds:w-full\",\n paused && \"ds:[&_*]:[animation-play-state:paused]\",\n pauseOnHover && \"ds:group\",\n pauseOnKeyboard &&\n \"ds:rounded-md ds:focus-visible:border-ring ds:focus-visible:outline-none ds:focus-visible:ring-[3px] ds:focus-visible:ring-ring/50\",\n className\n )}\n style={style}\n onKeyDown={pauseOnKeyboard ? onKeyDown : undefined}\n />\n </div>\n </MarqueeContext.Provider>\n );\n}\n\nconst marqueeContentVariants = cva(\n \"ds:flex ds:min-w-full ds:shrink-0 ds:gap-(--marquee-gap)\",\n {\n variants: {\n side: {\n left: \"ds:animate-marquee-left\",\n right: \"ds:animate-marquee-right\",\n top: \"ds:min-h-full ds:min-w-auto ds:animate-marquee-up ds:flex-col\",\n bottom: \"ds:min-h-full ds:min-w-auto ds:animate-marquee-down ds:flex-col\",\n },\n dir: {\n ltr: \"\",\n rtl: \"\",\n },\n pauseOnHover: {\n true: \"ds:group-hover:[animation-play-state:paused]\",\n false: \"\",\n },\n reverse: {\n true: \"ds:[animation-direction:reverse]\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n side: \"left\",\n dir: \"rtl\",\n className: \"ds:animate-marquee-left-rtl\",\n },\n {\n side: \"right\",\n dir: \"rtl\",\n className: \"ds:animate-marquee-right-rtl\",\n },\n ],\n defaultVariants: {\n side: \"left\",\n dir: \"ltr\",\n pauseOnHover: false,\n reverse: false,\n },\n }\n);\n\nfunction MarqueeContent(props: DivProps) {\n const {\n className,\n asChild,\n ref,\n children,\n style: styleProp,\n ...contentProps\n } = props;\n\n const context = useMarqueeContext(CONTENT_NAME);\n const composedRef = useComposedRefs(ref, context.contentRef);\n\n const isVertical = context.orientation === \"vertical\";\n const isRtl = context.dir === \"rtl\";\n\n const dimensions = useResizeObserverStore(\n context.rootRef,\n context.contentRef,\n context.orientation\n );\n\n React.useEffect(() => {\n if (context.rootRef.current && context.contentRef.current) {\n resizeObserverStore.observe(\n context.rootRef.current,\n context.contentRef.current\n );\n\n return () => {\n resizeObserverStore.unobserve(\n context.rootRef.current,\n context.contentRef.current\n );\n };\n }\n }, [context.rootRef, context.contentRef]);\n\n const multiplier = React.useMemo(() => {\n if (!context.autoFill || !dimensions) return 1;\n\n const { rootSize, contentSize } = dimensions;\n if (contentSize === 0) return 1;\n\n return contentSize < rootSize ? Math.ceil(rootSize / contentSize) : 1;\n }, [context.autoFill, dimensions]);\n\n const onMultipliedChildrenRender = React.useCallback(\n (count: number) => {\n return Array.from({ length: Math.max(0, count) }).map((_, i) => (\n <React.Fragment key={i}>{children}</React.Fragment>\n ));\n },\n [children]\n );\n\n const style = React.useMemo(\n () => ({\n ...styleProp,\n animationDuration: \"var(--marquee-duration)\",\n animationDelay: \"var(--marquee-delay)\",\n animationIterationCount: \"var(--marquee-loop-count)\",\n animationDirection: context.reverse ? \"reverse\" : \"normal\",\n }),\n [styleProp, context.reverse]\n );\n\n const ContentPrimitive = asChild ? Slot : \"div\";\n\n return (\n <>\n <ContentPrimitive\n data-orientation={context.orientation}\n data-slot=\"marquee-content\"\n {...contentProps}\n style={style}\n className={cn(\n marqueeContentVariants({\n side: context.side,\n dir: context.dir,\n pauseOnHover: context.pauseOnHover,\n reverse: context.reverse,\n className,\n }),\n isVertical && \"ds:flex-col\",\n isVertical\n ? \"ds:mb-(--marquee-gap)\"\n : isRtl\n ? \"ds:ml-(--marquee-gap)\"\n : \"ds:mr-(--marquee-gap)\"\n )}\n >\n <div\n ref={composedRef}\n className={cn(\n \"ds:flex ds:shrink-0 ds:gap-(--marquee-gap)\",\n isVertical && \"ds:flex-col\"\n )}\n >\n {children}\n </div>\n {onMultipliedChildrenRender(multiplier - 1)}\n </ContentPrimitive>\n <ContentPrimitive\n role=\"presentation\"\n aria-hidden=\"true\"\n {...contentProps}\n style={style}\n className={cn(\n marqueeContentVariants({\n side: context.side,\n dir: context.dir,\n pauseOnHover: context.pauseOnHover,\n reverse: context.reverse,\n className,\n }),\n isVertical && \"ds:flex-col\"\n )}\n >\n {onMultipliedChildrenRender(multiplier)}\n </ContentPrimitive>\n </>\n );\n}\n\nfunction MarqueeItem(props: DivProps) {\n const { className, asChild, ...itemProps } = props;\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ItemPrimitive\n data-slot=\"marquee-item\"\n {...itemProps}\n className={cn(\"ds:shrink-0\", className)}\n />\n );\n}\n\nconst marqueeEdgeVariants = cva(\"ds:pointer-events-none ds:absolute ds:z-10\", {\n variants: {\n side: {\n left: \"ds:top-0 ds:left-0 ds:h-full ds:bg-gradient-to-r ds:from-background ds:to-transparent\",\n right:\n \"ds:top-0 ds:right-0 ds:h-full ds:bg-gradient-to-l ds:from-background ds:to-transparent\",\n top: \"ds:top-0 ds:left-0 ds:w-full ds:bg-gradient-to-b ds:from-background ds:to-transparent\",\n bottom:\n \"ds:bottom-0 ds:left-0 ds:w-full ds:bg-gradient-to-t ds:from-background ds:to-transparent\",\n },\n size: {\n default: \"\",\n sm: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n side: [\"left\", \"right\"],\n size: \"default\",\n className: \"ds:w-1/4\",\n },\n {\n side: [\"left\", \"right\"],\n size: \"sm\",\n className: \"ds:w-1/6\",\n },\n {\n side: [\"left\", \"right\"],\n size: \"lg\",\n className: \"ds:w-1/3\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"default\",\n className: \"ds:h-1/4\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"sm\",\n className: \"ds:h-1/6\",\n },\n {\n side: [\"top\", \"bottom\"],\n size: \"lg\",\n className: \"ds:h-1/3\",\n },\n ],\n defaultVariants: {\n size: \"default\",\n },\n});\n\ninterface MarqueeEdgeProps\n extends VariantProps<typeof marqueeEdgeVariants>,\n DivProps {}\n\nfunction MarqueeEdge(props: MarqueeEdgeProps) {\n const { side, size, className, asChild, ...edgeProps } = props;\n\n const EdgePrimitive = asChild ? Slot : \"div\";\n\n return (\n <EdgePrimitive\n data-size={size}\n data-slot=\"marquee-edge\"\n {...edgeProps}\n className={cn(marqueeEdgeVariants({ side, size, className }))}\n />\n );\n}\n\nexport {\n MarqueeRoot as Root,\n MarqueeContent as Content,\n MarqueeItem as Item,\n MarqueeEdge as Edge,\n //\n MarqueeRoot as Marquee,\n MarqueeContent,\n MarqueeItem,\n MarqueeEdge,\n // types\n type MarqueeRootProps,\n type MarqueeEdgeProps,\n};\n"],"names":["ROOT_NAME","CONTENT_NAME","createResizeObserverStore","listeners","observer","elements","refCounts","isSupported","notificationScheduled","snapshotCache","notify","callback","cleanup","subscribe","getSnapshot","rootElement","contentElement","orientation","rootDims","contentDims","rootSize","contentSize","rootCache","contentCache","cached","snapshot","observe","entries","hasChanged","entry","element","width","height","currentData","rootRect","contentRect","rootData","contentData","unobserve","rootCount","contentCount","resizeObserverStore","useResizeObserverStore","rootRef","contentRef","onSubscribe","React","DirectionContext","useDirection","dir","contextDir","MarqueeContext","useMarqueeContext","consumerName","context","MarqueeRoot","props","side","dirProp","speed","delay","loopCount","gap","asChild","autoFill","pauseOnHover","pauseOnKeyboard","reverse","className","styleProp","ref","marqueeProps","composedRef","useComposedRefs","paused","setPaused","onKeyDown","event","prev","dimensions","duration","safeSpeed","multiplier","style","contextValue","MarqueePrimitive","Slot","jsx","cn","marqueeContentVariants","cva","MarqueeContent","children","contentProps","isVertical","isRtl","onMultipliedChildrenRender","count","_","i","ContentPrimitive","jsxs","Fragment","MarqueeItem","itemProps","marqueeEdgeVariants","MarqueeEdge","size","edgeProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarqueeWrapper.js","sources":["../../../../src/components/Marquee/MarqueeWrapper.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Root, Content, Item, Edge } from \"./Marquee\";\nimport type { MarqueeRootProps } from \"./Marquee\";\n\ninterface MarqueeWrapperProps extends MarqueeRootProps {\n items?: React.ReactNode[];\n fade?: boolean;\n}\n\nfunction MarqueeWrapper({\n items,\n fade,\n children,\n side = \"left\",\n ...props\n}: MarqueeWrapperProps) {\n const hasItems = items && items.length > 0;\n const hasChildren = React.Children.count(children) > 0;\n\n if (hasItems && hasChildren) {\n console.warn(\n \"Marquee: Both 'items' and 'children' are provided. 'items' will be used.\"\n );\n }\n\n const isVertical = side === \"top\" || side === \"bottom\";\n const fadeSides = isVertical ? [\"top\", \"bottom\"] : [\"left\", \"right\"];\n\n if (hasItems) {\n return (\n <Root {...props} side={side}>\n <Content>\n {items.map((item, index) => (\n <Item key={index}>{item}</Item>\n ))}\n </Content>\n {fade && (\n <Edge side={fadeSides[0] as \"left\" | \"right\" | \"top\" | \"bottom\"} />\n )}\n {fade && (\n <Edge side={fadeSides[1] as \"left\" | \"right\" | \"top\" | \"bottom\"} />\n )}\n </Root>\n );\n }\n\n return (\n <Root {...props} side={side}>\n {children}\n </Root>\n );\n}\n\nexport { MarqueeWrapper };\nexport type { MarqueeWrapperProps };\n"],"names":["MarqueeWrapper","items","fade","children","side","props","hasItems","hasChildren","React","fadeSides","jsxs","Root","jsx","Content","item","index","Item","Edge"],"mappings":";;;AAWA,SAASA,EAAe;AAAA,EACtB,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GAAwB;AACtB,QAAMC,IAAWL,KAASA,EAAM,SAAS,GACnCM,IAAcC,EAAM,SAAS,MAAML,CAAQ,IAAI;AAErD,EAAIG,KAAYC,KACd,QAAQ;AAAA,IACN;AAAA,EAAA;AAKJ,QAAME,IADaL,MAAS,SAASA,MAAS,WACf,CAAC,OAAO,QAAQ,IAAI,CAAC,QAAQ,OAAO;AAEnE,SAAIE,IAEA,gBAAAI,EAACC,GAAA,EAAM,GAAGN,GAAO,MAAAD,GACf,UAAA;AAAA,IAAA,gBAAAQ,EAACC,GAAA,EACE,UAAAZ,EAAM,IAAI,CAACa,GAAMC,MAChB,gBAAAH,EAACI,GAAA,EAAkB,UAAAF,EAAA,GAARC,CAAa,CACzB,GACH;AAAA,IACCb,KACC,gBAAAU,EAACK,GAAA,EAAK,MAAMR,EAAU,CAAC,GAA0C;AAAA,IAElEP,KACC,gBAAAU,EAACK,GAAA,EAAK,MAAMR,EAAU,CAAC,EAAA,CAA0C;AAAA,EAAA,GAErE,IAKF,gBAAAG,EAACD,GAAA,EAAM,GAAGN,GAAO,MAAAD,GACd,UAAAD,GACH;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Marquee/index.ts"],"sourcesContent":["import {\n Content,\n Item,\n Edge,\n //\n MarqueeContent,\n MarqueeItem,\n MarqueeEdge,\n // types\n type MarqueeRootProps,\n type MarqueeEdgeProps,\n} from \"./Marquee\";\nimport { MarqueeWrapper } from \"./MarqueeWrapper\";\n\nconst Marquee = Object.assign(MarqueeWrapper, {\n Content,\n Item,\n Edge,\n //\n MarqueeContent,\n MarqueeItem,\n MarqueeEdge,\n});\n\nexport { Marquee };\nexport type { MarqueeRootProps, MarqueeEdgeProps };\n"],"names":["Marquee","MarqueeWrapper","Content","Item","Edge","MarqueeContent","MarqueeItem","MarqueeEdge"],"mappings":";;AAcA,MAAMA,IAAU,OAAO,OAAOC,GAAgB;AAAA,EAAA,SAC5CC;AAAAA,EAAA,MACAC;AAAAA,EAAA,MACAC;AAAAA;AAAAA,EAEA,gBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AACF,CAAC;"}