@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 +1 @@
1
- {"version":3,"file":"tree-view.cjs","sources":["../../../../../../../../packages/ui/src/components/tree-view.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport {\n ChevronRight,\n Check,\n Minus,\n SquarePlus,\n SquareMinus,\n} from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst treeVariants = cva(\n \"group hover:before:opacity-100 before:absolute before:rounded-lg before:left-0 pr-2 before:w-full before:opacity-0 before:bg-accent/70 before:h-[2rem] before:-z-10\"\n);\n\nconst selectedTreeVariants = cva(\n \"before:opacity-100 before:bg-accent/70 text-accent-foreground\"\n);\n\nconst DEFAULT_SELECTED_IDS: string[] = [];\n\ninterface TreeDataItem {\n id: string;\n name: string;\n icon?: any;\n selectedIcon?: any;\n openIcon?: any;\n children?: TreeDataItem[];\n actions?: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n checked?: boolean;\n indeterminate?: boolean;\n}\n\ninterface TreeViewProps extends React.HTMLAttributes<HTMLDivElement> {\n data: TreeDataItem[] | TreeDataItem;\n initialSelectedItemId?: string;\n onSelectChange?: (item: TreeDataItem | undefined) => void;\n expandAll?: boolean;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n selectedIds?: string[];\n onMultiSelectChange?: (selectedIds: string[]) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n}\n\nconst TreeView = React.forwardRef<HTMLDivElement, TreeViewProps>(\n (\n {\n data,\n initialSelectedItemId,\n onSelectChange,\n expandAll,\n defaultLeafIcon,\n defaultNodeIcon,\n className,\n multiSelect = false,\n selectedIds = DEFAULT_SELECTED_IDS,\n onMultiSelectChange,\n showIcon = true,\n showLeafIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n ...props\n },\n ref\n ) => {\n const [selectedItemId, setSelectedItemId] = React.useState<\n string | undefined\n >(initialSelectedItemId);\n\n const [checkedIds, setCheckedIds] = React.useState<string[]>(selectedIds);\n\n React.useEffect(() => {\n setCheckedIds(selectedIds);\n }, [selectedIds]);\n\n const handleSelectChange = React.useCallback(\n (item: TreeDataItem | undefined) => {\n setSelectedItemId(item?.id);\n if (onSelectChange) {\n onSelectChange(item);\n }\n },\n [onSelectChange]\n );\n\n const handleCheckChange = React.useCallback(\n (item: TreeDataItem, checked: boolean) => {\n const getAllChildIds = (node: TreeDataItem): string[] => {\n const ids = [node.id];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(...getAllChildIds(child));\n });\n }\n return ids;\n };\n\n const newCheckedIds = checked\n ? [...checkedIds, ...getAllChildIds(item)]\n : checkedIds.filter((id) => !getAllChildIds(item).includes(id));\n\n const uniqueIds = Array.from(new Set(newCheckedIds));\n setCheckedIds(uniqueIds);\n if (onMultiSelectChange) {\n onMultiSelectChange(uniqueIds);\n }\n },\n [checkedIds, onMultiSelectChange]\n );\n\n const expandedItemIds = React.useMemo(() => {\n const ids: string[] = [];\n\n if (expandAll) {\n const collectAllIds = (nodes: TreeDataItem[] | TreeDataItem) => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n items.forEach((node) => {\n if (node.children && node.children.length > 0) {\n ids.push(node.id);\n collectAllIds(node.children);\n }\n });\n };\n collectAllIds(data);\n } else if (initialSelectedItemId) {\n const findPath = (\n nodes: TreeDataItem[] | TreeDataItem,\n targetId: string\n ): boolean => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n for (const node of items) {\n if (node.id === targetId) return true;\n if (node.children) {\n if (findPath(node.children, targetId)) {\n ids.push(node.id);\n return true;\n }\n }\n }\n return false;\n };\n findPath(data, initialSelectedItemId);\n }\n\n return ids;\n }, [data, expandAll, initialSelectedItemId]);\n\n return (\n <div className={cn(\"overflow-hidden relative p-2\", className)}>\n <TreeItem\n data={data}\n ref={ref}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isRoot\n {...props}\n />\n </div>\n );\n }\n);\nTreeView.displayName = \"TreeView\";\n\ntype TreeItemProps = TreeViewProps & {\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isRoot?: boolean;\n};\n\nconst TreeItem = React.forwardRef<HTMLDivElement, TreeItemProps>(\n (\n {\n className,\n data,\n selectedItemId,\n handleSelectChange,\n expandedItemIds,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showIcon,\n showLeafIcon,\n treeLine,\n expandOnArrowClick,\n indicatorVariant,\n customExpandIcon,\n customCollapseIcon,\n isRoot,\n ...props\n },\n ref\n ) => {\n if (!(data instanceof Array)) {\n data = [data];\n }\n return (\n <div ref={ref} role=\"tree\" className={className} {...props}>\n <ul>\n {data.map((item, index) => (\n <li key={item.id} className=\"relative\">\n {item.children ? (\n <TreeNode\n item={item}\n selectedItemId={selectedItemId}\n expandedItemIds={expandedItemIds}\n handleSelectChange={handleSelectChange}\n defaultNodeIcon={defaultNodeIcon}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n ) : (\n <TreeLeaf\n item={item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n);\nTreeItem.displayName = \"TreeItem\";\n\nconst TreeNode = ({\n item,\n handleSelectChange,\n expandedItemIds,\n selectedItemId,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds = [],\n handleCheckChange,\n showIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n isLastChild,\n isRoot,\n}: {\n item: TreeDataItem;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n selectedItemId?: string;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isLastChild?: boolean;\n isRoot?: boolean;\n}) => {\n const [value, setValue] = React.useState<string[]>(\n expandedItemIds.includes(item.id) ? [item.id] : []\n );\n\n React.useEffect(() => {\n if (expandedItemIds.includes(item.id)) {\n setValue((prev) => (prev.includes(item.id) ? prev : [...prev, item.id]));\n } else {\n setValue((prev) => prev.filter((id) => id !== item.id));\n }\n }, [expandedItemIds, item.id]);\n\n // Get all descendant IDs - memoized separately to avoid recalculation\n const allDescendantIds = React.useMemo(() => {\n const getAllDescendantIds = (node: TreeDataItem): string[] => {\n const ids: string[] = [];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(child.id);\n ids.push(...getAllDescendantIds(child));\n });\n }\n return ids;\n };\n return item.children ? getAllDescendantIds(item) : [];\n // We only want to recalculate when item structure changes, not on every render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.id]);\n\n // Check if this node is checked\n const isChecked = React.useMemo(() => {\n if (!checkedIds) return false;\n\n // If the node itself is in checkedIds\n if (checkedIds.includes(item.id)) return true;\n\n // If all descendants are checked, consider this node as checked\n if (!item.children || item.children.length === 0) return false;\n if (allDescendantIds.length === 0) return false;\n\n // All descendants must be checked\n return allDescendantIds.every((id) => checkedIds.includes(id));\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkedIds, item.id, allDescendantIds]);\n\n const isIndeterminate = React.useMemo(() => {\n if (!multiSelect || !item.children || !checkedIds) return false;\n if (isChecked) return false; // If node is fully checked, not indeterminate\n\n const checkedDescendants = allDescendantIds.filter((id) =>\n checkedIds.includes(id)\n );\n\n // Indeterminate if some (but not all) descendants are checked\n return (\n checkedDescendants.length > 0 &&\n checkedDescendants.length < allDescendantIds.length\n );\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [multiSelect, checkedIds, isChecked, allDescendantIds]);\n\n return (\n <AccordionPrimitive.Root\n type=\"multiple\"\n value={value}\n onValueChange={(s: string[]) => setValue(s)}\n >\n <AccordionPrimitive.Item value={item.id} className=\"relative\">\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"absolute left-[-1.05rem] w-px bg-border\",\n isLastChild ? \"h-5\" : \"h-full\",\n isRoot && \"hidden\"\n )}\n >\n <div className=\"absolute left-0 top-5 w-4 h-px bg-border\" />\n </div>\n )}\n <div\n className={cn(\n \"flex items-center relative\",\n !expandOnArrowClick && treeVariants(),\n !expandOnArrowClick &&\n selectedItemId === item.id &&\n selectedTreeVariants()\n )}\n >\n <AccordionPrimitive.Header className=\"flex items-center w-full\">\n <AccordionPrimitive.Trigger\n asChild\n onClick={(e) => {\n if (expandOnArrowClick) {\n e.stopPropagation();\n }\n }}\n >\n <div\n className={cn(\n \"flex items-center p-2 transition-all gap-1\",\n indicatorVariant === \"arrow\" &&\n !customExpandIcon &&\n !customCollapseIcon &&\n \"[&[data-state=open]>svg:first-of-type]:rotate-90\",\n expandOnArrowClick\n ? \"hover:bg-accent/50 rounded-sm cursor-pointer\"\n : \"flex-1 cursor-pointer\"\n )}\n >\n <IndicatorIcon\n variant={indicatorVariant}\n isOpen={value.includes(item.id)}\n customExpand={customExpandIcon}\n customCollapse={customCollapseIcon}\n />\n {!expandOnArrowClick && (\n <>\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"mr-2 h-4 w-4 shrink-0 rounded-sm border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {isIndeterminate ? (\n <Minus className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"text-sm truncate\">{item.name}</span>\n </>\n )}\n </div>\n </AccordionPrimitive.Trigger>\n {expandOnArrowClick && (\n <div\n className={cn(\n \"flex items-center flex-1 py-2 cursor-pointer\",\n treeVariants(),\n selectedItemId === item.id && selectedTreeVariants()\n )}\n onClick={() => {\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n >\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"mr-2 h-4 w-4 shrink-0 rounded-sm border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {isIndeterminate ? (\n <Minus className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"text-sm truncate\">{item.name}</span>\n </div>\n )}\n <TreeActions\n isSelected={selectedItemId === item.id}\n className={cn(expandOnArrowClick && \"right-1\")}\n >\n {item.actions}\n </TreeActions>\n </AccordionPrimitive.Header>\n </div>\n <AccordionContent\n className={cn(\n \"ml-4 pl-1\",\n treeLine === true && \"border-l\",\n treeLine === \"full\" && \"pl-2 border-l ml-4\"\n )}\n >\n <TreeItem\n data={item.children ? item.children : item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n />\n </AccordionContent>\n </AccordionPrimitive.Item>\n </AccordionPrimitive.Root>\n );\n};\n\nconst TreeLeaf = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n item: TreeDataItem;\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n isLastChild?: boolean;\n isRoot?: boolean;\n }\n>(\n (\n {\n className,\n item,\n selectedItemId,\n handleSelectChange,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showLeafIcon = true,\n treeLine = false,\n isLastChild,\n isRoot,\n ...props\n },\n ref\n ) => {\n const isChecked = checkedIds?.includes(item.id);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"ml-5 flex text-left items-center py-2 cursor-pointer before:right-1\",\n treeLine === \"full\" && \"ml-[1.25rem]\",\n treeVariants(),\n className,\n selectedItemId === item.id && selectedTreeVariants(),\n item.disabled && \"opacity-50 cursor-not-allowed pointer-events-none\"\n )}\n onClick={() => {\n if (item.disabled) return;\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n {...props}\n >\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"absolute left-[-1.05rem] w-px bg-border\",\n isLastChild ? \"h-1/2\" : \"h-full\",\n isRoot && \"hidden\"\n )}\n >\n <div className=\"absolute left-0 top-1/2 w-4 h-px bg-border\" />\n </div>\n )}\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={isChecked}\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n disabled={item.disabled}\n onClick={(e) => e.stopPropagation()}\n className=\"mr-2 h-4 w-4 shrink-0 rounded-sm border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showLeafIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n default={defaultLeafIcon}\n />\n )}\n <span className=\"grow text-sm truncate\">{item.name}</span>\n <TreeActions isSelected={selectedItemId === item.id && !item.disabled}>\n {item.actions}\n </TreeActions>\n </div>\n );\n }\n);\nTreeLeaf.displayName = \"TreeLeaf\";\n\nconst AccordionTrigger = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header>\n <AccordionPrimitive.Trigger asChild {...props}>\n <div\n ref={ref}\n className={cn(\n \"flex flex-1 w-full items-center py-2 transition-all first:[&[data-state=open]>svg]:first-of-type:rotate-90\",\n className\n )}\n >\n <ChevronRight className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n {children}\n </div>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"pb-1 pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nconst TreeIcon = ({\n item,\n isOpen,\n isSelected,\n default: defaultIcon,\n}: {\n item: TreeDataItem;\n isOpen?: boolean;\n isSelected?: boolean;\n default?: any;\n}) => {\n let Icon = defaultIcon;\n if (isSelected && item.selectedIcon) {\n Icon = item.selectedIcon;\n } else if (isOpen && item.openIcon) {\n Icon = item.openIcon;\n } else if (item.icon) {\n Icon = item.icon;\n }\n return Icon ? <Icon className=\"h-4 w-4 shrink-0 mr-2\" /> : <></>;\n};\n\nconst TreeActions = ({\n children,\n isSelected,\n className,\n}: {\n children: React.ReactNode;\n isSelected: boolean;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n isSelected ? \"block\" : \"hidden\",\n \"absolute right-3 group-hover:block\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst IndicatorIcon = ({\n variant,\n isOpen,\n customExpand: CustomExpand,\n customCollapse: CustomCollapse,\n}: {\n variant: \"arrow\" | \"plus-minus\";\n isOpen: boolean;\n customExpand?: React.ElementType;\n customCollapse?: React.ElementType;\n}) => {\n if (CustomExpand && !isOpen) {\n return (\n <CustomExpand className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n }\n if (CustomCollapse && isOpen) {\n return (\n <CustomCollapse className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n }\n\n if (variant === \"plus-minus\") {\n return isOpen ? (\n <SquareMinus className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n ) : (\n <SquarePlus className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n }\n\n return (\n <ChevronRight className=\"h-4 w-4 shrink-0 transition-transform duration-200 text-accent-foreground/50\" />\n );\n};\n\nexport { TreeView, type TreeDataItem, type TreeViewProps };\n"],"names":["treeVariants","cva","selectedTreeVariants","DEFAULT_SELECTED_IDS","TreeView","React","data","initialSelectedItemId","onSelectChange","expandAll","defaultLeafIcon","defaultNodeIcon","className","multiSelect","selectedIds","onMultiSelectChange","showIcon","showLeafIcon","treeLine","expandOnArrowClick","indicatorVariant","customExpandIcon","customCollapseIcon","props","ref","selectedItemId","setSelectedItemId","checkedIds","setCheckedIds","handleSelectChange","item","handleCheckChange","checked","getAllChildIds","node","ids","child","newCheckedIds","id","uniqueIds","expandedItemIds","collectAllIds","nodes","findPath","targetId","items","cn","jsx","TreeItem","isRoot","index","TreeNode","TreeLeaf","isLastChild","value","setValue","prev","allDescendantIds","getAllDescendantIds","isChecked","isIndeterminate","checkedDescendants","AccordionPrimitive","s","jsxs","e","IndicatorIcon","Fragment","CheckboxPrimitive","Minus","Check","TreeIcon","TreeActions","AccordionContent","AccordionTrigger","children","ChevronRight","isOpen","isSelected","defaultIcon","Icon","variant","CustomExpand","CustomCollapse","SquareMinus","SquarePlus"],"mappings":"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"}
1
+ {"version":3,"file":"tree-view.cjs","sources":["../../../../../../../../packages/ui/src/components/tree-view.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport {\n ChevronRight,\n Check,\n Minus,\n SquarePlus,\n SquareMinus,\n} from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst treeVariants = cva(\n \"ds:group ds:hover:before:opacity-100 ds:before:absolute ds:before:rounded-lg ds:before:left-0 ds:pr-2 ds:before:w-full ds:before:opacity-0 ds:before:bg-accent/70 ds:before:h-[2rem] ds:before:-z-10\"\n);\n\nconst selectedTreeVariants = cva(\n \"ds:before:opacity-100 ds:before:bg-accent/70 ds:text-accent-foreground\"\n);\n\nconst DEFAULT_SELECTED_IDS: string[] = [];\n\ninterface TreeDataItem {\n id: string;\n name: string;\n icon?: any;\n selectedIcon?: any;\n openIcon?: any;\n children?: TreeDataItem[];\n actions?: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n checked?: boolean;\n indeterminate?: boolean;\n}\n\ninterface TreeViewProps extends React.HTMLAttributes<HTMLDivElement> {\n data: TreeDataItem[] | TreeDataItem;\n initialSelectedItemId?: string;\n onSelectChange?: (item: TreeDataItem | undefined) => void;\n expandAll?: boolean;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n selectedIds?: string[];\n onMultiSelectChange?: (selectedIds: string[]) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n}\n\nconst TreeView = React.forwardRef<HTMLDivElement, TreeViewProps>(\n (\n {\n data,\n initialSelectedItemId,\n onSelectChange,\n expandAll,\n defaultLeafIcon,\n defaultNodeIcon,\n className,\n multiSelect = false,\n selectedIds = DEFAULT_SELECTED_IDS,\n onMultiSelectChange,\n showIcon = true,\n showLeafIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n ...props\n },\n ref\n ) => {\n const [selectedItemId, setSelectedItemId] = React.useState<\n string | undefined\n >(initialSelectedItemId);\n\n const [checkedIds, setCheckedIds] = React.useState<string[]>(selectedIds);\n\n React.useEffect(() => {\n setCheckedIds(selectedIds);\n }, [selectedIds]);\n\n const handleSelectChange = React.useCallback(\n (item: TreeDataItem | undefined) => {\n setSelectedItemId(item?.id);\n if (onSelectChange) {\n onSelectChange(item);\n }\n },\n [onSelectChange]\n );\n\n const handleCheckChange = React.useCallback(\n (item: TreeDataItem, checked: boolean) => {\n const getAllChildIds = (node: TreeDataItem): string[] => {\n const ids = [node.id];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(...getAllChildIds(child));\n });\n }\n return ids;\n };\n\n const newCheckedIds = checked\n ? [...checkedIds, ...getAllChildIds(item)]\n : checkedIds.filter((id) => !getAllChildIds(item).includes(id));\n\n const uniqueIds = Array.from(new Set(newCheckedIds));\n setCheckedIds(uniqueIds);\n if (onMultiSelectChange) {\n onMultiSelectChange(uniqueIds);\n }\n },\n [checkedIds, onMultiSelectChange]\n );\n\n const expandedItemIds = React.useMemo(() => {\n const ids: string[] = [];\n\n if (expandAll) {\n const collectAllIds = (nodes: TreeDataItem[] | TreeDataItem) => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n items.forEach((node) => {\n if (node.children && node.children.length > 0) {\n ids.push(node.id);\n collectAllIds(node.children);\n }\n });\n };\n collectAllIds(data);\n } else if (initialSelectedItemId) {\n const findPath = (\n nodes: TreeDataItem[] | TreeDataItem,\n targetId: string\n ): boolean => {\n const items = Array.isArray(nodes) ? nodes : [nodes];\n for (const node of items) {\n if (node.id === targetId) return true;\n if (node.children) {\n if (findPath(node.children, targetId)) {\n ids.push(node.id);\n return true;\n }\n }\n }\n return false;\n };\n findPath(data, initialSelectedItemId);\n }\n\n return ids;\n }, [data, expandAll, initialSelectedItemId]);\n\n return (\n <div className={cn(\"ds:overflow-hidden ds:relative ds:p-2\", className)}>\n <TreeItem\n data={data}\n ref={ref}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isRoot\n {...props}\n />\n </div>\n );\n }\n);\nTreeView.displayName = \"TreeView\";\n\ntype TreeItemProps = TreeViewProps & {\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isRoot?: boolean;\n};\n\nconst TreeItem = React.forwardRef<HTMLDivElement, TreeItemProps>(\n (\n {\n className,\n data,\n selectedItemId,\n handleSelectChange,\n expandedItemIds,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showIcon,\n showLeafIcon,\n treeLine,\n expandOnArrowClick,\n indicatorVariant,\n customExpandIcon,\n customCollapseIcon,\n isRoot,\n ...props\n },\n ref\n ) => {\n if (!(data instanceof Array)) {\n data = [data];\n }\n return (\n <div ref={ref} role=\"tree\" className={className} {...props}>\n <ul>\n {data.map((item, index) => (\n <li key={item.id} className=\"ds:relative\">\n {item.children ? (\n <TreeNode\n item={item}\n selectedItemId={selectedItemId}\n expandedItemIds={expandedItemIds}\n handleSelectChange={handleSelectChange}\n defaultNodeIcon={defaultNodeIcon}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n ) : (\n <TreeLeaf\n item={item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n defaultLeafIcon={defaultLeafIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showLeafIcon={showLeafIcon}\n treeLine={treeLine}\n isLastChild={index === (data as TreeDataItem[]).length - 1}\n isRoot={isRoot}\n />\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n);\nTreeItem.displayName = \"TreeItem\";\n\nconst TreeNode = ({\n item,\n handleSelectChange,\n expandedItemIds,\n selectedItemId,\n defaultNodeIcon,\n defaultLeafIcon,\n multiSelect,\n checkedIds = [],\n handleCheckChange,\n showIcon = true,\n treeLine = false,\n expandOnArrowClick = false,\n indicatorVariant = \"arrow\",\n customExpandIcon,\n customCollapseIcon,\n isLastChild,\n isRoot,\n}: {\n item: TreeDataItem;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n expandedItemIds: string[];\n selectedItemId?: string;\n defaultNodeIcon?: any;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showIcon?: boolean;\n treeLine?: boolean | \"full\";\n expandOnArrowClick?: boolean;\n indicatorVariant?: \"arrow\" | \"plus-minus\";\n customExpandIcon?: React.ElementType;\n customCollapseIcon?: React.ElementType;\n isLastChild?: boolean;\n isRoot?: boolean;\n}) => {\n const [value, setValue] = React.useState<string[]>(\n expandedItemIds.includes(item.id) ? [item.id] : []\n );\n\n React.useEffect(() => {\n if (expandedItemIds.includes(item.id)) {\n setValue((prev) => (prev.includes(item.id) ? prev : [...prev, item.id]));\n } else {\n setValue((prev) => prev.filter((id) => id !== item.id));\n }\n }, [expandedItemIds, item.id]);\n\n // Get all descendant IDs - memoized separately to avoid recalculation\n const allDescendantIds = React.useMemo(() => {\n const getAllDescendantIds = (node: TreeDataItem): string[] => {\n const ids: string[] = [];\n if (node.children) {\n node.children.forEach((child) => {\n ids.push(child.id);\n ids.push(...getAllDescendantIds(child));\n });\n }\n return ids;\n };\n return item.children ? getAllDescendantIds(item) : [];\n // We only want to recalculate when item structure changes, not on every render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.id]);\n\n // Check if this node is checked\n const isChecked = React.useMemo(() => {\n if (!checkedIds) return false;\n\n // If the node itself is in checkedIds\n if (checkedIds.includes(item.id)) return true;\n\n // If all descendants are checked, consider this node as checked\n if (!item.children || item.children.length === 0) return false;\n if (allDescendantIds.length === 0) return false;\n\n // All descendants must be checked\n return allDescendantIds.every((id) => checkedIds.includes(id));\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkedIds, item.id, allDescendantIds]);\n\n const isIndeterminate = React.useMemo(() => {\n if (!multiSelect || !item.children || !checkedIds) return false;\n if (isChecked) return false; // If node is fully checked, not indeterminate\n\n const checkedDescendants = allDescendantIds.filter((id) =>\n checkedIds.includes(id)\n );\n\n // Indeterminate if some (but not all) descendants are checked\n return (\n checkedDescendants.length > 0 &&\n checkedDescendants.length < allDescendantIds.length\n );\n // item.children check is done inside allDescendantIds calculation\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [multiSelect, checkedIds, isChecked, allDescendantIds]);\n\n return (\n <AccordionPrimitive.Root\n type=\"multiple\"\n value={value}\n onValueChange={(s: string[]) => setValue(s)}\n >\n <AccordionPrimitive.Item value={item.id} className=\"ds:relative\">\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"ds:absolute ds:left-[-1.05rem] ds:w-px ds:bg-border\",\n isLastChild ? \"ds:h-5\" : \"ds:h-full\",\n isRoot && \"ds:hidden\"\n )}\n >\n <div className=\"ds:absolute ds:left-0 ds:top-5 ds:w-4 ds:h-px ds:bg-border\" />\n </div>\n )}\n <div\n className={cn(\n \"ds:flex ds:items-center ds:relative\",\n !expandOnArrowClick && treeVariants(),\n !expandOnArrowClick &&\n selectedItemId === item.id &&\n selectedTreeVariants()\n )}\n >\n <AccordionPrimitive.Header className=\"ds:flex ds:items-center ds:w-full\">\n <AccordionPrimitive.Trigger\n asChild\n onClick={(e) => {\n if (expandOnArrowClick) {\n e.stopPropagation();\n }\n }}\n >\n <div\n className={cn(\n \"ds:flex ds:items-center ds:p-2 ds:transition-all ds:gap-1\",\n indicatorVariant === \"arrow\" &&\n !customExpandIcon &&\n !customCollapseIcon &&\n \"ds:[&[data-state=open]>svg:first-of-type]:rotate-90\",\n expandOnArrowClick\n ? \"ds:hover:bg-accent/50 ds:rounded-sm ds:cursor-pointer\"\n : \"ds:flex-1 ds:cursor-pointer\"\n )}\n >\n <IndicatorIcon\n variant={indicatorVariant}\n isOpen={value.includes(item.id)}\n customExpand={customExpandIcon}\n customCollapse={customCollapseIcon}\n />\n {!expandOnArrowClick && (\n <>\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"ds:mr-2 ds:h-4 ds:w-4 ds:shrink-0 ds:rounded-sm ds:border ds:border-primary ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground ds:data-[state=indeterminate]:bg-primary ds:data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"ds:flex ds:items-center ds:justify-center ds:text-current\">\n {isIndeterminate ? (\n <Minus className=\"ds:h-3 ds:w-3\" />\n ) : (\n <Check className=\"ds:h-3 ds:w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"ds:text-sm ds:truncate\">{item.name}</span>\n </>\n )}\n </div>\n </AccordionPrimitive.Trigger>\n {expandOnArrowClick && (\n <div\n className={cn(\n \"ds:flex ds:items-center ds:flex-1 ds:py-2 ds:cursor-pointer\",\n treeVariants(),\n selectedItemId === item.id && selectedTreeVariants()\n )}\n onClick={() => {\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n >\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={\n isChecked\n ? true\n : isIndeterminate\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"ds:mr-2 ds:h-4 ds:w-4 ds:shrink-0 ds:rounded-sm ds:border ds:border-primary ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground ds:data-[state=indeterminate]:bg-primary ds:data-[state=indeterminate]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"ds:flex ds:items-center ds:justify-center ds:text-current\">\n {isIndeterminate ? (\n <Minus className=\"ds:h-3 ds:w-3\" />\n ) : (\n <Check className=\"ds:h-3 ds:w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n isOpen={value.includes(item.id)}\n default={defaultNodeIcon}\n />\n )}\n <span className=\"ds:text-sm ds:truncate\">{item.name}</span>\n </div>\n )}\n <TreeActions\n isSelected={selectedItemId === item.id}\n className={cn(expandOnArrowClick && \"ds:right-1\")}\n >\n {item.actions}\n </TreeActions>\n </AccordionPrimitive.Header>\n </div>\n <AccordionContent\n className={cn(\n \"ds:ml-4 ds:pl-1\",\n treeLine === true && \"ds:border-l\",\n treeLine === \"full\" && \"ds:pl-2 ds:border-l ds:ml-4\"\n )}\n >\n <TreeItem\n data={item.children ? item.children : item}\n selectedItemId={selectedItemId}\n handleSelectChange={handleSelectChange}\n expandedItemIds={expandedItemIds}\n defaultLeafIcon={defaultLeafIcon}\n defaultNodeIcon={defaultNodeIcon}\n multiSelect={multiSelect}\n checkedIds={checkedIds}\n handleCheckChange={handleCheckChange}\n showIcon={showIcon}\n showLeafIcon={showIcon}\n treeLine={treeLine}\n expandOnArrowClick={expandOnArrowClick}\n indicatorVariant={indicatorVariant}\n customExpandIcon={customExpandIcon}\n customCollapseIcon={customCollapseIcon}\n />\n </AccordionContent>\n </AccordionPrimitive.Item>\n </AccordionPrimitive.Root>\n );\n};\n\nconst TreeLeaf = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n item: TreeDataItem;\n selectedItemId?: string;\n handleSelectChange: (item: TreeDataItem | undefined) => void;\n defaultLeafIcon?: any;\n multiSelect?: boolean;\n checkedIds?: string[];\n handleCheckChange?: (item: TreeDataItem, checked: boolean) => void;\n showLeafIcon?: boolean;\n treeLine?: boolean | \"full\";\n isLastChild?: boolean;\n isRoot?: boolean;\n }\n>(\n (\n {\n className,\n item,\n selectedItemId,\n handleSelectChange,\n defaultLeafIcon,\n multiSelect,\n checkedIds,\n handleCheckChange,\n showLeafIcon = true,\n treeLine = false,\n isLastChild,\n isRoot,\n ...props\n },\n ref\n ) => {\n const isChecked = checkedIds?.includes(item.id);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"ds:ml-5 ds:flex ds:text-left ds:items-center ds:py-2 ds:cursor-pointer ds:before:right-1\",\n treeLine === \"full\" && \"ds:ml-[1.25rem]\",\n treeVariants(),\n className,\n selectedItemId === item.id && selectedTreeVariants(),\n item.disabled && \"ds:opacity-50 ds:cursor-not-allowed ds:pointer-events-none\"\n )}\n onClick={() => {\n if (item.disabled) return;\n if (!multiSelect) {\n handleSelectChange(item);\n item.onClick?.();\n }\n }}\n {...props}\n >\n {treeLine === \"full\" && (\n <div\n className={cn(\n \"ds:absolute ds:left-[-1.05rem] ds:w-px ds:bg-border\",\n isLastChild ? \"ds:h-1/2\" : \"ds:h-full\",\n isRoot && \"ds:hidden\"\n )}\n >\n <div className=\"ds:absolute ds:left-0 ds:top-1/2 ds:w-4 ds:h-px ds:bg-border\" />\n </div>\n )}\n {multiSelect && (\n <CheckboxPrimitive.Root\n checked={isChecked}\n onCheckedChange={(checked) => {\n handleCheckChange?.(item, checked === true);\n }}\n disabled={item.disabled}\n onClick={(e) => e.stopPropagation()}\n className=\"ds:mr-2 ds:h-4 ds:w-4 ds:shrink-0 ds:rounded-sm ds:border ds:border-primary ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"ds:flex ds:items-center ds:justify-center ds:text-current\">\n <Check className=\"ds:h-3 ds:w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )}\n {showLeafIcon && (\n <TreeIcon\n item={item}\n isSelected={selectedItemId === item.id}\n default={defaultLeafIcon}\n />\n )}\n <span className=\"ds:grow ds:text-sm ds:truncate\">{item.name}</span>\n <TreeActions isSelected={selectedItemId === item.id && !item.disabled}>\n {item.actions}\n </TreeActions>\n </div>\n );\n }\n);\nTreeLeaf.displayName = \"TreeLeaf\";\n\nconst AccordionTrigger = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header>\n <AccordionPrimitive.Trigger asChild {...props}>\n <div\n ref={ref}\n className={cn(\n \"ds:flex ds:flex-1 ds:w-full ds:items-center ds:py-2 ds:transition-all ds:first:[&[data-state=open]>svg]:first-of-type:rotate-90\",\n className\n )}\n >\n <ChevronRight className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n {children}\n </div>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"ds:overflow-hidden ds:text-sm ds:transition-all ds:data-[state=closed]:animate-accordion-up ds:data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"ds:pb-1 ds:pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nconst TreeIcon = ({\n item,\n isOpen,\n isSelected,\n default: defaultIcon,\n}: {\n item: TreeDataItem;\n isOpen?: boolean;\n isSelected?: boolean;\n default?: any;\n}) => {\n let Icon = defaultIcon;\n if (isSelected && item.selectedIcon) {\n Icon = item.selectedIcon;\n } else if (isOpen && item.openIcon) {\n Icon = item.openIcon;\n } else if (item.icon) {\n Icon = item.icon;\n }\n return Icon ? <Icon className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:mr-2\" /> : <></>;\n};\n\nconst TreeActions = ({\n children,\n isSelected,\n className,\n}: {\n children: React.ReactNode;\n isSelected: boolean;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n isSelected ? \"ds:block\" : \"ds:hidden\",\n \"ds:absolute ds:right-3 ds:group-hover:block\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst IndicatorIcon = ({\n variant,\n isOpen,\n customExpand: CustomExpand,\n customCollapse: CustomCollapse,\n}: {\n variant: \"arrow\" | \"plus-minus\";\n isOpen: boolean;\n customExpand?: React.ElementType;\n customCollapse?: React.ElementType;\n}) => {\n if (CustomExpand && !isOpen) {\n return (\n <CustomExpand className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n }\n if (CustomCollapse && isOpen) {\n return (\n <CustomCollapse className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n }\n\n if (variant === \"plus-minus\") {\n return isOpen ? (\n <SquareMinus className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n ) : (\n <SquarePlus className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n }\n\n return (\n <ChevronRight className=\"ds:h-4 ds:w-4 ds:shrink-0 ds:transition-transform ds:duration-200 ds:text-accent-foreground/50\" />\n );\n};\n\nexport { TreeView, type TreeDataItem, type TreeViewProps };\n"],"names":["treeVariants","cva","selectedTreeVariants","DEFAULT_SELECTED_IDS","TreeView","React","data","initialSelectedItemId","onSelectChange","expandAll","defaultLeafIcon","defaultNodeIcon","className","multiSelect","selectedIds","onMultiSelectChange","showIcon","showLeafIcon","treeLine","expandOnArrowClick","indicatorVariant","customExpandIcon","customCollapseIcon","props","ref","selectedItemId","setSelectedItemId","checkedIds","setCheckedIds","handleSelectChange","item","handleCheckChange","checked","getAllChildIds","node","ids","child","newCheckedIds","id","uniqueIds","expandedItemIds","collectAllIds","nodes","findPath","targetId","items","cn","jsx","TreeItem","isRoot","index","TreeNode","TreeLeaf","isLastChild","value","setValue","prev","allDescendantIds","getAllDescendantIds","isChecked","isIndeterminate","checkedDescendants","AccordionPrimitive","s","jsxs","e","IndicatorIcon","Fragment","CheckboxPrimitive","Minus","Check","TreeIcon","TreeActions","AccordionContent","AccordionTrigger","children","ChevronRight","isOpen","isSelected","defaultIcon","Icon","variant","CustomExpand","CustomCollapse","SquareMinus","SquarePlus"],"mappings":"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"}