@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":"Masonry.js","sources":["../../../../src/components/Masonry/Masonry.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport * as React from \"react\";\n\nconst NODE_COLOR = {\n RED: 0,\n BLACK: 1,\n SENTINEL: 2,\n} as const;\n\nconst NODE_OPERATION = {\n REMOVE: 0,\n PRESERVE: 1,\n} as const;\n\ntype NodeColor = (typeof NODE_COLOR)[keyof typeof NODE_COLOR];\ntype NodeOperation = (typeof NODE_OPERATION)[keyof typeof NODE_OPERATION];\n\ninterface ListNode {\n index: number;\n high: number;\n next: ListNode | null;\n}\n\ninterface TreeNode {\n max: number;\n low: number;\n high: number;\n color: NodeColor;\n parent: TreeNode;\n right: TreeNode;\n left: TreeNode;\n list: ListNode;\n}\n\ninterface Tree {\n root: TreeNode;\n size: number;\n}\n\nfunction addInterval(treeNode: TreeNode, high: number, index: number): boolean {\n let node: ListNode | null = treeNode.list;\n let prevNode: ListNode | undefined;\n\n while (node) {\n if (node.index === index) return false;\n if (high > node.high) break;\n prevNode = node;\n node = node.next;\n }\n\n if (!prevNode) treeNode.list = { index, high, next: node };\n if (prevNode) prevNode.next = { index, high, next: prevNode.next };\n\n return true;\n}\n\nfunction removeInterval(\n treeNode: TreeNode,\n index: number\n): NodeOperation | undefined {\n let node: ListNode | null = treeNode.list;\n if (node.index === index) {\n if (node.next === null) return NODE_OPERATION.REMOVE;\n treeNode.list = node.next;\n return NODE_OPERATION.PRESERVE;\n }\n\n let prevNode: ListNode | undefined = node;\n node = node.next;\n\n while (node !== null) {\n if (node.index === index) {\n prevNode.next = node.next;\n return NODE_OPERATION.PRESERVE;\n }\n prevNode = node;\n node = node.next;\n }\n}\n\nconst SENTINEL_NODE: TreeNode = {\n low: 0,\n max: 0,\n high: 0,\n color: NODE_COLOR.SENTINEL,\n parent: undefined as unknown as TreeNode,\n right: undefined as unknown as TreeNode,\n left: undefined as unknown as TreeNode,\n list: undefined as unknown as ListNode,\n};\n\nSENTINEL_NODE.parent = SENTINEL_NODE;\nSENTINEL_NODE.left = SENTINEL_NODE;\nSENTINEL_NODE.right = SENTINEL_NODE;\n\nfunction updateMax(node: TreeNode) {\n const max = node.high;\n if (node.left === SENTINEL_NODE && node.right === SENTINEL_NODE)\n node.max = max;\n else if (node.left === SENTINEL_NODE)\n node.max = Math.max(node.right.max, max);\n else if (node.right === SENTINEL_NODE)\n node.max = Math.max(node.left.max, max);\n else node.max = Math.max(Math.max(node.left.max, node.right.max), max);\n}\n\nfunction updateMaxUp(node: TreeNode) {\n let x = node;\n\n while (x.parent !== SENTINEL_NODE) {\n updateMax(x.parent);\n x = x.parent;\n }\n}\n\nfunction rotateLeft(tree: Tree, x: TreeNode) {\n if (x.right === SENTINEL_NODE) return;\n const y = x.right;\n x.right = y.left;\n if (y.left !== SENTINEL_NODE) y.left.parent = x;\n y.parent = x.parent;\n\n if (x.parent === SENTINEL_NODE) tree.root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n\n y.left = x;\n x.parent = y;\n\n updateMax(x);\n updateMax(y);\n}\n\nfunction rotateRight(tree: Tree, x: TreeNode) {\n if (x.left === SENTINEL_NODE) return;\n const y = x.left;\n x.left = y.right;\n if (y.right !== SENTINEL_NODE) y.right.parent = x;\n y.parent = x.parent;\n\n if (x.parent === SENTINEL_NODE) tree.root = y;\n else if (x === x.parent.right) x.parent.right = y;\n else x.parent.left = y;\n\n y.right = x;\n x.parent = y;\n\n updateMax(x);\n updateMax(y);\n}\n\nfunction replaceNode(tree: Tree, x: TreeNode, y: TreeNode) {\n if (x.parent === SENTINEL_NODE) tree.root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n y.parent = x.parent;\n}\n\nfunction fixRemove(tree: Tree, node: TreeNode) {\n let x = node;\n let w: TreeNode;\n\n while (x !== SENTINEL_NODE && x.color === NODE_COLOR.BLACK) {\n if (x === x.parent.left) {\n w = x.parent.right;\n\n if (w.color === NODE_COLOR.RED) {\n w.color = NODE_COLOR.BLACK;\n x.parent.color = NODE_COLOR.RED;\n rotateLeft(tree, x.parent);\n w = x.parent.right;\n }\n\n if (\n w.left.color === NODE_COLOR.BLACK &&\n w.right.color === NODE_COLOR.BLACK\n ) {\n w.color = NODE_COLOR.RED;\n x = x.parent;\n } else {\n if (w.right.color === NODE_COLOR.BLACK) {\n w.left.color = NODE_COLOR.BLACK;\n w.color = NODE_COLOR.RED;\n rotateRight(tree, w);\n w = x.parent.right;\n }\n\n w.color = x.parent.color;\n x.parent.color = NODE_COLOR.BLACK;\n w.right.color = NODE_COLOR.BLACK;\n rotateLeft(tree, x.parent);\n x = tree.root;\n }\n } else {\n w = x.parent.left;\n\n if (w.color === NODE_COLOR.RED) {\n w.color = NODE_COLOR.BLACK;\n x.parent.color = NODE_COLOR.RED;\n rotateRight(tree, x.parent);\n w = x.parent.left;\n }\n\n if (\n w.right.color === NODE_COLOR.BLACK &&\n w.left.color === NODE_COLOR.BLACK\n ) {\n w.color = NODE_COLOR.RED;\n x = x.parent;\n } else {\n if (w.left.color === NODE_COLOR.BLACK) {\n w.right.color = NODE_COLOR.BLACK;\n w.color = NODE_COLOR.RED;\n rotateLeft(tree, w);\n w = x.parent.left;\n }\n\n w.color = x.parent.color;\n x.parent.color = NODE_COLOR.BLACK;\n w.left.color = NODE_COLOR.BLACK;\n rotateRight(tree, x.parent);\n x = tree.root;\n }\n }\n }\n\n x.color = NODE_COLOR.BLACK;\n}\n\nfunction minimumTree(node: TreeNode) {\n let current = node;\n while (current.left !== SENTINEL_NODE) {\n current = current.left;\n }\n return current;\n}\n\nfunction fixInsert(tree: Tree, node: TreeNode) {\n let current = node;\n let y: TreeNode;\n\n while (current.parent.color === NODE_COLOR.RED) {\n if (current.parent === current.parent.parent.left) {\n y = current.parent.parent.right;\n\n if (y.color === NODE_COLOR.RED) {\n current.parent.color = NODE_COLOR.BLACK;\n y.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n current = current.parent.parent;\n } else {\n if (current === current.parent.right) {\n current = current.parent;\n rotateLeft(tree, current);\n }\n\n current.parent.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n rotateRight(tree, current.parent.parent);\n }\n } else {\n y = current.parent.parent.left;\n\n if (y.color === NODE_COLOR.RED) {\n current.parent.color = NODE_COLOR.BLACK;\n y.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n current = current.parent.parent;\n } else {\n if (current === current.parent.left) {\n current = current.parent;\n rotateRight(tree, current);\n }\n\n current.parent.color = NODE_COLOR.BLACK;\n current.parent.parent.color = NODE_COLOR.RED;\n rotateLeft(tree, current.parent.parent);\n }\n }\n }\n tree.root.color = NODE_COLOR.BLACK;\n}\n\ninterface IntervalTree {\n insert(low: number, high: number, index: number): void;\n remove(index: number): void;\n search(\n low: number,\n high: number,\n onCallback: (index: number, low: number) => void\n ): void;\n size: number;\n}\n\nfunction createIntervalTree(): IntervalTree {\n const tree: Tree = {\n root: SENTINEL_NODE,\n size: 0,\n };\n\n const indexMap: Record<number, TreeNode> = {};\n\n return {\n insert(low, high, index) {\n let x: TreeNode = tree.root;\n let y: TreeNode = SENTINEL_NODE;\n\n while (x !== SENTINEL_NODE) {\n y = x;\n if (low === y.low) break;\n if (low < x.low) x = x.left;\n else x = x.right;\n }\n\n if (low === y.low && y !== SENTINEL_NODE) {\n if (!addInterval(y, high, index)) return;\n y.high = Math.max(y.high, high);\n updateMax(y);\n updateMaxUp(y);\n indexMap[index] = y;\n tree.size++;\n return;\n }\n\n const z: TreeNode = {\n low,\n high,\n max: high,\n color: NODE_COLOR.RED,\n parent: y,\n left: SENTINEL_NODE,\n right: SENTINEL_NODE,\n list: { index, high, next: null },\n };\n\n if (y === SENTINEL_NODE) {\n tree.root = z;\n } else {\n if (z.low < y.low) y.left = z;\n else y.right = z;\n updateMaxUp(z);\n }\n\n fixInsert(tree, z);\n indexMap[index] = z;\n tree.size++;\n },\n\n remove(index) {\n const z = indexMap[index];\n if (z === void 0) return;\n delete indexMap[index];\n\n const intervalResult = removeInterval(z, index);\n if (intervalResult === void 0) return;\n if (intervalResult === NODE_OPERATION.PRESERVE) {\n z.high = z.list.high;\n updateMax(z);\n updateMaxUp(z);\n tree.size--;\n return;\n }\n\n let y = z;\n let originalYColor = y.color;\n let x: TreeNode;\n\n if (z.left === SENTINEL_NODE) {\n x = z.right;\n replaceNode(tree, z, z.right);\n } else if (z.right === SENTINEL_NODE) {\n x = z.left;\n replaceNode(tree, z, z.left);\n } else {\n y = minimumTree(z.right);\n originalYColor = y.color;\n x = y.right;\n\n if (y.parent === z) {\n x.parent = y;\n } else {\n replaceNode(tree, y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n\n replaceNode(tree, z, y);\n y.left = z.left;\n y.left.parent = y;\n y.color = z.color;\n }\n\n updateMax(x);\n updateMaxUp(x);\n\n if (originalYColor === NODE_COLOR.BLACK) fixRemove(tree, x);\n tree.size--;\n },\n\n search(low, high, onCallback) {\n const stack = [tree.root];\n while (stack.length !== 0) {\n const node = stack.pop();\n if (!node) continue;\n if (node === SENTINEL_NODE || low > node.max) continue;\n if (node.left !== SENTINEL_NODE) stack.push(node.left);\n if (node.right !== SENTINEL_NODE) stack.push(node.right);\n if (node.low <= high && node.high >= low) {\n let curr: ListNode | null = node.list;\n while (curr !== null) {\n if (curr.high >= low) onCallback(curr.index, node.low);\n curr = curr.next;\n }\n }\n }\n },\n\n get size() {\n return tree.size;\n },\n };\n}\n\ntype CacheKey = string | number | symbol;\ntype CacheConstructor = (new () => Cache) | Record<CacheKey, unknown>;\n\ninterface Cache<K = CacheKey, V = unknown> {\n set: (k: K, v: V) => V;\n get: (k: K) => V | undefined;\n}\n\nfunction onDeepMemo<T extends unknown[], U>(\n constructors: CacheConstructor[],\n fn: (...args: T) => U\n): (...args: T) => U {\n if (!constructors.length || !constructors[0]) {\n throw new Error(\"At least one constructor is required\");\n }\n\n function createCache(obj: CacheConstructor): Cache {\n let cache: Cache;\n if (typeof obj === \"function\") {\n try {\n cache = new (obj as new () => Cache)();\n } catch (_err) {\n cache = new Map<CacheKey, unknown>();\n }\n } else {\n cache = obj as unknown as Cache;\n }\n return {\n set(k: CacheKey, v: unknown): unknown {\n cache.set(k, v);\n return v;\n },\n get(k: CacheKey): unknown | undefined {\n return cache.get(k);\n },\n };\n }\n\n const depth = constructors.length;\n const baseCache = createCache(constructors[0]);\n\n let base: Cache | undefined;\n let map: Cache | undefined;\n let node: Cache;\n let i: number;\n const one = depth === 1;\n\n function get(args: unknown[]): unknown {\n if (depth < 3) {\n const key = args[0] as CacheKey;\n base = baseCache.get(key) as Cache | undefined;\n return one ? base : base?.get(args[1] as CacheKey);\n }\n\n node = baseCache;\n for (i = 0; i < depth; i++) {\n const next = node.get(args[i] as CacheKey);\n if (!next) return undefined;\n node = next as Cache;\n }\n return node;\n }\n\n function set(args: unknown[], value: unknown): unknown {\n if (depth < 3) {\n if (one) {\n baseCache.set(args[0] as CacheKey, value);\n } else {\n base = baseCache.get(args[0] as CacheKey) as Cache | undefined;\n if (!base) {\n if (!constructors[1]) {\n throw new Error(\n \"Second constructor is required for non-single depth cache\"\n );\n }\n map = createCache(constructors[1]);\n map.set(args[1] as CacheKey, value);\n baseCache.set(args[0] as CacheKey, map);\n } else {\n base.set(args[1] as CacheKey, value);\n }\n }\n return value;\n }\n\n node = baseCache;\n for (i = 0; i < depth - 1; i++) {\n map = node.get(args[i] as CacheKey) as Cache | undefined;\n if (!map) {\n const nextConstructor = constructors[i + 1];\n if (!nextConstructor) {\n throw new Error(`Constructor at index ${i + 1} is required`);\n }\n map = createCache(nextConstructor);\n node.set(args[i] as CacheKey, map);\n node = map;\n } else {\n node = map;\n }\n }\n node.set(args[depth - 1] as CacheKey, value);\n return value;\n }\n\n return (...args: T): U => {\n const cached = get(args);\n if (cached === undefined) {\n return set(args, fn(...args)) as U;\n }\n return cached as U;\n };\n}\n\nconst COLUMN_WIDTH = 200;\nconst GAP = 0;\nconst ITEM_HEIGHT = 300;\nconst OVERSCAN = 2;\nconst SCROLL_FPS = 12;\nconst DEBOUNCE_DELAY = 300;\n\ninterface Positioner {\n columnCount: number;\n columnWidth: number;\n set: (index: number, height: number) => void;\n get: (index: number) => PositionerItem | undefined;\n update: (updates: number[]) => void;\n range: (\n low: number,\n high: number,\n onItemRender: (index: number, left: number, top: number) => void\n ) => void;\n size: () => number;\n estimateHeight: (itemCount: number, defaultItemHeight: number) => number;\n shortestColumn: () => number;\n all: () => PositionerItem[];\n}\n\ninterface PositionerItem {\n top: number;\n left: number;\n height: number;\n columnIndex: number;\n}\n\ninterface UsePositionerOptions {\n width: number;\n columnWidth?: number;\n columnGap?: number;\n rowGap?: number;\n columnCount?: number;\n maxColumnCount?: number;\n linear?: boolean;\n}\n\nfunction usePositioner(\n {\n width,\n columnWidth = COLUMN_WIDTH,\n columnGap = GAP,\n rowGap,\n columnCount,\n maxColumnCount,\n linear = false,\n }: UsePositionerOptions,\n deps: React.DependencyList = []\n): Positioner {\n const initPositioner = React.useCallback((): Positioner => {\n function binarySearch(a: number[], y: number): number {\n let l = 0;\n let h = a.length - 1;\n\n while (l <= h) {\n const m = (l + h) >>> 1;\n const x = a[m];\n if (x === y) return m;\n if (x === undefined || x <= y) l = m + 1;\n else h = m - 1;\n }\n\n return -1;\n }\n\n const computedColumnCount =\n columnCount ||\n Math.min(\n Math.floor((width + columnGap) / (columnWidth + columnGap)),\n maxColumnCount || Number.POSITIVE_INFINITY\n ) ||\n 1;\n const computedColumnWidth = Math.floor(\n (width - columnGap * (computedColumnCount - 1)) / computedColumnCount\n );\n\n const intervalTree = createIntervalTree();\n const columnHeights: number[] = new Array(computedColumnCount).fill(0);\n const items: (PositionerItem | undefined)[] = [];\n const columnItems: number[][] = new Array(computedColumnCount)\n .fill(0)\n .map(() => []);\n\n for (let i = 0; i < computedColumnCount; i++) {\n columnHeights[i] = 0;\n columnItems[i] = [];\n }\n\n return {\n columnCount: computedColumnCount,\n columnWidth: computedColumnWidth,\n set: (index: number, height = 0) => {\n let columnIndex = 0;\n\n if (linear) {\n const preferredColumn = index % computedColumnCount;\n\n let shortestHeight = columnHeights[0] ?? 0;\n let tallestHeight = shortestHeight;\n let shortestIndex = 0;\n\n for (let i = 0; i < columnHeights.length; i++) {\n const currentHeight = columnHeights[i] ?? 0;\n if (currentHeight < shortestHeight) {\n shortestHeight = currentHeight;\n shortestIndex = i;\n }\n if (currentHeight > tallestHeight) {\n tallestHeight = currentHeight;\n }\n }\n\n const preferredHeight =\n (columnHeights[preferredColumn] ?? 0) + height;\n\n const maxAllowedHeight = shortestHeight + height * 2.5;\n columnIndex =\n preferredHeight <= maxAllowedHeight\n ? preferredColumn\n : shortestIndex;\n } else {\n for (let i = 1; i < columnHeights.length; i++) {\n const currentHeight = columnHeights[i];\n const shortestHeight = columnHeights[columnIndex];\n if (\n currentHeight !== undefined &&\n shortestHeight !== undefined &&\n currentHeight < shortestHeight\n ) {\n columnIndex = i;\n }\n }\n }\n\n const columnHeight = columnHeights[columnIndex];\n if (columnHeight === undefined) return;\n\n const top = columnHeight;\n columnHeights[columnIndex] = top + height + (rowGap ?? columnGap);\n\n const columnItemsList = columnItems[columnIndex];\n if (!columnItemsList) return;\n columnItemsList.push(index);\n\n items[index] = {\n left: columnIndex * (computedColumnWidth + columnGap),\n top,\n height,\n columnIndex,\n };\n intervalTree.insert(top, top + height, index);\n },\n get: (index: number) => items[index],\n update: (updates: number[]) => {\n const columns: (number | undefined)[] = new Array(computedColumnCount);\n let i = 0;\n let j = 0;\n\n for (; i < updates.length - 1; i++) {\n const currentIndex = updates[i];\n if (typeof currentIndex !== \"number\") continue;\n\n const item = items[currentIndex];\n if (!item) continue;\n\n const nextHeight = updates[++i];\n if (typeof nextHeight !== \"number\") continue;\n\n item.height = nextHeight;\n intervalTree.remove(currentIndex);\n intervalTree.insert(item.top, item.top + item.height, currentIndex);\n columns[item.columnIndex] =\n columns[item.columnIndex] === void 0\n ? currentIndex\n : Math.min(\n currentIndex,\n columns[item.columnIndex] ?? currentIndex\n );\n }\n\n for (i = 0; i < columns.length; i++) {\n const currentColumn = columns[i];\n if (currentColumn === void 0) continue;\n\n const itemsInColumn = columnItems[i];\n if (!itemsInColumn) continue;\n\n const startIndex = binarySearch(itemsInColumn, currentColumn);\n if (startIndex === -1) continue;\n\n const currentItemIndex = itemsInColumn[startIndex];\n if (typeof currentItemIndex !== \"number\") continue;\n\n const startItem = items[currentItemIndex];\n if (!startItem) continue;\n\n const currentHeight = columnHeights[i];\n if (typeof currentHeight !== \"number\") continue;\n\n columnHeights[i] =\n startItem.top + startItem.height + (rowGap ?? columnGap);\n\n for (j = startIndex + 1; j < itemsInColumn.length; j++) {\n const currentIndex = itemsInColumn[j];\n if (typeof currentIndex !== \"number\") continue;\n\n const item = items[currentIndex];\n if (!item) continue;\n\n const columnHeight = columnHeights[i];\n if (typeof columnHeight !== \"number\") continue;\n\n item.top = columnHeight;\n columnHeights[i] = item.top + item.height + (rowGap ?? columnGap);\n intervalTree.remove(currentIndex);\n intervalTree.insert(item.top, item.top + item.height, currentIndex);\n }\n }\n },\n range: (low, high, onItemRender) =>\n intervalTree.search(low, high, (index: number, top: number) => {\n const item = items[index];\n if (!item) return;\n onItemRender(index, item.left, top);\n }),\n estimateHeight: (itemCount, defaultItemHeight): number => {\n const tallestColumn = Math.max(0, Math.max.apply(null, columnHeights));\n\n return itemCount === intervalTree.size\n ? tallestColumn\n : tallestColumn +\n Math.ceil((itemCount - intervalTree.size) / computedColumnCount) *\n defaultItemHeight;\n },\n shortestColumn: () => {\n if (columnHeights.length > 1)\n return Math.min.apply(null, columnHeights);\n return columnHeights[0] ?? 0;\n },\n size(): number {\n return intervalTree.size;\n },\n all(): PositionerItem[] {\n return items.filter(Boolean) as PositionerItem[];\n },\n };\n }, [\n width,\n columnWidth,\n columnGap,\n rowGap,\n columnCount,\n maxColumnCount,\n linear,\n ]);\n\n const positionerRef = React.useRef<Positioner | null>(null);\n if (positionerRef.current === null) positionerRef.current = initPositioner();\n\n const prevDepsRef = React.useRef(deps);\n const opts = [\n width,\n columnWidth,\n columnGap,\n rowGap,\n columnCount,\n maxColumnCount,\n linear,\n ];\n const prevOptsRef = React.useRef(opts);\n const optsChanged = !opts.every((item, i) => prevOptsRef.current[i] === item);\n\n if (\n optsChanged ||\n !deps.every((item, i) => prevDepsRef.current[i] === item)\n ) {\n const prevPositioner = positionerRef.current;\n const positioner = initPositioner();\n prevDepsRef.current = deps;\n prevOptsRef.current = opts;\n\n if (optsChanged) {\n const cacheSize = prevPositioner.size();\n for (let index = 0; index < cacheSize; index++) {\n const pos = prevPositioner.get(index);\n positioner.set(index, pos !== void 0 ? pos.height : 0);\n }\n }\n\n positionerRef.current = positioner;\n }\n\n return positionerRef.current;\n}\n\ninterface DebouncedWindowSizeOptions {\n containerRef: React.RefObject<RootElement | null>;\n defaultWidth?: number;\n defaultHeight?: number;\n delayMs?: number;\n}\n\nfunction useDebouncedWindowSize(options: DebouncedWindowSizeOptions) {\n const {\n containerRef,\n defaultWidth = 0,\n defaultHeight = 0,\n delayMs = DEBOUNCE_DELAY,\n } = options;\n\n const getDocumentSize = React.useCallback(() => {\n if (typeof document === \"undefined\") {\n return { width: defaultWidth, height: defaultHeight };\n }\n return {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight,\n };\n }, [defaultWidth, defaultHeight]);\n\n const [size, setSize] = React.useState(getDocumentSize());\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const setDebouncedSize = React.useCallback(\n (value: { width: number; height: number }) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setSize(value);\n }, delayMs);\n },\n [delayMs]\n );\n\n React.useEffect(() => {\n function onResize() {\n if (containerRef.current) {\n setDebouncedSize({\n width: containerRef.current.offsetWidth,\n height: document.documentElement.clientHeight,\n });\n } else {\n setDebouncedSize(getDocumentSize());\n }\n }\n\n window?.addEventListener(\"resize\", onResize, { passive: true });\n window?.addEventListener(\"orientationchange\", onResize);\n window.visualViewport?.addEventListener(\"resize\", onResize);\n\n return () => {\n window?.removeEventListener(\"resize\", onResize);\n window?.removeEventListener(\"orientationchange\", onResize);\n window.visualViewport?.removeEventListener(\"resize\", onResize);\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, [setDebouncedSize, containerRef, getDocumentSize]);\n\n return size;\n}\n\ntype OnRafScheduleReturn<T extends unknown[]> = {\n (...args: T): void;\n cancel: () => void;\n};\n\nfunction onRafSchedule<T extends unknown[]>(\n callback: (...args: T) => void\n): OnRafScheduleReturn<T> {\n let lastArgs: T = [] as unknown as T;\n let frameId: number | null = null;\n\n function onCallback(...args: T) {\n lastArgs = args;\n\n if (frameId)\n frameId = requestAnimationFrame(() => {\n frameId = null;\n callback(...lastArgs);\n });\n }\n\n onCallback.cancel = () => {\n if (!frameId) return;\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return onCallback;\n}\n\nfunction useResizeObserver(positioner: Positioner) {\n const [, setLayoutVersion] = React.useState(0);\n\n const createResizeObserver = React.useMemo(() => {\n if (typeof window === \"undefined\") {\n return () => ({\n disconnect: () => {},\n observe: () => {},\n unobserve: () => {},\n });\n }\n\n return onDeepMemo(\n [WeakMap],\n (positioner: Positioner, onUpdate: () => void) => {\n const updates: number[] = [];\n const itemMap = new WeakMap<Element, number>();\n\n const update = onRafSchedule(() => {\n if (updates.length > 0) {\n positioner.update(updates);\n onUpdate();\n }\n updates.length = 0;\n });\n\n function onItemResize(target: ItemElement) {\n const height = target.offsetHeight;\n if (height > 0) {\n const index = itemMap.get(target);\n if (index !== void 0) {\n const position = positioner.get(index);\n if (position !== void 0 && height !== position.height) {\n updates.push(index, height);\n }\n }\n }\n update();\n }\n\n const scheduledItemMap = new Map<\n number,\n OnRafScheduleReturn<[ItemElement]>\n >();\n function onResizeObserver(entries: ResizeObserverEntry[]) {\n for (const entry of entries) {\n if (!entry) continue;\n const index = itemMap.get(entry.target);\n\n if (index === void 0) continue;\n let handler = scheduledItemMap.get(index);\n if (!handler) {\n handler = onRafSchedule(onItemResize);\n scheduledItemMap.set(index, handler);\n }\n handler(entry.target as ItemElement);\n }\n }\n\n const observer = new ResizeObserver(onResizeObserver);\n const disconnect = observer.disconnect.bind(observer);\n observer.disconnect = () => {\n disconnect();\n for (const [, scheduleItem] of scheduledItemMap) {\n scheduleItem.cancel();\n }\n };\n\n return observer;\n }\n );\n }, []);\n\n const resizeObserver = createResizeObserver(positioner, () =>\n setLayoutVersion((prev) => prev + 1)\n );\n\n React.useEffect(() => () => resizeObserver.disconnect(), [resizeObserver]);\n\n return resizeObserver;\n}\n\nfunction useScroller({\n offset = 0,\n fps = SCROLL_FPS,\n}: {\n offset?: number;\n fps?: number;\n} = {}): { scrollTop: number; isScrolling: boolean } {\n const [scrollY, setScrollY] = useThrottle(\n typeof globalThis.window === \"undefined\"\n ? 0\n : (globalThis.window.scrollY ?? document.documentElement.scrollTop ?? 0),\n { fps, leading: true }\n );\n\n const onScroll = React.useCallback(() => {\n setScrollY(\n globalThis.window.scrollY ?? document.documentElement.scrollTop ?? 0\n );\n }, [setScrollY]);\n\n React.useEffect(() => {\n if (typeof globalThis.window === \"undefined\") return;\n globalThis.window.addEventListener(\"scroll\", onScroll, { passive: true });\n\n return () => globalThis.window.removeEventListener(\"scroll\", onScroll);\n }, [onScroll]);\n\n const [isScrolling, setIsScrolling] = React.useState(false);\n const hasMountedRef = React.useRef(0);\n\n React.useEffect(() => {\n if (hasMountedRef.current === 1) setIsScrolling(true);\n let didUnsubscribe = false;\n\n function requestTimeout(fn: () => void, delay: number) {\n const start = performance.now();\n const handle = {\n id: requestAnimationFrame(function tick(timestamp) {\n if (timestamp - start >= delay) {\n fn();\n } else {\n handle.id = requestAnimationFrame(tick);\n }\n }),\n };\n return handle;\n }\n\n const timeout = requestTimeout(\n () => {\n if (didUnsubscribe) return;\n setIsScrolling(false);\n },\n 40 + 1000 / fps\n );\n hasMountedRef.current = 1;\n return () => {\n didUnsubscribe = true;\n cancelAnimationFrame(timeout.id);\n };\n }, [fps]);\n\n return { scrollTop: Math.max(0, scrollY - offset), isScrolling };\n}\n\nfunction useThrottle<State>(\n initialState: State | (() => State),\n options: {\n fps?: number;\n leading?: boolean;\n } = {}\n): [State, React.Dispatch<React.SetStateAction<State>>] {\n const { fps = 30, leading = false } = options;\n const [state, setState] = React.useState(initialState);\n const latestSetState = React.useRef(setState);\n latestSetState.current = setState;\n\n const ms = 1000 / fps;\n const prevCountRef = React.useRef(0);\n const trailingTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n\n const clearTrailing = React.useCallback(() => {\n if (trailingTimeout.current) {\n clearTimeout(trailingTimeout.current);\n }\n }, []);\n\n React.useEffect(() => {\n return () => {\n prevCountRef.current = 0;\n clearTrailing();\n };\n }, [clearTrailing]);\n\n const throttledSetState = React.useCallback(\n (action: React.SetStateAction<State>) => {\n const perf = typeof performance !== \"undefined\" ? performance : Date;\n const now = () => perf.now();\n const rightNow = now();\n const call = () => {\n prevCountRef.current = rightNow;\n clearTrailing();\n latestSetState.current(action);\n };\n const current = prevCountRef.current;\n\n if (leading && current === 0) {\n return call();\n }\n\n if (rightNow - current > ms) {\n if (current > 0) {\n return call();\n }\n prevCountRef.current = rightNow;\n }\n\n clearTrailing();\n trailingTimeout.current = setTimeout(() => {\n call();\n prevCountRef.current = 0;\n }, ms);\n },\n [leading, ms, clearTrailing]\n );\n\n return [state, throttledSetState];\n}\n\nconst ROOT_NAME = \"MasonryRoot\";\nconst VIEWPORT_NAME = \"MasonryViewport\";\nconst ITEM_NAME = \"MasonryItem\";\n\nconst MASONRY_ERROR = {\n [ROOT_NAME]: `\\`${ROOT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\n [VIEWPORT_NAME]: `\\`${VIEWPORT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\n [ITEM_NAME]: `\\`${ITEM_NAME}\\` must be within \\`${VIEWPORT_NAME}\\``,\n} as const;\n\ninterface DivProps extends React.ComponentProps<\"div\"> {}\n\ntype RootElement = React.ComponentRef<typeof MasonryRoot>;\ntype ItemElement = React.ComponentRef<typeof MasonryItem>;\n\ninterface MasonryContextValue {\n positioner: Positioner;\n resizeObserver?: ResizeObserver;\n columnWidth: number;\n onItemRegister: (index: number) => (node: ItemElement | null) => void;\n scrollTop: number;\n windowHeight: number;\n itemHeight: number;\n overscan: number;\n isScrolling?: boolean;\n fallback?: React.ReactNode;\n virtualize: boolean;\n lazyLoad: boolean;\n loadedIndices: Set<number>;\n updateLoadedIndices: (indices: number[]) => void;\n}\n\nconst MasonryContext = React.createContext<MasonryContextValue | null>(null);\n\nfunction useMasonryContext(name: keyof typeof MASONRY_ERROR) {\n const context = React.useContext(MasonryContext);\n if (!context) {\n throw new Error(MASONRY_ERROR[name]);\n }\n return context;\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\ninterface MasonryRootProps extends DivProps {\n columnWidth?: number;\n columnCount?: number;\n maxColumnCount?: number;\n gap?: number | { column: number; row: number };\n itemHeight?: number;\n defaultWidth?: number;\n defaultHeight?: number;\n overscan?: number;\n scrollFps?: number;\n fallback?: React.ReactNode;\n linear?: boolean;\n asChild?: boolean;\n /**\n * Enable/disable virtualization. When true (default), only items in viewport are rendered.\n * Set to false to render all items (useful for SEO, printing, or small lists).\n */\n virtualize?: boolean;\n /**\n * Enable lazy loading when virtualization is disabled.\n * When true, items are loaded progressively as user scrolls and remain in DOM.\n * Ignored when virtualize=true. Default: false\n */\n lazyLoad?: boolean;\n}\n\nfunction MasonryRoot(props: MasonryRootProps) {\n const {\n columnWidth = COLUMN_WIDTH,\n columnCount,\n maxColumnCount,\n gap = GAP,\n itemHeight = ITEM_HEIGHT,\n defaultWidth,\n defaultHeight,\n overscan = OVERSCAN,\n scrollFps = SCROLL_FPS,\n fallback,\n linear = false,\n virtualize = true,\n lazyLoad = false,\n asChild,\n children,\n style,\n ref,\n ...rootProps\n } = props;\n\n const gapValue = typeof gap === \"object\" ? gap : { column: gap, row: gap };\n const columnGap = gapValue.column;\n const rowGap = gapValue.row;\n\n const containerRef = React.useRef<RootElement | null>(null);\n const composedRef = useComposedRefs(ref, containerRef);\n\n const size = useDebouncedWindowSize({\n containerRef,\n defaultWidth,\n defaultHeight,\n delayMs: DEBOUNCE_DELAY,\n });\n\n const [containerPosition, setContainerPosition] = React.useState<{\n offset: number;\n width: number;\n }>({ offset: 0, width: 0 });\n\n useIsomorphicLayoutEffect(() => {\n if (!containerRef.current) return;\n\n let offset = 0;\n let container = containerRef.current;\n\n do {\n offset += container.offsetTop ?? 0;\n container = container.offsetParent as RootElement;\n } while (container);\n\n if (\n offset !== containerPosition.offset ||\n containerRef.current.offsetWidth !== containerPosition.width\n ) {\n setContainerPosition({\n offset,\n width: containerRef.current.offsetWidth,\n });\n }\n }, [containerPosition, size]);\n\n const positioner = usePositioner({\n width: containerPosition.width ?? size.width,\n columnWidth,\n columnGap,\n rowGap,\n columnCount,\n maxColumnCount,\n linear,\n });\n const resizeObserver = useResizeObserver(positioner);\n const { scrollTop, isScrolling } = useScroller({\n offset: containerPosition.offset,\n fps: scrollFps,\n });\n\n const itemMap = React.useRef(new WeakMap<ItemElement, number>()).current;\n\n // Track loaded indices for lazy loading mode\n const loadedIndicesRef = React.useRef<Set<number>>(new Set());\n const [loadedIndices, setLoadedIndices] = React.useState<Set<number>>(\n () => new Set()\n );\n\n // Effective lazyLoad: only applies when virtualize is false\n const effectiveLazyLoad = !virtualize && lazyLoad;\n\n const onItemRegister = React.useCallback(\n (index: number) => (node: ItemElement | null) => {\n if (!node) return;\n\n itemMap.set(node, index);\n if (resizeObserver) {\n resizeObserver.observe(node);\n }\n if (positioner.get(index) === void 0) {\n positioner.set(index, node.offsetHeight);\n }\n },\n [itemMap, positioner, resizeObserver]\n );\n\n // Update loaded indices when in lazy load mode\n const updateLoadedIndices = React.useCallback((indices: number[]) => {\n let hasNew = false;\n indices.forEach((index) => {\n if (!loadedIndicesRef.current.has(index)) {\n loadedIndicesRef.current.add(index);\n hasNew = true;\n }\n });\n if (hasNew) {\n setLoadedIndices(new Set(loadedIndicesRef.current));\n }\n }, []);\n\n const contextValue = React.useMemo<MasonryContextValue>(\n () => ({\n positioner,\n resizeObserver,\n columnWidth: positioner.columnWidth,\n onItemRegister,\n scrollTop,\n windowHeight: size.height,\n itemHeight,\n overscan,\n fallback,\n isScrolling,\n virtualize,\n lazyLoad: effectiveLazyLoad,\n loadedIndices,\n updateLoadedIndices,\n }),\n [\n positioner,\n resizeObserver,\n onItemRegister,\n scrollTop,\n size.height,\n itemHeight,\n overscan,\n fallback,\n isScrolling,\n virtualize,\n effectiveLazyLoad,\n loadedIndices,\n updateLoadedIndices,\n ]\n );\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <MasonryContext.Provider value={contextValue}>\n <RootPrimitive\n {...rootProps}\n data-slot=\"masonry\"\n ref={composedRef}\n style={{\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n ...style,\n }}\n >\n <MasonryViewport>{children}</MasonryViewport>\n </RootPrimitive>\n </MasonryContext.Provider>\n );\n}\n\ninterface MasonryItemPropsWithRef extends MasonryItemProps {\n ref: React.Ref<ItemElement | null>;\n}\n\nfunction MasonryViewport(props: DivProps) {\n const { children, style, ref, ...viewportProps } = props;\n const context = useMasonryContext(VIEWPORT_NAME);\n const [layoutVersion, setLayoutVersion] = React.useState(0);\n const rafId = React.useRef<number | null>(null);\n const [mounted, setMounted] = React.useState(false);\n\n useIsomorphicLayoutEffect(() => {\n setMounted(true);\n }, []);\n\n let startIndex = 0;\n let stopIndex: number | undefined;\n\n const validChildren = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<MasonryItemPropsWithRef> =>\n React.isValidElement(child) &&\n (child.type === MasonryItem || child.type === Item)\n );\n const itemCount = validChildren.length;\n\n const shortestColumnSize = context.positioner.shortestColumn();\n const measuredCount = context.positioner.size();\n const overscanPixels = context.windowHeight * context.overscan;\n // rangeStart: scrollTop minus half overscan buffer (items above viewport)\n const rangeStart = Math.max(0, context.scrollTop - overscanPixels / 2);\n // rangeEnd: scrollTop + viewport height + half overscan buffer (items below viewport)\n const rangeEnd =\n context.scrollTop + context.windowHeight + overscanPixels / 2;\n const layoutOutdated =\n shortestColumnSize < rangeEnd && measuredCount < itemCount;\n\n const positionedChildren: React.ReactElement[] = [];\n\n // Stable style for non-virtualized mode (doesn't change on scroll)\n const stableItemStyle = React.useMemo(\n (): React.CSSProperties => ({\n position: \"absolute\",\n writingMode: \"horizontal-tb\",\n visibility: \"visible\",\n width: context.columnWidth,\n }),\n [context.columnWidth]\n );\n\n // Style with scroll optimizations for virtualized mode\n const virtualizedItemStyle = React.useMemo(\n (): React.CSSProperties => ({\n position: \"absolute\",\n writingMode: \"horizontal-tb\",\n visibility: \"visible\",\n width: context.columnWidth,\n transform: context.isScrolling ? \"translateZ(0)\" : undefined,\n willChange: context.isScrolling ? \"transform\" : undefined,\n }),\n [context.columnWidth, context.isScrolling]\n );\n\n // Use stable style when not virtualized to prevent re-renders\n const visibleItemStyle = context.virtualize\n ? virtualizedItemStyle\n : stableItemStyle;\n\n const hiddenItemStyle = React.useMemo(\n (): React.CSSProperties => ({\n position: \"absolute\",\n writingMode: \"horizontal-tb\",\n visibility: \"hidden\",\n width: context.columnWidth,\n zIndex: -1000,\n }),\n [context.columnWidth]\n );\n\n // Track indices to load for lazy load mode\n const indicesToLoadRef = React.useRef<number[]>([]);\n\n // Non-virtualized mode\n if (!context.virtualize) {\n if (context.lazyLoad) {\n // Lazy load mode: render items in viewport + previously loaded items\n // First, ensure items in viewport range are measured\n if (measuredCount < itemCount && mounted) {\n // Calculate how many items to measure based on viewport\n const batchSize = Math.min(\n itemCount - measuredCount,\n Math.ceil(\n ((context.scrollTop + overscanPixels - shortestColumnSize) /\n context.itemHeight) *\n context.positioner.columnCount\n ) +\n context.positioner.columnCount * 2 // Extra buffer for initial load\n );\n\n for (\n let index = measuredCount;\n index < Math.max(measuredCount + batchSize, measuredCount + 1);\n index++\n ) {\n if (index >= itemCount) break;\n const child = validChildren[index];\n if (!child) continue;\n\n const itemStyle = {\n ...hiddenItemStyle,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n })\n );\n }\n }\n\n // Collect indices of items in current viewport range\n const newIndicesToLoad: number[] = [];\n\n // Render items that are in viewport OR have been previously loaded\n context.positioner.all().forEach((item, index) => {\n const child = validChildren[index];\n if (!child || !item) return;\n\n const itemBottom = item.top + (item.height ?? context.itemHeight);\n const isInViewport = itemBottom >= rangeStart && item.top <= rangeEnd;\n const wasLoaded = context.loadedIndices.has(index);\n\n if (isInViewport && !wasLoaded) {\n newIndicesToLoad.push(index);\n }\n\n // Render if in viewport or was previously loaded\n if (isInViewport || wasLoaded) {\n const itemStyle = {\n ...visibleItemStyle,\n top: item.top,\n left: item.left,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n })\n );\n }\n });\n\n // Store indices to load for effect\n indicesToLoadRef.current = newIndicesToLoad;\n } else {\n // Original non-virtualized mode: render all items\n // Ensure all items are measured first\n if (measuredCount < itemCount && mounted) {\n for (let index = measuredCount; index < itemCount; index++) {\n const child = validChildren[index];\n if (!child) continue;\n\n const itemStyle = {\n ...hiddenItemStyle,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n })\n );\n }\n }\n\n // Render all measured items\n context.positioner.all().forEach((item, index) => {\n const child = validChildren[index];\n if (!child || !item) return;\n\n const itemStyle = {\n ...visibleItemStyle,\n top: item.top,\n left: item.left,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n })\n );\n });\n }\n } else {\n // Virtualized mode: only render items in viewport\n context.positioner.range(rangeStart, rangeEnd, (index, left, top) => {\n const child = validChildren[index];\n if (!child) return;\n\n const itemStyle = {\n ...visibleItemStyle,\n top,\n left,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n })\n );\n\n if (stopIndex === undefined) {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n });\n\n if (layoutOutdated && mounted) {\n const batchSize = Math.min(\n itemCount - measuredCount,\n Math.ceil(\n ((context.scrollTop + overscanPixels - shortestColumnSize) /\n context.itemHeight) *\n context.positioner.columnCount\n )\n );\n\n for (\n let index = measuredCount;\n index < measuredCount + batchSize;\n index++\n ) {\n const child = validChildren[index];\n if (!child) continue;\n\n const itemStyle = {\n ...hiddenItemStyle,\n ...child.props.style,\n };\n\n positionedChildren.push(\n React.cloneElement(child, {\n key: child.key ?? index,\n ref: context.onItemRegister(index),\n style: itemStyle,\n })\n );\n }\n }\n }\n\n // Trigger re-layout when items need to be measured\n const needsLayout = context.virtualize\n ? layoutOutdated && mounted\n : measuredCount < itemCount && mounted;\n\n React.useEffect(() => {\n if (needsLayout) {\n if (rafId.current) {\n cancelAnimationFrame(rafId.current);\n }\n rafId.current = requestAnimationFrame(() => {\n setLayoutVersion((v) => v + 1);\n });\n }\n return () => {\n if (rafId.current) {\n cancelAnimationFrame(rafId.current);\n }\n };\n }, [needsLayout]);\n\n // Update loaded indices for lazy load mode\n const {\n lazyLoad,\n updateLoadedIndices,\n scrollTop: contextScrollTop,\n } = context;\n React.useEffect(() => {\n if (lazyLoad && indicesToLoadRef.current.length > 0) {\n updateLoadedIndices(indicesToLoadRef.current);\n indicesToLoadRef.current = [];\n }\n }, [lazyLoad, updateLoadedIndices, contextScrollTop]);\n\n const estimatedHeight = React.useMemo(() => {\n const measuredHeight = context.positioner.estimateHeight(\n measuredCount,\n context.itemHeight\n );\n if (measuredCount === itemCount) {\n return measuredHeight;\n }\n const remainingItems = itemCount - measuredCount;\n const estimatedRemainingHeight = Math.ceil(\n (remainingItems / context.positioner.columnCount) * context.itemHeight\n );\n return measuredHeight + estimatedRemainingHeight;\n }, [context.positioner, context.itemHeight, measuredCount, itemCount]);\n\n // Stable container style for non-virtualized mode\n const stableContainerStyle = React.useMemo(\n () => ({\n position: \"relative\" as const,\n width: \"100%\",\n maxWidth: \"100%\",\n height: Math.ceil(estimatedHeight),\n maxHeight: Math.ceil(estimatedHeight),\n ...style,\n }),\n [estimatedHeight, style]\n );\n\n // Container style with scroll optimizations for virtualized mode\n const virtualizedContainerStyle = React.useMemo(\n () => ({\n position: \"relative\" as const,\n width: \"100%\",\n maxWidth: \"100%\",\n height: Math.ceil(estimatedHeight),\n maxHeight: Math.ceil(estimatedHeight),\n willChange: context.isScrolling ? \"contents\" : undefined,\n pointerEvents: context.isScrolling ? (\"none\" as const) : undefined,\n ...style,\n }),\n [context.isScrolling, estimatedHeight, style]\n );\n\n const containerStyle = context.virtualize\n ? virtualizedContainerStyle\n : stableContainerStyle;\n\n if (!mounted && context.fallback) {\n return context.fallback;\n }\n\n return (\n <div\n {...viewportProps}\n ref={ref}\n style={containerStyle}\n data-version={mounted ? layoutVersion : undefined}\n >\n {positionedChildren}\n </div>\n );\n}\n\ninterface MasonryItemProps extends DivProps {\n asChild?: boolean;\n}\n\nfunction MasonryItem(props: MasonryItemProps) {\n const { asChild, ref, ...itemProps } = props;\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return <ItemPrimitive data-slot=\"masonry-item\" {...itemProps} ref={ref} />;\n}\n\nconst Root = MasonryRoot;\nconst Item = MasonryItem;\n\nexport {\n MasonryRoot,\n MasonryItem,\n //\n Root,\n Item,\n};\nexport type { MasonryRootProps, MasonryItemProps };\n"],"names":["NODE_COLOR","NODE_OPERATION","addInterval","treeNode","high","index","node","prevNode","removeInterval","SENTINEL_NODE","updateMax","max","updateMaxUp","x","rotateLeft","tree","y","rotateRight","replaceNode","fixRemove","w","minimumTree","current","fixInsert","createIntervalTree","indexMap","low","z","intervalResult","originalYColor","onCallback","stack","curr","onDeepMemo","constructors","fn","createCache","obj","cache","k","v","depth","baseCache","base","map","i","one","get","args","key","next","set","value","nextConstructor","cached","COLUMN_WIDTH","GAP","ITEM_HEIGHT","OVERSCAN","SCROLL_FPS","DEBOUNCE_DELAY","usePositioner","width","columnWidth","columnGap","rowGap","columnCount","maxColumnCount","linear","deps","initPositioner","React","binarySearch","a","l","h","m","computedColumnCount","computedColumnWidth","intervalTree","columnHeights","items","columnItems","height","columnIndex","preferredColumn","shortestHeight","shortestIndex","currentHeight","preferredHeight","maxAllowedHeight","columnHeight","top","columnItemsList","updates","columns","j","currentIndex","item","nextHeight","currentColumn","itemsInColumn","startIndex","currentItemIndex","startItem","onItemRender","itemCount","defaultItemHeight","tallestColumn","positionerRef","prevDepsRef","opts","prevOptsRef","optsChanged","prevPositioner","positioner","cacheSize","pos","useDebouncedWindowSize","options","containerRef","defaultWidth","defaultHeight","delayMs","getDocumentSize","size","setSize","timeoutRef","setDebouncedSize","onResize","onRafSchedule","callback","useResizeObserver","setLayoutVersion","resizeObserver","onUpdate","itemMap","scheduledItemMap","onResizeObserver","entries","entry","handler","observer","disconnect","scheduleItem","prev","useScroller","offset","fps","scrollY","setScrollY","useThrottle","onScroll","isScrolling","setIsScrolling","hasMountedRef","didUnsubscribe","requestTimeout","delay","start","handle","tick","timestamp","timeout","initialState","leading","state","setState","latestSetState","ms","prevCountRef","trailingTimeout","clearTrailing","throttledSetState","action","perf","rightNow","call","ROOT_NAME","VIEWPORT_NAME","ITEM_NAME","MASONRY_ERROR","MasonryContext","useMasonryContext","name","context","useIsomorphicLayoutEffect","MasonryRoot","props","gap","itemHeight","overscan","scrollFps","fallback","virtualize","lazyLoad","asChild","children","style","ref","rootProps","gapValue","composedRef","useComposedRefs","containerPosition","setContainerPosition","container","scrollTop","loadedIndicesRef","loadedIndices","setLoadedIndices","effectiveLazyLoad","onItemRegister","updateLoadedIndices","indices","hasNew","contextValue","RootPrimitive","Slot","jsx","MasonryViewport","viewportProps","layoutVersion","rafId","mounted","setMounted","validChildren","child","MasonryItem","Item","shortestColumnSize","measuredCount","overscanPixels","rangeStart","rangeEnd","layoutOutdated","positionedChildren","stableItemStyle","virtualizedItemStyle","visibleItemStyle","hiddenItemStyle","indicesToLoadRef","left","itemStyle","batchSize","newIndicesToLoad","isInViewport","wasLoaded","needsLayout","contextScrollTop","estimatedHeight","measuredHeight","remainingItems","estimatedRemainingHeight","stableContainerStyle","virtualizedContainerStyle","containerStyle","itemProps","Root"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MasonryWrapper.js","sources":["../../../../src/components/Masonry/MasonryWrapper.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n MasonryRoot,\n MasonryItem,\n type MasonryRootProps,\n type MasonryItemProps,\n} from \"./Masonry\";\n\n/* -------------------------------------------------------------------------------------------------\n * Masonry - Unified wrapper component supporting both declarative and data-driven usage\n * -----------------------------------------------------------------------------------------------*/\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MasonryItemData = any;\n\ninterface MasonryProps<T = MasonryItemData>\n extends Omit<MasonryRootProps, \"children\"> {\n /**\n * Array of items to render in the masonry grid (data-driven mode)\n * If provided, `renderItem` should also be provided\n */\n items?: T[];\n /**\n * Custom render function for each item (data-driven mode)\n * @param item - The item data\n * @param index - The index of the item\n */\n renderItem?: (_item: T, _index: number) => React.ReactNode;\n /**\n * Children elements (declarative mode)\n * Use `<Masonry.Item>` components as children\n */\n children?: React.ReactNode;\n}\n\nfunction MasonryComponent<T = MasonryItemData>(props: MasonryProps<T>) {\n const { items, renderItem, children, ...rootProps } = props;\n\n // Data-driven mode: render items using renderItem function\n if (items && items.length > 0) {\n return (\n <MasonryRoot {...rootProps}>\n {items.map((item, index) => {\n const key =\n typeof item === \"object\" && item !== null && \"id\" in item\n ? String((item as { id: unknown }).id)\n : index;\n return (\n <MasonryItem key={key}>\n {renderItem ? renderItem(item, index) : null}\n </MasonryItem>\n );\n })}\n </MasonryRoot>\n );\n }\n\n // Declarative mode: render children directly\n return <MasonryRoot {...rootProps}>{children}</MasonryRoot>;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n// Re-export MasonryItem as Item for Masonry.Item usage\nconst Masonry = Object.assign(MasonryComponent, {\n Item: MasonryItem,\n Root: MasonryRoot,\n});\n\nexport { Masonry, MasonryComponent };\nexport type { MasonryProps, MasonryItemProps };\n"],"names":["MasonryComponent","props","items","renderItem","children","rootProps","jsx","MasonryRoot","item","index","key","MasonryItem","Masonry"],"mappings":";;;AAqCA,SAASA,EAAsCC,GAAwB;AACrE,QAAM,EAAE,OAAAC,GAAO,YAAAC,GAAY,UAAAC,GAAU,GAAGC,MAAcJ;AAGtD,SAAIC,KAASA,EAAM,SAAS,IAExB,gBAAAI,EAACC,KAAa,GAAGF,GACd,YAAM,IAAI,CAACG,GAAMC,MAAU;AAC1B,UAAMC,IACJ,OAAOF,KAAS,YAAYA,MAAS,QAAQ,QAAQA,IACjD,OAAQA,EAAyB,EAAE,IACnCC;AACN,WACE,gBAAAH,EAACK,KACE,UAAAR,IAAaA,EAAWK,GAAMC,CAAK,IAAI,QADxBC,CAElB;AAAA,EAEJ,CAAC,EAAA,CACH,IAKG,gBAAAJ,EAACC,GAAA,EAAa,GAAGF,GAAY,UAAAD,EAAA,CAAS;AAC/C;AAOA,MAAMQ,IAAU,OAAO,OAAOZ,GAAkB;AAAA,EAC9C,MAAMW;AAAA,EACN,MAAMJ;AACR,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n Pagination as SPagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n} from \"@dsui/ui/components/pagination\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { ButtonAnimation } from \"@/types/variables\";\nimport { animationEffect } from \"@/utils/animations\";\nimport { ChevronsLeft, ChevronsRight, MoreHorizontalIcon } from \"lucide-react\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@dsui/ui/components/popover\";\nimport {\n Command,\n CommandInput,\n CommandList,\n CommandItem,\n} from \"@dsui/ui/components/command\";\nimport type { Button } from \"../Button\";\n\ntype PaginationItemType =\n | number\n | \"...\"\n | { page: number; isActive?: boolean; disabled?: boolean };\n\ntype PaginationWrapperProps = React.ComponentProps<typeof SPagination> & {\n animation?: ButtonAnimation;\n total?: number;\n currentPage?: number;\n onPageChange?: (page: number) => void;\n showPreviousNext?: boolean;\n maxPages?: number; // số pages hiển thị\n previousText?: string | boolean;\n nextText?: string | boolean;\n jumpOnEllipsis?: boolean; // khi hover vào ellipsis thì hiện thành nút next/previous\n jumpType?: \"jump\" | \"select\"; // jump type for ellipsis interaction\n} & Pick<React.ComponentProps<typeof Button>, \"size\" | \"color\">;\n\ntype AnimResult = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst generatePages = (\n total: number,\n currentPage: number,\n maxPages: number\n): PaginationItemType[] => {\n if (total <= maxPages) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const pages: PaginationItemType[] = [];\n const halfSize = Math.floor(maxPages / 2);\n let start = Math.max(1, currentPage - halfSize);\n const end = Math.min(total, start + maxPages - 1);\n\n if (end - start + 1 < maxPages) {\n start = Math.max(1, end - maxPages + 1);\n }\n\n // Add first page and ellipsis if needed\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n // Add middle pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis and last page if needed\n if (end < total) {\n if (end < total - 1) {\n pages.push(\"...\");\n }\n pages.push(total);\n }\n\n return pages;\n};\n\nconst PaginationEllipsisWithJump = ({\n position,\n onJumpPrevious,\n onJumpNext,\n color,\n size,\n previousText,\n nextText,\n jumpType = \"jump\",\n total,\n onPageChange,\n}: {\n position: \"before\" | \"after\";\n onJumpPrevious?: () => void;\n onJumpNext?: () => void;\n color?: PaginationWrapperProps[\"color\"];\n size?: PaginationWrapperProps[\"size\"];\n previousText?: React.ReactNode;\n nextText?: React.ReactNode;\n jumpType?: \"jump\" | \"select\";\n total?: number;\n onPageChange?: (page: number) => void;\n}) => {\n const [popoverOpen, setPopoverOpen] = React.useState(false);\n\n if (jumpType === \"select\") {\n return (\n <Popover open={popoverOpen} onOpenChange={setPopoverOpen}>\n <PopoverTrigger asChild>\n <PaginationItem>\n <PaginationEllipsis size={size} color={color} />\n </PaginationItem>\n </PopoverTrigger>\n <PopoverContent className=\"ds:w-40 ds:p-0\">\n <Command>\n <CommandInput placeholder=\"Search pages...\" />\n <CommandList>\n {total &&\n Array.from({ length: total }, (_, i) => i + 1).map((page) => (\n <CommandItem\n key={page}\n onSelect={() => {\n onPageChange?.(page);\n setPopoverOpen(false);\n }}\n >\n Page {page}\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <PaginationItem className=\"ds:group\">\n {position === \"before\" ? (\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onJumpPrevious?.();\n }}\n color={color}\n size={size}\n hideIcon\n className=\"ds:peer\"\n >\n <span className=\"ds:hidden ds:group-hover:block ds:leading-none\">\n {previousText}\n </span>\n <MoreHorizontalIcon className=\"ds:group-hover:hidden ds:cursor-pointer\" />\n </PaginationPrevious>\n ) : (\n <PaginationNext\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onJumpNext?.();\n }}\n color={color}\n size={size}\n hideIcon\n >\n <span className=\"ds:hidden ds:group-hover:block ds:leading-none\">\n {nextText}\n </span>\n <MoreHorizontalIcon className=\"ds:group-hover:hidden ds:cursor-pointer\" />\n </PaginationNext>\n )}\n </PaginationItem>\n );\n};\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationWrapperProps>(\n (\n {\n className,\n animation,\n total,\n currentPage = 1,\n onPageChange,\n showPreviousNext = true,\n color = \"muted\",\n size,\n maxPages = 5,\n previousText,\n nextText,\n jumpOnEllipsis = false,\n jumpType = \"jump\",\n children,\n ...props\n },\n ref\n ) => {\n const paginationAnimation = React.useMemo<AnimResult | null>(() => {\n if (!animation) return null;\n return animationEffect<ButtonAnimation, string | undefined>({\n animation,\n children,\n className,\n rootClassName: \"\",\n variantType: undefined,\n ...props,\n });\n }, [animation, props, className, children]);\n\n const getPreviousText = () => {\n if (previousText === false) return false;\n if (previousText === true) return \"Previous\";\n return previousText;\n };\n\n const getNextText = () => {\n if (nextText === false) return false;\n if (nextText === true) return \"Next\";\n return nextText;\n };\n\n const handleJumpPrevious = () => {\n const newPage = Math.max(1, currentPage - maxPages);\n onPageChange?.(newPage);\n };\n\n const handleJumpNext = () => {\n const newPage = Math.min(total!, currentPage + maxPages);\n onPageChange?.(newPage);\n };\n\n const renderItems = () => {\n if (!total) return children;\n\n const pages = generatePages(total, currentPage, maxPages);\n\n return (\n <PaginationContent>\n {showPreviousNext && (\n <PaginationItem className=\"ds:flex ds:justify-center\">\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n if (currentPage > 1) onPageChange?.(currentPage - 1);\n }}\n color={color}\n size={size}\n >\n {getPreviousText()}\n </PaginationPrevious>\n </PaginationItem>\n )}\n {pages.map((item, index) => {\n if (item === \"...\") {\n if (jumpOnEllipsis) {\n // Determine if this ellipsis is before or after the active page\n const ellipsisIndex = index;\n const activePageIndex = pages.findIndex(\n (page) => typeof page === \"number\" && page === currentPage\n );\n const position =\n ellipsisIndex < activePageIndex ? \"before\" : \"after\";\n\n return (\n <PaginationEllipsisWithJump\n key={`ellipsis-${index}`}\n position={position}\n onJumpPrevious={handleJumpPrevious}\n onJumpNext={handleJumpNext}\n color={color}\n size={size}\n previousText={<ChevronsLeft />}\n nextText={<ChevronsRight />}\n jumpType={jumpType}\n total={total}\n onPageChange={onPageChange}\n />\n );\n }\n return (\n <PaginationItem key={`ellipsis-${index}`}>\n <PaginationEllipsis size={size} color={color} />\n </PaginationItem>\n );\n }\n\n const page = item as number;\n const isActive = page === currentPage;\n\n return (\n <PaginationItem key={page}>\n <PaginationLink\n href=\"#\"\n isActive={isActive}\n onClick={(e) => {\n e.preventDefault();\n onPageChange?.(page);\n }}\n color={color}\n size={size}\n >\n {page}\n </PaginationLink>\n </PaginationItem>\n );\n })}\n {showPreviousNext && (\n <PaginationItem className=\"ds:flex ds:justify-center\">\n <PaginationNext\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n if (currentPage < total) onPageChange?.(currentPage + 1);\n }}\n color={color}\n size={size}\n >\n {getNextText()}\n </PaginationNext>\n </PaginationItem>\n )}\n </PaginationContent>\n );\n };\n\n return (\n <SPagination\n ref={ref}\n className={cn(className, paginationAnimation?.className)}\n style={{\n ...(props.style || {}),\n ...(paginationAnimation?.style || {}),\n }}\n {...props}\n >\n {paginationAnimation?.children ?? renderItems()}\n </SPagination>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n type PaginationWrapperProps,\n type PaginationItemType,\n};\n"],"names":["generatePages","total","currentPage","maxPages","_","i","pages","halfSize","start","end","PaginationEllipsisWithJump","position","onJumpPrevious","onJumpNext","color","size","previousText","nextText","jumpType","onPageChange","popoverOpen","setPopoverOpen","React","jsxs","Popover","jsx","PopoverTrigger","PaginationItem","PaginationEllipsis","PopoverContent","Command","CommandInput","CommandList","page","CommandItem","PaginationPrevious","e","MoreHorizontalIcon","PaginationNext","Pagination","className","animation","showPreviousNext","jumpOnEllipsis","children","props","ref","paginationAnimation","animationEffect","getPreviousText","getNextText","handleJumpPrevious","newPage","handleJumpNext","renderItems","PaginationContent","item","index","ellipsisIndex","activePageIndex","ChevronsLeft","ChevronsRight","PaginationLink","SPagination","cn"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Pagination/index.ts"],"sourcesContent":["import {\n Pagination as PaginationWrapper,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n type PaginationWrapperProps,\n type PaginationItemType,\n} from \"./Pagination\";\n\nconst Pagination = Object.assign(PaginationWrapper, {\n Content: PaginationContent,\n Item: PaginationItem,\n Link: PaginationLink,\n Previous: PaginationPrevious,\n Next: PaginationNext,\n Ellipsis: PaginationEllipsis,\n});\n\nexport { Pagination, type PaginationWrapperProps, type PaginationItemType };\n"],"names":["Pagination","PaginationWrapper","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis"],"mappings":";;AAYA,MAAMA,IAAa,OAAO,OAAOC,GAAmB;AAAA,EAClD,SAASC;AAAA,EACT,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,UAAUC;AAAA,EACV,MAAMC;AAAA,EACN,UAAUC;AACZ,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popover.js","sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Popover as SPopover,\n PopoverTrigger as SPopoverTrigger,\n PopoverContent as SPopoverContent,\n} from \"@dsui/ui/components/popover\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\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\n // Layout\n side?: PopoverSide;\n align?: PopoverAlign;\n sideOffset?: number;\n alignOffset?: number;\n\n // Styling\n className?: string;\n contentClassName?: string;\n triggerClassName?: string;\n}\n\nconst Popover = React.forwardRef<HTMLDivElement, PopoverProps>((props, ref) => {\n const {\n open,\n defaultOpen,\n onOpenChange,\n modal = false,\n children,\n trigger,\n content,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 4,\n alignOffset,\n className,\n contentClassName,\n triggerClassName,\n } = props;\n\n // If children are provided (compound pattern), render them directly\n // if (children) {\n // return (\n // <SPopover\n // open={open}\n // defaultOpen={defaultOpen}\n // onOpenChange={onOpenChange}\n // modal={modal}\n // >\n // {children}\n // </SPopover>\n // );\n // }\n\n // Fallback to props-based pattern\n const triggerElement = trigger || children;\n\n return (\n <SPopover\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n modal={modal}\n >\n {triggerElement && (\n <SPopoverTrigger asChild className={cn(triggerClassName)}>\n {triggerElement}\n </SPopoverTrigger>\n )}\n <SPopoverContent\n ref={ref}\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n className={cn(className, contentClassName)}\n >\n {content}\n </SPopoverContent>\n </SPopover>\n );\n});\n\nPopover.displayName = \"Popover\";\n\nexport default Popover;\n"],"names":["Popover","React","props","ref","open","defaultOpen","onOpenChange","modal","children","trigger","content","side","align","sideOffset","alignOffset","className","contentClassName","triggerClassName","triggerElement","jsxs","SPopover","jsx","SPopoverTrigger","cn","SPopoverContent"],"mappings":";;;;AAmCA,MAAMA,IAAUC,EAAM,WAAyC,CAACC,GAAOC,MAAQ;AAC7E,QAAM;AAAA,IACJ,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC,IAAa;AAAA,IACb,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEf,GAiBEgB,IAAiBT,KAAWD;AAElC,SACE,gBAAAW;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,MAAAhB;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,OAAAC;AAAA,MAEC,UAAA;AAAA,QAAAW,KACC,gBAAAG,EAACC,KAAgB,SAAO,IAAC,WAAWC,EAAGN,CAAgB,GACpD,UAAAC,EAAA,CACH;AAAA,QAEF,gBAAAG;AAAA,UAACG;AAAAA,UAAA;AAAA,YACC,KAAArB;AAAA,YACA,MAAAQ;AAAA,YACA,OAAAC;AAAA,YACA,YAAAC;AAAA,YACA,aAAAC;AAAA,YACA,WAAWS,EAAGR,GAAWC,CAAgB;AAAA,YAExC,UAAAN;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AAEDV,EAAQ,cAAc;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Popover/index.ts"],"sourcesContent":["import PopoverWrapper, { type PopoverProps } from \"./Popover\";\n// import { PopoverTrigger, PopoverContent } from \"@dsui/ui/components/popover\";\n\nconst Popover = Object.assign(PopoverWrapper, {\n // Trigger: PopoverTrigger,\n // Content: PopoverContent,\n});\n\nexport { Popover };\nexport type { PopoverProps };\n"],"names":["Popover","PopoverWrapper"],"mappings":";AAGA,MAAMA,IAAU,OAAO,OAAOC,GAAgB;AAAA;AAAA;AAG9C,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QrCode.js","sources":["../../../../src/components/QrCode/QrCode.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, Slot, useComposedRefs } from \"@dsui/ui/index\";\nimport * as React from \"react\";\n\nconst ROOT_NAME = \"QRCode\";\nconst CANVAS_NAME = \"QRCodeCanvas\";\nconst SVG_NAME = \"QRCodeSvg\";\nconst IMAGE_NAME = \"QRCodeImage\";\nconst SKELETON_NAME = \"QRCodeSkeleton\";\n\ntype QRCodeLevel = \"L\" | \"M\" | \"Q\" | \"H\";\n\ninterface QRCodeCanvasOpts {\n errorCorrectionLevel: QRCodeLevel;\n type?: \"image/png\" | \"image/jpeg\" | \"image/webp\";\n quality?: number;\n margin?: number;\n color?: {\n dark: string;\n light: string;\n };\n width?: number;\n rendererOpts?: {\n quality?: number;\n };\n}\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null);\n\n if (ref.current === null) {\n ref.current = fn();\n }\n\n return ref as React.RefObject<T>;\n}\n\ninterface StoreState {\n dataUrl: string | null;\n svgString: string | null;\n isGenerating: boolean;\n error: Error | null;\n generationKey: string;\n}\n\ninterface Store {\n subscribe: (callback: () => void) => () => void;\n getState: () => StoreState;\n setState: <K extends keyof StoreState>(key: K, value: StoreState[K]) => void;\n setStates: (updates: Partial<StoreState>) => void;\n notify: () => void;\n}\n\ninterface QRCodeContextValue {\n value: string;\n size: number;\n margin: number;\n level: QRCodeLevel;\n backgroundColor: string;\n foregroundColor: string;\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n}\n\nconst StoreContext = React.createContext<Store | null>(null);\n\nfunction useStore<T>(selector: (state: StoreState) => T): T {\n const store = React.useContext(StoreContext);\n if (!store) {\n throw new Error(`\\`useQRCode\\` must be used within \\`${ROOT_NAME}\\``);\n }\n\n const getSnapshot = React.useCallback(\n () => selector(store.getState()),\n [store, selector]\n );\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\nconst QRCodeContext = React.createContext<QRCodeContextValue | null>(null);\n\nfunction useQRCodeContext(consumerName: string) {\n const context = React.useContext(QRCodeContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface QRCodeRootProps extends Omit<React.ComponentProps<\"div\">, \"onError\"> {\n value: string;\n size?: number;\n level?: QRCodeLevel;\n margin?: number;\n quality?: number;\n backgroundColor?: string;\n foregroundColor?: string;\n onError?: (error: Error) => void;\n onGenerated?: () => void;\n asChild?: boolean;\n}\n\nfunction QRCodeRoot(props: QRCodeRootProps) {\n const {\n value,\n size = 200,\n level = \"M\",\n margin = 1,\n quality = 0.92,\n backgroundColor = \"#ffffff\",\n foregroundColor = \"#000000\",\n onError,\n onGenerated,\n className,\n style,\n asChild,\n ...rootProps\n } = props;\n\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n\n const listenersRef = useLazyRef(() => new Set<() => void>());\n const stateRef = useLazyRef<StoreState>(() => ({\n dataUrl: null,\n svgString: null,\n isGenerating: false,\n error: null,\n generationKey: \"\",\n }));\n\n const store = React.useMemo<Store>(() => {\n return {\n subscribe: (cb) => {\n listenersRef.current.add(cb);\n return () => listenersRef.current.delete(cb);\n },\n getState: () => stateRef.current,\n setState: (key, value) => {\n if (Object.is(stateRef.current[key], value)) return;\n stateRef.current[key] = value;\n store.notify();\n },\n setStates: (updates) => {\n let hasChanged = false;\n\n for (const key of Object.keys(updates) as Array<keyof StoreState>) {\n const value = updates[key];\n if (value !== undefined && !Object.is(stateRef.current[key], value)) {\n Object.assign(stateRef.current, { [key]: value });\n hasChanged = true;\n }\n }\n\n if (hasChanged) {\n store.notify();\n }\n },\n notify: () => {\n for (const cb of listenersRef.current) {\n cb();\n }\n },\n };\n }, [listenersRef, stateRef]);\n\n const canvasOpts = React.useMemo<QRCodeCanvasOpts>(\n () => ({\n errorCorrectionLevel: level,\n type: \"image/png\",\n quality,\n margin,\n color: {\n dark: foregroundColor,\n light: backgroundColor,\n },\n width: size,\n }),\n [level, margin, foregroundColor, backgroundColor, size, quality]\n );\n\n const generationKey = React.useMemo(() => {\n if (!value) return \"\";\n\n return JSON.stringify({\n value,\n size,\n level,\n margin,\n quality,\n foregroundColor,\n backgroundColor,\n });\n }, [value, level, margin, foregroundColor, backgroundColor, size, quality]);\n\n const onQRCodeGenerate = React.useCallback(\n async (targetGenerationKey: string) => {\n if (!value || !targetGenerationKey) return;\n\n const currentState = store.getState();\n if (\n currentState.isGenerating ||\n currentState.generationKey === targetGenerationKey\n )\n return;\n\n store.setStates({\n isGenerating: true,\n error: null,\n });\n\n try {\n const QRCode = (await import(\"qrcode\")).default;\n\n let dataUrl: string | null = null;\n\n try {\n dataUrl = await QRCode.toDataURL(value, canvasOpts);\n } catch {\n dataUrl = null;\n }\n\n if (canvasRef.current) {\n await QRCode.toCanvas(canvasRef.current, value, canvasOpts);\n }\n\n const svgString = await QRCode.toString(value, {\n errorCorrectionLevel: canvasOpts.errorCorrectionLevel,\n margin: canvasOpts.margin,\n color: canvasOpts.color,\n width: canvasOpts.width,\n type: \"svg\",\n });\n\n store.setStates({\n dataUrl,\n svgString,\n isGenerating: false,\n generationKey: targetGenerationKey,\n });\n\n onGenerated?.();\n } catch (error) {\n const parsedError =\n error instanceof Error\n ? error\n : new Error(\"Failed to generate QR code\");\n store.setStates({\n error: parsedError,\n isGenerating: false,\n });\n onError?.(parsedError);\n }\n },\n [value, canvasOpts, store, onError, onGenerated]\n );\n\n const contextValue = React.useMemo<QRCodeContextValue>(\n () => ({\n value,\n size,\n level,\n margin,\n backgroundColor,\n foregroundColor,\n canvasRef,\n }),\n [value, size, backgroundColor, foregroundColor, level, margin]\n );\n\n React.useLayoutEffect(() => {\n if (generationKey) {\n const rafId = requestAnimationFrame(() => {\n onQRCodeGenerate(generationKey);\n });\n\n return () => cancelAnimationFrame(rafId);\n }\n }, [generationKey, onQRCodeGenerate]);\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <StoreContext.Provider value={store}>\n <QRCodeContext.Provider value={contextValue}>\n <RootPrimitive\n data-slot=\"qr-code\"\n {...rootProps}\n className={cn(className, \"ds:relative ds:flex ds:flex-col ds:items-center ds:gap-2\")}\n style={\n {\n \"--qr-code-size\": `${size}px`,\n ...style,\n } as React.CSSProperties\n }\n >\n {rootProps?.children ? rootProps.children : <QRCodeCanvas />}\n </RootPrimitive>\n </QRCodeContext.Provider>\n </StoreContext.Provider>\n );\n}\n\ninterface QRCodeCanvasProps extends React.ComponentProps<\"canvas\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeCanvas(props: QRCodeCanvasProps) {\n const { asChild, className, ref, ...canvasProps } = props;\n\n const context = useQRCodeContext(CANVAS_NAME);\n const generationKey = useStore((state) => state.generationKey);\n\n const composedRef = useComposedRefs(ref, context.canvasRef);\n\n const CanvasPrimitive = asChild ? Slot : \"canvas\";\n\n return (\n <CanvasPrimitive\n data-slot=\"qr-code-canvas\"\n {...canvasProps}\n ref={composedRef}\n width={context.size}\n height={context.size}\n className={cn(\n \"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)\",\n !generationKey && \"ds:invisible\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeSvgProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeSvg(props: QRCodeSvgProps) {\n const { asChild, className, style, ...svgProps } = props;\n\n const context = useQRCodeContext(SVG_NAME);\n const svgString = useStore((state) => state.svgString);\n\n if (!svgString) return null;\n\n const SvgPrimitive = asChild ? Slot : \"div\";\n\n return (\n <SvgPrimitive\n data-slot=\"qr-code-svg\"\n {...svgProps}\n className={cn(\n \"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)\",\n className\n )}\n style={{ width: context.size, height: context.size, ...style }}\n dangerouslySetInnerHTML={{ __html: svgString }}\n />\n );\n}\n\ninterface QRCodeImageProps extends React.ComponentProps<\"img\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeImage(props: QRCodeImageProps) {\n const { alt = \"QR Code\", asChild, className, ...imageProps } = props;\n\n const context = useQRCodeContext(IMAGE_NAME);\n const dataUrl = useStore((state) => state.dataUrl);\n\n if (!dataUrl) return null;\n\n const ImagePrimitive = asChild ? Slot : \"img\";\n\n return (\n <ImagePrimitive\n data-slot=\"qr-code-image\"\n {...imageProps}\n src={dataUrl}\n alt={alt}\n width={context.size}\n height={context.size}\n className={cn(\n \"ds:relative ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size)\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeDownloadProps extends React.ComponentProps<\"button\"> {\n filename?: string;\n format?: \"png\" | \"svg\";\n asChild?: boolean;\n}\n\nfunction QRCodeDownload(props: QRCodeDownloadProps) {\n const {\n filename = \"qrcode\",\n format = \"png\",\n asChild,\n className,\n children,\n ...buttonProps\n } = props;\n\n const dataUrl = useStore((state) => state.dataUrl);\n const svgString = useStore((state) => state.svgString);\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n buttonProps.onClick?.(event);\n if (event.defaultPrevented) return;\n\n const link = document.createElement(\"a\");\n\n if (format === \"png\" && dataUrl) {\n link.href = dataUrl;\n link.download = `${filename}.png`;\n } else if (format === \"svg\" && svgString) {\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n link.href = URL.createObjectURL(blob);\n link.download = `${filename}.svg`;\n } else {\n return;\n }\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n if (format === \"svg\" && svgString) {\n URL.revokeObjectURL(link.href);\n }\n },\n [dataUrl, svgString, filename, format, buttonProps.onClick]\n );\n\n const ButtonPrimitive = asChild ? Slot : \"button\";\n\n return (\n <ButtonPrimitive\n type=\"button\"\n data-slot=\"qr-code-download\"\n {...buttonProps}\n className={cn(\"ds:max-w-(--qr-code-size)\", className)}\n onClick={onClick}\n >\n {children ?? `Download ${format.toUpperCase()}`}\n </ButtonPrimitive>\n );\n}\n\ninterface QRCodeOverlayProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeOverlay(props: QRCodeOverlayProps) {\n const { asChild, className, ...overlayProps } = props;\n\n const OverlayPrimitive = asChild ? Slot : \"div\";\n\n return (\n <OverlayPrimitive\n data-slot=\"qr-code-overlay\"\n {...overlayProps}\n className={cn(\n \"ds:-translate-x-1/2 ds:-translate-y-1/2 ds:absolute ds:top-1/2 ds:left-1/2 ds:flex ds:items-center ds:justify-center ds:rounded-sm ds:bg-background\",\n className\n )}\n />\n );\n}\n\ninterface QRCodeSkeletonProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction QRCodeSkeleton(props: QRCodeSkeletonProps) {\n const { asChild, className, style, ...skeletonProps } = props;\n\n const context = useQRCodeContext(SKELETON_NAME);\n const dataUrl = useStore((state) => state.dataUrl);\n const svgString = useStore((state) => state.svgString);\n const generationKey = useStore((state) => state.generationKey);\n\n const isLoaded = dataUrl || svgString || generationKey;\n\n if (isLoaded) return null;\n\n const SkeletonPrimitive = asChild ? Slot : \"div\";\n\n return (\n <SkeletonPrimitive\n data-slot=\"qr-code-skeleton\"\n {...skeletonProps}\n className={cn(\n \"ds:absolute ds:max-h-(--qr-code-size) ds:max-w-(--qr-code-size) ds:animate-pulse ds:bg-accent\",\n className\n )}\n style={{\n width: context.size,\n height: context.size,\n ...style,\n }}\n />\n );\n}\n\nexport {\n QRCodeRoot as Root,\n QRCodeCanvas as Canvas,\n QRCodeSvg as Svg,\n QRCodeImage as Image,\n QRCodeOverlay as Overlay,\n QRCodeSkeleton as Skeleton,\n QRCodeDownload as Download,\n //\n QRCodeRoot as QRCode,\n QRCodeCanvas,\n QRCodeSvg,\n QRCodeImage,\n QRCodeOverlay,\n QRCodeSkeleton,\n QRCodeDownload,\n //\n useStore as useQRCode,\n //\n type QRCodeRootProps as QRCodeProps,\n};\n"],"names":["ROOT_NAME","CANVAS_NAME","SVG_NAME","IMAGE_NAME","SKELETON_NAME","useLazyRef","fn","ref","React","StoreContext","useStore","selector","store","getSnapshot","QRCodeContext","useQRCodeContext","consumerName","context","QRCodeRoot","props","value","size","level","margin","quality","backgroundColor","foregroundColor","onError","onGenerated","className","style","asChild","rootProps","canvasRef","listenersRef","stateRef","cb","key","updates","hasChanged","canvasOpts","generationKey","onQRCodeGenerate","targetGenerationKey","currentState","QRCode","dataUrl","svgString","error","parsedError","contextValue","rafId","RootPrimitive","Slot","jsx","cn","QRCodeCanvas","canvasProps","state","composedRef","useComposedRefs","QRCodeSvg","svgProps","QRCodeImage","alt","imageProps","QRCodeDownload","filename","format","children","buttonProps","onClick","event","link","blob","QRCodeOverlay","overlayProps","QRCodeSkeleton","skeletonProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/QrCode/index.ts"],"sourcesContent":["import {\n Root,\n Canvas,\n Svg,\n Image,\n Overlay,\n Skeleton,\n Download,\n useQRCode,\n type QRCodeProps,\n} from \"./QrCode\";\n\nconst QRCode = Object.assign(Root, {\n Canvas,\n Svg,\n Image,\n Overlay,\n Skeleton,\n Download,\n});\n\nexport { QRCode, QRCode as QrCode };\n\n// Export hook và type\nexport { useQRCode };\nexport type { QRCodeProps };\n"],"names":["QRCode","Root","Canvas","Svg","Image","Overlay","Skeleton","Download"],"mappings":";;AAYA,MAAMA,IAAS,OAAO,OAAOC,GAAM;AAAA,EAAA,QACjCC;AAAAA,EAAA,KACAC;AAAAA,EAAA,OACAC;AAAAA,EAAA,SACAC;AAAAA,EAAA,UACAC;AAAAA,EAAA,UACAC;AACF,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Radio.js","sources":["../../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n RadioGroupItem as SRadioGroupItem,\n RadioGroup as SRadioGroup,\n type RadioGroupProps,\n type RadioGroupItemProps,\n} from \"@dsui/ui/components/radio-group\";\nimport { cn } from \"@dsui/ui/index\";\n\nexport type RadioItemProps = RadioGroupItemProps & {\n label?: React.ReactNode;\n variant?: \"option\" | \"button-group\";\n size?: \"default\" | \"sm\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n rootClassName?: string;\n};\n\nconst RadioItem = React.forwardRef<HTMLButtonElement, RadioItemProps>(\n (props, ref) => {\n const { label, variant = \"option\", rootClassName, ...itemProps } = props;\n const id = React.useId();\n\n return (\n <div className={cn(\"ds:flex ds:items-center ds:space-x-2\", rootClassName)}>\n <SRadioGroupItem ref={ref} id={id} {...itemProps} />\n {variant === \"option\" && label && (\n <label\n htmlFor={id}\n className=\"ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {variant === \"button-group\" && label && (\n <span className=\"ds:sr-only\">{label}</span>\n )}\n </div>\n );\n }\n);\n\nRadioItem.displayName = \"RadioItem\";\n\nexport type RadioProps = {\n options?: Array<{\n label: React.ReactNode;\n value: string;\n disabled?: boolean;\n }>;\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n variant?: \"option\" | \"button-group\";\n size?: \"default\" | \"sm\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n value?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n className?: string;\n rootClassName?: string;\n disabled?: boolean;\n} & RadioGroupProps;\n\nconst Radio = React.forwardRef<HTMLDivElement, RadioProps>((props, ref) => {\n const {\n options,\n label,\n helperText,\n variant = \"option\",\n size = \"default\",\n color,\n value,\n onValueChange,\n children,\n className,\n rootClassName,\n disabled,\n } = props;\n\n return (\n <div className={cn(\"ds:flex ds:flex-col ds:gap-1.5\", rootClassName)}>\n {label && <label className=\"ds:text-sm ds:font-medium\">{label}</label>}\n\n <SRadioGroup\n ref={ref}\n value={value}\n onValueChange={onValueChange}\n variant={variant}\n className={cn(className)}\n >\n {options &&\n options.map((option) => (\n <RadioItem\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={disabled || option.disabled}\n variant={variant}\n size={size}\n color={color}\n />\n ))}\n {children}\n </SRadioGroup>\n\n {helperText && (\n <p className=\"ds:text-xs ds:text-muted-foreground\">{helperText}</p>\n )}\n </div>\n );\n}) as React.ForwardRefExoticComponent<\n RadioProps & React.RefAttributes<HTMLDivElement>\n> & {\n Group: typeof SRadioGroup;\n Item: typeof RadioItem;\n};\n\nRadio.displayName = \"Radio\";\n\nRadio.Group = SRadioGroup;\nRadio.Item = RadioItem;\n\nexport default Radio;\nexport { type RadioGroupProps, type RadioGroupItemProps };\n"],"names":["RadioItem","React","props","ref","label","variant","rootClassName","itemProps","id","cn","jsx","SRadioGroupItem","Radio","options","helperText","size","color","value","onValueChange","children","className","disabled","jsxs","SRadioGroup","option"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAMA,IAAYC,EAAM;AAAA,EACtB,CAACC,GAAOC,MAAQ;AACd,UAAM,EAAE,OAAAC,GAAO,SAAAC,IAAU,UAAU,eAAAC,GAAe,GAAGC,MAAcL,GAC7DM,IAAKP,EAAM,MAAA;AAEjB,6BACG,OAAA,EAAI,WAAWQ,EAAG,wCAAwCH,CAAa,GACtE,UAAA;AAAA,MAAA,gBAAAI,EAACC,GAAA,EAAgB,KAAAR,GAAU,IAAAK,GAAS,GAAGD,EAAA,CAAW;AAAA,MACjDF,MAAY,YAAYD,KACvB,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASF;AAAA,UACT,WAAU;AAAA,UAET,UAAAJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJC,MAAY,kBAAkBD,uBAC5B,QAAA,EAAK,WAAU,cAAc,UAAAA,EAAA,CAAM;AAAA,IAAA,GAExC;AAAA,EAEJ;AACF;AAEAJ,EAAU,cAAc;AA6BxB,MAAMY,IAAQX,EAAM,WAAuC,CAACC,GAAOC,MAAQ;AACzE,QAAM;AAAA,IACJ,SAAAU;AAAA,IACA,OAAAT;AAAA,IACA,YAAAU;AAAA,IACA,SAAAT,IAAU;AAAA,IACV,MAAAU,IAAO;AAAA,IACP,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,eAAAd;AAAA,IACA,UAAAe;AAAA,EAAA,IACEnB;AAEJ,2BACG,OAAA,EAAI,WAAWO,EAAG,kCAAkCH,CAAa,GAC/D,UAAA;AAAA,IAAAF,KAAS,gBAAAM,EAAC,SAAA,EAAM,WAAU,6BAA6B,UAAAN,GAAM;AAAA,IAE9D,gBAAAkB;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAApB;AAAA,QACA,OAAAc;AAAA,QACA,eAAAC;AAAA,QACA,SAAAb;AAAA,QACA,WAAWI,EAAGW,CAAS;AAAA,QAEtB,UAAA;AAAA,UAAAP,KACCA,EAAQ,IAAI,CAACW,MACX,gBAAAd;AAAA,YAACV;AAAA,YAAA;AAAA,cAEC,OAAOwB,EAAO;AAAA,cACd,OAAOA,EAAO;AAAA,cACd,UAAUH,KAAYG,EAAO;AAAA,cAC7B,SAAAnB;AAAA,cACA,MAAAU;AAAA,cACA,OAAAC;AAAA,YAAA;AAAA,YANKQ,EAAO;AAAA,UAAA,CAQf;AAAA,UACFL;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFL,KACC,gBAAAJ,EAAC,KAAA,EAAE,WAAU,uCAAuC,UAAAI,EAAA,CAAW;AAAA,EAAA,GAEnE;AAEJ,CAAC;AAODF,EAAM,cAAc;AAEpBA,EAAM,QAAQW;AACdX,EAAM,OAAOZ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Rate.js","sources":["../../../../src/components/Rate/Rate.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useRef } from \"react\";\nimport type { KeyboardEvent } from \"react\";\nimport { Star, StarHalf } from \"lucide-react\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport interface RateProps {\n // Display\n count?: number;\n value?: number;\n defaultValue?: number;\n allowHalf?: boolean;\n allowClear?: boolean;\n\n // Appearance\n size?: \"small\" | \"middle\" | \"large\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n character?: React.ReactNode | ((rateProps: RateProps) => React.ReactNode);\n className?: string;\n style?: React.CSSProperties;\n\n // Interaction\n disabled?: boolean;\n autoFocus?: boolean;\n keyboard?: boolean;\n\n // Tooltips\n tooltips?: string[];\n\n // Callbacks\n onChange?: (value: number) => void;\n onHoverChange?: (value: number) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void;\n}\n\nconst Rate = React.forwardRef<HTMLDivElement, RateProps>(\n (\n {\n count = 5,\n value: controlledValue,\n defaultValue = 0,\n allowHalf = false,\n allowClear = true,\n size = \"middle\",\n color = \"warning\",\n character,\n className,\n style,\n disabled = false,\n autoFocus = false,\n keyboard = true,\n tooltips,\n onChange,\n onHoverChange,\n onFocus,\n onBlur,\n onKeyDown,\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Use controlled or uncontrolled value\n const value =\n controlledValue !== undefined ? controlledValue : internalValue;\n\n // Size in pixels\n const sizeMap = {\n small: 20,\n middle: 24,\n large: 32,\n };\n\n // Color mapping for filled stars\n const colorMap = {\n primary: \"ds:text-primary ds:[&_svg]:fill-primary\",\n secondary: \"ds:text-secondary ds:[&_svg]:fill-secondary\",\n accent: \"ds:text-accent ds:[&_svg]:fill-accent\",\n destructive: \"ds:text-destructive ds:[&_svg]:fill-destructive\",\n muted: \"ds:text-muted-foreground ds:[&_svg]:fill-muted-foreground\",\n success: \"ds:text-success ds:[&_svg]:fill-success\",\n error: \"ds:text-error ds:[&_svg]:fill-error\",\n warning: \"ds:text-yellow-400 ds:[&_svg]:fill-yellow-400\",\n };\n\n // Handle star click\n const handleStarClick = (starIndex: number, isHalf: boolean) => {\n if (disabled) return;\n\n const newValue = isHalf ? starIndex + 0.5 : starIndex + 1;\n\n // If clicking the same value and allowClear is true, clear the rating\n if (allowClear && newValue === value) {\n setInternalValue(0);\n onChange?.(0);\n } else {\n setInternalValue(newValue);\n onChange?.(newValue);\n }\n };\n\n // Handle star hover\n const handleStarHover = (starIndex: number, isHalf: boolean) => {\n if (disabled) return;\n\n const newHoverValue = isHalf ? starIndex + 0.5 : starIndex + 1;\n setHoverValue(newHoverValue);\n onHoverChange?.(newHoverValue);\n };\n\n // Handle mouse leave\n const handleMouseLeave = () => {\n setHoverValue(null);\n onHoverChange?.(0);\n };\n\n // Handle keyboard navigation\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (!keyboard || disabled) return;\n\n onKeyDown?.(event);\n\n const step = allowHalf ? 0.5 : 1;\n let newValue = value;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n event.preventDefault();\n newValue = Math.min(value + step, count);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n event.preventDefault();\n newValue = Math.max(value - step, 0);\n break;\n case \"Home\":\n event.preventDefault();\n newValue = allowHalf ? 0.5 : 1;\n break;\n case \"End\":\n event.preventDefault();\n newValue = count;\n break;\n default:\n return;\n }\n\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n // Handle focus\n const handleFocus = () => {\n onFocus?.();\n };\n\n // Handle blur\n const handleBlur = () => {\n onBlur?.();\n };\n\n // Get star fill percentage\n const getStarFill = (starIndex: number) => {\n const currentValue = hoverValue !== null ? hoverValue : value;\n\n if (currentValue >= starIndex + 1) {\n return 100; // Full star\n } else if (currentValue > starIndex && currentValue < starIndex + 1) {\n return (currentValue - starIndex) * 100; // Partial star\n }\n return 0; // Empty star\n };\n\n // Check if star should show as half\n const isHalfStar = (starIndex: number) => {\n if (!allowHalf) return false;\n const currentValue = hoverValue !== null ? hoverValue : value;\n const fill = currentValue - starIndex;\n return fill > 0 && fill <= 0.5;\n };\n\n // Render character\n const renderCharacter = (isHalf: boolean = false) => {\n if (typeof character === \"function\") {\n return character({\n count,\n value,\n defaultValue,\n allowHalf,\n allowClear,\n size,\n disabled,\n });\n }\n if (isHalf) {\n return <StarHalf className=\"ds:w-full ds:h-full\" />;\n }\n return character || <Star className=\"ds:w-full ds:h-full\" />;\n };\n\n // Get tooltip for star\n const getTooltip = (starIndex: number) => {\n if (!tooltips || !tooltips[starIndex]) return undefined;\n return tooltips[starIndex];\n };\n\n return (\n <div\n ref={(node) => {\n containerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"ds:inline-flex ds:items-center ds:gap-1\",\n disabled && \"ds:opacity-50 ds:cursor-not-allowed\",\n !disabled && \"ds:cursor-pointer\",\n className\n )}\n style={style}\n onMouseLeave={handleMouseLeave}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-label=\"Rate\"\n aria-valuemin={0}\n aria-valuemax={count}\n aria-valuenow={value}\n aria-disabled={disabled}\n autoFocus={autoFocus}\n >\n {Array.from({ length: count }, (_, index) => {\n const fillPercentage = getStarFill(index);\n const tooltip = getTooltip(index);\n const showHalfStar = isHalfStar(index);\n\n return (\n <div key={index} className=\"ds:relative ds:group\" title={tooltip}>\n {/* Container for half stars */}\n <div\n className=\"ds:relative ds:inline-flex\"\n style={{\n width: `${sizeMap[size]}px`,\n height: `${sizeMap[size]}px`,\n }}\n >\n {/* Empty star background */}\n <div className=\"ds:text-muted-foreground/30 ds:pointer-events-none\">\n {renderCharacter(false)}\n </div>\n\n {/* Filled star overlay */}\n {fillPercentage > 0 && (\n <div\n className={cn(\n \"ds:absolute ds:inset-0 ds:pointer-events-none\",\n colorMap[color]\n )}\n >\n {showHalfStar ? (\n renderCharacter(true)\n ) : (\n <div\n className=\"ds:overflow-hidden\"\n style={{ width: `${fillPercentage}%` }}\n >\n {renderCharacter(false)}\n </div>\n )}\n </div>\n )}\n\n {/* Interactive overlay for clicking and hovering */}\n {!disabled && (\n <>\n {allowHalf ? (\n <>\n {/* Left half */}\n <div\n className=\"ds:absolute ds:inset-0 ds:w-1/2 ds:cursor-pointer\"\n onClick={() => handleStarClick(index, true)}\n onMouseEnter={() => handleStarHover(index, true)}\n />\n {/* Right half */}\n <div\n className=\"ds:absolute ds:inset-0 ds:left-1/2 ds:w-1/2 ds:cursor-pointer\"\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n </>\n ) : (\n <div\n className=\"ds:absolute ds:inset-0 ds:cursor-pointer\"\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n )}\n </>\n )}\n </div>\n\n {/* Show tooltip text below star on hover */}\n {tooltip &&\n (hoverValue === index + 1 ||\n (allowHalf && hoverValue === index + 0.5)) && (\n <div className=\"ds:absolute ds:top-full ds:left-1/2 ds:-translate-x-1/2 ds:mt-1 ds:px-2 ds:py-1 ds:text-xs ds:bg-foreground ds:text-background ds:rounded ds:whitespace-nowrap ds:z-10\">\n {tooltip}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n);\n\nRate.displayName = \"Rate\";\n\nexport default Rate;\n"],"names":["Rate","React","count","controlledValue","defaultValue","allowHalf","allowClear","size","color","character","className","style","disabled","autoFocus","keyboard","tooltips","onChange","onHoverChange","onFocus","onBlur","onKeyDown","ref","internalValue","setInternalValue","useState","hoverValue","setHoverValue","containerRef","useRef","value","sizeMap","colorMap","handleStarClick","starIndex","isHalf","newValue","handleStarHover","newHoverValue","handleMouseLeave","handleKeyDown","event","step","handleFocus","handleBlur","getStarFill","currentValue","isHalfStar","fill","renderCharacter","jsx","StarHalf","Star","getTooltip","node","cn","_","index","fillPercentage","tooltip","showHalfStar","jsxs","Fragment"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Resizable.js","sources":["../../../../src/components/Resizable/Resizable.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n resizableHandleVariants,\n} from \"@dsui/ui/components/resizable\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { VariantProps } from \"class-variance-authority\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type ResizableDirection = \"horizontal\" | \"vertical\";\n\nexport type ResizableHandleVariant = VariantProps<\n typeof resizableHandleVariants\n>[\"variant\"];\n\nexport interface ResizablePanelConfig {\n id?: string;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n collapsible?: boolean;\n collapsedSize?: number;\n onCollapse?: () => void;\n onExpand?: () => void;\n onResize?: (size: number) => void;\n className?: string;\n children?: React.ReactNode;\n order?: number;\n}\n\ntype PanelGroupOnLayout = (sizes: number[]) => void;\n\nexport interface ResizableProps {\n /** Direction of the resizable panels */\n direction?: ResizableDirection;\n /** Configuration for panels when using wrapper mode */\n panels?: ResizablePanelConfig[];\n /** Show handle with grip icon */\n withHandle?: boolean;\n /** Handle variant: 'default' shows icon, 'line' highlights on hover */\n handleVariant?: ResizableHandleVariant;\n /** Custom icon for the handle (only works with default variant) */\n handleIcon?: React.ReactNode;\n /** Auto save layout to localStorage with this id */\n autoSaveId?: string;\n /** Callback when layout changes */\n onLayout?: PanelGroupOnLayout;\n /** Additional class for the panel group */\n className?: string;\n /** Additional class for each panel */\n panelClassName?: string;\n /** Additional class for handles */\n handleClassName?: string;\n /** Children for primitive usage */\n children?: React.ReactNode;\n /** Keyboard resize by delta percentage (default: 10) */\n keyboardResizeBy?: number;\n /** Storage object for saving layout (default: localStorage) */\n storage?: {\n getItem: (name: string) => string | null;\n setItem: (name: string, value: string) => void;\n };\n}\n\n// ============================================================================\n// Wrapper Component\n// ============================================================================\n\nconst ResizableWrapper = (props: ResizableProps) => {\n const {\n direction = \"horizontal\",\n panels,\n withHandle = true,\n handleVariant,\n handleIcon,\n autoSaveId,\n onLayout,\n className,\n panelClassName,\n handleClassName,\n children,\n keyboardResizeBy,\n storage,\n } = props;\n\n // If children are provided, use primitive mode\n if (children && !panels) {\n return (\n <ResizablePanelGroup\n direction={direction}\n autoSaveId={autoSaveId}\n onLayout={onLayout}\n className={cn(\"ds:h-full ds:w-full\", className)}\n keyboardResizeBy={keyboardResizeBy}\n storage={storage}\n >\n {children}\n </ResizablePanelGroup>\n );\n }\n\n // Wrapper mode with panels config\n if (!panels || panels.length === 0) {\n return null;\n }\n\n return (\n <ResizablePanelGroup\n direction={direction}\n autoSaveId={autoSaveId}\n onLayout={onLayout}\n className={cn(\"ds:h-full ds:w-full\", className)}\n keyboardResizeBy={keyboardResizeBy}\n storage={storage}\n >\n {panels.map((panel, index) => (\n <React.Fragment key={panel.id || `panel-${index}`}>\n <ResizablePanel\n id={panel.id}\n defaultSize={panel.defaultSize}\n minSize={panel.minSize}\n maxSize={panel.maxSize}\n collapsible={panel.collapsible}\n collapsedSize={panel.collapsedSize}\n onCollapse={panel.onCollapse}\n onExpand={panel.onExpand}\n onResize={panel.onResize}\n order={panel.order}\n className={cn(panelClassName, panel.className)}\n >\n {panel.children}\n </ResizablePanel>\n {index < panels.length - 1 && (\n <ResizableHandle\n withHandle={withHandle}\n variant={handleVariant}\n icon={handleIcon}\n className={handleClassName}\n />\n )}\n </React.Fragment>\n ))}\n </ResizablePanelGroup>\n );\n};\n\nResizableWrapper.displayName = \"Resizable\";\n\n// ============================================================================\n// Sub-components for primitive usage\n// ============================================================================\n\nexport type ResizablePanelProps = React.ComponentProps<typeof ResizablePanel>;\nexport type ResizableHandleProps = React.ComponentProps<typeof ResizableHandle>;\nexport type ResizablePanelGroupProps = React.ComponentProps<\n typeof ResizablePanelGroup\n>;\n\n// Re-export Panel and Handle from shadcn for primitive usage\nconst Panel = ResizablePanel;\nconst Handle = ResizableHandle;\n\n// ============================================================================\n// Export with Object.assign pattern\n// ============================================================================\n\nconst Resizable = Object.assign(ResizableWrapper, {\n Panel,\n Handle,\n PanelGroup: ResizablePanelGroup,\n});\n\nexport default Resizable;\nexport {\n Resizable,\n ResizableWrapper,\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n Panel,\n Handle,\n};\n"],"names":["ResizableWrapper","props","direction","panels","withHandle","handleVariant","handleIcon","autoSaveId","onLayout","className","panelClassName","handleClassName","children","keyboardResizeBy","storage","jsx","ResizablePanelGroup","cn","panel","index","jsxs","React","ResizablePanel","ResizableHandle","Panel","Handle","Resizable"],"mappings":";;;;AAyEA,MAAMA,IAAmB,CAACC,MAA0B;AAClD,QAAM;AAAA,IACJ,WAAAC,IAAY;AAAA,IACZ,QAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEb;AAGJ,SAAIW,KAAY,CAACT,IAEb,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAd;AAAA,MACA,YAAAK;AAAA,MACA,UAAAC;AAAA,MACA,WAAWS,EAAG,uBAAuBR,CAAS;AAAA,MAC9C,kBAAAI;AAAA,MACA,SAAAC;AAAA,MAEC,UAAAF;AAAA,IAAA;AAAA,EAAA,IAMH,CAACT,KAAUA,EAAO,WAAW,IACxB,OAIP,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAd;AAAA,MACA,YAAAK;AAAA,MACA,UAAAC;AAAA,MACA,WAAWS,EAAG,uBAAuBR,CAAS;AAAA,MAC9C,kBAAAI;AAAA,MACA,SAAAC;AAAA,MAEC,UAAAX,EAAO,IAAI,CAACe,GAAOC,MAClB,gBAAAC,EAACC,EAAM,UAAN,EACC,UAAA;AAAA,QAAA,gBAAAN;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,IAAIJ,EAAM;AAAA,YACV,aAAaA,EAAM;AAAA,YACnB,SAASA,EAAM;AAAA,YACf,SAASA,EAAM;AAAA,YACf,aAAaA,EAAM;AAAA,YACnB,eAAeA,EAAM;AAAA,YACrB,YAAYA,EAAM;AAAA,YAClB,UAAUA,EAAM;AAAA,YAChB,UAAUA,EAAM;AAAA,YAChB,OAAOA,EAAM;AAAA,YACb,WAAWD,EAAGP,GAAgBQ,EAAM,SAAS;AAAA,YAE5C,UAAAA,EAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAERC,IAAQhB,EAAO,SAAS,KACvB,gBAAAY;AAAA,UAACQ;AAAA,UAAA;AAAA,YACC,YAAAnB;AAAA,YACA,SAASC;AAAA,YACT,MAAMC;AAAA,YACN,WAAWK;AAAA,UAAA;AAAA,QAAA;AAAA,MACb,EAAA,GAtBiBO,EAAM,MAAM,SAASC,CAAK,EAwB/C,CACD;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAnB,EAAiB,cAAc;AAa/B,MAAMwB,IAAQF,GACRG,IAASF,GAMTG,IAAY,OAAO,OAAO1B,GAAkB;AAAA,EAChD,OAAAwB;AAAA,EACA,QAAAC;AAAA,EACA,YAAYT;AACd,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScrollArea.js","sources":["../../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport {\n ScrollArea as SScrollArea,\n ScrollBar as SScrollBar,\n} from \"@dsui/ui/components/scroll-area\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport interface ScrollAreaProps\n extends React.ComponentProps<typeof SScrollArea> {\n /**\n * Type of scroll snap behavior\n * @default undefined\n */\n snapType?:\n | \"none\"\n | \"x\"\n | \"y\"\n | \"both\"\n | \"x mandatory\"\n | \"y mandatory\"\n | \"both mandatory\"\n | \"x proximity\"\n | \"y proximity\"\n | \"both proximity\";\n /**\n * Additional className for the viewport (where scroll happens)\n */\n viewportClassName?: string;\n}\n\nexport type ScrollBarProps = React.ComponentProps<typeof SScrollBar>;\n\nconst ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n ({ className, children, snapType, viewportClassName, ...props }, ref) => {\n const scrollAreaRef = useRef<HTMLDivElement>(null);\n\n const snapClass = React.useMemo(() => {\n if (!snapType || snapType === \"none\") return \"snap-none\";\n\n const [axis, alignment] = snapType.split(\" \");\n return cn(`ds:snap-${axis}`, alignment && `ds:snap-${alignment}`);\n }, [snapType]);\n\n // const snapClass = snapType\n // ? snapType === \"none\"\n // ? \"snap-none\"\n // : snapType === \"x\"\n // ? \"snap-x\"\n // : snapType === \"y\"\n // ? \"snap-y\"\n // : snapType === \"both\"\n // ? \"snap-both\"\n // : snapType === \"x mandatory\"\n // ? \"snap-x snap-mandatory\"\n // : snapType === \"y mandatory\"\n // ? \"snap-y snap-mandatory\"\n // : snapType === \"both mandatory\"\n // ? \"snap-both snap-mandatory\"\n // : snapType === \"x proximity\"\n // ? \"snap-x snap-proximity\"\n // : snapType === \"y proximity\"\n // ? \"snap-y snap-proximity\"\n // : snapType === \"both proximity\"\n // ? \"snap-both snap-proximity\"\n // : \"\"\n // : \"\";\n\n useEffect(() => {\n if (scrollAreaRef.current && (snapClass || viewportClassName)) {\n const viewport = scrollAreaRef.current.querySelector(\n \"[data-radix-scroll-area-viewport]\"\n );\n if (viewport) {\n const classes = cn(snapClass, viewportClassName);\n if (classes) {\n viewport.className = cn(viewport.className, classes);\n }\n }\n }\n }, [snapClass, viewportClassName]);\n\n return (\n <SScrollArea\n ref={(node) => {\n scrollAreaRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(className)}\n {...props}\n >\n {children}\n </SScrollArea>\n );\n }\n);\nScrollArea.displayName = \"ScrollArea\";\n\nconst ScrollBar = React.forwardRef<HTMLDivElement, ScrollBarProps>(\n ({ className, ...props }, ref) => {\n return <SScrollBar ref={ref} className={cn(className)} {...props} />;\n }\n);\nScrollBar.displayName = \"ScrollBar\";\n\nexport { ScrollArea, ScrollBar };\nexport default ScrollArea;\n"],"names":["ScrollArea","React","className","children","snapType","viewportClassName","props","ref","scrollAreaRef","useRef","snapClass","axis","alignment","cn","useEffect","viewport","classes","jsx","SScrollArea","node","ScrollBar","SScrollBar"],"mappings":";;;;AAgCA,MAAMA,IAAaC,EAAM;AAAA,EACvB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,UAAAC,GAAU,mBAAAC,GAAmB,GAAGC,EAAA,GAASC,MAAQ;AACvE,UAAMC,IAAgBC,EAAuB,IAAI,GAE3CC,IAAYT,EAAM,QAAQ,MAAM;AACpC,UAAI,CAACG,KAAYA,MAAa,OAAQ,QAAO;AAE7C,YAAM,CAACO,GAAMC,CAAS,IAAIR,EAAS,MAAM,GAAG;AAC5C,aAAOS,EAAG,WAAWF,CAAI,IAAIC,KAAa,WAAWA,CAAS,EAAE;AAAA,IAClE,GAAG,CAACR,CAAQ,CAAC;AA0Bb,WAAAU,EAAU,MAAM;AACd,UAAIN,EAAc,YAAYE,KAAaL,IAAoB;AAC7D,cAAMU,IAAWP,EAAc,QAAQ;AAAA,UACrC;AAAA,QAAA;AAEF,YAAIO,GAAU;AACZ,gBAAMC,IAAUH,EAAGH,GAAWL,CAAiB;AAC/C,UAAIW,MACFD,EAAS,YAAYF,EAAGE,EAAS,WAAWC,CAAO;AAAA,QAEvD;AAAA,MACF;AAAA,IACF,GAAG,CAACN,GAAWL,CAAiB,CAAC,GAG/B,gBAAAY;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAK,CAACC,MAAS;AACb,UAAAX,EAAc,UAAUW,GACpB,OAAOZ,KAAQ,aACjBA,EAAIY,CAAI,IACCZ,MACTA,EAAI,UAAUY;AAAA,QAElB;AAAA,QACA,WAAWN,EAAGX,CAAS;AAAA,QACtB,GAAGI;AAAA,QAEH,UAAAH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AACAH,EAAW,cAAc;AAEzB,MAAMoB,IAAYnB,EAAM;AAAA,EACtB,CAAC,EAAE,WAAAC,GAAW,GAAGI,EAAA,GAASC,MACjB,gBAAAU,EAACI,KAAW,KAAAd,GAAU,WAAWM,EAAGX,CAAS,GAAI,GAAGI,GAAO;AAEtE;AACAc,EAAU,cAAc;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n MultiSelect as BaseMultiSelect,\n MultiSelectTrigger as BaseMultiSelectTrigger,\n MultiSelectValue as BaseMultiSelectValue,\n MultiSelectContent as BaseMultiSelectContent,\n MultiSelectItem as BaseMultiSelectItem,\n MultiSelectGroup as BaseMultiSelectGroup,\n MultiSelectSeparator as BaseMultiSelectSeparator,\n} from \"@dsui/ui/components/select\";\nimport {\n Combobox,\n type ComboboxProps,\n type SelectOption as SSelectOption,\n} from \"@dsui/ui/components/combobox\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { FloatingLabel } from \"@/components/FloatLabel\";\nimport { Info } from \"lucide-react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { Label } from \"../Label\";\n\nexport type SelectOption = SSelectOption;\n\nexport type SelectProps = Omit<ComboboxProps, \"ref\"> & {\n label?: string;\n helperText?: React.ReactNode;\n state?: \"default\" | \"success\" | \"warning\" | \"error\";\n size?: \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n isFloatLabel?: boolean;\n infoTooltip?: React.ReactNode;\n clearable?: boolean;\n placeholder?: string;\n options?: SelectOption[];\n tagRender?: (option: SelectOption) => React.ReactNode;\n multiple?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n values?: string[];\n defaultValues?: string | string[];\n onValuesChange?: (values: string[]) => void;\n search?: boolean | { placeholder?: string; emptyMessage?: string };\n clickToRemove?: boolean;\n overflowBehavior?: \"wrap\" | \"wrap-when-open\" | \"cutoff\";\n className?: string;\n disabled?: boolean;\n onChange?: (value: string | string[]) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n required?: boolean;\n};\n\nconst Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n label,\n helperText,\n state = \"default\",\n size = \"normal\",\n isFloatLabel,\n infoTooltip,\n clearable = false,\n placeholder = \"\",\n options = [],\n tagRender,\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n values,\n defaultValues,\n onValuesChange,\n search,\n clickToRemove = true,\n overflowBehavior = \"wrap-when-open\",\n disabled,\n onChange,\n onFocus,\n onBlur,\n required,\n },\n ref\n ) => {\n const selectId = React.useId();\n\n // For single select, use controlled value or internal state\n const [internalValue, setInternalValue] = React.useState(\n value ?? defaultValue ?? \"\"\n );\n\n React.useEffect(() => {\n if (!multiple && value !== undefined) {\n setInternalValue(value);\n }\n }, [multiple, value]);\n\n // Handle single select value change\n const handleSingleValueChange = React.useCallback(\n (newValue?: string | null) => {\n const val = newValue || \"\";\n if (value === undefined) {\n setInternalValue(val);\n }\n onValueChange?.(val);\n onChange?.(val);\n },\n [onValueChange, onChange, value]\n );\n\n // Handle multi select values change\n const handleMultiValuesChange = React.useCallback(\n (newValues: string[]) => {\n onValuesChange?.(newValues);\n onChange?.(newValues);\n },\n [onValuesChange, onChange]\n );\n\n // Helper text styles\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;\n\n // Group options by group property\n const groupedOptions = React.useMemo(() => {\n const groups = new Map<string | undefined, SelectOption[]>();\n options.forEach((option) => {\n const group = option.group;\n if (!groups.has(group)) {\n groups.set(group, []);\n }\n groups.get(group)!.push(option);\n });\n return groups;\n }, [options]);\n\n return (\n <div className={className}>\n <div\n ref={ref}\n className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative\", {\n \"ds:floating-label ds:relative\": isFloatLabel,\n })}\n >\n {!isFloatLabel && label && (\n <Label\n htmlFor={selectId}\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 {!multiple ? (\n // Single Mode\n <>\n <Combobox\n value={value ?? internalValue}\n options={options}\n placeHolder={placeholder}\n emptyText={\n typeof search === \"object\"\n ? search.emptyMessage\n : \"No results found\"\n }\n onChange={handleSingleValueChange}\n clearable={clearable}\n disabled={disabled}\n id={selectId}\n className={cn(\n \"ds:peer ds:w-full ds:justify-start\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n }\n // className,\n )}\n size={currentSize}\n state={state}\n dropdownClassName={cn(\"ds:opacity-40\", {\n \"ds:translate-y-[-8px]\": isFloatLabel && size !== \"lg\",\n })}\n searchable={!!search}\n tagRender={tagRender}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={selectId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n shouldFloat={!!(value ?? internalValue)}\n className=\"ds:pointer-events-none\"\n >\n {label}\n </FloatingLabel>\n )}\n </>\n ) : (\n // Multi Mode\n <BaseMultiSelect\n values={values}\n defaultValues={\n typeof defaultValues === \"string\"\n ? [defaultValues]\n : defaultValues\n }\n onValuesChange={handleMultiValuesChange}\n >\n <BaseMultiSelectTrigger\n id={selectId}\n disabled={disabled}\n className={cn(\n \"ds:peer ds:w-full\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n },\n className\n )}\n size={currentSize}\n state={state}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <BaseMultiSelectValue\n placeholder={placeholder}\n clickToRemove={clickToRemove && clearable}\n overflowBehavior={overflowBehavior}\n />\n </BaseMultiSelectTrigger>\n\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={selectId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n >\n {label}\n </FloatingLabel>\n )}\n\n <BaseMultiSelectContent search={search}>\n {[...groupedOptions.entries()].map(([group, items]) => {\n if (group) {\n return (\n <React.Fragment key={group}>\n <BaseMultiSelectGroup heading={group}>\n {items.map((option) => (\n <BaseMultiSelectItem\n key={option.value}\n value={option.value}\n disabled={option?.disabled}\n icon={option?.icon}\n tagRender={!!tagRender}\n >\n {tagRender ? tagRender(option) : option.label}\n </BaseMultiSelectItem>\n ))}\n </BaseMultiSelectGroup>\n <BaseMultiSelectSeparator />\n </React.Fragment>\n );\n }\n return items.map((option) => (\n <BaseMultiSelectItem\n key={option.value}\n value={option.value}\n disabled={option?.disabled}\n icon={option?.icon}\n tagRender={!!tagRender}\n >\n {tagRender ? tagRender(option) : option.label}\n </BaseMultiSelectItem>\n ));\n })}\n </BaseMultiSelectContent>\n </BaseMultiSelect>\n )}\n </div>\n\n {helperText && (\n <p className={cn(\"ds:text-xs\", state ? helperTextStyles[state] : \"\")}>\n {helperText}\n </p>\n )}\n </div>\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\nexport default Select;\n"],"names":["Select","React","className","label","helperText","state","size","isFloatLabel","infoTooltip","clearable","placeholder","options","tagRender","multiple","value","defaultValue","onValueChange","values","defaultValues","onValuesChange","search","clickToRemove","overflowBehavior","disabled","onChange","onFocus","onBlur","required","ref","selectId","internalValue","setInternalValue","handleSingleValueChange","newValue","val","handleMultiValuesChange","newValues","helperTextStyles","currentSize","groupedOptions","groups","option","group","jsx","jsxs","cn","Label","Tooltip","Info","BaseMultiSelect","BaseMultiSelectTrigger","BaseMultiSelectValue","FloatingLabel","BaseMultiSelectContent","items","BaseMultiSelectGroup","BaseMultiSelectItem","BaseMultiSelectSeparator","Fragment","Combobox"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Separator.js","sources":["../../../../src/components/Separator/Separator.tsx"],"sourcesContent":["import {\n Separator as SSeparator,\n type SeparatorProps,\n} from \"@dsui/ui/components/separator\";\n\nconst Separator = (props: SeparatorProps) => {\n return <SSeparator {...props} />;\n};\n\nexport default Separator;\nexport type { SeparatorProps };\n"],"names":["Separator","props","jsx","SSeparator"],"mappings":";;AAKA,MAAMA,IAAY,CAACC,MACV,gBAAAC,EAACC,GAAA,EAAY,GAAGF,EAAA,CAAO;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sheet.js","sources":["../../../../src/components/Sheet/Sheet.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Sheet as SSheet,\n SheetContent as SSheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n SheetClose,\n} from \"@dsui/ui/components/sheet\";\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@dsui/ui/components/drawer\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { ScrollArea } from \"@dsui/ui/components/scroll-area\";\nimport type { BasicAnimation } from \"@/types/variables\";\nimport { animationClass } from \"@/utils/animations\";\nimport { isMobile } from \"react-device-detect\";\n\nexport type SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type SheetSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface SheetProps {\n // Core props\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 side?: SheetSide;\n closeOnEsc?: boolean;\n closeOnOutside?: boolean;\n showCloseButton?: boolean;\n autoDrawerOnMobile?: boolean;\n\n // Layout\n size?: SheetSize;\n stickyHeader?: boolean;\n stickyFooter?: boolean;\n autoHeight?: 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\nconst getSizeClasses = (size: SheetSize, side: SheetSide): string => {\n const isVertical = side === \"top\" || side === \"bottom\";\n const sizeMap: Record<SheetSize, string> = {\n sm: isVertical ? \"ds:max-h-[20vh]!\" : \"ds:max-w-sm\",\n md: isVertical ? \"ds:max-h-[40vh]!\" : \"ds:max-w-md\",\n lg: isVertical ? \"ds:max-h-[60vh]!\" : \"ds:max-w-lg\",\n xl: isVertical ? \"ds:max-h-[80vh]!\" : \"ds:max-w-xl\",\n full: isVertical ? \"ds:max-h-full!\" : \"ds:max-w-full\",\n };\n return sizeMap[size];\n};\n\nconst Sheet = React.forwardRef<HTMLDivElement, SheetProps>((props, ref) => {\n const {\n open,\n onOpenChange,\n title,\n description,\n children,\n trigger,\n footer,\n side = \"right\",\n closeOnEsc = true,\n closeOnOutside = true,\n showCloseButton = true,\n autoDrawerOnMobile = true,\n size = \"md\",\n stickyHeader = false,\n stickyFooter = false,\n autoHeight = true,\n animation,\n className,\n contentClassName,\n headerClassName,\n titleClassName,\n descriptionClassName,\n footerClassName,\n overlayClassName,\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 getSizeClasses(size, side),\n animationResult.className,\n className\n );\n\n const headerClasses = cn(\"ds:px-6 ds:pt-6 ds:text-left\", headerClassName);\n\n const footerClasses = cn(\n \"ds:px-6 ds:pb-6 ds:flex-col-reverse ds:sm:flex-row ds:sm:justify-end ds:sm:space-x-2\",\n footerClassName\n );\n\n const headerComponents = useMemo(() => {\n return title || description ? (\n <SheetHeader\n className={cn(\"ds:py-4\", { \"ds:border-b\": stickyHeader }, headerClasses)}\n >\n {title && <SheetTitle className={titleClassName}>{title}</SheetTitle>}\n {description && (\n <SheetDescription className={descriptionClassName}>\n {description}\n </SheetDescription>\n )}\n </SheetHeader>\n ) : null;\n }, [\n title,\n description,\n headerClasses,\n titleClassName,\n descriptionClassName,\n stickyHeader,\n ]);\n\n const footerComponents = useMemo(() => {\n return footer ? (\n <SheetFooter\n className={cn(\"ds:py-4\", { \"ds:border-t\": stickyFooter }, footerClasses)}\n >\n {footer}\n </SheetFooter>\n ) : null;\n }, [footer, footerClasses, stickyFooter]);\n\n // Mobile: use drawer with bottom direction if enabled\n if (isMobile && autoDrawerOnMobile) {\n const drawerContentClasses = cn(\n \"ds:flex ds:flex-col\",\n animationResult.className,\n className\n );\n\n return (\n <Drawer open={open} onOpenChange={onOpenChange} direction=\"bottom\">\n {trigger && <DrawerTrigger asChild>{trigger}</DrawerTrigger>}\n <DrawerContent\n ref={ref}\n className={cn(\n drawerContentClasses,\n autoHeight ? \"\" : getSizeClasses(size, \"bottom\")\n )}\n >\n {(title || description) && (\n <DrawerHeader className={headerClassName}>\n {title && (\n <DrawerTitle className={titleClassName}>{title}</DrawerTitle>\n )}\n {description && (\n <DrawerDescription className={descriptionClassName}>\n {description}\n </DrawerDescription>\n )}\n </DrawerHeader>\n )}\n\n <ScrollArea className={cn(\"ds:flex ds:flex-col ds:overflow-hidden\")}>\n {children && (\n <div className={cn(\"ds:px-4 ds:py-2\", contentClassName)}>\n {children}\n </div>\n )}\n </ScrollArea>\n\n {footer && (\n <DrawerFooter className={footerClassName}>{footer}</DrawerFooter>\n )}\n </DrawerContent>\n </Drawer>\n );\n }\n\n // Desktop: use sheet with original behavior\n return (\n <SSheet open={open} onOpenChange={onOpenChange}>\n {trigger && <SheetTrigger asChild>{trigger}</SheetTrigger>}\n <SSheetContent\n ref={ref}\n side={side}\n className={cn(className, contentClasses)}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n onInteractOutside={(e) => !closeOnOutside && e.preventDefault()}\n overlayClassName={cn(overlayClassName)}\n >\n {/* Hide default close button if showCloseButton is false */}\n {!showCloseButton && (\n <style>{`\n [data-slot=\"sheet-content\"] > [data-slot=\"sheet-close\"] {\n display: none;\n }\n `}</style>\n )}\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)}>{children}</div>\n )}\n {!stickyFooter && footerComponents}\n </ScrollArea>\n\n {stickyFooter && footerComponents}\n </SSheetContent>\n </SSheet>\n );\n});\n\nSheet.displayName = \"Sheet\";\n\nexport { SheetClose, DrawerClose };\nexport default Sheet;\n"],"names":["getSizeClasses","size","side","isVertical","Sheet","React","props","ref","open","onOpenChange","title","description","children","trigger","footer","closeOnEsc","closeOnOutside","showCloseButton","autoDrawerOnMobile","stickyHeader","stickyFooter","autoHeight","animation","className","contentClassName","headerClassName","titleClassName","descriptionClassName","footerClassName","overlayClassName","animationResult","useMemo","animationClass","contentClasses","cn","headerClasses","footerClasses","headerComponents","jsxs","SheetHeader","jsx","SheetTitle","SheetDescription","footerComponents","SheetFooter","isMobile","drawerContentClasses","Drawer","DrawerTrigger","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","ScrollArea","DrawerFooter","SSheet","SheetTrigger","SSheetContent","e"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sidebar.js","sources":["../../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\n\n// Re-export all Sidebar components from shadcn/ui\nimport {\n Sidebar as SSidebar,\n SidebarProvider as SSidebarProvider,\n SidebarContent as SSidebarContent,\n SidebarFooter as SSidebarFooter,\n SidebarGroup as SSidebarGroup,\n SidebarGroupAction as SSidebarGroupAction,\n SidebarGroupContent as SSidebarGroupContent,\n SidebarGroupLabel as SSidebarGroupLabel,\n SidebarHeader as SSidebarHeader,\n SidebarInput as SSidebarInput,\n SidebarInset as SSidebarInset,\n SidebarMenu as SSidebarMenu,\n SidebarMenuAction as SSidebarMenuAction,\n SidebarMenuBadge as SSidebarMenuBadge,\n SidebarMenuButton as SSidebarMenuButton,\n SidebarMenuItem as SSidebarMenuItem,\n SidebarMenuSkeleton as SSidebarMenuSkeleton,\n SidebarMenuSub as SSidebarMenuSub,\n SidebarMenuSubButton as SSidebarMenuSubButton,\n SidebarMenuSubItem as SSidebarMenuSubItem,\n SidebarRail as SSidebarRail,\n SidebarSeparator as SSidebarSeparator,\n SidebarTrigger as SSidebarTrigger,\n} from \"@dsui/ui/components/sidebar\";\n\n// Export types derived from component props\nexport type SidebarProviderProps = React.ComponentProps<\n typeof SSidebarProvider\n>;\nexport type SidebarProps = React.ComponentProps<typeof SSidebar>;\nexport type SidebarContentProps = React.ComponentProps<typeof SSidebarContent>;\nexport type SidebarFooterProps = React.ComponentProps<typeof SSidebarFooter>;\nexport type SidebarGroupProps = React.ComponentProps<typeof SSidebarGroup>;\nexport type SidebarGroupActionProps = React.ComponentProps<\n typeof SSidebarGroupAction\n>;\nexport type SidebarGroupContentProps = React.ComponentProps<\n typeof SSidebarGroupContent\n>;\nexport type SidebarGroupLabelProps = React.ComponentProps<\n typeof SSidebarGroupLabel\n>;\nexport type SidebarHeaderProps = React.ComponentProps<typeof SSidebarHeader>;\nexport type SidebarInputProps = React.ComponentProps<typeof SSidebarInput>;\nexport type SidebarInsetProps = React.ComponentProps<typeof SSidebarInset>;\nexport type SidebarMenuProps = React.ComponentProps<typeof SSidebarMenu>;\nexport type SidebarMenuActionProps = React.ComponentProps<\n typeof SSidebarMenuAction\n>;\nexport type SidebarMenuBadgeProps = React.ComponentProps<\n typeof SSidebarMenuBadge\n>;\nexport type SidebarMenuButtonProps = React.ComponentProps<\n typeof SSidebarMenuButton\n>;\nexport type SidebarMenuItemProps = React.ComponentProps<\n typeof SSidebarMenuItem\n>;\nexport type SidebarMenuSkeletonProps = React.ComponentProps<\n typeof SSidebarMenuSkeleton\n>;\nexport type SidebarMenuSubProps = React.ComponentProps<typeof SSidebarMenuSub>;\nexport type SidebarMenuSubButtonProps = React.ComponentProps<\n typeof SSidebarMenuSubButton\n>;\nexport type SidebarMenuSubItemProps = React.ComponentProps<\n typeof SSidebarMenuSubItem\n>;\nexport type SidebarRailProps = React.ComponentProps<typeof SSidebarRail>;\nexport type SidebarSeparatorProps = React.ComponentProps<\n typeof SSidebarSeparator\n>;\nexport type SidebarTriggerProps = React.ComponentProps<typeof SSidebarTrigger>;\n\n// Re-export components (using const to prevent tree-shaking)\nexport const Sidebar = SSidebar;\nexport const SidebarProvider = SSidebarProvider;\nexport const SidebarContent = SSidebarContent;\nexport const SidebarFooter = SSidebarFooter;\nexport const SidebarGroup = SSidebarGroup;\nexport const SidebarGroupAction = SSidebarGroupAction;\nexport const SidebarGroupContent = SSidebarGroupContent;\nexport const SidebarGroupLabel = SSidebarGroupLabel;\nexport const SidebarHeader = SSidebarHeader;\nexport const SidebarInput = SSidebarInput;\nexport const SidebarInset = SSidebarInset;\nexport const SidebarMenu = SSidebarMenu;\nexport const SidebarMenuAction = SSidebarMenuAction;\nexport const SidebarMenuBadge = SSidebarMenuBadge;\nexport const SidebarMenuButton = SSidebarMenuButton;\nexport const SidebarMenuItem = SSidebarMenuItem;\nexport const SidebarMenuSkeleton = SSidebarMenuSkeleton;\nexport const SidebarMenuSub = SSidebarMenuSub;\nexport const SidebarMenuSubButton = SSidebarMenuSubButton;\nexport const SidebarMenuSubItem = SSidebarMenuSubItem;\nexport const SidebarRail = SSidebarRail;\nexport const SidebarSeparator = SSidebarSeparator;\nexport const SidebarTrigger = SSidebarTrigger;\n\n// Default export\nexport default Sidebar;\n"],"names":["Sidebar","SSidebar","SidebarProvider","SSidebarProvider","SidebarContent","SSidebarContent","SidebarFooter","SSidebarFooter","SidebarGroup","SSidebarGroup","SidebarGroupAction","SSidebarGroupAction","SidebarGroupContent","SSidebarGroupContent","SidebarGroupLabel","SSidebarGroupLabel","SidebarHeader","SSidebarHeader","SidebarInput","SSidebarInput","SidebarInset","SSidebarInset","SidebarMenu","SSidebarMenu","SidebarMenuAction","SSidebarMenuAction","SidebarMenuBadge","SSidebarMenuBadge","SidebarMenuButton","SSidebarMenuButton","SidebarMenuItem","SSidebarMenuItem","SidebarMenuSkeleton","SSidebarMenuSkeleton","SidebarMenuSub","SSidebarMenuSub","SidebarMenuSubButton","SSidebarMenuSubButton","SidebarMenuSubItem","SSidebarMenuSubItem","SidebarRail","SSidebarRail","SidebarSeparator","SSidebarSeparator","SidebarTrigger","SSidebarTrigger"],"mappings":";;AA+EO,MAAMA,IAAUC,GACVC,IAAkBC,GAClBC,IAAiBC,GACjBC,IAAgBC,GAChBC,IAAeC,GACfC,IAAqBC,GACrBC,IAAsBC,GACtBC,IAAoBC,GACpBC,IAAgBC,GAChBC,IAAeC,GACfC,IAAeC,GACfC,IAAcC,GACdC,IAAoBC,GACpBC,IAAmBC,GACnBC,IAAoBC,GACpBC,IAAkBC,GAClBC,IAAsBC,GACtBC,IAAiBC,GACjBC,IAAuBC,GACvBC,IAAqBC,GACrBC,IAAcC,GACdC,IAAmBC,GACnBC,IAAiBC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Skeleton.js","sources":["../../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Skeleton as SSkeleton } from \"@dsui/ui/components/skeleton\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport type SkeletonProps = React.ComponentProps<typeof SSkeleton>;\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...props }, ref) => {\n return <SSkeleton ref={ref} className={cn(className)} {...props} />;\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport default Skeleton;\n"],"names":["Skeleton","React","className","props","ref","jsx","SSkeleton","cn"],"mappings":";;;;AAMA,MAAMA,IAAWC,EAAM;AAAA,EACrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MACjB,gBAAAC,EAACC,KAAU,KAAAF,GAAU,WAAWG,EAAGL,CAAS,GAAI,GAAGC,GAAO;AAErE;AAEAH,EAAS,cAAc;"}