@sth87/shadcn-design-system 0.0.36 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/dist/AI_CONTEXT.md +212 -214
  2. package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
  3. package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
  4. package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
  5. package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
  6. package/dist/cjs/components/Badge/Badge.cjs +1 -1
  7. package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
  8. package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs +1 -1
  9. package/dist/cjs/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
  10. package/dist/cjs/components/Button/Button.cjs +1 -1
  11. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  12. package/dist/cjs/components/Calendar/Calendar.cjs +1 -1
  13. package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
  14. package/dist/cjs/components/Carousel/Carousel.cjs +1 -1
  15. package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
  16. package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
  17. package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  18. package/dist/cjs/components/Collapsible/Collapsible.cjs +1 -1
  19. package/dist/cjs/components/Collapsible/Collapsible.cjs.map +1 -1
  20. package/dist/cjs/components/Command/Command.cjs +1 -1
  21. package/dist/cjs/components/Command/Command.cjs.map +1 -1
  22. package/dist/cjs/components/ContextMenu/ContextMenu.cjs +1 -1
  23. package/dist/cjs/components/ContextMenu/ContextMenu.cjs.map +1 -1
  24. package/dist/cjs/components/Cropper/Cropper.cjs +1 -1
  25. package/dist/cjs/components/Cropper/Cropper.cjs.map +1 -1
  26. package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
  27. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  28. package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
  29. package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
  30. package/dist/cjs/components/DatePicker/TimePicker.cjs +1 -1
  31. package/dist/cjs/components/DatePicker/TimePicker.cjs.map +1 -1
  32. package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
  33. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  34. package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs +1 -1
  35. package/dist/cjs/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  36. package/dist/cjs/components/FloatLabel.cjs +1 -1
  37. package/dist/cjs/components/FloatLabel.cjs.map +1 -1
  38. package/dist/cjs/components/Glass/Glass.cjs +1 -1
  39. package/dist/cjs/components/Glass/Glass.cjs.map +1 -1
  40. package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
  41. package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
  42. package/dist/cjs/components/Input/Input.cjs +1 -1
  43. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  44. package/dist/cjs/components/InputOTP/InputOTP.cjs +1 -1
  45. package/dist/cjs/components/InputOTP/InputOTP.cjs.map +1 -1
  46. package/dist/cjs/components/Interactive/CursorFollow.cjs +1 -1
  47. package/dist/cjs/components/Interactive/CursorFollow.cjs.map +1 -1
  48. package/dist/cjs/components/Marquee/Marquee.cjs +1 -1
  49. package/dist/cjs/components/Marquee/Marquee.cjs.map +1 -1
  50. package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
  51. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  52. package/dist/cjs/components/QrCode/QrCode.cjs +1 -1
  53. package/dist/cjs/components/QrCode/QrCode.cjs.map +1 -1
  54. package/dist/cjs/components/Radio/Radio.cjs +1 -1
  55. package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
  56. package/dist/cjs/components/Rate/Rate.cjs +1 -1
  57. package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
  58. package/dist/cjs/components/Resizable/Resizable.cjs +1 -1
  59. package/dist/cjs/components/Resizable/Resizable.cjs.map +1 -1
  60. package/dist/cjs/components/ScrollArea/ScrollArea.cjs +1 -1
  61. package/dist/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  62. package/dist/cjs/components/Select/Select.cjs +1 -1
  63. package/dist/cjs/components/Select/Select.cjs.map +1 -1
  64. package/dist/cjs/components/Sheet/Sheet.cjs +2 -2
  65. package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
  66. package/dist/cjs/components/Slider/Slider.cjs +1 -1
  67. package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
  68. package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
  69. package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
  70. package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
  71. package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
  72. package/dist/cjs/components/Switch/Switch.cjs +1 -1
  73. package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
  74. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs +1 -1
  75. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
  76. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs +1 -1
  77. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
  78. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs +1 -1
  79. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
  80. package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
  81. package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
  82. package/dist/cjs/components/Table/data-table-pagination.cjs +1 -1
  83. package/dist/cjs/components/Table/data-table-pagination.cjs.map +1 -1
  84. package/dist/cjs/components/Table/data-table.cjs +1 -1
  85. package/dist/cjs/components/Table/data-table.cjs.map +1 -1
  86. package/dist/cjs/components/Tabs/Tabs.cjs +1 -1
  87. package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
  88. package/dist/cjs/components/Tabs/classes.cjs +1 -1
  89. package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
  90. package/dist/cjs/components/Textarea/Textarea.cjs +1 -1
  91. package/dist/cjs/components/Textarea/Textarea.cjs.map +1 -1
  92. package/dist/cjs/components/TimeGridView.cjs +1 -1
  93. package/dist/cjs/components/TimeGridView.cjs.map +1 -1
  94. package/dist/cjs/components/Toast/Toast.cjs +1 -1
  95. package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
  96. package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
  97. package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  98. package/dist/cjs/components/Tour/Tour.cjs +1 -1
  99. package/dist/cjs/components/Tour/Tour.cjs.map +1 -1
  100. package/dist/cjs/components/Tour/TourWrapper.cjs +1 -1
  101. package/dist/cjs/components/Tour/TourWrapper.cjs.map +1 -1
  102. package/dist/cjs/components/Upload/Upload.cjs +3 -3
  103. package/dist/cjs/components/Upload/Upload.cjs.map +1 -1
  104. package/dist/cjs/components/WheelColumn.cjs +1 -1
  105. package/dist/cjs/components/WheelColumn.cjs.map +1 -1
  106. package/dist/cjs/lib/TextAnimation/BlurText.cjs +1 -1
  107. package/dist/cjs/lib/TextAnimation/BlurText.cjs.map +1 -1
  108. package/dist/cjs/lib/TextAnimation/CircularText.cjs +1 -1
  109. package/dist/cjs/lib/TextAnimation/CircularText.cjs.map +1 -1
  110. package/dist/cjs/lib/TextAnimation/FlipWords.cjs +1 -1
  111. package/dist/cjs/lib/TextAnimation/FlipWords.cjs.map +1 -1
  112. package/dist/cjs/lib/TextAnimation/GradientText.cjs +1 -1
  113. package/dist/cjs/lib/TextAnimation/GradientText.cjs.map +1 -1
  114. package/dist/cjs/lib/TextAnimation/RollingText.cjs +1 -1
  115. package/dist/cjs/lib/TextAnimation/RollingText.cjs.map +1 -1
  116. package/dist/cjs/lib/TextAnimation/RotatingText.cjs +1 -1
  117. package/dist/cjs/lib/TextAnimation/RotatingText.cjs.map +1 -1
  118. package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs +1 -1
  119. package/dist/cjs/lib/TextAnimation/ShimmeringText.cjs.map +1 -1
  120. package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs +1 -1
  121. package/dist/cjs/lib/TextAnimation/TextGenerateEffect.cjs.map +1 -1
  122. package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs +1 -1
  123. package/dist/cjs/lib/TextAnimation/TextHoverEffect.cjs.map +1 -1
  124. package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs +2 -2
  125. package/dist/cjs/lib/TextAnimation/TextPressureEffect.cjs.map +1 -1
  126. package/dist/cjs/lib/TextAnimation/TypingText.cjs +1 -1
  127. package/dist/cjs/lib/TextAnimation/TypingText.cjs.map +1 -1
  128. package/dist/cjs/lib/TextAnimation/WritingText.cjs +1 -1
  129. package/dist/cjs/lib/TextAnimation/WritingText.cjs.map +1 -1
  130. package/dist/cjs/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.cjs.map +1 -0
  131. package/dist/cjs/packages/ui/src/components/accordion.cjs +1 -1
  132. package/dist/cjs/packages/ui/src/components/accordion.cjs.map +1 -1
  133. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
  134. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
  135. package/dist/cjs/packages/ui/src/components/avatar.cjs +1 -1
  136. package/dist/cjs/packages/ui/src/components/avatar.cjs.map +1 -1
  137. package/dist/cjs/packages/ui/src/components/badge.cjs +1 -1
  138. package/dist/cjs/packages/ui/src/components/badge.cjs.map +1 -1
  139. package/dist/cjs/packages/ui/src/components/breadcrumb.cjs +1 -1
  140. package/dist/cjs/packages/ui/src/components/breadcrumb.cjs.map +1 -1
  141. package/dist/cjs/packages/ui/src/components/button-group.cjs +1 -1
  142. package/dist/cjs/packages/ui/src/components/button-group.cjs.map +1 -1
  143. package/dist/cjs/packages/ui/src/components/button.cjs +1 -1
  144. package/dist/cjs/packages/ui/src/components/button.cjs.map +1 -1
  145. package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
  146. package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
  147. package/dist/cjs/packages/ui/src/components/checkbox.cjs +1 -1
  148. package/dist/cjs/packages/ui/src/components/checkbox.cjs.map +1 -1
  149. package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
  150. package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
  151. package/dist/cjs/packages/ui/src/components/command.cjs +1 -1
  152. package/dist/cjs/packages/ui/src/components/command.cjs.map +1 -1
  153. package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
  154. package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
  155. package/dist/cjs/packages/ui/src/components/dialog.cjs +1 -1
  156. package/dist/cjs/packages/ui/src/components/dialog.cjs.map +1 -1
  157. package/dist/cjs/packages/ui/src/components/drawer.cjs +1 -1
  158. package/dist/cjs/packages/ui/src/components/drawer.cjs.map +1 -1
  159. package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs +1 -1
  160. package/dist/cjs/packages/ui/src/components/dropdown-menu.cjs.map +1 -1
  161. package/dist/cjs/packages/ui/src/components/input-otp.cjs +1 -1
  162. package/dist/cjs/packages/ui/src/components/input-otp.cjs.map +1 -1
  163. package/dist/cjs/packages/ui/src/components/input.cjs +1 -1
  164. package/dist/cjs/packages/ui/src/components/input.cjs.map +1 -1
  165. package/dist/cjs/packages/ui/src/components/label.cjs +1 -1
  166. package/dist/cjs/packages/ui/src/components/label.cjs.map +1 -1
  167. package/dist/cjs/packages/ui/src/components/pagination.cjs +1 -1
  168. package/dist/cjs/packages/ui/src/components/pagination.cjs.map +1 -1
  169. package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
  170. package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
  171. package/dist/cjs/packages/ui/src/components/radio-group.cjs +1 -1
  172. package/dist/cjs/packages/ui/src/components/radio-group.cjs.map +1 -1
  173. package/dist/cjs/packages/ui/src/components/resizable.cjs +1 -1
  174. package/dist/cjs/packages/ui/src/components/resizable.cjs.map +1 -1
  175. package/dist/cjs/packages/ui/src/components/scroll-area.cjs +1 -1
  176. package/dist/cjs/packages/ui/src/components/scroll-area.cjs.map +1 -1
  177. package/dist/cjs/packages/ui/src/components/select.cjs +1 -1
  178. package/dist/cjs/packages/ui/src/components/select.cjs.map +1 -1
  179. package/dist/cjs/packages/ui/src/components/separator.cjs +1 -1
  180. package/dist/cjs/packages/ui/src/components/separator.cjs.map +1 -1
  181. package/dist/cjs/packages/ui/src/components/sheet.cjs +1 -1
  182. package/dist/cjs/packages/ui/src/components/sheet.cjs.map +1 -1
  183. package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
  184. package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
  185. package/dist/cjs/packages/ui/src/components/skeleton.cjs +1 -1
  186. package/dist/cjs/packages/ui/src/components/skeleton.cjs.map +1 -1
  187. package/dist/cjs/packages/ui/src/components/switch.cjs +1 -1
  188. package/dist/cjs/packages/ui/src/components/switch.cjs.map +1 -1
  189. package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
  190. package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
  191. package/dist/cjs/packages/ui/src/components/tabs.cjs +1 -1
  192. package/dist/cjs/packages/ui/src/components/tabs.cjs.map +1 -1
  193. package/dist/cjs/packages/ui/src/components/textarea.cjs +1 -1
  194. package/dist/cjs/packages/ui/src/components/textarea.cjs.map +1 -1
  195. package/dist/cjs/packages/ui/src/components/toggle.cjs +1 -1
  196. package/dist/cjs/packages/ui/src/components/toggle.cjs.map +1 -1
  197. package/dist/cjs/packages/ui/src/components/tooltip.cjs +1 -1
  198. package/dist/cjs/packages/ui/src/components/tooltip.cjs.map +1 -1
  199. package/dist/cjs/packages/ui/src/components/tree-view.cjs +1 -1
  200. package/dist/cjs/packages/ui/src/components/tree-view.cjs.map +1 -1
  201. package/dist/cjs/styles/index.css +1 -1
  202. package/dist/cjs/utils/animations.cjs +1 -1
  203. package/dist/cjs/utils/animations.cjs.map +1 -1
  204. package/dist/cjs/utils/css.cjs +1 -1
  205. package/dist/cjs/utils/css.cjs.map +1 -1
  206. package/dist/cjs/utils/parsers.cjs +1 -1
  207. package/dist/cjs/utils/parsers.cjs.map +1 -1
  208. package/dist/esm/components/Accordion/Accordion.js +60 -60
  209. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  210. package/dist/esm/components/Avatar/Avatar.js +40 -40
  211. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  212. package/dist/esm/components/Badge/Badge.js +1 -1
  213. package/dist/esm/components/Badge/Badge.js.map +1 -1
  214. package/dist/esm/components/Breadcrumb/Breadcrumb.js +36 -36
  215. package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
  216. package/dist/esm/components/Button/Button.js +9 -9
  217. package/dist/esm/components/Button/Button.js.map +1 -1
  218. package/dist/esm/components/Calendar/Calendar.js +4 -4
  219. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  220. package/dist/esm/components/Carousel/Carousel.js +165 -165
  221. package/dist/esm/components/Carousel/Carousel.js.map +1 -1
  222. package/dist/esm/components/Checkbox/Checkbox.js +26 -26
  223. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  224. package/dist/esm/components/Collapsible/Collapsible.js +43 -43
  225. package/dist/esm/components/Collapsible/Collapsible.js.map +1 -1
  226. package/dist/esm/components/Command/Command.js +28 -28
  227. package/dist/esm/components/Command/Command.js.map +1 -1
  228. package/dist/esm/components/ContextMenu/ContextMenu.js +11 -11
  229. package/dist/esm/components/ContextMenu/ContextMenu.js.map +1 -1
  230. package/dist/esm/components/Cropper/Cropper.js +132 -132
  231. package/dist/esm/components/Cropper/Cropper.js.map +1 -1
  232. package/dist/esm/components/DatePicker/DatePicker.js +75 -75
  233. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  234. package/dist/esm/components/DatePicker/RangePicker.js +136 -136
  235. package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
  236. package/dist/esm/components/DatePicker/TimePicker.js +150 -150
  237. package/dist/esm/components/DatePicker/TimePicker.js.map +1 -1
  238. package/dist/esm/components/Dialog/Dialog.js +114 -114
  239. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  240. package/dist/esm/components/DropdownMenu/DropdownMenu.js +13 -13
  241. package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
  242. package/dist/esm/components/FloatLabel.js +44 -44
  243. package/dist/esm/components/FloatLabel.js.map +1 -1
  244. package/dist/esm/components/Glass/Glass.js +15 -15
  245. package/dist/esm/components/Glass/Glass.js.map +1 -1
  246. package/dist/esm/components/ImageViewer/ImageViewer.js +53 -53
  247. package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
  248. package/dist/esm/components/Input/Input.js +104 -104
  249. package/dist/esm/components/Input/Input.js.map +1 -1
  250. package/dist/esm/components/InputOTP/InputOTP.js +16 -16
  251. package/dist/esm/components/InputOTP/InputOTP.js.map +1 -1
  252. package/dist/esm/components/Interactive/CursorFollow.js +49 -49
  253. package/dist/esm/components/Interactive/CursorFollow.js.map +1 -1
  254. package/dist/esm/components/Marquee/Marquee.js +130 -130
  255. package/dist/esm/components/Marquee/Marquee.js.map +1 -1
  256. package/dist/esm/components/Pagination/Pagination.js +68 -68
  257. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  258. package/dist/esm/components/QrCode/QrCode.js +37 -37
  259. package/dist/esm/components/QrCode/QrCode.js.map +1 -1
  260. package/dist/esm/components/Radio/Radio.js +16 -16
  261. package/dist/esm/components/Radio/Radio.js.map +1 -1
  262. package/dist/esm/components/Rate/Rate.js +62 -62
  263. package/dist/esm/components/Rate/Rate.js.map +1 -1
  264. package/dist/esm/components/Resizable/Resizable.js +6 -6
  265. package/dist/esm/components/Resizable/Resizable.js.map +1 -1
  266. package/dist/esm/components/ScrollArea/ScrollArea.js +10 -10
  267. package/dist/esm/components/ScrollArea/ScrollArea.js.map +1 -1
  268. package/dist/esm/components/Select/Select.js +64 -64
  269. package/dist/esm/components/Select/Select.js.map +1 -1
  270. package/dist/esm/components/Sheet/Sheet.js +21 -21
  271. package/dist/esm/components/Sheet/Sheet.js.map +1 -1
  272. package/dist/esm/components/Slider/Slider.js +54 -54
  273. package/dist/esm/components/Slider/Slider.js.map +1 -1
  274. package/dist/esm/components/Stepper/Stepper.js +198 -198
  275. package/dist/esm/components/Stepper/Stepper.js.map +1 -1
  276. package/dist/esm/components/Stepper/StepperWrapper.js +15 -15
  277. package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
  278. package/dist/esm/components/Switch/Switch.js +38 -38
  279. package/dist/esm/components/Switch/Switch.js.map +1 -1
  280. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js +37 -37
  281. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
  282. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js +25 -25
  283. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
  284. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js +64 -64
  285. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
  286. package/dist/esm/components/Table/data-table-column-header.js +18 -18
  287. package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
  288. package/dist/esm/components/Table/data-table-pagination.js +21 -21
  289. package/dist/esm/components/Table/data-table-pagination.js.map +1 -1
  290. package/dist/esm/components/Table/data-table.js +18 -18
  291. package/dist/esm/components/Table/data-table.js.map +1 -1
  292. package/dist/esm/components/Tabs/Tabs.js +242 -242
  293. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  294. package/dist/esm/components/Tabs/classes.js +51 -51
  295. package/dist/esm/components/Tabs/classes.js.map +1 -1
  296. package/dist/esm/components/Textarea/Textarea.js +49 -49
  297. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  298. package/dist/esm/components/TimeGridView.js +12 -12
  299. package/dist/esm/components/TimeGridView.js.map +1 -1
  300. package/dist/esm/components/Toast/Toast.js +45 -45
  301. package/dist/esm/components/Toast/Toast.js.map +1 -1
  302. package/dist/esm/components/Tooltip/Tooltip.js +19 -19
  303. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  304. package/dist/esm/components/Tour/Tour.js +11 -11
  305. package/dist/esm/components/Tour/Tour.js.map +1 -1
  306. package/dist/esm/components/Tour/TourWrapper.js +15 -15
  307. package/dist/esm/components/Tour/TourWrapper.js.map +1 -1
  308. package/dist/esm/components/Upload/Upload.js +405 -405
  309. package/dist/esm/components/Upload/Upload.js.map +1 -1
  310. package/dist/esm/components/WheelColumn.js +47 -47
  311. package/dist/esm/components/WheelColumn.js.map +1 -1
  312. package/dist/esm/lib/TextAnimation/BlurText.js +18 -18
  313. package/dist/esm/lib/TextAnimation/BlurText.js.map +1 -1
  314. package/dist/esm/lib/TextAnimation/CircularText.js +7 -7
  315. package/dist/esm/lib/TextAnimation/CircularText.js.map +1 -1
  316. package/dist/esm/lib/TextAnimation/FlipWords.js +21 -21
  317. package/dist/esm/lib/TextAnimation/FlipWords.js.map +1 -1
  318. package/dist/esm/lib/TextAnimation/GradientText.js +4 -4
  319. package/dist/esm/lib/TextAnimation/GradientText.js.map +1 -1
  320. package/dist/esm/lib/TextAnimation/RollingText.js +24 -24
  321. package/dist/esm/lib/TextAnimation/RollingText.js.map +1 -1
  322. package/dist/esm/lib/TextAnimation/RotatingText.js +6 -6
  323. package/dist/esm/lib/TextAnimation/RotatingText.js.map +1 -1
  324. package/dist/esm/lib/TextAnimation/ShimmeringText.js +9 -9
  325. package/dist/esm/lib/TextAnimation/ShimmeringText.js.map +1 -1
  326. package/dist/esm/lib/TextAnimation/TextGenerateEffect.js +14 -14
  327. package/dist/esm/lib/TextAnimation/TextGenerateEffect.js.map +1 -1
  328. package/dist/esm/lib/TextAnimation/TextHoverEffect.js +9 -9
  329. package/dist/esm/lib/TextAnimation/TextHoverEffect.js.map +1 -1
  330. package/dist/esm/lib/TextAnimation/TextPressureEffect.js +3 -3
  331. package/dist/esm/lib/TextAnimation/TextPressureEffect.js.map +1 -1
  332. package/dist/esm/lib/TextAnimation/TypingText.js +17 -17
  333. package/dist/esm/lib/TextAnimation/TypingText.js.map +1 -1
  334. package/dist/esm/lib/TextAnimation/WritingText.js +10 -10
  335. package/dist/esm/lib/TextAnimation/WritingText.js.map +1 -1
  336. package/dist/esm/node_modules/.pnpm/nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/nuqs/dist/server.js.map +1 -0
  337. package/dist/esm/packages/ui/src/components/accordion.js +31 -31
  338. package/dist/esm/packages/ui/src/components/accordion.js.map +1 -1
  339. package/dist/esm/packages/ui/src/components/alert-dialog.js +33 -33
  340. package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
  341. package/dist/esm/packages/ui/src/components/avatar.js +20 -20
  342. package/dist/esm/packages/ui/src/components/avatar.js.map +1 -1
  343. package/dist/esm/packages/ui/src/components/badge.js +53 -53
  344. package/dist/esm/packages/ui/src/components/badge.js.map +1 -1
  345. package/dist/esm/packages/ui/src/components/breadcrumb.js +20 -20
  346. package/dist/esm/packages/ui/src/components/breadcrumb.js.map +1 -1
  347. package/dist/esm/packages/ui/src/components/button-group.js +31 -31
  348. package/dist/esm/packages/ui/src/components/button-group.js.map +1 -1
  349. package/dist/esm/packages/ui/src/components/button.js +90 -90
  350. package/dist/esm/packages/ui/src/components/button.js.map +1 -1
  351. package/dist/esm/packages/ui/src/components/calendar.js +94 -94
  352. package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
  353. package/dist/esm/packages/ui/src/components/checkbox.js +47 -47
  354. package/dist/esm/packages/ui/src/components/checkbox.js.map +1 -1
  355. package/dist/esm/packages/ui/src/components/combobox.js +64 -64
  356. package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
  357. package/dist/esm/packages/ui/src/components/command.js +77 -77
  358. package/dist/esm/packages/ui/src/components/command.js.map +1 -1
  359. package/dist/esm/packages/ui/src/components/context-menu.js +76 -76
  360. package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
  361. package/dist/esm/packages/ui/src/components/dialog.js +54 -54
  362. package/dist/esm/packages/ui/src/components/dialog.js.map +1 -1
  363. package/dist/esm/packages/ui/src/components/drawer.js +39 -39
  364. package/dist/esm/packages/ui/src/components/drawer.js.map +1 -1
  365. package/dist/esm/packages/ui/src/components/dropdown-menu.js +109 -109
  366. package/dist/esm/packages/ui/src/components/dropdown-menu.js.map +1 -1
  367. package/dist/esm/packages/ui/src/components/input-otp.js +30 -30
  368. package/dist/esm/packages/ui/src/components/input-otp.js.map +1 -1
  369. package/dist/esm/packages/ui/src/components/input.js +19 -19
  370. package/dist/esm/packages/ui/src/components/input.js.map +1 -1
  371. package/dist/esm/packages/ui/src/components/label.js +9 -9
  372. package/dist/esm/packages/ui/src/components/label.js.map +1 -1
  373. package/dist/esm/packages/ui/src/components/pagination.js +26 -26
  374. package/dist/esm/packages/ui/src/components/pagination.js.map +1 -1
  375. package/dist/esm/packages/ui/src/components/popover.js +13 -13
  376. package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
  377. package/dist/esm/packages/ui/src/components/radio-group.js +45 -45
  378. package/dist/esm/packages/ui/src/components/radio-group.js.map +1 -1
  379. package/dist/esm/packages/ui/src/components/resizable.js +18 -18
  380. package/dist/esm/packages/ui/src/components/resizable.js.map +1 -1
  381. package/dist/esm/packages/ui/src/components/scroll-area.js +31 -31
  382. package/dist/esm/packages/ui/src/components/scroll-area.js.map +1 -1
  383. package/dist/esm/packages/ui/src/components/select.js +119 -119
  384. package/dist/esm/packages/ui/src/components/select.js.map +1 -1
  385. package/dist/esm/packages/ui/src/components/separator.js +86 -86
  386. package/dist/esm/packages/ui/src/components/separator.js.map +1 -1
  387. package/dist/esm/packages/ui/src/components/sheet.js +50 -50
  388. package/dist/esm/packages/ui/src/components/sheet.js.map +1 -1
  389. package/dist/esm/packages/ui/src/components/sidebar.js +198 -198
  390. package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
  391. package/dist/esm/packages/ui/src/components/skeleton.js +3 -3
  392. package/dist/esm/packages/ui/src/components/skeleton.js.map +1 -1
  393. package/dist/esm/packages/ui/src/components/switch.js +57 -57
  394. package/dist/esm/packages/ui/src/components/switch.js.map +1 -1
  395. package/dist/esm/packages/ui/src/components/table.js +17 -17
  396. package/dist/esm/packages/ui/src/components/table.js.map +1 -1
  397. package/dist/esm/packages/ui/src/components/tabs.js +33 -33
  398. package/dist/esm/packages/ui/src/components/tabs.js.map +1 -1
  399. package/dist/esm/packages/ui/src/components/textarea.js +17 -17
  400. package/dist/esm/packages/ui/src/components/textarea.js.map +1 -1
  401. package/dist/esm/packages/ui/src/components/toggle.js +36 -36
  402. package/dist/esm/packages/ui/src/components/toggle.js.map +1 -1
  403. package/dist/esm/packages/ui/src/components/tooltip.js +20 -20
  404. package/dist/esm/packages/ui/src/components/tooltip.js.map +1 -1
  405. package/dist/esm/packages/ui/src/components/tree-view.js +218 -218
  406. package/dist/esm/packages/ui/src/components/tree-view.js.map +1 -1
  407. package/dist/esm/styles/index.css +1 -1
  408. package/dist/esm/utils/animations.js +55 -55
  409. package/dist/esm/utils/animations.js.map +1 -1
  410. package/dist/esm/utils/css.js +7 -7
  411. package/dist/esm/utils/css.js.map +1 -1
  412. package/dist/esm/utils/parsers.js +1 -1
  413. package/dist/types/components/DatePicker/RangePicker.d.ts.map +1 -1
  414. package/dist/types/lib/TextAnimation/TextPressureEffect.d.ts.map +1 -1
  415. package/dist/types/lib/TextAnimation/TypingText.d.ts.map +1 -1
  416. package/package.json +1 -1
  417. 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
  418. 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
  419. /package/dist/cjs/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.cjs +0 -0
  420. /package/dist/esm/node_modules/.pnpm/{nuqs@2.8.0_next@15.5.9_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1 → nuqs@2.8.0_next@15.5.9_@babel_core@7.28.5_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1}/node_modules/nuqs/dist/server.js +0 -0
@@ -1,4 +1,4 @@
1
- import { jsx as f, jsxs as L, Fragment as z } from "react/jsx-runtime";
1
+ import { jsx as p, jsxs as L, Fragment as z } from "react/jsx-runtime";
2
2
  import * as t from "react";
3
3
  import { useMotionValue as k, AnimatePresence as M, motion as H, useSpring as F } from "motion/react";
4
4
  import "@radix-ui/react-slot";
@@ -41,54 +41,54 @@ const B = {
41
41
  }, N = t.createContext(
42
42
  void 0
43
43
  ), X = () => {
44
- const d = t.useContext(N);
45
- if (!d)
44
+ const f = t.useContext(N);
45
+ if (!f)
46
46
  throw new Error("useCursor must be used within a CursorProvider");
47
- return d;
47
+ return f;
48
48
  }, I = {
49
49
  default: null,
50
50
  // Use system cursor
51
- pointer: /* @__PURE__ */ f("div", { className: "h-5 w-5 rounded-full bg-white/30 border-2 border-white" })
51
+ pointer: /* @__PURE__ */ p("div", { className: "ds:h-5 ds:w-5 ds:rounded-full ds:bg-white/30 ds:border-2 ds:border-white" })
52
52
  };
53
53
  function be({
54
- ref: d,
54
+ ref: f,
55
55
  children: e,
56
- cursorType: n = "default",
56
+ cursorType: s = "default",
57
57
  followText: v,
58
58
  showFollow: b,
59
59
  followAlign: x = "bottom-right",
60
- followSideOffset: s = 15,
60
+ followSideOffset: n = 15,
61
61
  followTransition: y = "normal",
62
62
  ...E
63
63
  }) {
64
64
  const [g, m] = t.useState({ x: 0, y: 0 }), [i, C] = t.useState(!1), r = t.useRef(null), h = t.useRef(null);
65
- t.useImperativeHandle(d, () => r.current), t.useEffect(() => {
65
+ t.useImperativeHandle(f, () => r.current), t.useEffect(() => {
66
66
  if (!r.current) return;
67
67
  const u = r.current.parentElement;
68
68
  if (!u) return;
69
69
  getComputedStyle(u).position === "static" && (u.style.position = "relative");
70
- const w = (p) => {
70
+ const w = (d) => {
71
71
  const l = u.getBoundingClientRect();
72
- m({ x: p.clientX - l.left, y: p.clientY - l.top }), C(!0);
72
+ m({ x: d.clientX - l.left, y: d.clientY - l.top }), C(!0);
73
73
  }, S = () => C(!1);
74
74
  return u.addEventListener("mousemove", w), u.addEventListener("mouseleave", S), () => {
75
75
  u.removeEventListener("mousemove", w), u.removeEventListener("mouseleave", S);
76
76
  };
77
77
  }, []);
78
- const c = n !== void 0, P = b ?? v !== void 0, o = B[y];
79
- return /* @__PURE__ */ f(
78
+ const c = s !== void 0, P = b ?? v !== void 0, o = B[y];
79
+ return /* @__PURE__ */ p(
80
80
  N.Provider,
81
81
  {
82
82
  value: { cursorPos: g, isActive: i, containerRef: r, cursorRef: h },
83
83
  children: /* @__PURE__ */ L("div", { ref: r, "data-slot": "cursor-provider", ...E, children: [
84
84
  e,
85
- c && /* @__PURE__ */ f(Y, { cursorType: n }),
86
- P && /* @__PURE__ */ f(
85
+ c && /* @__PURE__ */ p(Y, { cursorType: s }),
86
+ P && /* @__PURE__ */ p(
87
87
  j,
88
88
  {
89
89
  followText: v,
90
90
  align: x,
91
- sideOffset: s,
91
+ sideOffset: n,
92
92
  transition: o
93
93
  }
94
94
  )
@@ -97,30 +97,30 @@ function be({
97
97
  );
98
98
  }
99
99
  function Y({
100
- ref: d,
100
+ ref: f,
101
101
  children: e,
102
- cursorType: n = "default",
102
+ cursorType: s = "default",
103
103
  className: v,
104
104
  style: b,
105
105
  ...x
106
106
  }) {
107
- const { cursorPos: s, isActive: y, containerRef: E, cursorRef: g } = X();
108
- t.useImperativeHandle(d, () => g.current);
109
- const m = k(0), i = k(0), r = e || (typeof n == "string" && n in I ? I[n] : n), h = r !== null;
107
+ const { cursorPos: n, isActive: y, containerRef: E, cursorRef: g } = X();
108
+ t.useImperativeHandle(f, () => g.current);
109
+ const m = k(0), i = k(0), r = e || (typeof s == "string" && s in I ? I[s] : s), h = r !== null;
110
110
  return t.useEffect(() => {
111
111
  const c = E.current?.parentElement;
112
112
  return c && y && h && (c.style.cursor = "none"), () => {
113
113
  c && (c.style.cursor = "default");
114
114
  };
115
115
  }, [E, y, h]), t.useEffect(() => {
116
- m.set(s.x), i.set(s.y);
117
- }, [s, m, i]), r ? /* @__PURE__ */ f(M, { children: y && /* @__PURE__ */ f(
116
+ m.set(n.x), i.set(n.y);
117
+ }, [n, m, i]), r ? /* @__PURE__ */ p(M, { children: y && /* @__PURE__ */ p(
118
118
  H.div,
119
119
  {
120
120
  ref: g,
121
121
  "data-slot": "cursor",
122
122
  className: A(
123
- "transform-[translate(-50%,-50%)] pointer-events-none z-9999 absolute",
123
+ "ds:transform-[translate(-50%,-50%)] ds:pointer-events-none ds:z-9999 ds:absolute",
124
124
  v
125
125
  ),
126
126
  style: { top: i, left: m, ...b },
@@ -133,26 +133,26 @@ function Y({
133
133
  ) }) : null;
134
134
  }
135
135
  function j({
136
- ref: d,
136
+ ref: f,
137
137
  sideOffset: e = 15,
138
- align: n = "bottom-right",
138
+ align: s = "bottom-right",
139
139
  children: v,
140
140
  className: b,
141
141
  style: x,
142
- followText: s,
142
+ followText: n,
143
143
  transition: y,
144
144
  transitionPreset: E = "normal",
145
145
  ...g
146
146
  }) {
147
147
  const { cursorPos: m, isActive: i, cursorRef: C } = X(), r = t.useRef(null);
148
148
  t.useImperativeHandle(
149
- d,
149
+ f,
150
150
  () => r.current
151
151
  );
152
152
  const h = k(0), c = k(0), P = y || B[E], o = F(h, P), u = F(c, P), w = t.useCallback(() => {
153
- const p = r.current?.getBoundingClientRect(), l = p?.width ?? 0, R = p?.height ?? 0;
153
+ const d = r.current?.getBoundingClientRect(), l = d?.width ?? 0, R = d?.height ?? 0;
154
154
  let a;
155
- switch (n) {
155
+ switch (s) {
156
156
  case "center":
157
157
  a = { x: l / 2, y: R / 2 };
158
158
  break;
@@ -184,19 +184,19 @@ function j({
184
184
  a = { x: 0, y: 0 };
185
185
  }
186
186
  return a;
187
- }, [n, e]);
187
+ }, [s, e]);
188
188
  t.useEffect(() => {
189
- const p = w(), l = C.current?.getBoundingClientRect(), R = l?.width ?? 20, a = l?.height ?? 20;
190
- h.set(m.x - p.x + R / 2), c.set(m.y - p.y + a / 2);
189
+ const d = w(), l = C.current?.getBoundingClientRect(), R = l?.width ?? 20, a = l?.height ?? 20;
190
+ h.set(m.x - d.x + R / 2), c.set(m.y - d.y + a / 2);
191
191
  }, [w, m, C, h, c]);
192
- const S = () => v || (s ? typeof s == "string" ? /* @__PURE__ */ f("div", { className: "px-4 py-2 bg-white rounded-md shadow-lg text-sm font-medium", children: s }) : s : null);
193
- return /* @__PURE__ */ f(M, { children: i && /* @__PURE__ */ f(
192
+ const S = () => v || (n ? typeof n == "string" ? /* @__PURE__ */ p("div", { className: "ds:px-4 ds:py-2 ds:bg-white ds:rounded-md ds:shadow-lg ds:text-sm ds:font-medium", children: n }) : n : null);
193
+ return /* @__PURE__ */ p(M, { children: i && /* @__PURE__ */ p(
194
194
  H.div,
195
195
  {
196
196
  ref: r,
197
197
  "data-slot": "cursor-follow",
198
198
  className: A(
199
- "transform-[translate(-50%,-50%)] pointer-events-none z-9998 absolute",
199
+ "ds:transform-[translate(-50%,-50%)] ds:pointer-events-none ds:z-9998 ds:absolute",
200
200
  b
201
201
  ),
202
202
  style: { top: u, left: o, ...x },
@@ -208,24 +208,24 @@ function j({
208
208
  }
209
209
  ) });
210
210
  }
211
- function xe(d = {}) {
211
+ function xe(f = {}) {
212
212
  const {
213
213
  cursorType: e = "default",
214
- followText: n,
214
+ followText: s,
215
215
  showFollow: v,
216
216
  align: b = "bottom-right",
217
217
  sideOffset: x = 15,
218
- transitionPreset: s = "normal",
218
+ transitionPreset: n = "normal",
219
219
  className: y,
220
220
  style: E
221
- } = d, [g, m] = t.useState({ x: 0, y: 0 }), [i, C] = t.useState(!1), r = t.useRef(null), h = t.useRef(null);
221
+ } = f, [g, m] = t.useState({ x: 0, y: 0 }), [i, C] = t.useState(!1), r = t.useRef(null), h = t.useRef(null);
222
222
  t.useEffect(() => {
223
223
  if (!r.current) return;
224
224
  const o = r.current;
225
225
  getComputedStyle(o).position === "static" && (o.style.position = "relative");
226
226
  const u = (S) => {
227
- const p = o.getBoundingClientRect();
228
- m({ x: S.clientX - p.left, y: S.clientY - p.top }), C(!0);
227
+ const d = o.getBoundingClientRect();
228
+ m({ x: S.clientX - d.left, y: S.clientY - d.top }), C(!0);
229
229
  }, w = () => C(!1);
230
230
  return o.addEventListener("mousemove", u), o.addEventListener("mouseleave", w), () => {
231
231
  o.removeEventListener("mousemove", u), o.removeEventListener("mouseleave", w);
@@ -244,14 +244,14 @@ function xe(d = {}) {
244
244
  {
245
245
  value: { cursorPos: g, isActive: i, containerRef: r, cursorRef: h },
246
246
  children: [
247
- /* @__PURE__ */ f(Y, { cursorType: e }),
248
- (v ?? n !== void 0) && /* @__PURE__ */ f(
247
+ /* @__PURE__ */ p(Y, { cursorType: e }),
248
+ (v ?? s !== void 0) && /* @__PURE__ */ p(
249
249
  j,
250
250
  {
251
- followText: n,
251
+ followText: s,
252
252
  align: b,
253
253
  sideOffset: x,
254
- transitionPreset: s
254
+ transitionPreset: n
255
255
  }
256
256
  )
257
257
  ]
@@ -260,15 +260,15 @@ function xe(d = {}) {
260
260
  i,
261
261
  g,
262
262
  e,
263
- n,
263
+ s,
264
264
  v,
265
265
  b,
266
266
  x,
267
- s
267
+ n
268
268
  ]);
269
269
  return {
270
270
  ref: r,
271
- className: A("relative", y),
271
+ className: A("ds:relative", y),
272
272
  style: { ...E },
273
273
  "data-cursor-container": !0,
274
274
  children: (o) => /* @__PURE__ */ L(z, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"CursorFollow.js","sources":["../../../../src/components/Interactive/CursorFollow.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n motion,\n useMotionValue,\n useSpring,\n AnimatePresence,\n type HTMLMotionProps,\n type SpringOptions,\n} from \"motion/react\";\n\nimport { cn } from \"@dsui/ui/index\";\n\n// Transition presets\ntype TransitionPreset = \"slow\" | \"normal\" | \"fast\" | \"realtime\";\n\nconst TRANSITION_PRESETS: Record<TransitionPreset, SpringOptions> = {\n slow: { stiffness: 100, damping: 20, bounce: 0 },\n normal: { stiffness: 500, damping: 50, bounce: 0 },\n fast: { stiffness: 1000, damping: 80, bounce: 0 },\n realtime: { stiffness: 2000, damping: 100, bounce: 0 },\n};\n\ntype CursorContextType = {\n cursorPos: { x: number; y: number };\n isActive: boolean;\n containerRef: React.RefObject<HTMLDivElement | null>;\n cursorRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst CursorContext = React.createContext<CursorContextType | undefined>(\n undefined\n);\n\nconst useCursor = (): CursorContextType => {\n const context = React.useContext(CursorContext);\n if (!context) {\n throw new Error(\"useCursor must be used within a CursorProvider\");\n }\n return context;\n};\n\ntype Align =\n | \"top\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"left\"\n | \"right\"\n | \"center\";\n\ntype CursorVariantKey = \"default\" | \"pointer\";\ntype CursorVariant = CursorVariantKey | React.ReactNode;\n\n// Predefined cursor variants\nconst cursorVariants: Record<CursorVariantKey, React.ReactNode> = {\n default: null, // Use system cursor\n pointer: (\n <div className=\"h-5 w-5 rounded-full bg-white/30 border-2 border-white\" />\n ),\n};\n\ntype CursorProviderProps = React.ComponentProps<\"div\"> & {\n children: React.ReactNode;\n /** Auto-setup cursor with variant (preset key or custom ReactNode) */\n cursorType?: CursorVariant;\n /** Auto-setup follow element with content */\n followText?: React.ReactNode;\n /** Show follow element (default: true when followText is provided) */\n showFollow?: boolean;\n /** Follow element alignment */\n followAlign?: Align;\n /** Follow element side offset */\n followSideOffset?: number;\n /** Follow element transition preset */\n followTransition?: TransitionPreset;\n};\n\nfunction CursorProvider({\n ref,\n children,\n cursorType = \"default\",\n followText,\n showFollow,\n followAlign = \"bottom-right\",\n followSideOffset = 15,\n followTransition = \"normal\",\n ...props\n}: CursorProviderProps) {\n const [cursorPos, setCursorPos] = React.useState({ x: 0, y: 0 });\n const [isActive, setIsActive] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const cursorRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(ref as React.Ref<HTMLDivElement>, () => containerRef.current as HTMLDivElement);\n\n React.useEffect(() => {\n if (!containerRef.current) return;\n\n const parent = containerRef.current.parentElement;\n if (!parent) return;\n\n if (getComputedStyle(parent).position === \"static\") {\n parent.style.position = \"relative\";\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = parent.getBoundingClientRect();\n setCursorPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setIsActive(true);\n };\n const handleMouseLeave = () => setIsActive(false);\n\n parent.addEventListener(\"mousemove\", handleMouseMove);\n parent.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n parent.removeEventListener(\"mousemove\", handleMouseMove);\n parent.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n // Auto-setup: determine if we should show cursor and follow\n const shouldShowCursor = cursorType !== undefined;\n const shouldShowFollowElement = showFollow ?? followText !== undefined;\n\n // Convert preset to SpringOptions\n const transitionConfig = TRANSITION_PRESETS[followTransition];\n\n return (\n <CursorContext.Provider\n value={{ cursorPos, isActive, containerRef, cursorRef }}\n >\n <div ref={containerRef} data-slot=\"cursor-provider\" {...props}>\n {children}\n\n {/* Auto-setup Cursor */}\n {shouldShowCursor && <Cursor cursorType={cursorType} />}\n\n {/* Auto-setup CursorFollow */}\n {shouldShowFollowElement && (\n <CursorFollow\n followText={followText}\n align={followAlign}\n sideOffset={followSideOffset}\n transition={transitionConfig}\n />\n )}\n </div>\n </CursorContext.Provider>\n );\n}\n\ntype CursorProps = HTMLMotionProps<\"div\"> & {\n children?: React.ReactNode;\n cursorType?: CursorVariant;\n};\n\nfunction Cursor({\n ref,\n children,\n cursorType = \"default\",\n className,\n style,\n ...props\n}: CursorProps) {\n const { cursorPos, isActive, containerRef, cursorRef } = useCursor();\n React.useImperativeHandle(ref as React.Ref<HTMLDivElement>, () => cursorRef.current as HTMLDivElement);\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n // Determine which content to render\n const getCursorContent = () => {\n if (children) return children;\n\n // Check if cursorType is a preset key\n if (typeof cursorType === \"string\" && cursorType in cursorVariants) {\n return cursorVariants[cursorType as CursorVariantKey];\n }\n\n // Otherwise treat it as custom ReactNode\n return cursorType;\n };\n\n const cursorContent = getCursorContent();\n\n // Only hide system cursor if we have custom content to show\n const shouldHideSystemCursor = cursorContent !== null;\n\n React.useEffect(() => {\n const parentElement = containerRef.current?.parentElement;\n\n if (parentElement && isActive && shouldHideSystemCursor) {\n parentElement.style.cursor = \"none\";\n }\n\n return () => {\n if (parentElement) parentElement.style.cursor = \"default\";\n };\n }, [containerRef, isActive, shouldHideSystemCursor]);\n\n React.useEffect(() => {\n x.set(cursorPos.x);\n y.set(cursorPos.y);\n }, [cursorPos, x, y]);\n\n // Only render if we have content to show\n if (!cursorContent) return null;\n\n return (\n <AnimatePresence>\n {isActive && (\n <motion.div\n ref={cursorRef}\n data-slot=\"cursor\"\n className={cn(\n \"transform-[translate(-50%,-50%)] pointer-events-none z-9999 absolute\",\n className\n )}\n style={{ top: y, left: x, ...style }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n {...props}\n >\n {cursorContent}\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\ntype CursorFollowProps = HTMLMotionProps<\"div\"> & {\n sideOffset?: number;\n align?: Align;\n transition?: SpringOptions;\n transitionPreset?: TransitionPreset;\n children?: React.ReactNode;\n followText?: React.ReactNode;\n};\n\nfunction CursorFollow({\n ref,\n sideOffset = 15,\n align = \"bottom-right\",\n children,\n className,\n style,\n followText,\n transition,\n transitionPreset = \"normal\",\n ...props\n}: CursorFollowProps) {\n const { cursorPos, isActive, cursorRef } = useCursor();\n const cursorFollowRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(\n ref as React.Ref<HTMLDivElement>,\n () => cursorFollowRef.current as HTMLDivElement\n );\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n // Use custom transition if provided, otherwise use preset\n const finalTransition = transition || TRANSITION_PRESETS[transitionPreset];\n\n const springX = useSpring(x, finalTransition);\n const springY = useSpring(y, finalTransition);\n\n const calculateOffset = React.useCallback(() => {\n const rect = cursorFollowRef.current?.getBoundingClientRect();\n const width = rect?.width ?? 0;\n const height = rect?.height ?? 0;\n\n let newOffset;\n\n switch (align) {\n case \"center\":\n newOffset = { x: width / 2, y: height / 2 };\n break;\n case \"top\":\n newOffset = { x: width / 2, y: height + sideOffset };\n break;\n case \"top-left\":\n newOffset = { x: width + sideOffset, y: height + sideOffset };\n break;\n case \"top-right\":\n newOffset = { x: -sideOffset, y: height + sideOffset };\n break;\n case \"bottom\":\n newOffset = { x: width / 2, y: -sideOffset };\n break;\n case \"bottom-left\":\n newOffset = { x: width + sideOffset, y: -sideOffset };\n break;\n case \"bottom-right\":\n newOffset = { x: -sideOffset, y: -sideOffset };\n break;\n case \"left\":\n newOffset = { x: width + sideOffset, y: height / 2 };\n break;\n case \"right\":\n newOffset = { x: -sideOffset, y: height / 2 };\n break;\n default:\n newOffset = { x: 0, y: 0 };\n }\n\n return newOffset;\n }, [align, sideOffset]);\n\n React.useEffect(() => {\n const offset = calculateOffset();\n const cursorRect = cursorRef.current?.getBoundingClientRect();\n const cursorWidth = cursorRect?.width ?? 20;\n const cursorHeight = cursorRect?.height ?? 20;\n\n x.set(cursorPos.x - offset.x + cursorWidth / 2);\n y.set(cursorPos.y - offset.y + cursorHeight / 2);\n }, [calculateOffset, cursorPos, cursorRef, x, y]);\n\n // Determine follow content based on children or followText\n const getFollowContent = () => {\n if (children) return children;\n\n if (followText) {\n // If followText is a string, wrap it with default styling\n if (typeof followText === \"string\") {\n return (\n <div className=\"px-4 py-2 bg-white rounded-md shadow-lg text-sm font-medium\">\n {followText}\n </div>\n );\n }\n // If it's a ReactNode, render it directly\n return followText;\n }\n\n return null;\n };\n\n return (\n <AnimatePresence>\n {isActive && (\n <motion.div\n ref={cursorFollowRef}\n data-slot=\"cursor-follow\"\n className={cn(\n \"transform-[translate(-50%,-50%)] pointer-events-none z-9998 absolute\",\n className\n )}\n style={{ top: springY, left: springX, ...style }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n {...props}\n >\n {getFollowContent()}\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\n// Hook for easy cursor setup (Method 2)\ntype useCursorFollowOptions = {\n /** Cursor variant type (preset key or custom ReactNode) */\n cursorType?: CursorVariant;\n /** Follow element content */\n followText?: React.ReactNode;\n /** Show follow element */\n showFollow?: boolean;\n /** Follow element alignment */\n align?: Align;\n /** Follow element side offset */\n sideOffset?: number;\n /** Follow element transition preset */\n transitionPreset?: TransitionPreset;\n /** Additional className for the container */\n className?: string;\n /** Additional style for the container */\n style?: React.CSSProperties;\n};\n\ntype UseCursorFollowType = {\n ref: React.RefObject<HTMLDivElement | null>;\n className: string;\n style: React.CSSProperties;\n \"data-cursor-container\": true;\n children: (children: React.ReactNode) => React.ReactElement;\n};\n\nfunction useCursorFollow(\n options: useCursorFollowOptions = {}\n): UseCursorFollowType {\n const {\n cursorType = \"default\",\n followText,\n showFollow,\n align = \"bottom-right\",\n sideOffset = 15,\n transitionPreset = \"normal\",\n className,\n style,\n } = options;\n\n const [cursorPos, setCursorPos] = React.useState({ x: 0, y: 0 });\n const [isActive, setIsActive] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const cursorRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!containerRef.current) return;\n\n const element = containerRef.current;\n if (getComputedStyle(element).position === \"static\") {\n element.style.position = \"relative\";\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = element.getBoundingClientRect();\n setCursorPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setIsActive(true);\n };\n const handleMouseLeave = () => setIsActive(false);\n\n element.addEventListener(\"mousemove\", handleMouseMove);\n element.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n element.removeEventListener(\"mousemove\", handleMouseMove);\n element.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n // Only hide system cursor if cursorType is not 'default'\n const shouldHideSystemCursor = cursorType !== \"default\";\n\n React.useEffect(() => {\n if (!containerRef.current || !isActive || !shouldHideSystemCursor) return;\n const element = containerRef.current;\n element.style.cursor = \"none\";\n return () => {\n element.style.cursor = \"default\";\n };\n }, [isActive, shouldHideSystemCursor]);\n\n // Render function for cursor elements\n const renderCursorElements = React.useCallback(() => {\n if (!isActive) return null;\n\n return (\n <CursorContext.Provider\n value={{ cursorPos, isActive, containerRef, cursorRef }}\n >\n <Cursor cursorType={cursorType} />\n {(showFollow ?? followText !== undefined) && (\n <CursorFollow\n followText={followText}\n align={align}\n sideOffset={sideOffset}\n transitionPreset={transitionPreset}\n />\n )}\n </CursorContext.Provider>\n );\n }, [\n isActive,\n cursorPos,\n cursorType,\n followText,\n showFollow,\n align,\n sideOffset,\n transitionPreset,\n ]);\n\n // Return props that can be spread on the container element\n return {\n ref: containerRef,\n className: cn(\"relative\", className),\n style: { ...style },\n \"data-cursor-container\": true as const,\n children: (children: React.ReactNode) => (\n <>\n {children}\n {renderCursorElements()}\n </>\n ),\n };\n}\n\nexport {\n CursorProvider,\n Cursor,\n CursorFollow,\n useCursor,\n useCursorFollow,\n TRANSITION_PRESETS,\n type CursorContextType,\n type CursorProviderProps,\n type CursorProps,\n type CursorFollowProps,\n type CursorVariant,\n type CursorVariantKey,\n type Align,\n type useCursorFollowOptions,\n type TransitionPreset,\n};\n"],"names":["TRANSITION_PRESETS","CursorContext","React","useCursor","context","cursorVariants","jsx","CursorProvider","ref","children","cursorType","followText","showFollow","followAlign","followSideOffset","followTransition","props","cursorPos","setCursorPos","isActive","setIsActive","containerRef","cursorRef","parent","handleMouseMove","e","rect","handleMouseLeave","shouldShowCursor","shouldShowFollowElement","transitionConfig","Cursor","CursorFollow","className","style","x","useMotionValue","y","cursorContent","shouldHideSystemCursor","parentElement","AnimatePresence","motion","cn","sideOffset","align","transition","transitionPreset","cursorFollowRef","finalTransition","springX","useSpring","springY","calculateOffset","width","height","newOffset","offset","cursorRect","cursorWidth","cursorHeight","getFollowContent","useCursorFollow","options","element","renderCursorElements","jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"CursorFollow.js","sources":["../../../../src/components/Interactive/CursorFollow.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n motion,\n useMotionValue,\n useSpring,\n AnimatePresence,\n type HTMLMotionProps,\n type SpringOptions,\n} from \"motion/react\";\n\nimport { cn } from \"@dsui/ui/index\";\n\n// Transition presets\ntype TransitionPreset = \"slow\" | \"normal\" | \"fast\" | \"realtime\";\n\nconst TRANSITION_PRESETS: Record<TransitionPreset, SpringOptions> = {\n slow: { stiffness: 100, damping: 20, bounce: 0 },\n normal: { stiffness: 500, damping: 50, bounce: 0 },\n fast: { stiffness: 1000, damping: 80, bounce: 0 },\n realtime: { stiffness: 2000, damping: 100, bounce: 0 },\n};\n\ntype CursorContextType = {\n cursorPos: { x: number; y: number };\n isActive: boolean;\n containerRef: React.RefObject<HTMLDivElement | null>;\n cursorRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst CursorContext = React.createContext<CursorContextType | undefined>(\n undefined\n);\n\nconst useCursor = (): CursorContextType => {\n const context = React.useContext(CursorContext);\n if (!context) {\n throw new Error(\"useCursor must be used within a CursorProvider\");\n }\n return context;\n};\n\ntype Align =\n | \"top\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"left\"\n | \"right\"\n | \"center\";\n\ntype CursorVariantKey = \"default\" | \"pointer\";\ntype CursorVariant = CursorVariantKey | React.ReactNode;\n\n// Predefined cursor variants\nconst cursorVariants: Record<CursorVariantKey, React.ReactNode> = {\n default: null, // Use system cursor\n pointer: (\n <div className=\"ds:h-5 ds:w-5 ds:rounded-full ds:bg-white/30 ds:border-2 ds:border-white\" />\n ),\n};\n\ntype CursorProviderProps = React.ComponentProps<\"div\"> & {\n children: React.ReactNode;\n /** Auto-setup cursor with variant (preset key or custom ReactNode) */\n cursorType?: CursorVariant;\n /** Auto-setup follow element with content */\n followText?: React.ReactNode;\n /** Show follow element (default: true when followText is provided) */\n showFollow?: boolean;\n /** Follow element alignment */\n followAlign?: Align;\n /** Follow element side offset */\n followSideOffset?: number;\n /** Follow element transition preset */\n followTransition?: TransitionPreset;\n};\n\nfunction CursorProvider({\n ref,\n children,\n cursorType = \"default\",\n followText,\n showFollow,\n followAlign = \"bottom-right\",\n followSideOffset = 15,\n followTransition = \"normal\",\n ...props\n}: CursorProviderProps) {\n const [cursorPos, setCursorPos] = React.useState({ x: 0, y: 0 });\n const [isActive, setIsActive] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const cursorRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(ref as React.Ref<HTMLDivElement>, () => containerRef.current as HTMLDivElement);\n\n React.useEffect(() => {\n if (!containerRef.current) return;\n\n const parent = containerRef.current.parentElement;\n if (!parent) return;\n\n if (getComputedStyle(parent).position === \"static\") {\n parent.style.position = \"relative\";\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = parent.getBoundingClientRect();\n setCursorPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setIsActive(true);\n };\n const handleMouseLeave = () => setIsActive(false);\n\n parent.addEventListener(\"mousemove\", handleMouseMove);\n parent.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n parent.removeEventListener(\"mousemove\", handleMouseMove);\n parent.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n // Auto-setup: determine if we should show cursor and follow\n const shouldShowCursor = cursorType !== undefined;\n const shouldShowFollowElement = showFollow ?? followText !== undefined;\n\n // Convert preset to SpringOptions\n const transitionConfig = TRANSITION_PRESETS[followTransition];\n\n return (\n <CursorContext.Provider\n value={{ cursorPos, isActive, containerRef, cursorRef }}\n >\n <div ref={containerRef} data-slot=\"cursor-provider\" {...props}>\n {children}\n\n {/* Auto-setup Cursor */}\n {shouldShowCursor && <Cursor cursorType={cursorType} />}\n\n {/* Auto-setup CursorFollow */}\n {shouldShowFollowElement && (\n <CursorFollow\n followText={followText}\n align={followAlign}\n sideOffset={followSideOffset}\n transition={transitionConfig}\n />\n )}\n </div>\n </CursorContext.Provider>\n );\n}\n\ntype CursorProps = HTMLMotionProps<\"div\"> & {\n children?: React.ReactNode;\n cursorType?: CursorVariant;\n};\n\nfunction Cursor({\n ref,\n children,\n cursorType = \"default\",\n className,\n style,\n ...props\n}: CursorProps) {\n const { cursorPos, isActive, containerRef, cursorRef } = useCursor();\n React.useImperativeHandle(ref as React.Ref<HTMLDivElement>, () => cursorRef.current as HTMLDivElement);\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n // Determine which content to render\n const getCursorContent = () => {\n if (children) return children;\n\n // Check if cursorType is a preset key\n if (typeof cursorType === \"string\" && cursorType in cursorVariants) {\n return cursorVariants[cursorType as CursorVariantKey];\n }\n\n // Otherwise treat it as custom ReactNode\n return cursorType;\n };\n\n const cursorContent = getCursorContent();\n\n // Only hide system cursor if we have custom content to show\n const shouldHideSystemCursor = cursorContent !== null;\n\n React.useEffect(() => {\n const parentElement = containerRef.current?.parentElement;\n\n if (parentElement && isActive && shouldHideSystemCursor) {\n parentElement.style.cursor = \"none\";\n }\n\n return () => {\n if (parentElement) parentElement.style.cursor = \"default\";\n };\n }, [containerRef, isActive, shouldHideSystemCursor]);\n\n React.useEffect(() => {\n x.set(cursorPos.x);\n y.set(cursorPos.y);\n }, [cursorPos, x, y]);\n\n // Only render if we have content to show\n if (!cursorContent) return null;\n\n return (\n <AnimatePresence>\n {isActive && (\n <motion.div\n ref={cursorRef}\n data-slot=\"cursor\"\n className={cn(\n \"ds:transform-[translate(-50%,-50%)] ds:pointer-events-none ds:z-9999 ds:absolute\",\n className\n )}\n style={{ top: y, left: x, ...style }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n {...props}\n >\n {cursorContent}\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\ntype CursorFollowProps = HTMLMotionProps<\"div\"> & {\n sideOffset?: number;\n align?: Align;\n transition?: SpringOptions;\n transitionPreset?: TransitionPreset;\n children?: React.ReactNode;\n followText?: React.ReactNode;\n};\n\nfunction CursorFollow({\n ref,\n sideOffset = 15,\n align = \"bottom-right\",\n children,\n className,\n style,\n followText,\n transition,\n transitionPreset = \"normal\",\n ...props\n}: CursorFollowProps) {\n const { cursorPos, isActive, cursorRef } = useCursor();\n const cursorFollowRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(\n ref as React.Ref<HTMLDivElement>,\n () => cursorFollowRef.current as HTMLDivElement\n );\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n // Use custom transition if provided, otherwise use preset\n const finalTransition = transition || TRANSITION_PRESETS[transitionPreset];\n\n const springX = useSpring(x, finalTransition);\n const springY = useSpring(y, finalTransition);\n\n const calculateOffset = React.useCallback(() => {\n const rect = cursorFollowRef.current?.getBoundingClientRect();\n const width = rect?.width ?? 0;\n const height = rect?.height ?? 0;\n\n let newOffset;\n\n switch (align) {\n case \"center\":\n newOffset = { x: width / 2, y: height / 2 };\n break;\n case \"top\":\n newOffset = { x: width / 2, y: height + sideOffset };\n break;\n case \"top-left\":\n newOffset = { x: width + sideOffset, y: height + sideOffset };\n break;\n case \"top-right\":\n newOffset = { x: -sideOffset, y: height + sideOffset };\n break;\n case \"bottom\":\n newOffset = { x: width / 2, y: -sideOffset };\n break;\n case \"bottom-left\":\n newOffset = { x: width + sideOffset, y: -sideOffset };\n break;\n case \"bottom-right\":\n newOffset = { x: -sideOffset, y: -sideOffset };\n break;\n case \"left\":\n newOffset = { x: width + sideOffset, y: height / 2 };\n break;\n case \"right\":\n newOffset = { x: -sideOffset, y: height / 2 };\n break;\n default:\n newOffset = { x: 0, y: 0 };\n }\n\n return newOffset;\n }, [align, sideOffset]);\n\n React.useEffect(() => {\n const offset = calculateOffset();\n const cursorRect = cursorRef.current?.getBoundingClientRect();\n const cursorWidth = cursorRect?.width ?? 20;\n const cursorHeight = cursorRect?.height ?? 20;\n\n x.set(cursorPos.x - offset.x + cursorWidth / 2);\n y.set(cursorPos.y - offset.y + cursorHeight / 2);\n }, [calculateOffset, cursorPos, cursorRef, x, y]);\n\n // Determine follow content based on children or followText\n const getFollowContent = () => {\n if (children) return children;\n\n if (followText) {\n // If followText is a string, wrap it with default styling\n if (typeof followText === \"string\") {\n return (\n <div className=\"ds:px-4 ds:py-2 ds:bg-white ds:rounded-md ds:shadow-lg ds:text-sm ds:font-medium\">\n {followText}\n </div>\n );\n }\n // If it's a ReactNode, render it directly\n return followText;\n }\n\n return null;\n };\n\n return (\n <AnimatePresence>\n {isActive && (\n <motion.div\n ref={cursorFollowRef}\n data-slot=\"cursor-follow\"\n className={cn(\n \"ds:transform-[translate(-50%,-50%)] ds:pointer-events-none ds:z-9998 ds:absolute\",\n className\n )}\n style={{ top: springY, left: springX, ...style }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n {...props}\n >\n {getFollowContent()}\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\n// Hook for easy cursor setup (Method 2)\ntype useCursorFollowOptions = {\n /** Cursor variant type (preset key or custom ReactNode) */\n cursorType?: CursorVariant;\n /** Follow element content */\n followText?: React.ReactNode;\n /** Show follow element */\n showFollow?: boolean;\n /** Follow element alignment */\n align?: Align;\n /** Follow element side offset */\n sideOffset?: number;\n /** Follow element transition preset */\n transitionPreset?: TransitionPreset;\n /** Additional className for the container */\n className?: string;\n /** Additional style for the container */\n style?: React.CSSProperties;\n};\n\ntype UseCursorFollowType = {\n ref: React.RefObject<HTMLDivElement | null>;\n className: string;\n style: React.CSSProperties;\n \"data-cursor-container\": true;\n children: (children: React.ReactNode) => React.ReactElement;\n};\n\nfunction useCursorFollow(\n options: useCursorFollowOptions = {}\n): UseCursorFollowType {\n const {\n cursorType = \"default\",\n followText,\n showFollow,\n align = \"bottom-right\",\n sideOffset = 15,\n transitionPreset = \"normal\",\n className,\n style,\n } = options;\n\n const [cursorPos, setCursorPos] = React.useState({ x: 0, y: 0 });\n const [isActive, setIsActive] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const cursorRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!containerRef.current) return;\n\n const element = containerRef.current;\n if (getComputedStyle(element).position === \"static\") {\n element.style.position = \"relative\";\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = element.getBoundingClientRect();\n setCursorPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setIsActive(true);\n };\n const handleMouseLeave = () => setIsActive(false);\n\n element.addEventListener(\"mousemove\", handleMouseMove);\n element.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n element.removeEventListener(\"mousemove\", handleMouseMove);\n element.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n // Only hide system cursor if cursorType is not 'default'\n const shouldHideSystemCursor = cursorType !== \"default\";\n\n React.useEffect(() => {\n if (!containerRef.current || !isActive || !shouldHideSystemCursor) return;\n const element = containerRef.current;\n element.style.cursor = \"none\";\n return () => {\n element.style.cursor = \"default\";\n };\n }, [isActive, shouldHideSystemCursor]);\n\n // Render function for cursor elements\n const renderCursorElements = React.useCallback(() => {\n if (!isActive) return null;\n\n return (\n <CursorContext.Provider\n value={{ cursorPos, isActive, containerRef, cursorRef }}\n >\n <Cursor cursorType={cursorType} />\n {(showFollow ?? followText !== undefined) && (\n <CursorFollow\n followText={followText}\n align={align}\n sideOffset={sideOffset}\n transitionPreset={transitionPreset}\n />\n )}\n </CursorContext.Provider>\n );\n }, [\n isActive,\n cursorPos,\n cursorType,\n followText,\n showFollow,\n align,\n sideOffset,\n transitionPreset,\n ]);\n\n // Return props that can be spread on the container element\n return {\n ref: containerRef,\n className: cn(\"ds:relative\", className),\n style: { ...style },\n \"data-cursor-container\": true as const,\n children: (children: React.ReactNode) => (\n <>\n {children}\n {renderCursorElements()}\n </>\n ),\n };\n}\n\nexport {\n CursorProvider,\n Cursor,\n CursorFollow,\n useCursor,\n useCursorFollow,\n TRANSITION_PRESETS,\n type CursorContextType,\n type CursorProviderProps,\n type CursorProps,\n type CursorFollowProps,\n type CursorVariant,\n type CursorVariantKey,\n type Align,\n type useCursorFollowOptions,\n type TransitionPreset,\n};\n"],"names":["TRANSITION_PRESETS","CursorContext","React","useCursor","context","cursorVariants","jsx","CursorProvider","ref","children","cursorType","followText","showFollow","followAlign","followSideOffset","followTransition","props","cursorPos","setCursorPos","isActive","setIsActive","containerRef","cursorRef","parent","handleMouseMove","e","rect","handleMouseLeave","shouldShowCursor","shouldShowFollowElement","transitionConfig","Cursor","CursorFollow","className","style","x","useMotionValue","y","cursorContent","shouldHideSystemCursor","parentElement","AnimatePresence","motion","cn","sideOffset","align","transition","transitionPreset","cursorFollowRef","finalTransition","springX","useSpring","springY","calculateOffset","width","height","newOffset","offset","cursorRect","cursorWidth","cursorHeight","getFollowContent","useCursorFollow","options","element","renderCursorElements","jsxs","Fragment"],"mappings":"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"}