@arolariu/components 1.0.0 → 2.0.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 (451) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/EXAMPLES.md +2510 -0
  3. package/dist/components/ui/accordion.js +3 -3
  4. package/dist/components/ui/accordion.js.map +1 -1
  5. package/dist/components/ui/accordion_module.css.map +1 -1
  6. package/dist/components/ui/alert-dialog.d.ts +4 -16
  7. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  8. package/dist/components/ui/alert-dialog.js +21 -17
  9. package/dist/components/ui/alert-dialog.js.map +1 -1
  10. package/dist/components/ui/alert-dialog_module.css +1 -1
  11. package/dist/components/ui/alert-dialog_module.css.map +1 -1
  12. package/dist/components/ui/alert.js +4 -4
  13. package/dist/components/ui/alert.js.map +1 -1
  14. package/dist/components/ui/alert_module.css.map +1 -1
  15. package/dist/components/ui/aspect-ratio.js +2 -2
  16. package/dist/components/ui/aspect-ratio.js.map +1 -1
  17. package/dist/components/ui/aspect-ratio_module.css.map +1 -1
  18. package/dist/components/ui/async-boundary.js +2 -2
  19. package/dist/components/ui/async-boundary.js.map +1 -1
  20. package/dist/components/ui/avatar.d.ts +3 -12
  21. package/dist/components/ui/avatar.d.ts.map +1 -1
  22. package/dist/components/ui/avatar.js +18 -15
  23. package/dist/components/ui/avatar.js.map +1 -1
  24. package/dist/components/ui/avatar_module.css.map +1 -1
  25. package/dist/components/ui/background-beams.js +3 -3
  26. package/dist/components/ui/background-beams.js.map +1 -1
  27. package/dist/components/ui/background-beams_module.css.map +1 -1
  28. package/dist/components/ui/badge.js +2 -2
  29. package/dist/components/ui/badge.js.map +1 -1
  30. package/dist/components/ui/badge_module.css.map +1 -1
  31. package/dist/components/ui/breadcrumb.js +10 -10
  32. package/dist/components/ui/breadcrumb.js.map +1 -1
  33. package/dist/components/ui/breadcrumb_module.css.map +1 -1
  34. package/dist/components/ui/bubble-background.js +5 -5
  35. package/dist/components/ui/bubble-background.js.map +1 -1
  36. package/dist/components/ui/bubble-background_module.css.map +1 -1
  37. package/dist/components/ui/button-group.d.ts +1 -1
  38. package/dist/components/ui/button-group.d.ts.map +1 -1
  39. package/dist/components/ui/button-group.js +6 -6
  40. package/dist/components/ui/button-group.js.map +1 -1
  41. package/dist/components/ui/button-group_module.css.map +1 -1
  42. package/dist/components/ui/button.js +4 -4
  43. package/dist/components/ui/button.js.map +1 -1
  44. package/dist/components/ui/button_module.css.map +1 -1
  45. package/dist/components/ui/calendar.d.ts +3 -5
  46. package/dist/components/ui/calendar.d.ts.map +1 -1
  47. package/dist/components/ui/calendar.js +9 -9
  48. package/dist/components/ui/calendar.js.map +1 -1
  49. package/dist/components/ui/calendar_module.css.map +1 -1
  50. package/dist/components/ui/card-skeleton.js +2 -2
  51. package/dist/components/ui/card-skeleton.js.map +1 -1
  52. package/dist/components/ui/card-skeleton_module.css.map +1 -1
  53. package/dist/components/ui/card.js +8 -8
  54. package/dist/components/ui/card.js.map +1 -1
  55. package/dist/components/ui/card_module.css.map +1 -1
  56. package/dist/components/ui/carousel.d.ts.map +1 -1
  57. package/dist/components/ui/carousel.js +16 -16
  58. package/dist/components/ui/carousel.js.map +1 -1
  59. package/dist/components/ui/carousel_module.css +1 -1
  60. package/dist/components/ui/carousel_module.css.map +1 -1
  61. package/dist/components/ui/chart.d.ts +6 -3
  62. package/dist/components/ui/chart.d.ts.map +1 -1
  63. package/dist/components/ui/chart.js +70 -70
  64. package/dist/components/ui/chart.js.map +1 -1
  65. package/dist/components/ui/chart_module.css.map +1 -1
  66. package/dist/components/ui/checkbox-group.d.ts +2 -6
  67. package/dist/components/ui/checkbox-group.d.ts.map +1 -1
  68. package/dist/components/ui/checkbox-group.js +8 -7
  69. package/dist/components/ui/checkbox-group.js.map +1 -1
  70. package/dist/components/ui/checkbox-group_module.css.map +1 -1
  71. package/dist/components/ui/checkbox.d.ts +3 -1
  72. package/dist/components/ui/checkbox.d.ts.map +1 -1
  73. package/dist/components/ui/checkbox.js +6 -3
  74. package/dist/components/ui/checkbox.js.map +1 -1
  75. package/dist/components/ui/checkbox_module.css.map +1 -1
  76. package/dist/components/ui/collapsible.d.ts.map +1 -1
  77. package/dist/components/ui/collapsible.js +4 -4
  78. package/dist/components/ui/collapsible.js.map +1 -1
  79. package/dist/components/ui/collapsible_module.css.map +1 -1
  80. package/dist/components/ui/combobox.d.ts +335 -0
  81. package/dist/components/ui/combobox.d.ts.map +1 -0
  82. package/dist/components/ui/combobox.js +206 -0
  83. package/dist/components/ui/combobox.js.map +1 -0
  84. package/dist/components/ui/combobox.module.js +23 -0
  85. package/dist/components/ui/combobox.module.js.map +1 -0
  86. package/dist/components/ui/combobox_module.css +142 -0
  87. package/dist/components/ui/combobox_module.css.map +1 -0
  88. package/dist/components/ui/command.d.ts.map +1 -1
  89. package/dist/components/ui/command.js +62 -53
  90. package/dist/components/ui/command.js.map +1 -1
  91. package/dist/components/ui/command_module.css +1 -1
  92. package/dist/components/ui/command_module.css.map +1 -1
  93. package/dist/components/ui/context-menu.d.ts.map +1 -1
  94. package/dist/components/ui/context-menu.js +6 -6
  95. package/dist/components/ui/context-menu.js.map +1 -1
  96. package/dist/components/ui/context-menu_module.css.map +1 -1
  97. package/dist/components/ui/copy-button.js +6 -6
  98. package/dist/components/ui/copy-button.js.map +1 -1
  99. package/dist/components/ui/copy-button_module.css.map +1 -1
  100. package/dist/components/ui/counting-number.js +6 -6
  101. package/dist/components/ui/counting-number.js.map +1 -1
  102. package/dist/components/ui/counting-number_module.css.map +1 -1
  103. package/dist/components/ui/dialog.js +6 -6
  104. package/dist/components/ui/dialog.js.map +1 -1
  105. package/dist/components/ui/dialog_module.css +1 -1
  106. package/dist/components/ui/dialog_module.css.map +1 -1
  107. package/dist/components/ui/dot-background_module.css.map +1 -1
  108. package/dist/components/ui/drawer.d.ts.map +1 -1
  109. package/dist/components/ui/drawer.js +5 -5
  110. package/dist/components/ui/drawer.js.map +1 -1
  111. package/dist/components/ui/drawer_module.css.map +1 -1
  112. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  113. package/dist/components/ui/dropdown-menu.js +6 -6
  114. package/dist/components/ui/dropdown-menu.js.map +1 -1
  115. package/dist/components/ui/dropdown-menu_module.css.map +1 -1
  116. package/dist/components/ui/dropdrawer.d.ts +10 -16
  117. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  118. package/dist/components/ui/dropdrawer.js +73 -65
  119. package/dist/components/ui/dropdrawer.js.map +1 -1
  120. package/dist/components/ui/dropdrawer_module.css.map +1 -1
  121. package/dist/components/ui/empty.js +7 -7
  122. package/dist/components/ui/empty.js.map +1 -1
  123. package/dist/components/ui/empty_module.css.map +1 -1
  124. package/dist/components/ui/error-boundary.js +2 -2
  125. package/dist/components/ui/error-boundary.js.map +1 -1
  126. package/dist/components/ui/error-boundary_module.css.map +1 -1
  127. package/dist/components/ui/field.js +12 -12
  128. package/dist/components/ui/field.js.map +1 -1
  129. package/dist/components/ui/field_module.css.map +1 -1
  130. package/dist/components/ui/fireworks-background.js +6 -6
  131. package/dist/components/ui/fireworks-background.js.map +1 -1
  132. package/dist/components/ui/fireworks-background_module.css.map +1 -1
  133. package/dist/components/ui/flip-button.js +5 -5
  134. package/dist/components/ui/flip-button.js.map +1 -1
  135. package/dist/components/ui/flip-button_module.css.map +1 -1
  136. package/dist/components/ui/focus-scope.js +6 -6
  137. package/dist/components/ui/focus-scope.js.map +1 -1
  138. package/dist/components/ui/focus-scope_module.css.map +1 -1
  139. package/dist/components/ui/form-skeleton.js +2 -2
  140. package/dist/components/ui/form-skeleton.js.map +1 -1
  141. package/dist/components/ui/form-skeleton_module.css.map +1 -1
  142. package/dist/components/ui/form.d.ts +3 -3
  143. package/dist/components/ui/form.d.ts.map +1 -1
  144. package/dist/components/ui/form.js +13 -13
  145. package/dist/components/ui/form.js.map +1 -1
  146. package/dist/components/ui/form_module.css.map +1 -1
  147. package/dist/components/ui/gradient-background.js +2 -2
  148. package/dist/components/ui/gradient-background.js.map +1 -1
  149. package/dist/components/ui/gradient-background_module.css.map +1 -1
  150. package/dist/components/ui/gradient-text.js +2 -2
  151. package/dist/components/ui/gradient-text.js.map +1 -1
  152. package/dist/components/ui/gradient-text_module.css.map +1 -1
  153. package/dist/components/ui/highlight-text.js +4 -4
  154. package/dist/components/ui/highlight-text.js.map +1 -1
  155. package/dist/components/ui/highlight-text_module.css.map +1 -1
  156. package/dist/components/ui/hole-background.js +21 -21
  157. package/dist/components/ui/hole-background.js.map +1 -1
  158. package/dist/components/ui/hole-background_module.css.map +1 -1
  159. package/dist/components/ui/hover-card.js +3 -3
  160. package/dist/components/ui/hover-card.js.map +1 -1
  161. package/dist/components/ui/hover-card_module.css.map +1 -1
  162. package/dist/components/ui/input-group.js +7 -7
  163. package/dist/components/ui/input-group.js.map +1 -1
  164. package/dist/components/ui/input-group_module.css.map +1 -1
  165. package/dist/components/ui/input-otp.d.ts +3 -3
  166. package/dist/components/ui/input-otp.d.ts.map +1 -1
  167. package/dist/components/ui/input-otp.js +6 -6
  168. package/dist/components/ui/input-otp.js.map +1 -1
  169. package/dist/components/ui/input-otp_module.css.map +1 -1
  170. package/dist/components/ui/input.js +2 -2
  171. package/dist/components/ui/input.js.map +1 -1
  172. package/dist/components/ui/input_module.css.map +1 -1
  173. package/dist/components/ui/item.d.ts +1 -1
  174. package/dist/components/ui/item.d.ts.map +1 -1
  175. package/dist/components/ui/item.js +13 -13
  176. package/dist/components/ui/item.js.map +1 -1
  177. package/dist/components/ui/item_module.css.map +1 -1
  178. package/dist/components/ui/kbd.js +3 -3
  179. package/dist/components/ui/kbd.js.map +1 -1
  180. package/dist/components/ui/kbd_module.css.map +1 -1
  181. package/dist/components/ui/label.js +2 -2
  182. package/dist/components/ui/label.js.map +1 -1
  183. package/dist/components/ui/label_module.css.map +1 -1
  184. package/dist/components/ui/list-skeleton.js +2 -2
  185. package/dist/components/ui/list-skeleton.js.map +1 -1
  186. package/dist/components/ui/list-skeleton_module.css.map +1 -1
  187. package/dist/components/ui/loading-overlay.js +2 -2
  188. package/dist/components/ui/loading-overlay.js.map +1 -1
  189. package/dist/components/ui/loading-overlay_module.css.map +1 -1
  190. package/dist/components/ui/menubar.d.ts +11 -13
  191. package/dist/components/ui/menubar.d.ts.map +1 -1
  192. package/dist/components/ui/menubar.js +4 -4
  193. package/dist/components/ui/menubar.js.map +1 -1
  194. package/dist/components/ui/menubar_module.css.map +1 -1
  195. package/dist/components/ui/meter.d.ts +8 -24
  196. package/dist/components/ui/meter.d.ts.map +1 -1
  197. package/dist/components/ui/meter.js +23 -19
  198. package/dist/components/ui/meter.js.map +1 -1
  199. package/dist/components/ui/meter_module.css.map +1 -1
  200. package/dist/components/ui/navigation-menu.d.ts +3 -12
  201. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  202. package/dist/components/ui/navigation-menu.js +15 -12
  203. package/dist/components/ui/navigation-menu.js.map +1 -1
  204. package/dist/components/ui/navigation-menu_module.css +1 -1
  205. package/dist/components/ui/navigation-menu_module.css.map +1 -1
  206. package/dist/components/ui/number-field.d.ts +6 -12
  207. package/dist/components/ui/number-field.d.ts.map +1 -1
  208. package/dist/components/ui/number-field.js +3 -3
  209. package/dist/components/ui/number-field.js.map +1 -1
  210. package/dist/components/ui/number-field_module.css.map +1 -1
  211. package/dist/components/ui/pagination.js +8 -8
  212. package/dist/components/ui/pagination.js.map +1 -1
  213. package/dist/components/ui/pagination_module.css.map +1 -1
  214. package/dist/components/ui/popover.js +5 -5
  215. package/dist/components/ui/popover.js.map +1 -1
  216. package/dist/components/ui/popover_module.css.map +1 -1
  217. package/dist/components/ui/progress.d.ts +1 -4
  218. package/dist/components/ui/progress.d.ts.map +1 -1
  219. package/dist/components/ui/progress.js +10 -9
  220. package/dist/components/ui/progress.js.map +1 -1
  221. package/dist/components/ui/progress_module.css.map +1 -1
  222. package/dist/components/ui/radio-group.d.ts +2 -4
  223. package/dist/components/ui/radio-group.d.ts.map +1 -1
  224. package/dist/components/ui/radio-group.js +3 -3
  225. package/dist/components/ui/radio-group.js.map +1 -1
  226. package/dist/components/ui/radio-group_module.css.map +1 -1
  227. package/dist/components/ui/resizable.d.ts +13 -29
  228. package/dist/components/ui/resizable.d.ts.map +1 -1
  229. package/dist/components/ui/resizable.js +8 -7
  230. package/dist/components/ui/resizable.js.map +1 -1
  231. package/dist/components/ui/resizable_module.css.map +1 -1
  232. package/dist/components/ui/ripple-button.js +9 -9
  233. package/dist/components/ui/ripple-button.js.map +1 -1
  234. package/dist/components/ui/ripple-button_module.css.map +1 -1
  235. package/dist/components/ui/scratcher.d.ts +1 -1
  236. package/dist/components/ui/scratcher.d.ts.map +1 -1
  237. package/dist/components/ui/scratcher.js +5 -4
  238. package/dist/components/ui/scratcher.js.map +1 -1
  239. package/dist/components/ui/scratcher_module.css.map +1 -1
  240. package/dist/components/ui/scroll-area.d.ts +2 -4
  241. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  242. package/dist/components/ui/scroll-area.js +2 -2
  243. package/dist/components/ui/scroll-area.js.map +1 -1
  244. package/dist/components/ui/scroll-area_module.css.map +1 -1
  245. package/dist/components/ui/select.js +4 -4
  246. package/dist/components/ui/select.js.map +1 -1
  247. package/dist/components/ui/select_module.css.map +1 -1
  248. package/dist/components/ui/separator.d.ts +1 -4
  249. package/dist/components/ui/separator.d.ts.map +1 -1
  250. package/dist/components/ui/separator.js +9 -8
  251. package/dist/components/ui/separator.js.map +1 -1
  252. package/dist/components/ui/separator_module.css.map +1 -1
  253. package/dist/components/ui/sheet.d.ts.map +1 -1
  254. package/dist/components/ui/sheet.js +6 -6
  255. package/dist/components/ui/sheet.js.map +1 -1
  256. package/dist/components/ui/sheet_module.css.map +1 -1
  257. package/dist/components/ui/sidebar.d.ts +1 -1
  258. package/dist/components/ui/sidebar.d.ts.map +1 -1
  259. package/dist/components/ui/sidebar.js +36 -36
  260. package/dist/components/ui/sidebar.js.map +1 -1
  261. package/dist/components/ui/sidebar_module.css.map +1 -1
  262. package/dist/components/ui/skeleton.js +2 -2
  263. package/dist/components/ui/skeleton.js.map +1 -1
  264. package/dist/components/ui/skeleton_module.css.map +1 -1
  265. package/dist/components/ui/slider.js +2 -2
  266. package/dist/components/ui/slider.js.map +1 -1
  267. package/dist/components/ui/slider_module.css.map +1 -1
  268. package/dist/components/ui/spinner.js +2 -2
  269. package/dist/components/ui/spinner.js.map +1 -1
  270. package/dist/components/ui/spinner_module.css.map +1 -1
  271. package/dist/components/ui/stepper.js +2 -2
  272. package/dist/components/ui/stepper.js.map +1 -1
  273. package/dist/components/ui/stepper_module.css.map +1 -1
  274. package/dist/components/ui/switch.js +2 -2
  275. package/dist/components/ui/switch.js.map +1 -1
  276. package/dist/components/ui/switch_module.css.map +1 -1
  277. package/dist/components/ui/table-skeleton.js +2 -2
  278. package/dist/components/ui/table-skeleton.js.map +1 -1
  279. package/dist/components/ui/table-skeleton_module.css.map +1 -1
  280. package/dist/components/ui/table.js +9 -9
  281. package/dist/components/ui/table.js.map +1 -1
  282. package/dist/components/ui/table_module.css.map +1 -1
  283. package/dist/components/ui/tabs.js +3 -3
  284. package/dist/components/ui/tabs.js.map +1 -1
  285. package/dist/components/ui/tabs_module.css.map +1 -1
  286. package/dist/components/ui/textarea.js +2 -2
  287. package/dist/components/ui/textarea.js.map +1 -1
  288. package/dist/components/ui/textarea_module.css.map +1 -1
  289. package/dist/components/ui/timeline.js +5 -5
  290. package/dist/components/ui/timeline.js.map +1 -1
  291. package/dist/components/ui/timeline_module.css.map +1 -1
  292. package/dist/components/ui/{sonner.d.ts → toast.d.ts} +15 -6
  293. package/dist/components/ui/toast.d.ts.map +1 -0
  294. package/dist/components/ui/{sonner.js → toast.js} +43 -42
  295. package/dist/components/ui/toast.js.map +1 -0
  296. package/dist/components/ui/toast.module.js +34 -0
  297. package/dist/components/ui/toast.module.js.map +1 -0
  298. package/dist/components/ui/{sonner_module.css → toast_module.css} +35 -35
  299. package/dist/components/ui/toast_module.css.map +1 -0
  300. package/dist/components/ui/toggle-group.d.ts +2 -8
  301. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  302. package/dist/components/ui/toggle-group.js +14 -12
  303. package/dist/components/ui/toggle-group.js.map +1 -1
  304. package/dist/components/ui/toggle-group_module.css.map +1 -1
  305. package/dist/components/ui/toggle.js +2 -2
  306. package/dist/components/ui/toggle.js.map +1 -1
  307. package/dist/components/ui/toggle_module.css.map +1 -1
  308. package/dist/components/ui/toolbar.d.ts +10 -30
  309. package/dist/components/ui/toolbar.d.ts.map +1 -1
  310. package/dist/components/ui/toolbar.js +28 -23
  311. package/dist/components/ui/toolbar.js.map +1 -1
  312. package/dist/components/ui/toolbar_module.css.map +1 -1
  313. package/dist/components/ui/tooltip.js +4 -4
  314. package/dist/components/ui/tooltip.js.map +1 -1
  315. package/dist/components/ui/tooltip_module.css.map +1 -1
  316. package/dist/components/ui/typewriter.js +4 -4
  317. package/dist/components/ui/typewriter.js.map +1 -1
  318. package/dist/components/ui/typewriter_module.css.map +1 -1
  319. package/dist/components/ui/visually-hidden.js +2 -2
  320. package/dist/components/ui/visually-hidden.js.map +1 -1
  321. package/dist/components/ui/visually-hidden_module.css.map +1 -1
  322. package/dist/hooks/useAnnounce.js +5 -5
  323. package/dist/hooks/useAnnounce.js.map +1 -1
  324. package/dist/hooks/useClipboard.d.ts +77 -0
  325. package/dist/hooks/useClipboard.d.ts.map +1 -0
  326. package/dist/hooks/useClipboard.js +42 -0
  327. package/dist/hooks/useClipboard.js.map +1 -0
  328. package/dist/hooks/useControllableState.d.ts +54 -0
  329. package/dist/hooks/useControllableState.d.ts.map +1 -0
  330. package/dist/hooks/useControllableState.js +29 -0
  331. package/dist/hooks/useControllableState.js.map +1 -0
  332. package/dist/hooks/useDebounce.d.ts +33 -0
  333. package/dist/hooks/useDebounce.d.ts.map +1 -0
  334. package/dist/hooks/useDebounce.js +20 -0
  335. package/dist/hooks/useDebounce.js.map +1 -0
  336. package/dist/hooks/useEventCallback.d.ts +34 -0
  337. package/dist/hooks/useEventCallback.d.ts.map +1 -0
  338. package/dist/hooks/useEventCallback.js +12 -0
  339. package/dist/hooks/useEventCallback.js.map +1 -0
  340. package/dist/hooks/useFocusManager.js +6 -6
  341. package/dist/hooks/useFocusManager.js.map +1 -1
  342. package/dist/hooks/useFocusVisible.js +5 -5
  343. package/dist/hooks/useFocusVisible.js.map +1 -1
  344. package/dist/hooks/useId.d.ts +30 -0
  345. package/dist/hooks/useId.d.ts.map +1 -0
  346. package/dist/hooks/useId.js +9 -0
  347. package/dist/hooks/useId.js.map +1 -0
  348. package/dist/hooks/useIntersectionObserver.d.ts +51 -0
  349. package/dist/hooks/useIntersectionObserver.d.ts.map +1 -0
  350. package/dist/hooks/useIntersectionObserver.js +25 -0
  351. package/dist/hooks/useIntersectionObserver.js.map +1 -0
  352. package/dist/hooks/useInterval.d.ts +55 -0
  353. package/dist/hooks/useInterval.d.ts.map +1 -0
  354. package/dist/hooks/useInterval.js +24 -0
  355. package/dist/hooks/useInterval.js.map +1 -0
  356. package/dist/hooks/useLocalStorage.d.ts +43 -0
  357. package/dist/hooks/useLocalStorage.d.ts.map +1 -0
  358. package/dist/hooks/useLocalStorage.js +53 -0
  359. package/dist/hooks/useLocalStorage.js.map +1 -0
  360. package/dist/hooks/useMediaQuery.js +3 -3
  361. package/dist/hooks/useMediaQuery.js.map +1 -1
  362. package/dist/hooks/useMergedRefs.d.ts +27 -0
  363. package/dist/hooks/useMergedRefs.d.ts.map +1 -0
  364. package/dist/hooks/useMergedRefs.js +11 -0
  365. package/dist/hooks/useMergedRefs.js.map +1 -0
  366. package/dist/hooks/useOnClickOutside.d.ts +32 -0
  367. package/dist/hooks/useOnClickOutside.d.ts.map +1 -0
  368. package/dist/hooks/useOnClickOutside.js +23 -0
  369. package/dist/hooks/useOnClickOutside.js.map +1 -0
  370. package/dist/hooks/usePrevious.d.ts +33 -0
  371. package/dist/hooks/usePrevious.d.ts.map +1 -0
  372. package/dist/hooks/usePrevious.js +14 -0
  373. package/dist/hooks/usePrevious.js.map +1 -0
  374. package/dist/hooks/useThrottle.d.ts +37 -0
  375. package/dist/hooks/useThrottle.d.ts.map +1 -0
  376. package/dist/hooks/useThrottle.js +34 -0
  377. package/dist/hooks/useThrottle.js.map +1 -0
  378. package/dist/hooks/useTimeout.d.ts +28 -0
  379. package/dist/hooks/useTimeout.d.ts.map +1 -0
  380. package/dist/hooks/useTimeout.js +24 -0
  381. package/dist/hooks/useTimeout.js.map +1 -0
  382. package/dist/index.css.map +1 -1
  383. package/dist/index.d.ts +17 -3
  384. package/dist/index.d.ts.map +1 -1
  385. package/dist/index.js +15 -1
  386. package/dist/lib/utilities.d.ts +2 -3
  387. package/dist/lib/utilities.d.ts.map +1 -1
  388. package/dist/lib/utilities.js.map +1 -1
  389. package/dist/motion/Collapse.js +2 -2
  390. package/dist/motion/Collapse.js.map +1 -1
  391. package/dist/motion/Collapse_module.css.map +1 -1
  392. package/dist/motion/tokens.js +5 -5
  393. package/dist/motion/tokens.js.map +1 -1
  394. package/package.json +88 -10
  395. package/src/components/ui/alert-dialog.tsx +15 -8
  396. package/src/components/ui/avatar.tsx +9 -6
  397. package/src/components/ui/calendar.tsx +9 -14
  398. package/src/components/ui/carousel.tsx +2 -0
  399. package/src/components/ui/chart.tsx +65 -62
  400. package/src/components/ui/checkbox-group.tsx +4 -5
  401. package/src/components/ui/checkbox.tsx +10 -2
  402. package/src/components/ui/collapsible.tsx +1 -0
  403. package/src/components/ui/combobox.module.css +158 -0
  404. package/src/components/ui/combobox.tsx +569 -0
  405. package/src/components/ui/command.tsx +31 -15
  406. package/src/components/ui/context-menu.tsx +3 -0
  407. package/src/components/ui/drawer.tsx +2 -0
  408. package/src/components/ui/dropdown-menu.tsx +3 -0
  409. package/src/components/ui/dropdrawer.tsx +80 -62
  410. package/src/components/ui/form.tsx +28 -3
  411. package/src/components/ui/input-otp.tsx +3 -3
  412. package/src/components/ui/menubar.tsx +9 -10
  413. package/src/components/ui/meter.tsx +16 -17
  414. package/src/components/ui/navigation-menu.tsx +41 -33
  415. package/src/components/ui/number-field.tsx +6 -13
  416. package/src/components/ui/progress.tsx +3 -2
  417. package/src/components/ui/radio-group.tsx +2 -5
  418. package/src/components/ui/resizable.tsx +15 -18
  419. package/src/components/ui/scratcher.tsx +6 -10
  420. package/src/components/ui/scroll-area.tsx +2 -5
  421. package/src/components/ui/separator.tsx +4 -3
  422. package/src/components/ui/sheet.tsx +3 -0
  423. package/src/components/ui/sidebar.tsx +1 -0
  424. package/src/components/ui/{sonner.module.css → toast.module.css} +1 -1
  425. package/src/components/ui/{sonner.tsx → toast.tsx} +22 -14
  426. package/src/components/ui/toggle-group.tsx +6 -4
  427. package/src/components/ui/toolbar.tsx +20 -21
  428. package/src/hooks/useClipboard.tsx +137 -0
  429. package/src/hooks/useControllableState.tsx +81 -0
  430. package/src/hooks/useDebounce.tsx +50 -0
  431. package/src/hooks/useEventCallback.tsx +47 -0
  432. package/src/hooks/useId.tsx +36 -0
  433. package/src/hooks/useIntersectionObserver.tsx +81 -0
  434. package/src/hooks/useInterval.tsx +80 -0
  435. package/src/hooks/useLocalStorage.tsx +111 -0
  436. package/src/hooks/useMergedRefs.tsx +48 -0
  437. package/src/hooks/useOnClickOutside.tsx +55 -0
  438. package/src/hooks/usePrevious.tsx +44 -0
  439. package/src/hooks/useThrottle.tsx +78 -0
  440. package/src/hooks/useTimeout.tsx +51 -0
  441. package/src/index.ts +27 -4
  442. package/src/lib/utilities.ts +4 -4
  443. package/src/motion/tokens.ts +4 -4
  444. package/src/stories/DesignPrinciples.mdx +48 -0
  445. package/src/stories/GettingStarted.mdx +92 -0
  446. package/src/stories/Welcome.mdx +44 -0
  447. package/dist/components/ui/sonner.d.ts.map +0 -1
  448. package/dist/components/ui/sonner.js.map +0 -1
  449. package/dist/components/ui/sonner.module.js +0 -34
  450. package/dist/components/ui/sonner.module.js.map +0 -1
  451. package/dist/components/ui/sonner_module.css.map +0 -1
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ export { CheckboxGroup } from "./components/ui/checkbox-group.js";
18
18
  export { Area, AreaChart, Bar, BarChart, BarStack, Brush, CartesianGrid, Cell, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ComposedChart, Cross, Curve, Customized, DefaultZIndexes, Dot, ErrorBar, Funnel, FunnelChart, LabelList, Line, LineChart, Pie, PieChart, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Polygon, Radar, RadarChart, RadialBar, RadialBarChart, RechartsLabel, Rectangle, ReferenceArea, ReferenceDot, ReferenceLine, ResponsiveContainer, Sankey, Scatter, ScatterChart, Sector, SunburstChart, Symbols, Trapezoid, Treemap, XAxis, YAxis, ZAxis, ZIndexLayer, useActiveTooltipCoordinate, useActiveTooltipDataPoints, useActiveTooltipLabel, useChartHeight, useChartWidth, useIsTooltipActive, useMargin, useOffset, usePlotArea, useXAxisDomain, useYAxisDomain } from "./components/ui/chart.js";
19
19
  export { Checkbox } from "./components/ui/checkbox.js";
20
20
  export { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./components/ui/collapsible.js";
21
+ export { Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxItem, ComboboxSeparator, ComboboxTrigger } from "./components/ui/combobox.js";
21
22
  export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "./components/ui/command.js";
22
23
  export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "./components/ui/context-menu.js";
23
24
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from "./components/ui/dialog.js";
@@ -50,7 +51,7 @@ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupActio
50
51
  export { Skeleton } from "./components/ui/skeleton.js";
51
52
  export { Spinner } from "./components/ui/spinner.js";
52
53
  export { Slider } from "./components/ui/slider.js";
53
- export { Toaster, toast } from "./components/ui/sonner.js";
54
+ export { Toaster, toast } from "./components/ui/toast.js";
54
55
  export { Switch } from "./components/ui/switch.js";
55
56
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from "./components/ui/table.js";
56
57
  export { Tabs, TabsContent, TabsList, TabsTrigger } from "./components/ui/tabs.js";
@@ -64,12 +65,25 @@ export { Stepper } from "./components/ui/stepper.js";
64
65
  export { Timeline, TimelineContent, TimelineDot, TimelineItem } from "./components/ui/timeline.js";
65
66
  export { VisuallyHidden } from "./components/ui/visually-hidden.js";
66
67
  export { useBreakpoint } from "./hooks/useBreakpoint.js";
68
+ export { useClipboard } from "./hooks/useClipboard.js";
67
69
  export { useColorScheme } from "./hooks/useColorScheme.js";
70
+ export { useControllableState } from "./hooks/useControllableState.js";
71
+ export { useDebounce } from "./hooks/useDebounce.js";
72
+ export { useEventCallback } from "./hooks/useEventCallback.js";
68
73
  export { useFocusVisible } from "./hooks/useFocusVisible.js";
74
+ export { useId } from "./hooks/useId.js";
75
+ export { useIntersectionObserver } from "./hooks/useIntersectionObserver.js";
76
+ export { useInterval } from "./hooks/useInterval.js";
69
77
  export { useIsMobile } from "./hooks/useIsMobile.js";
78
+ export { useLocalStorage } from "./hooks/useLocalStorage.js";
70
79
  export { useMediaQuery } from "./hooks/useMediaQuery.js";
80
+ export { useMergedRefs } from "./hooks/useMergedRefs.js";
81
+ export { useOnClickOutside } from "./hooks/useOnClickOutside.js";
71
82
  export { usePrefersContrast } from "./hooks/usePrefersContrast.js";
83
+ export { usePrevious } from "./hooks/usePrevious.js";
72
84
  export { useReducedMotion } from "./hooks/useReducedMotion.js";
85
+ export { useThrottle } from "./hooks/useThrottle.js";
86
+ export { useTimeout } from "./hooks/useTimeout.js";
73
87
  export { useWindowSize } from "./hooks/useWindowSize.js";
74
88
  export { adjustHexColorLightness, adjustLightness, calculateComplementaryHexColor, convertHexToHslString, convertHslToHexString, getComplementaryColor, hexToHsl, hslToHex, isValidHexColor, parseHslString, parseHslStringToComponents, validateHexColorFormat } from "./lib/color-conversion-utilities.js";
75
89
  export { cn } from "./lib/utilities.js";
@@ -1,10 +1,9 @@
1
- import { type ClassValue } from "clsx";
1
+ export type { ClassValue } from "clsx";
2
2
  /**
3
3
  * Helper function that merges CSS class names.
4
4
  * Uses clsx for conditional class name composition.
5
5
  * @param inputs Array of class names
6
6
  * @returns Merged class names string
7
7
  */
8
- export declare function cn(...inputs: ReadonlyArray<ClassValue>): string;
9
- export type { ClassValue };
8
+ export declare function cn(...inputs: ReadonlyArray<import("clsx").ClassValue>): string;
10
9
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/lib/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAC,MAAM,MAAM,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,MAAM,CAE/D;AAED,YAAY,EAAC,UAAU,EAAC,CAAC"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/lib/utilities.ts"],"names":[],"mappings":"AAEA,YAAY,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAErC;;;;;GAKG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,OAAO,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAE9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"lib/utilities.js","sources":["../../src/lib/utilities.ts"],"sourcesContent":["import {clsx, type ClassValue} from \"clsx\";\r\n\r\n/**\r\n * Helper function that merges CSS class names.\r\n * Uses clsx for conditional class name composition.\r\n * @param inputs Array of class names\r\n * @returns Merged class names string\r\n */\r\nexport function cn(...inputs: ReadonlyArray<ClassValue>): string {\r\n return clsx(inputs);\r\n}\r\n\r\nexport type {ClassValue};\r\n"],"names":["cn","inputs","clsx"],"mappings":";AAQO,SAASA,GAAG,GAAGC,MAAiC;IACrD,OAAOC,KAAKD;AACd"}
1
+ {"version":3,"file":"lib/utilities.js","sources":["../../src/lib/utilities.ts"],"sourcesContent":["import {clsx} from \"clsx\";\r\n\r\nexport type {ClassValue} from \"clsx\";\r\n\r\n/**\r\n * Helper function that merges CSS class names.\r\n * Uses clsx for conditional class name composition.\r\n * @param inputs Array of class names\r\n * @returns Merged class names string\r\n */\r\nexport function cn(...inputs: ReadonlyArray<import(\"clsx\").ClassValue>): string {\r\n return clsx(inputs);\r\n}\r\n"],"names":["cn","inputs","clsx"],"mappings":";AAUO,SAASA,GAAG,GAAGC,MAAgD;IACpE,OAAOC,KAAKD;AACd"}
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { forwardRef } from "react";
4
3
  import { cn } from "../lib/utilities.js";
5
4
  import Collapse_module from "./Collapse.module.js";
6
- const Collapse = /*#__PURE__*/ forwardRef(({ open, children, className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
5
+ import * as __rspack_external_react from "react";
6
+ const Collapse = /*#__PURE__*/ __rspack_external_react.forwardRef(({ open, children, className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
7
7
  ref: ref,
8
8
  "data-state": open ? "open" : "closed",
9
9
  className: cn(Collapse_module.collapse, className),
@@ -1 +1 @@
1
- {"version":3,"file":"motion/Collapse.js","sources":["../../src/motion/Collapse.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./Collapse.module.css\";\r\n\r\n/**\r\n * Represents the configurable props for the {@link Collapse} component.\r\n *\r\n * @remarks\r\n * Extends native `<div>` attributes so consumers can provide ARIA metadata,\r\n * testing hooks, and custom classes while keeping the animated container typed.\r\n */\r\ninterface CollapseProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Whether the content is expanded.\r\n */\r\n open: boolean;\r\n /**\r\n * Content to show or hide with animation.\r\n */\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Animated height collapse and expand using CSS grid-template-rows.\r\n *\r\n * @remarks\r\n * Supports reduced motion through a CSS `prefers-reduced-motion` media query and keeps\r\n * content mounted so assistive technologies and measurement logic remain stable.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Collapse open={isExpanded}>\r\n * <p>Collapsible content</p>\r\n * </Collapse>\r\n * ```\r\n */\r\nconst Collapse = React.forwardRef<HTMLDivElement, CollapseProps>(({open, children, className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n data-state={open ? \"open\" : \"closed\"}\r\n className={cn(styles.collapse, className)}\r\n {...props}>\r\n <div className={styles.inner}>{children}</div>\r\n </div>\r\n));\r\nCollapse.displayName = \"Collapse\";\r\n\r\nexport {Collapse};\r\nexport type {CollapseProps};\r\n"],"names":["Collapse","React","open","children","className","props","ref","cn","styles"],"mappings":";;;;;AAuCA,MAAMA,WAAW,WAAHA,GAAGC,WAAgD,CAAC,EAACC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GACvG,IAAC;QACC,KAAKA;QACL,cAAYJ,OAAO,SAAS;QAC5B,WAAWK,GAAGC,gBAAAA,QAAe,EAAEJ;QAC9B,GAAGC,KAAK;kBACT,kBAAC;YAAI,WAAWG,gBAAAA,KAAY;sBAAGL;;;AAGnCH,SAAS,WAAW,GAAG"}
1
+ {"version":3,"file":"motion/Collapse.js","sources":["../../src/motion/Collapse.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./Collapse.module.css\";\r\n\r\n/**\r\n * Represents the configurable props for the {@link Collapse} component.\r\n *\r\n * @remarks\r\n * Extends native `<div>` attributes so consumers can provide ARIA metadata,\r\n * testing hooks, and custom classes while keeping the animated container typed.\r\n */\r\ninterface CollapseProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Whether the content is expanded.\r\n */\r\n open: boolean;\r\n /**\r\n * Content to show or hide with animation.\r\n */\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Animated height collapse and expand using CSS grid-template-rows.\r\n *\r\n * @remarks\r\n * Supports reduced motion through a CSS `prefers-reduced-motion` media query and keeps\r\n * content mounted so assistive technologies and measurement logic remain stable.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Collapse open={isExpanded}>\r\n * <p>Collapsible content</p>\r\n * </Collapse>\r\n * ```\r\n */\r\nconst Collapse = React.forwardRef<HTMLDivElement, CollapseProps>(({open, children, className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n data-state={open ? \"open\" : \"closed\"}\r\n className={cn(styles.collapse, className)}\r\n {...props}>\r\n <div className={styles.inner}>{children}</div>\r\n </div>\r\n));\r\nCollapse.displayName = \"Collapse\";\r\n\r\nexport {Collapse};\r\nexport type {CollapseProps};\r\n"],"names":["Collapse","React","open","children","className","props","ref","cn","styles"],"mappings":";;;;;AAuCA,MAAMA,WAAW,WAAHA,GAAGC,wBAAAA,UAAgB,CAAgC,CAAC,EAACC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GACvG,IAAC;QACC,KAAKA;QACL,cAAYJ,OAAO,SAAS;QAC5B,WAAWK,GAAGC,gBAAAA,QAAe,EAAEJ;QAC9B,GAAGC,KAAK;kBACT,kBAAC;YAAI,WAAWG,gBAAAA,KAAY;sBAAGL;;;AAGnCH,SAAS,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://./home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/motion/Collapse.module.css","webpack://./src/motion/Collapse.module.css"],"names":[],"mappings":"AADA;ECEE,UAAU;EACV,8FAA8F;EAC9F,uBAAuB;EACvB,aAAa;EACb,gBAAgB;AAClB;;AAEA;EACE,UAAU;EACV,uBAAuB;AACzB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE;IACE,gBAAgB;EAClB;AACF","sourcesContent":[".collapse{display:grid;grid-template-rows:0fr;opacity:0;overflow:hidden;transition:grid-template-rows var(--ac-transition-normal),opacity var(--ac-transition-normal)}.collapse[data-state=open]{grid-template-rows:1fr;opacity:1}.inner{min-height:0}@media (prefers-reduced-motion:reduce){.collapse{transition:none}}",".collapse {\n opacity: 0;\n transition: grid-template-rows var(--ac-transition-normal),opacity var(--ac-transition-normal);\n grid-template-rows: 0fr;\n display: grid;\n overflow: hidden;\n}\n\n.collapse[data-state=\"open\"] {\n opacity: 1;\n grid-template-rows: 1fr;\n}\n\n.inner {\n min-height: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapse {\n transition: none;\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://./../../node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[1].oneOf[2].use[2]!/home/runner/work/arolariu.ro/arolariu.ro/node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/postcss-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[3]!/home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/motion/Collapse.module.css","webpack://./src/motion/Collapse.module.css"],"names":[],"mappings":"AAAA;ECCE,UAAU;EACV,8FAA8F;EAC9F,uBAAuB;EACvB,aAAa;EACb,gBAAgB;AAClB;;ADNsK;ECSpK,UAAU;EACV,uBAAuB;AACzB;;ADXkO;ECchO,aAAa;AACf;;ADfsP;EAAuC;ICmBzR,gBAAgB;EAClB;AACF","sourcesContent":[".collapse{display:grid;grid-template-rows:0fr;opacity:0;overflow:hidden;transition:grid-template-rows var(--ac-transition-normal),opacity var(--ac-transition-normal)}.collapse[data-state=open]{grid-template-rows:1fr;opacity:1}.inner{min-height:0}@media (prefers-reduced-motion:reduce){.collapse{transition:none}}",".collapse {\n opacity: 0;\n transition: grid-template-rows var(--ac-transition-normal),opacity var(--ac-transition-normal);\n grid-template-rows: 0fr;\n display: grid;\n overflow: hidden;\n}\n\n.collapse[data-state=\"open\"] {\n opacity: 1;\n grid-template-rows: 1fr;\n}\n\n.inner {\n min-height: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapse {\n transition: none;\n }\n}\n"],"sourceRoot":""}
@@ -10,25 +10,25 @@ const easings = {
10
10
  0.25,
11
11
  0.1,
12
12
  0.25,
13
- 1.0
13
+ 1
14
14
  ],
15
15
  easeIn: [
16
16
  0.42,
17
17
  0,
18
- 1.0,
19
- 1.0
18
+ 1,
19
+ 1
20
20
  ],
21
21
  easeOut: [
22
22
  0,
23
23
  0,
24
24
  0.58,
25
- 1.0
25
+ 1
26
26
  ],
27
27
  easeInOut: [
28
28
  0.42,
29
29
  0,
30
30
  0.58,
31
- 1.0
31
+ 1
32
32
  ],
33
33
  spring: {
34
34
  type: "spring",
@@ -1 +1 @@
1
- {"version":3,"file":"motion/tokens.js","sources":["../../src/motion/tokens.ts"],"sourcesContent":["/**\r\n * Standard motion duration constants in seconds.\r\n * Aligned with `--ac-transition-*` CSS custom properties in `index.css`.\r\n *\r\n * @example\r\n * ```tsx\r\n * <motion.div animate={{opacity: 1}} transition={{duration: durations.normal}} />\r\n * ```\r\n */\r\nexport const durations = {\r\n fast: 0.1,\r\n normal: 0.15,\r\n slow: 0.2,\r\n slower: 0.3,\r\n slowest: 0.5,\r\n} as const;\r\n\r\n/**\r\n * Standard easing curves for consistent motion across the library.\r\n */\r\nexport const easings = {\r\n ease: [0.25, 0.1, 0.25, 1.0],\r\n easeIn: [0.42, 0, 1.0, 1.0],\r\n easeOut: [0, 0, 0.58, 1.0],\r\n easeInOut: [0.42, 0, 0.58, 1.0],\r\n spring: {type: \"spring\" as const, stiffness: 300, damping: 24},\r\n} as const;\r\n\r\n/**\r\n * Represents a named motion duration token.\r\n */\r\nexport type Duration = keyof typeof durations;\r\n\r\n/**\r\n * Represents a named motion easing token.\r\n */\r\nexport type Easing = keyof typeof easings;\r\n"],"names":["durations","easings"],"mappings":"AASO,MAAMA,YAAY;IACvB,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;AACX;AAKO,MAAMC,UAAU;IACrB,MAAM;QAAC;QAAM;QAAK;QAAM;KAAI;IAC5B,QAAQ;QAAC;QAAM;QAAG;QAAK;KAAI;IAC3B,SAAS;QAAC;QAAG;QAAG;QAAM;KAAI;IAC1B,WAAW;QAAC;QAAM;QAAG;QAAM;KAAI;IAC/B,QAAQ;QAAC,MAAM;QAAmB,WAAW;QAAK,SAAS;IAAE;AAC/D"}
1
+ {"version":3,"file":"motion/tokens.js","sources":["../../src/motion/tokens.ts"],"sourcesContent":["/**\r\n * Standard motion duration constants in seconds.\r\n * Aligned with `--ac-transition-*` CSS custom properties in `index.css`.\r\n *\r\n * @example\r\n * ```tsx\r\n * <motion.div animate={{opacity: 1}} transition={{duration: durations.normal}} />\r\n * ```\r\n */\r\nexport const durations = {\r\n fast: 0.1,\r\n normal: 0.15,\r\n slow: 0.2,\r\n slower: 0.3,\r\n slowest: 0.5,\r\n} as const;\r\n\r\n/**\r\n * Standard easing curves for consistent motion across the library.\r\n */\r\nexport const easings = {\r\n ease: [0.25, 0.1, 0.25, 1],\r\n easeIn: [0.42, 0, 1, 1],\r\n easeOut: [0, 0, 0.58, 1],\r\n easeInOut: [0.42, 0, 0.58, 1],\r\n spring: {type: \"spring\" as const, stiffness: 300, damping: 24},\r\n} as const;\r\n\r\n/**\r\n * Represents a named motion duration token.\r\n */\r\nexport type Duration = keyof typeof durations;\r\n\r\n/**\r\n * Represents a named motion easing token.\r\n */\r\nexport type Easing = keyof typeof easings;\r\n"],"names":["durations","easings"],"mappings":"AASO,MAAMA,YAAY;IACvB,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;AACX;AAKO,MAAMC,UAAU;IACrB,MAAM;QAAC;QAAM;QAAK;QAAM;KAAE;IAC1B,QAAQ;QAAC;QAAM;QAAG;QAAG;KAAE;IACvB,SAAS;QAAC;QAAG;QAAG;QAAM;KAAE;IACxB,WAAW;QAAC;QAAM;QAAG;QAAM;KAAE;IAC7B,QAAQ;QAAC,MAAM;QAAmB,WAAW;QAAK,SAAS;IAAE;AAC/D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arolariu/components",
3
3
  "displayName": "@arolariu/components",
4
- "version": "1.0.0",
4
+ "version": "2.0.0",
5
5
  "description": "🎨 70+ beautiful, accessible React components built on Base UI. TypeScript-first, CSS Modules styling, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡",
6
6
  "homepage": "https://arolariu.ro",
7
7
  "repository": {
@@ -84,10 +84,12 @@
84
84
  "build": "npm run build:before && rslib build && npm run build:after",
85
85
  "build:before": "node scripts/beforeBuild.ts",
86
86
  "build:after": "node scripts/afterBuild.ts",
87
- "build:clean": "rimraf dist",
87
+ "build:clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
88
88
  "build:exports": "node scripts/generate-exports.ts",
89
89
  "test": "npm run test:unit",
90
- "test:unit": "vitest run"
90
+ "test:unit": "vitest run",
91
+ "storybook": "storybook dev -p 6006",
92
+ "build-storybook": "storybook build"
91
93
  },
92
94
  "dependencies": {
93
95
  "clsx": "*",
@@ -110,17 +112,23 @@
110
112
  "@rsbuild/core": "*",
111
113
  "@rsbuild/plugin-react": "*",
112
114
  "@rslib/core": "*",
115
+ "@storybook/addon-a11y": "*",
116
+ "@storybook/addon-docs": "*",
117
+ "@storybook/addon-links": "*",
118
+ "@storybook/addon-themes": "*",
113
119
  "@types/node": "*",
114
120
  "@types/react": "*",
115
121
  "@types/react-dom": "*",
116
122
  "motion": "*",
117
- "postcss": "*",
118
123
  "playwright": "*",
124
+ "postcss": "*",
119
125
  "react": "*",
120
126
  "react-dom": "*",
121
127
  "react-hook-form": "*",
122
128
  "recharts": "*",
123
- "rimraf": "*",
129
+ "storybook": "*",
130
+ "storybook-addon-rslib": "*",
131
+ "storybook-react-rsbuild": "*",
124
132
  "typescript": "*"
125
133
  },
126
134
  "publishConfig": {
@@ -241,6 +249,11 @@
241
249
  "import": "./dist/components/ui/collapsible.js",
242
250
  "default": "./dist/components/ui/collapsible.js"
243
251
  },
252
+ "./combobox": {
253
+ "types": "./dist/components/ui/combobox.d.ts",
254
+ "import": "./dist/components/ui/combobox.js",
255
+ "default": "./dist/components/ui/combobox.js"
256
+ },
244
257
  "./command": {
245
258
  "types": "./dist/components/ui/command.d.ts",
246
259
  "import": "./dist/components/ui/command.js",
@@ -481,11 +494,6 @@
481
494
  "import": "./dist/components/ui/slider.js",
482
495
  "default": "./dist/components/ui/slider.js"
483
496
  },
484
- "./sonner": {
485
- "types": "./dist/components/ui/sonner.d.ts",
486
- "import": "./dist/components/ui/sonner.js",
487
- "default": "./dist/components/ui/sonner.js"
488
- },
489
497
  "./spinner": {
490
498
  "types": "./dist/components/ui/spinner.d.ts",
491
499
  "import": "./dist/components/ui/spinner.js",
@@ -526,6 +534,11 @@
526
534
  "import": "./dist/components/ui/timeline.js",
527
535
  "default": "./dist/components/ui/timeline.js"
528
536
  },
537
+ "./toast": {
538
+ "types": "./dist/components/ui/toast.d.ts",
539
+ "import": "./dist/components/ui/toast.js",
540
+ "default": "./dist/components/ui/toast.js"
541
+ },
529
542
  "./toggle-group": {
530
543
  "types": "./dist/components/ui/toggle-group.d.ts",
531
544
  "import": "./dist/components/ui/toggle-group.js",
@@ -566,11 +579,31 @@
566
579
  "import": "./dist/hooks/useBreakpoint.js",
567
580
  "default": "./dist/hooks/useBreakpoint.js"
568
581
  },
582
+ "./useClipboard": {
583
+ "types": "./dist/hooks/useClipboard.d.ts",
584
+ "import": "./dist/hooks/useClipboard.js",
585
+ "default": "./dist/hooks/useClipboard.js"
586
+ },
569
587
  "./useColorScheme": {
570
588
  "types": "./dist/hooks/useColorScheme.d.ts",
571
589
  "import": "./dist/hooks/useColorScheme.js",
572
590
  "default": "./dist/hooks/useColorScheme.js"
573
591
  },
592
+ "./useControllableState": {
593
+ "types": "./dist/hooks/useControllableState.d.ts",
594
+ "import": "./dist/hooks/useControllableState.js",
595
+ "default": "./dist/hooks/useControllableState.js"
596
+ },
597
+ "./useDebounce": {
598
+ "types": "./dist/hooks/useDebounce.d.ts",
599
+ "import": "./dist/hooks/useDebounce.js",
600
+ "default": "./dist/hooks/useDebounce.js"
601
+ },
602
+ "./useEventCallback": {
603
+ "types": "./dist/hooks/useEventCallback.d.ts",
604
+ "import": "./dist/hooks/useEventCallback.js",
605
+ "default": "./dist/hooks/useEventCallback.js"
606
+ },
574
607
  "./useFocusManager": {
575
608
  "types": "./dist/hooks/useFocusManager.d.ts",
576
609
  "import": "./dist/hooks/useFocusManager.js",
@@ -581,26 +614,71 @@
581
614
  "import": "./dist/hooks/useFocusVisible.js",
582
615
  "default": "./dist/hooks/useFocusVisible.js"
583
616
  },
617
+ "./useId": {
618
+ "types": "./dist/hooks/useId.d.ts",
619
+ "import": "./dist/hooks/useId.js",
620
+ "default": "./dist/hooks/useId.js"
621
+ },
622
+ "./useIntersectionObserver": {
623
+ "types": "./dist/hooks/useIntersectionObserver.d.ts",
624
+ "import": "./dist/hooks/useIntersectionObserver.js",
625
+ "default": "./dist/hooks/useIntersectionObserver.js"
626
+ },
627
+ "./useInterval": {
628
+ "types": "./dist/hooks/useInterval.d.ts",
629
+ "import": "./dist/hooks/useInterval.js",
630
+ "default": "./dist/hooks/useInterval.js"
631
+ },
584
632
  "./useIsMobile": {
585
633
  "types": "./dist/hooks/useIsMobile.d.ts",
586
634
  "import": "./dist/hooks/useIsMobile.js",
587
635
  "default": "./dist/hooks/useIsMobile.js"
588
636
  },
637
+ "./useLocalStorage": {
638
+ "types": "./dist/hooks/useLocalStorage.d.ts",
639
+ "import": "./dist/hooks/useLocalStorage.js",
640
+ "default": "./dist/hooks/useLocalStorage.js"
641
+ },
589
642
  "./useMediaQuery": {
590
643
  "types": "./dist/hooks/useMediaQuery.d.ts",
591
644
  "import": "./dist/hooks/useMediaQuery.js",
592
645
  "default": "./dist/hooks/useMediaQuery.js"
593
646
  },
647
+ "./useMergedRefs": {
648
+ "types": "./dist/hooks/useMergedRefs.d.ts",
649
+ "import": "./dist/hooks/useMergedRefs.js",
650
+ "default": "./dist/hooks/useMergedRefs.js"
651
+ },
652
+ "./useOnClickOutside": {
653
+ "types": "./dist/hooks/useOnClickOutside.d.ts",
654
+ "import": "./dist/hooks/useOnClickOutside.js",
655
+ "default": "./dist/hooks/useOnClickOutside.js"
656
+ },
594
657
  "./usePrefersContrast": {
595
658
  "types": "./dist/hooks/usePrefersContrast.d.ts",
596
659
  "import": "./dist/hooks/usePrefersContrast.js",
597
660
  "default": "./dist/hooks/usePrefersContrast.js"
598
661
  },
662
+ "./usePrevious": {
663
+ "types": "./dist/hooks/usePrevious.d.ts",
664
+ "import": "./dist/hooks/usePrevious.js",
665
+ "default": "./dist/hooks/usePrevious.js"
666
+ },
599
667
  "./useReducedMotion": {
600
668
  "types": "./dist/hooks/useReducedMotion.d.ts",
601
669
  "import": "./dist/hooks/useReducedMotion.js",
602
670
  "default": "./dist/hooks/useReducedMotion.js"
603
671
  },
672
+ "./useThrottle": {
673
+ "types": "./dist/hooks/useThrottle.d.ts",
674
+ "import": "./dist/hooks/useThrottle.js",
675
+ "default": "./dist/hooks/useThrottle.js"
676
+ },
677
+ "./useTimeout": {
678
+ "types": "./dist/hooks/useTimeout.d.ts",
679
+ "import": "./dist/hooks/useTimeout.js",
680
+ "default": "./dist/hooks/useTimeout.js"
681
+ },
604
682
  "./useWindowSize": {
605
683
  "types": "./dist/hooks/useWindowSize.d.ts",
606
684
  "import": "./dist/hooks/useWindowSize.js",
@@ -108,13 +108,15 @@ AlertDialog.displayName = "AlertDialog";
108
108
  *
109
109
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
110
110
  */
111
- function AlertDialogTrigger(props: Readonly<AlertDialogTrigger.Props>): React.ReactElement {
111
+ const AlertDialogTrigger = React.forwardRef<HTMLButtonElement, AlertDialogTrigger.Props>(function AlertDialogTrigger(props, forwardedRef) {
112
+ // eslint-disable-next-line sonarjs/deprecation -- backward-compatible asChild API
112
113
  const {asChild = false, children, className, render, ...otherProps} = props;
113
114
  const renderProp = asChild && React.isValidElement(children) ? children : render;
114
115
 
115
116
  return (
116
117
  <BaseAlertDialog.Trigger
117
118
  {...otherProps}
119
+ ref={forwardedRef}
118
120
  render={useRender({
119
121
  defaultTagName: "button",
120
122
  render: renderProp as never,
@@ -123,7 +125,7 @@ function AlertDialogTrigger(props: Readonly<AlertDialogTrigger.Props>): React.Re
123
125
  {renderProp ? undefined : children}
124
126
  </BaseAlertDialog.Trigger>
125
127
  );
126
- }
128
+ });
127
129
  AlertDialogTrigger.displayName = "AlertDialogTrigger";
128
130
 
129
131
  /**
@@ -198,7 +200,7 @@ AlertDialogOverlay.displayName = "AlertDialogOverlay";
198
200
  *
199
201
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
200
202
  */
201
- function AlertDialogContent(props: Readonly<AlertDialogContent.Props>): React.ReactElement {
203
+ const AlertDialogContent = React.forwardRef<HTMLDivElement, AlertDialogContent.Props>(function AlertDialogContent(props, forwardedRef) {
202
204
  const {className, children, render, ...otherProps} = props;
203
205
 
204
206
  return (
@@ -206,6 +208,7 @@ function AlertDialogContent(props: Readonly<AlertDialogContent.Props>): React.Re
206
208
  <AlertDialogOverlay />
207
209
  <BaseAlertDialog.Popup
208
210
  {...otherProps}
211
+ ref={forwardedRef}
209
212
  render={useRender({
210
213
  defaultTagName: "div",
211
214
  render: render as never,
@@ -215,7 +218,7 @@ function AlertDialogContent(props: Readonly<AlertDialogContent.Props>): React.Re
215
218
  </BaseAlertDialog.Popup>
216
219
  </AlertDialogPortal>
217
220
  );
218
- }
221
+ });
219
222
  AlertDialogContent.displayName = "AlertDialogContent";
220
223
 
221
224
  /**
@@ -237,6 +240,7 @@ AlertDialogContent.displayName = "AlertDialogContent";
237
240
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
238
241
  */
239
242
  function AlertDialogHeader(props: Readonly<AlertDialogHeader.Props>): React.ReactElement {
243
+ // eslint-disable-next-line sonarjs/deprecation -- backward-compatible asChild API
240
244
  const {asChild = false, children, className, render, ...otherProps} = props;
241
245
  const renderProp = asChild && React.isValidElement(children) ? children : render;
242
246
 
@@ -269,6 +273,7 @@ AlertDialogHeader.displayName = "AlertDialogHeader";
269
273
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
270
274
  */
271
275
  function AlertDialogFooter(props: Readonly<AlertDialogFooter.Props>): React.ReactElement {
276
+ // eslint-disable-next-line sonarjs/deprecation -- backward-compatible asChild API
272
277
  const {asChild = false, children, className, render, ...otherProps} = props;
273
278
  const renderProp = asChild && React.isValidElement(children) ? children : render;
274
279
 
@@ -364,12 +369,13 @@ AlertDialogDescription.displayName = "AlertDialogDescription";
364
369
  *
365
370
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
366
371
  */
367
- function AlertDialogAction(props: Readonly<AlertDialogAction.Props>): React.ReactElement {
372
+ const AlertDialogAction = React.forwardRef<HTMLButtonElement, AlertDialogAction.Props>(function AlertDialogAction(props, forwardedRef) {
368
373
  const {className, children, render, ...otherProps} = props;
369
374
 
370
375
  return (
371
376
  <BaseAlertDialog.Close
372
377
  {...otherProps}
378
+ ref={forwardedRef}
373
379
  render={useRender({
374
380
  defaultTagName: "button",
375
381
  render: render as never,
@@ -383,7 +389,7 @@ function AlertDialogAction(props: Readonly<AlertDialogAction.Props>): React.Reac
383
389
  {children}
384
390
  </BaseAlertDialog.Close>
385
391
  );
386
- }
392
+ });
387
393
  AlertDialogAction.displayName = "AlertDialogAction";
388
394
 
389
395
  /**
@@ -402,12 +408,13 @@ AlertDialogAction.displayName = "AlertDialogAction";
402
408
  *
403
409
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
404
410
  */
405
- function AlertDialogCancel(props: Readonly<AlertDialogCancel.Props>): React.ReactElement {
411
+ const AlertDialogCancel = React.forwardRef<HTMLButtonElement, AlertDialogCancel.Props>(function AlertDialogCancel(props, forwardedRef) {
406
412
  const {className, children, render, ...otherProps} = props;
407
413
 
408
414
  return (
409
415
  <BaseAlertDialog.Close
410
416
  {...otherProps}
417
+ ref={forwardedRef}
411
418
  render={useRender({
412
419
  defaultTagName: "button",
413
420
  render: render as never,
@@ -421,7 +428,7 @@ function AlertDialogCancel(props: Readonly<AlertDialogCancel.Props>): React.Reac
421
428
  {children}
422
429
  </BaseAlertDialog.Close>
423
430
  );
424
- }
431
+ });
425
432
  AlertDialogCancel.displayName = "AlertDialogCancel";
426
433
 
427
434
  // eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
@@ -51,12 +51,13 @@ interface AvatarFallbackProps extends Omit<React.ComponentPropsWithRef<typeof Ba
51
51
  *
52
52
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Documentation}
53
53
  */
54
- function Avatar(props: Readonly<Avatar.Props>): React.ReactElement {
54
+ const Avatar = React.forwardRef<HTMLSpanElement, Avatar.Props>(function Avatar(props, forwardedRef) {
55
55
  const {className, children, render, ...otherProps} = props;
56
56
 
57
57
  return (
58
58
  <BaseAvatar.Root
59
59
  {...otherProps}
60
+ ref={forwardedRef}
60
61
  render={useRender({
61
62
  defaultTagName: "span",
62
63
  render: render as never,
@@ -65,7 +66,7 @@ function Avatar(props: Readonly<Avatar.Props>): React.ReactElement {
65
66
  {children}
66
67
  </BaseAvatar.Root>
67
68
  );
68
- }
69
+ });
69
70
  Avatar.displayName = "Avatar";
70
71
 
71
72
  /**
@@ -84,12 +85,13 @@ Avatar.displayName = "Avatar";
84
85
  *
85
86
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Documentation}
86
87
  */
87
- function AvatarImage(props: Readonly<AvatarImage.Props>): React.ReactElement {
88
+ const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImage.Props>(function AvatarImage(props, forwardedRef) {
88
89
  const {className, render, ...otherProps} = props;
89
90
 
90
91
  return (
91
92
  <BaseAvatar.Image
92
93
  {...otherProps}
94
+ ref={forwardedRef}
93
95
  render={useRender({
94
96
  defaultTagName: "img",
95
97
  render: render as never,
@@ -97,7 +99,7 @@ function AvatarImage(props: Readonly<AvatarImage.Props>): React.ReactElement {
97
99
  })}
98
100
  />
99
101
  );
100
- }
102
+ });
101
103
  AvatarImage.displayName = "AvatarImage";
102
104
 
103
105
  /**
@@ -116,12 +118,13 @@ AvatarImage.displayName = "AvatarImage";
116
118
  *
117
119
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Documentation}
118
120
  */
119
- function AvatarFallback(props: Readonly<AvatarFallback.Props>): React.ReactElement {
121
+ const AvatarFallback = React.forwardRef<HTMLSpanElement, AvatarFallback.Props>(function AvatarFallback(props, forwardedRef) {
120
122
  const {className, children, render, ...otherProps} = props;
121
123
 
122
124
  return (
123
125
  <BaseAvatar.Fallback
124
126
  {...otherProps}
127
+ ref={forwardedRef}
125
128
  render={useRender({
126
129
  defaultTagName: "span",
127
130
  render: render as never,
@@ -130,7 +133,7 @@ function AvatarFallback(props: Readonly<AvatarFallback.Props>): React.ReactEleme
130
133
  {children}
131
134
  </BaseAvatar.Fallback>
132
135
  );
133
- }
136
+ });
134
137
  AvatarFallback.displayName = "AvatarFallback";
135
138
 
136
139
  // eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
@@ -4,6 +4,7 @@
4
4
 
5
5
  import {ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon} from "lucide-react";
6
6
  import * as React from "react";
7
+ import type {DateRange, DayPickerProps, Matcher} from "react-day-picker";
7
8
  import {DayButton, DayPicker} from "react-day-picker";
8
9
 
9
10
  import {Button} from "@/components/ui/button";
@@ -58,16 +59,10 @@ const calendarButtonVariantStyles: Record<CalendarButtonVariant, string> = {
58
59
  *
59
60
  * @see {@link https://daypicker.dev | React Day Picker Docs}
60
61
  */
61
- function Calendar({
62
- className,
63
- classNames,
64
- showOutsideDays = true,
65
- captionLayout = "label",
66
- buttonVariant = "ghost",
67
- formatters,
68
- components,
69
- ...props
70
- }: Readonly<CalendarProps>): React.JSX.Element {
62
+ const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(function Calendar(
63
+ {className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props},
64
+ forwardedRef,
65
+ ) {
71
66
  return (
72
67
  <DayPicker
73
68
  showOutsideDays={showOutsideDays}
@@ -75,7 +70,7 @@ function Calendar({
75
70
  captionLayout={captionLayout}
76
71
  formatters={{
77
72
  formatMonthDropdown: (date) => {
78
- const locale = props.locale;
73
+ const {locale} = props;
79
74
 
80
75
  return date.toLocaleString(locale?.code ?? "default", {month: "short"});
81
76
  },
@@ -125,7 +120,7 @@ function Calendar({
125
120
  Root: ({className: rootClassName, rootRef, ...rootProps}) => (
126
121
  <div
127
122
  data-slot='calendar'
128
- ref={rootRef}
123
+ ref={rootRef ?? forwardedRef}
129
124
  className={cn(styles.calendarRoot, rootClassName)}
130
125
  {...rootProps}
131
126
  />
@@ -163,7 +158,7 @@ function Calendar({
163
158
  {...props}
164
159
  />
165
160
  );
166
- }
161
+ });
167
162
 
168
163
  function CalendarWeekNumber({week, children, ...tdProps}: Readonly<CalendarWeekNumberProps>): React.JSX.Element {
169
164
  return (
@@ -202,6 +197,6 @@ function CalendarDayButton({className, day, modifiers, ...props}: Readonly<React
202
197
 
203
198
  Calendar.displayName = "Calendar";
204
199
 
205
- export type {DateRange, DayPickerProps, Matcher} from "react-day-picker";
200
+ export type {DateRange, DayPickerProps, Matcher};
206
201
  export {Calendar};
207
202
  export type {CalendarProps};
@@ -127,7 +127,9 @@ const Carousel = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivEl
127
127
  return;
128
128
  }
129
129
 
130
+ // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect
130
131
  setCanScrollPrev(emblaApi.canScrollPrev());
132
+ // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect
131
133
  setCanScrollNext(emblaApi.canScrollNext());
132
134
  }, []);
133
135