@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
@@ -0,0 +1,55 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+
5
+ /**
6
+ * Detects clicks or touch events outside a referenced element.
7
+ *
8
+ * @remarks
9
+ * This hook is commonly used for implementing dropdown menus, modals, and popovers
10
+ * that should close when the user interacts outside their boundaries. It listens
11
+ * to both mouse and touch events to ensure broad device compatibility.
12
+ *
13
+ * The event listeners are automatically cleaned up when the component unmounts.
14
+ *
15
+ * @param ref - A ref object pointing to the element to monitor.
16
+ * @param handler - Callback invoked when a click or touch occurs outside the element.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * function Dropdown() {
21
+ * const [isOpen, setIsOpen] = useState(false);
22
+ * const dropdownRef = useRef<HTMLDivElement>(null);
23
+ *
24
+ * useOnClickOutside(dropdownRef, () => setIsOpen(false));
25
+ *
26
+ * return (
27
+ * <div ref={dropdownRef}>
28
+ * {isOpen && <DropdownMenu />}
29
+ * </div>
30
+ * );
31
+ * }
32
+ * ```
33
+ */
34
+ export function useOnClickOutside(ref: React.RefObject<HTMLElement | null>, handler: (event: MouseEvent | TouchEvent) => void): void {
35
+ React.useEffect(() => {
36
+ const listener = (event: MouseEvent | TouchEvent) => {
37
+ const element = ref.current;
38
+
39
+ // Do nothing if clicking ref's element or descendent elements
40
+ if (!element || element.contains(event.target as Node)) {
41
+ return;
42
+ }
43
+
44
+ handler(event);
45
+ };
46
+
47
+ globalThis.document.addEventListener("mousedown", listener);
48
+ globalThis.document.addEventListener("touchstart", listener);
49
+
50
+ return () => {
51
+ globalThis.document.removeEventListener("mousedown", listener);
52
+ globalThis.document.removeEventListener("touchstart", listener);
53
+ };
54
+ }, [ref, handler]);
55
+ }
@@ -0,0 +1,44 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+
5
+ /**
6
+ * Tracks and returns the previous value of a state or prop.
7
+ *
8
+ * @remarks
9
+ * This hook stores the value from the previous render cycle, allowing you to compare
10
+ * current and previous values. On the initial render, it returns `undefined` since
11
+ * there is no previous value yet.
12
+ *
13
+ * Useful for detecting changes, implementing undo functionality, or creating
14
+ * animations based on value transitions.
15
+ *
16
+ * @typeParam T - The type of the value being tracked.
17
+ * @param value - The current value to track.
18
+ * @returns The value from the previous render, or `undefined` on the first render.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * function Counter() {
23
+ * const [count, setCount] = useState(0);
24
+ * const previousCount = usePrevious(count);
25
+ *
26
+ * return (
27
+ * <div>
28
+ * <p>Current: {count}</p>
29
+ * <p>Previous: {previousCount ?? "N/A"}</p>
30
+ * <button onClick={() => setCount(count + 1)}>Increment</button>
31
+ * </div>
32
+ * );
33
+ * }
34
+ * ```
35
+ */
36
+ export function usePrevious<T>(value: T): T | undefined {
37
+ const ref = React.useRef<T | undefined>(undefined);
38
+
39
+ React.useEffect(() => {
40
+ ref.current = value;
41
+ }, [value]);
42
+
43
+ return ref.current;
44
+ }
@@ -0,0 +1,78 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+
5
+ /**
6
+ * Throttles a callback function, limiting how often it can be invoked.
7
+ *
8
+ * @remarks
9
+ * This hook returns a throttled version of the provided callback that can only
10
+ * be executed once per specified interval. Subsequent calls within the interval
11
+ * are ignored. Useful for rate-limiting expensive operations triggered by high-frequency
12
+ * events like scrolling, resizing, or mouse movement.
13
+ *
14
+ * Unlike debouncing, throttling ensures the callback is invoked at regular intervals
15
+ * during continuous events, providing more predictable execution timing.
16
+ *
17
+ * @typeParam Args - The tuple type of the callback's arguments.
18
+ * @param callback - The function to throttle.
19
+ * @param delay - The minimum interval in milliseconds between invocations.
20
+ * @returns A throttled version of the callback.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * function ScrollTracker() {
25
+ * const [scrollPos, setScrollPos] = useState(0);
26
+ *
27
+ * const handleScroll = useThrottle(() => {
28
+ * setScrollPos(window.scrollY);
29
+ * }, 200);
30
+ *
31
+ * useEffect(() => {
32
+ * window.addEventListener("scroll", handleScroll);
33
+ * return () => window.removeEventListener("scroll", handleScroll);
34
+ * }, [handleScroll]);
35
+ *
36
+ * return <p>Scroll position: {scrollPos}</p>;
37
+ * }
38
+ * ```
39
+ */
40
+ export function useThrottle<Args extends unknown[]>(callback: (...args: Args) => void, delay: number): (...args: Args) => void {
41
+ const lastRunRef = React.useRef(0);
42
+ const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);
43
+ const callbackRef = React.useRef(callback);
44
+
45
+ React.useEffect(() => {
46
+ callbackRef.current = callback;
47
+ }, [callback]);
48
+
49
+ React.useEffect(() => {
50
+ return () => {
51
+ if (timeoutRef.current) {
52
+ globalThis.clearTimeout(timeoutRef.current);
53
+ }
54
+ };
55
+ }, []);
56
+
57
+ return React.useCallback(
58
+ (...args: Args) => {
59
+ const now = Date.now();
60
+ const timeSinceLastRun = now - lastRunRef.current;
61
+
62
+ if (timeSinceLastRun >= delay) {
63
+ callbackRef.current(...args);
64
+ lastRunRef.current = now;
65
+ } else {
66
+ if (timeoutRef.current) {
67
+ globalThis.clearTimeout(timeoutRef.current);
68
+ }
69
+
70
+ timeoutRef.current = globalThis.setTimeout(() => {
71
+ callbackRef.current(...args);
72
+ lastRunRef.current = Date.now();
73
+ }, delay - timeSinceLastRun);
74
+ }
75
+ },
76
+ [delay],
77
+ );
78
+ }
@@ -0,0 +1,51 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+
5
+ /**
6
+ * Executes a callback after a specified delay with automatic cleanup.
7
+ *
8
+ * @remarks
9
+ * This hook wraps `setTimeout` and automatically clears the timeout when the component
10
+ * unmounts or when the delay changes. Setting `delay` to `null` disables the timeout.
11
+ *
12
+ * The timeout is reset whenever the `callback` or `delay` changes, ensuring the most
13
+ * recent callback is always executed.
14
+ *
15
+ * @param callback - The function to execute after the delay.
16
+ * @param delay - The delay in milliseconds, or `null` to disable the timeout.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * function DelayedMessage() {
21
+ * const [visible, setVisible] = useState(false);
22
+ *
23
+ * useTimeout(() => {
24
+ * setVisible(true);
25
+ * }, 3000);
26
+ *
27
+ * return visible ? <p>Message appeared!</p> : <p>Waiting...</p>;
28
+ * }
29
+ * ```
30
+ */
31
+ export function useTimeout(callback: () => void, delay: number | null): void {
32
+ const savedCallback = React.useRef(callback);
33
+
34
+ React.useLayoutEffect(() => {
35
+ savedCallback.current = callback;
36
+ }, [callback]);
37
+
38
+ React.useEffect(() => {
39
+ if (delay === null) {
40
+ return;
41
+ }
42
+
43
+ const timeoutId = globalThis.setTimeout(() => {
44
+ savedCallback.current();
45
+ }, delay);
46
+
47
+ return () => {
48
+ globalThis.clearTimeout(timeoutId);
49
+ };
50
+ }, [delay]);
51
+ }
package/src/index.ts CHANGED
@@ -149,6 +149,16 @@ export {Checkbox} from "./components/ui/checkbox";
149
149
 
150
150
  export {Collapsible, CollapsibleContent, CollapsibleTrigger} from "./components/ui/collapsible";
151
151
 
152
+ export {
153
+ Combobox,
154
+ ComboboxContent,
155
+ ComboboxEmpty,
156
+ ComboboxGroup,
157
+ ComboboxItem,
158
+ ComboboxSeparator,
159
+ ComboboxTrigger,
160
+ } from "./components/ui/combobox";
161
+
152
162
  export {
153
163
  Command,
154
164
  CommandDialog,
@@ -383,8 +393,8 @@ export {RadioGroup, RadioGroupItem} from "./components/ui/radio-group";
383
393
 
384
394
  export {ResizableHandle, ResizablePanel, ResizablePanelGroup} from "./components/ui/resizable";
385
395
  export type {
386
- ImperativePanelGroupHandle,
387
- ImperativePanelHandle,
396
+ GroupImperativeHandle,
397
+ PanelImperativeHandle,
388
398
  ResizableHandleProps,
389
399
  ResizablePanelGroupProps,
390
400
  ResizablePanelProps,
@@ -453,8 +463,8 @@ export {Spinner} from "./components/ui/spinner";
453
463
 
454
464
  export {Slider} from "./components/ui/slider";
455
465
 
456
- export {Toaster, toast} from "./components/ui/sonner";
457
- export type {Toast} from "./components/ui/sonner";
466
+ export {Toaster, toast} from "./components/ui/toast";
467
+ export type {Toast} from "./components/ui/toast";
458
468
 
459
469
  export {Switch} from "./components/ui/switch";
460
470
 
@@ -489,12 +499,25 @@ export {
489
499
  export {VisuallyHidden, type VisuallyHiddenProps} from "./components/ui/visually-hidden";
490
500
 
491
501
  export {useBreakpoint, type Breakpoint} from "./hooks/useBreakpoint";
502
+ export {useClipboard, type UseClipboardOptions, type UseClipboardReturn} from "./hooks/useClipboard";
492
503
  export {useColorScheme, type ColorScheme} from "./hooks/useColorScheme";
504
+ export {useControllableState, type UseControllableStateOptions} from "./hooks/useControllableState";
505
+ export {useDebounce} from "./hooks/useDebounce";
506
+ export {useEventCallback} from "./hooks/useEventCallback";
493
507
  export {useFocusVisible} from "./hooks/useFocusVisible";
508
+ export {useId} from "./hooks/useId";
509
+ export {useIntersectionObserver} from "./hooks/useIntersectionObserver";
510
+ export {useInterval} from "./hooks/useInterval";
494
511
  export {useIsMobile} from "./hooks/useIsMobile";
512
+ export {useLocalStorage} from "./hooks/useLocalStorage";
495
513
  export {useMediaQuery} from "./hooks/useMediaQuery";
514
+ export {useMergedRefs} from "./hooks/useMergedRefs";
515
+ export {useOnClickOutside} from "./hooks/useOnClickOutside";
496
516
  export {usePrefersContrast} from "./hooks/usePrefersContrast";
517
+ export {usePrevious} from "./hooks/usePrevious";
497
518
  export {useReducedMotion} from "./hooks/useReducedMotion";
519
+ export {useThrottle} from "./hooks/useThrottle";
520
+ export {useTimeout} from "./hooks/useTimeout";
498
521
  export {useWindowSize} from "./hooks/useWindowSize";
499
522
 
500
523
  export {
@@ -1,4 +1,6 @@
1
- import {clsx, type ClassValue} from "clsx";
1
+ import {clsx} from "clsx";
2
+
3
+ export type {ClassValue} from "clsx";
2
4
 
3
5
  /**
4
6
  * Helper function that merges CSS class names.
@@ -6,8 +8,6 @@ import {clsx, type ClassValue} from "clsx";
6
8
  * @param inputs Array of class names
7
9
  * @returns Merged class names string
8
10
  */
9
- export function cn(...inputs: ReadonlyArray<ClassValue>): string {
11
+ export function cn(...inputs: ReadonlyArray<import("clsx").ClassValue>): string {
10
12
  return clsx(inputs);
11
13
  }
12
-
13
- export type {ClassValue};
@@ -19,10 +19,10 @@ export const durations = {
19
19
  * Standard easing curves for consistent motion across the library.
20
20
  */
21
21
  export const easings = {
22
- ease: [0.25, 0.1, 0.25, 1.0],
23
- easeIn: [0.42, 0, 1.0, 1.0],
24
- easeOut: [0, 0, 0.58, 1.0],
25
- easeInOut: [0.42, 0, 0.58, 1.0],
22
+ ease: [0.25, 0.1, 0.25, 1],
23
+ easeIn: [0.42, 0, 1, 1],
24
+ easeOut: [0, 0, 0.58, 1],
25
+ easeInOut: [0.42, 0, 0.58, 1],
26
26
  spring: {type: "spring" as const, stiffness: 300, damping: 24},
27
27
  } as const;
28
28
 
@@ -0,0 +1,48 @@
1
+ {/* @meta title: Introduction/Design Principles */}
2
+
3
+ # Design Principles
4
+
5
+ ## 🎯 Accessibility First
6
+
7
+ Every component is built on **Base UI** primitives, ensuring:
8
+ - Correct ARIA attributes and roles
9
+ - Keyboard navigation support
10
+ - Screen reader compatibility
11
+ - Focus management
12
+ - Color contrast compliance (WCAG 2.1 AA)
13
+
14
+ ## 🎨 Design Tokens
15
+
16
+ We use **OKLCH** color space for perceptually uniform colors:
17
+ - Colors stay visually consistent across light and dark themes
18
+ - Tokens are CSS custom properties (`--ac-*` prefix)
19
+ - Override any token to create custom themes
20
+
21
+ ## 🧩 Composition Over Configuration
22
+
23
+ Components follow the **compound component** pattern:
24
+ ```tsx
25
+ <Card>
26
+ <CardHeader>
27
+ <CardTitle>Title</CardTitle>
28
+ </CardHeader>
29
+ <CardContent>Content</CardContent>
30
+ <CardFooter>Footer</CardFooter>
31
+ </Card>
32
+ ```
33
+
34
+ ## 🔧 Progressive Enhancement
35
+
36
+ - Server Components by default
37
+ - `"use client"` only when hooks/interactivity needed
38
+ - CSS Modules for scoped, predictable styles
39
+ - No runtime CSS-in-JS overhead
40
+
41
+ ## 📐 Consistent API
42
+
43
+ Every component follows these conventions:
44
+ - `className` prop for custom styling
45
+ - `forwardRef` for DOM access
46
+ - `displayName` for debugging
47
+ - JSDoc for API documentation
48
+ - Co-located tests and stories
@@ -0,0 +1,92 @@
1
+ {/* @meta title: Introduction/Getting Started */}
2
+
3
+ # Getting Started
4
+
5
+ ## Installation
6
+
7
+ Install the package and its peer dependencies:
8
+
9
+ ```bash
10
+ npm install @arolariu/components @base-ui/react motion react react-dom
11
+ ```
12
+
13
+ ## Setup
14
+
15
+ ### 1. Import Styles
16
+
17
+ Add the required CSS import to your app entry point:
18
+
19
+ ```tsx
20
+ // app/layout.tsx or main.tsx
21
+ import "@arolariu/components/styles";
22
+ ```
23
+
24
+ ### 2. Use Components
25
+
26
+ ```tsx
27
+ import {Button, Card, CardContent, CardHeader, CardTitle} from "@arolariu/components";
28
+
29
+ export function MyCard() {
30
+ return (
31
+ <Card>
32
+ <CardHeader>
33
+ <CardTitle>Hello World</CardTitle>
34
+ </CardHeader>
35
+ <CardContent>
36
+ <p>Your first component!</p>
37
+ <Button>Click me</Button>
38
+ </CardContent>
39
+ </Card>
40
+ );
41
+ }
42
+ ```
43
+
44
+ ### 3. Dark Mode
45
+
46
+ Add `data-theme="dark"` to your root element:
47
+
48
+ ```tsx
49
+ <html data-theme="dark">
50
+ <body>{children}</body>
51
+ </html>
52
+ ```
53
+
54
+ Or toggle with JavaScript:
55
+ ```tsx
56
+ document.documentElement.setAttribute("data-theme", "dark");
57
+ ```
58
+
59
+ ### 4. Tree-Shaking
60
+
61
+ Import individual components for smaller bundles:
62
+
63
+ ```tsx
64
+ // ✅ Import from subpath (tree-shakeable)
65
+ import {Button} from "@arolariu/components/button";
66
+ import {useMediaQuery} from "@arolariu/components/useMediaQuery";
67
+ ```
68
+
69
+ ## TypeScript
70
+
71
+ All components are fully typed. Use `Readonly<Props>` for component props:
72
+
73
+ ```tsx
74
+ import type {ButtonProps} from "@arolariu/components";
75
+ ```
76
+
77
+ ## Next.js Integration
78
+
79
+ The library works with Next.js App Router. Server Components can import components — client-only ones have `"use client"` directives.
80
+
81
+ ```tsx
82
+ // app/page.tsx (Server Component)
83
+ import {Card, CardContent} from "@arolariu/components";
84
+
85
+ export default function Page() {
86
+ return (
87
+ <Card>
88
+ <CardContent>Server-rendered!</CardContent>
89
+ </Card>
90
+ );
91
+ }
92
+ ```
@@ -0,0 +1,44 @@
1
+ {/* @meta title: Introduction/Welcome */}
2
+
3
+ # 👋 Welcome to @arolariu/components
4
+
5
+ A modern, accessible React component library built on **Base UI** primitives with **CSS Modules** and **OKLCH** design tokens.
6
+
7
+ ## ✨ Highlights
8
+
9
+ - **84+ components** — From buttons to data tables, charts to animated backgrounds
10
+ - **23 hooks** — Utility hooks for state, media queries, clipboard, local storage
11
+ - **Base UI foundation** — Accessible, composable, lightweight
12
+ - **CSS Modules** — Scoped styles, zero Tailwind dependency
13
+ - **OKLCH color space** — Perceptually uniform, modern color tokens
14
+ - **95%+ test coverage** — 1300+ tests across all components
15
+ - **TypeScript strict** — Full type safety, no `any` types
16
+ - **Dark mode** — Built-in light/dark theme support via CSS variables
17
+ - **Motion system** — Animation tokens, presets, and utilities
18
+
19
+ ## 🚀 Quick Start
20
+
21
+ ```bash
22
+ npm install @arolariu/components @base-ui/react motion
23
+ ```
24
+
25
+ ```tsx
26
+ import "@arolariu/components/styles";
27
+ import {Button} from "@arolariu/components";
28
+
29
+ function App() {
30
+ return <Button variant="default">Click me</Button>;
31
+ }
32
+ ```
33
+
34
+ ## 📚 Explore
35
+
36
+ - **[Design Tokens](?path=/docs/foundations-design-tokens--docs)** — Colors, spacing, typography, radius
37
+ - **[Components](?path=/docs/components-actions-button--docs)** — Interactive UI building blocks
38
+ - **[Hooks](?path=/docs/components-actions-button--docs)** — Utility hooks for common patterns
39
+
40
+ ## 🔗 Links
41
+
42
+ - [GitHub Repository](https://github.com/arolariu/arolariu.ro)
43
+ - [npm Package](https://www.npmjs.com/package/@arolariu/components)
44
+ - [arolariu.ro](https://arolariu.ro)
@@ -1 +0,0 @@
1
- {"version":3,"file":"sonner.d.ts","sourceRoot":"","sources":["../../../src/components/ui/sonner.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"components/ui/sonner.js","sources":["../../../src/components/ui/sonner.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/**\r\n * @fileoverview Base UI-backed toast provider and imperative toast bridge.\r\n *\r\n * Replaces the previous `sonner` runtime dependency while preserving the existing public exports:\r\n * `Toaster` for container rendering and `toast` for imperative notifications used throughout the\r\n * website and component consumers.\r\n */\r\n\r\nimport {Toast} from \"@base-ui/react/toast\";\r\nimport {AlertCircle, BellRing, CheckCircle2, Info, LoaderCircle, TriangleAlert, X} from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./sonner.module.css\";\r\n\r\nconst DEFAULT_TOAST_DURATION = 5000;\r\nconst DEFAULT_TOAST_LIMIT = 3;\r\nconst DEFAULT_TOAST_CLOSE_LABEL = \"Close notification\";\r\nconst DEFAULT_VIEWPORT_ARIA_LABEL = \"Notifications\";\r\n\r\ntype ToastPosition = \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"top-center\" | \"bottom-center\";\r\ntype ToastVariant = \"default\" | \"success\" | \"error\" | \"info\" | \"warning\" | \"loading\";\r\ntype ToastIdentifier = number | string;\r\ntype ToastRenderable = React.ReactNode | (() => React.ReactNode);\r\ntype ToastPromise<Value> = Promise<Value> | (() => Promise<Value>);\r\ntype ResolvedPromiseState = ToastRenderable | ToastPromiseResolvedOptions | undefined;\r\n\r\ninterface ToastAction {\r\n label: React.ReactNode;\r\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n}\r\n\r\ntype ToastActionRenderable = React.ReactNode | ToastAction;\r\n\r\ninterface ToastOptions {\r\n id?: ToastIdentifier;\r\n description?: ToastRenderable;\r\n duration?: number;\r\n className?: string;\r\n descriptionClassName?: string;\r\n closeButton?: boolean;\r\n closeButtonAriaLabel?: string;\r\n style?: React.CSSProperties;\r\n priority?: \"high\" | \"low\";\r\n action?: ToastActionRenderable;\r\n cancel?: ToastActionRenderable;\r\n onDismiss?: (toast: ToastSnapshot) => void;\r\n onAutoClose?: (toast: ToastSnapshot) => void;\r\n}\r\n\r\ninterface ToastPromiseResolvedOptions extends ToastOptions {\r\n message: ToastRenderable;\r\n}\r\n\r\ntype ToastPromiseState<Value> =\r\n | ToastRenderable\r\n | ToastPromiseResolvedOptions\r\n | ((value: Value) => ToastRenderable | ToastPromiseResolvedOptions | Promise<ToastRenderable | ToastPromiseResolvedOptions>);\r\n\r\ninterface ToastPromiseOptions<Value> extends ToastOptions {\r\n loading?: ToastRenderable | ToastPromiseResolvedOptions;\r\n success?: ToastPromiseState<Value>;\r\n error?: ToastPromiseState<unknown>;\r\n finally?: () => void | Promise<void>;\r\n}\r\n\r\ninterface ToasterProps {\r\n /**\r\n * Screen position used for the toast viewport.\r\n * @default \"bottom-right\"\r\n */\r\n position?: ToastPosition;\r\n /**\r\n * Default auto-dismiss duration, in milliseconds, for each toast.\r\n * @default 5000\r\n */\r\n duration?: number;\r\n /**\r\n * Maximum number of simultaneously visible toasts.\r\n * @default 3\r\n */\r\n visibleToasts?: number;\r\n /**\r\n * Whether to render a close button for each toast by default.\r\n * @default true\r\n */\r\n closeButton?: boolean;\r\n /**\r\n * Accessible label announced for the toast viewport container.\r\n * @default \"Notifications\"\r\n */\r\n containerAriaLabel?: string;\r\n /**\r\n * Additional CSS classes merged with the toast viewport.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Inline styles applied to the toast viewport.\r\n * @default undefined\r\n */\r\n style?: React.CSSProperties;\r\n /**\r\n * Default options merged into each toast created while this toaster is mounted.\r\n * @default undefined\r\n */\r\n toastOptions?: ToastOptions;\r\n}\r\n\r\ninterface ToastSnapshot {\r\n id: string;\r\n variant: ToastVariant;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\ninterface ToastMetadata {\r\n variant: ToastVariant;\r\n className?: string;\r\n descriptionClassName?: string;\r\n closeButton: boolean;\r\n closeButtonAriaLabel: string;\r\n style?: React.CSSProperties;\r\n action?: ToastActionRenderable;\r\n cancel?: ToastActionRenderable;\r\n customContent?: React.ReactNode;\r\n}\r\n\r\ninterface ToastUpdateOptions extends ToastOptions {\r\n message?: ToastRenderable;\r\n variant?: ToastVariant;\r\n}\r\n\r\ninterface ToasterRegistration {\r\n closeButton: boolean;\r\n toastOptions: ToastOptions;\r\n}\r\n\r\ninterface ToastRecord {\r\n metadata: ToastMetadata;\r\n options: ToastOptions;\r\n snapshot: ToastSnapshot;\r\n}\r\n\r\ninterface ToastApi {\r\n (message: ToastRenderable, options?: ToastOptions): string;\r\n success: (message: ToastRenderable, options?: ToastOptions) => string;\r\n error: (message: ToastRenderable, options?: ToastOptions) => string;\r\n info: (message: ToastRenderable, options?: ToastOptions) => string;\r\n warning: (message: ToastRenderable, options?: ToastOptions) => string;\r\n loading: (message: ToastRenderable, options?: ToastOptions) => string;\r\n message: (message: ToastRenderable, options?: ToastOptions) => string;\r\n update: (toastId: ToastIdentifier, options: ToastUpdateOptions) => string;\r\n dismiss: (toastId?: ToastIdentifier) => string | undefined;\r\n promise: <Value>(promise: ToastPromise<Value>, options?: ToastPromiseOptions<Value>) => Promise<Value>;\r\n custom: (renderer: (toastId: string) => React.ReactElement, options?: ToastOptions) => string;\r\n getToasts: () => ReadonlyArray<ToastSnapshot>;\r\n getHistory: () => ReadonlyArray<ToastSnapshot>;\r\n}\r\n\r\nconst positionStyles: Record<ToastPosition, string> = {\r\n \"bottom-center\": styles.viewportBottomCenter,\r\n \"bottom-left\": styles.viewportBottomLeft,\r\n \"bottom-right\": styles.viewportBottomRight,\r\n \"top-center\": styles.viewportTopCenter,\r\n \"top-left\": styles.viewportTopLeft,\r\n \"top-right\": styles.viewportTopRight,\r\n};\r\n\r\nconst variantStyles: Record<ToastVariant, string> = {\r\n default: styles.default,\r\n error: styles.error,\r\n info: styles.info,\r\n loading: styles.loading,\r\n success: styles.success,\r\n warning: styles.warning,\r\n};\r\n\r\nconst toastManager = Toast.createToastManager<ToastMetadata>();\r\ntype ToastAddOptions = Parameters<typeof toastManager.add>[0];\r\ntype ToastUpdatePayload = Parameters<typeof toastManager.update>[1];\r\nconst toastHistory: ToastSnapshot[] = [];\r\nconst activeToasts = new Map<string, ToastSnapshot>();\r\nconst toastRecords = new Map<string, ToastRecord>();\r\nconst toasterRegistrations = new Map<string, ToasterRegistration>();\r\n\r\nlet toastSequence = 0;\r\n\r\nfunction createToastIdentifier(identifier?: ToastIdentifier): string {\r\n if (identifier !== undefined) {\r\n return String(identifier);\r\n }\r\n\r\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\r\n return globalThis.crypto.randomUUID();\r\n }\r\n\r\n toastSequence += 1;\r\n return `toast-${String(toastSequence)}`;\r\n}\r\n\r\nfunction isRenderableFactory(value: ToastRenderable | undefined): value is () => React.ReactNode {\r\n return typeof value === \"function\";\r\n}\r\n\r\n// eslint-disable-next-line sonarjs/function-return-type -- React renderables intentionally normalize to one public node type.\r\nfunction resolveRenderable(value?: ToastRenderable): React.ReactNode | undefined {\r\n const resolvedValue = isRenderableFactory(value) ? value() : value;\r\n return resolvedValue;\r\n}\r\n\r\nfunction getSnapshot(id: string, variant: ToastVariant, title?: React.ReactNode, description?: React.ReactNode): ToastSnapshot {\r\n return {\r\n description,\r\n id,\r\n title,\r\n variant,\r\n };\r\n}\r\n\r\nfunction registerToast(snapshot: ToastSnapshot): void {\r\n activeToasts.set(snapshot.id, snapshot);\r\n toastHistory.push(snapshot);\r\n}\r\n\r\nfunction registerToastRecord(record: ToastRecord): void {\r\n toastRecords.set(record.snapshot.id, record);\r\n registerToast(record.snapshot);\r\n}\r\n\r\nfunction replaceToastHistorySnapshot(snapshot: ToastSnapshot): void {\r\n for (let index = toastHistory.length - 1; index >= 0; index -= 1) {\r\n if (toastHistory[index]?.id === snapshot.id) {\r\n toastHistory[index] = snapshot;\r\n return;\r\n }\r\n }\r\n\r\n toastHistory.push(snapshot);\r\n}\r\n\r\nfunction replaceToastRecord(record: ToastRecord): void {\r\n toastRecords.set(record.snapshot.id, record);\r\n activeToasts.set(record.snapshot.id, record.snapshot);\r\n replaceToastHistorySnapshot(record.snapshot);\r\n}\r\n\r\nfunction unregisterToast(toastId?: string): void {\r\n if (!toastId) {\r\n activeToasts.clear();\r\n toastRecords.clear();\r\n return;\r\n }\r\n\r\n activeToasts.delete(toastId);\r\n toastRecords.delete(toastId);\r\n}\r\n\r\nfunction getActiveToasterRegistration(): ToasterRegistration {\r\n const registrations = [...toasterRegistrations.values()];\r\n return registrations.at(-1) ?? {closeButton: true, toastOptions: {}};\r\n}\r\n\r\nfunction mergeToastOptions(options?: ToastOptions): ToastOptions {\r\n return {\r\n ...getActiveToasterRegistration().toastOptions,\r\n ...options,\r\n };\r\n}\r\n\r\nfunction isToastVariant(value: string | undefined): value is ToastVariant {\r\n return value === \"default\" || value === \"error\" || value === \"info\" || value === \"loading\" || value === \"success\" || value === \"warning\";\r\n}\r\n\r\nfunction createToastMetadata(\r\n variant: ToastVariant,\r\n options: ToastOptions,\r\n closeButton: boolean,\r\n customContent?: React.ReactNode,\r\n): ToastMetadata {\r\n return {\r\n action: options.action,\r\n cancel: options.cancel,\r\n className: options.className,\r\n closeButton,\r\n closeButtonAriaLabel: options.closeButtonAriaLabel ?? DEFAULT_TOAST_CLOSE_LABEL,\r\n customContent,\r\n descriptionClassName: options.descriptionClassName,\r\n style: options.style,\r\n variant,\r\n };\r\n}\r\n\r\nfunction createToastRecord({\r\n id,\r\n message,\r\n options,\r\n variant,\r\n customContent,\r\n}: Readonly<{\r\n customContent?: React.ReactNode;\r\n id: string;\r\n message?: ToastRenderable;\r\n options: ToastOptions;\r\n variant: ToastVariant;\r\n}>): ToastRecord {\r\n const activeRegistration = getActiveToasterRegistration();\r\n const closeButton = options.closeButton ?? activeRegistration.closeButton;\r\n const title = message === undefined ? undefined : resolveRenderable(message);\r\n const description = resolveRenderable(options.description);\r\n const snapshot = getSnapshot(id, variant, title, description);\r\n\r\n return {\r\n metadata: createToastMetadata(variant, options, closeButton, customContent),\r\n options,\r\n snapshot,\r\n };\r\n}\r\n\r\nfunction createToastLifecycleHandlers(toastId: string, record: ToastRecord): Pick<ToastAddOptions, \"onClose\" | \"onRemove\"> {\r\n return {\r\n onClose: () => {\r\n record.options.onDismiss?.(activeToasts.get(toastId) ?? record.snapshot);\r\n },\r\n onRemove: () => {\r\n const snapshot = activeToasts.get(toastId) ?? record.snapshot;\r\n unregisterToast(toastId);\r\n record.options.onAutoClose?.(snapshot);\r\n },\r\n };\r\n}\r\n\r\nfunction createToastAddPayload(record: ToastRecord): ToastAddOptions {\r\n const lifecycleHandlers = createToastLifecycleHandlers(record.snapshot.id, record);\r\n\r\n return {\r\n description: record.snapshot.description,\r\n id: record.snapshot.id,\r\n priority: record.options.priority,\r\n timeout: record.options.duration,\r\n title: record.snapshot.title,\r\n type: record.snapshot.variant,\r\n data: record.metadata,\r\n ...lifecycleHandlers,\r\n };\r\n}\r\n\r\nfunction buildToastOptions(message: ToastRenderable, variant: ToastVariant, options?: ToastOptions): ToastAddOptions {\r\n const mergedOptions = mergeToastOptions(options);\r\n const toastId = createToastIdentifier(mergedOptions.id);\r\n const record = createToastRecord({\r\n id: toastId,\r\n message,\r\n options: mergedOptions,\r\n variant,\r\n });\r\n\r\n registerToastRecord(record);\r\n\r\n return createToastAddPayload(record);\r\n}\r\n\r\nfunction showToast(message: ToastRenderable, variant: ToastVariant, options?: ToastOptions): string {\r\n const payload = buildToastOptions(message, variant, options);\r\n return toastManager.add(payload);\r\n}\r\n\r\nfunction dismissToast(toastId?: ToastIdentifier): string | undefined {\r\n if (toastId === undefined) {\r\n unregisterToast();\r\n toastManager.close();\r\n return undefined;\r\n }\r\n\r\n const normalizedToastId = String(toastId);\r\n unregisterToast(normalizedToastId);\r\n toastManager.close(normalizedToastId);\r\n return normalizedToastId;\r\n}\r\n\r\nfunction updateToast(toastId: ToastIdentifier, options: ToastUpdateOptions): string {\r\n const normalizedToastId = String(toastId);\r\n const existingRecord = toastRecords.get(normalizedToastId);\r\n const mergedOptions: ToastOptions = {\r\n ...(existingRecord?.options ?? {}),\r\n ...options,\r\n };\r\n const variant = options.variant ?? existingRecord?.snapshot.variant ?? \"default\";\r\n const nextMessage = options.message === undefined ? existingRecord?.snapshot.title : resolveRenderable(options.message);\r\n const nextDescription = options.description === undefined ? existingRecord?.snapshot.description : resolveRenderable(options.description);\r\n const metadata = createToastMetadata(\r\n variant,\r\n mergedOptions,\r\n mergedOptions.closeButton ?? existingRecord?.metadata.closeButton ?? getActiveToasterRegistration().closeButton,\r\n existingRecord?.metadata.customContent,\r\n );\r\n const record: ToastRecord = {\r\n metadata,\r\n options: mergedOptions,\r\n snapshot: getSnapshot(normalizedToastId, variant, nextMessage, nextDescription),\r\n };\r\n\r\n replaceToastRecord(record);\r\n\r\n const payload: ToastUpdatePayload = {\r\n description: record.snapshot.description,\r\n priority: record.options.priority,\r\n timeout: record.options.duration,\r\n title: record.snapshot.title,\r\n type: record.snapshot.variant,\r\n data: record.metadata,\r\n ...createToastLifecycleHandlers(normalizedToastId, record),\r\n };\r\n\r\n toastManager.update(normalizedToastId, payload);\r\n\r\n return normalizedToastId;\r\n}\r\n\r\nfunction resolvePromiseState<Value>(state: ToastPromiseState<Value> | ResolvedPromiseState, value: Value): Promise<ResolvedPromiseState> {\r\n if (typeof state === \"function\") {\r\n return Promise.resolve(state(value));\r\n }\r\n\r\n return Promise.resolve(state);\r\n}\r\n\r\nfunction isPromiseResolvedOptions(value: ToastRenderable | ToastPromiseResolvedOptions | undefined): value is ToastPromiseResolvedOptions {\r\n return typeof value === \"object\" && value !== null && \"message\" in value;\r\n}\r\n\r\nfunction isToastAction(value: ToastActionRenderable | undefined): value is ToastAction {\r\n if (React.isValidElement(value)) {\r\n return false;\r\n }\r\n\r\n return typeof value === \"object\" && value !== null && \"label\" in value && \"onClick\" in value;\r\n}\r\n\r\n// eslint-disable-next-line sonarjs/function-return-type -- Variant selection intentionally maps to React nodes for a single icon slot.\r\nfunction getVariantIcon(variant: ToastVariant): React.ReactNode {\r\n const icons: Record<ToastVariant, React.ReactNode> = {\r\n default: (\r\n <BellRing\r\n aria-hidden='true'\r\n className={styles.icon}\r\n />\r\n ),\r\n error: (\r\n <AlertCircle\r\n aria-hidden='true'\r\n className={styles.icon}\r\n />\r\n ),\r\n info: (\r\n <Info\r\n aria-hidden='true'\r\n className={styles.icon}\r\n />\r\n ),\r\n loading: (\r\n <LoaderCircle\r\n aria-hidden='true'\r\n className={cn(styles.icon, styles.iconSpin)}\r\n />\r\n ),\r\n success: (\r\n <CheckCircle2\r\n aria-hidden='true'\r\n className={styles.icon}\r\n />\r\n ),\r\n warning: (\r\n <TriangleAlert\r\n aria-hidden='true'\r\n className={styles.icon}\r\n />\r\n ),\r\n };\r\n\r\n return icons[variant];\r\n}\r\n\r\nfunction ToastActions({\r\n toastId,\r\n action,\r\n cancel,\r\n}: Readonly<{toastId: string; action?: ToastActionRenderable; cancel?: ToastActionRenderable}>): React.JSX.Element | null {\r\n if (!action && !cancel) {\r\n return null;\r\n }\r\n\r\n const renderAction = (value: ToastActionRenderable | undefined, className: string): React.ReactElement | null => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n if (React.isValidElement(value)) {\r\n return value;\r\n }\r\n\r\n if (isToastAction(value)) {\r\n return (\r\n <button\r\n className={className}\r\n type='button'\r\n onClick={(event) => {\r\n value.onClick(event);\r\n dismissToast(toastId);\r\n }}>\r\n {value.label}\r\n </button>\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return (\r\n <div className={styles.actions}>\r\n {renderAction(cancel, styles.secondaryAction)}\r\n {renderAction(action, styles.primaryAction)}\r\n </div>\r\n );\r\n}\r\n\r\nfunction ToastViewportContent(): React.JSX.Element {\r\n const {toasts} = Toast.useToastManager<ToastMetadata>();\r\n\r\n return (\r\n <>\r\n {toasts.map((toastItem) => {\r\n const variant = isToastVariant(toastItem.type) ? toastItem.type : \"default\";\r\n const action = toastItem.data?.action;\r\n const cancel = toastItem.data?.cancel;\r\n\r\n return (\r\n <Toast.Root\r\n key={toastItem.id}\r\n toast={toastItem}\r\n className={cn(styles.root, variantStyles[variant], toastItem.data?.className)}\r\n data-variant={variant}\r\n style={toastItem.data?.style}>\r\n <Toast.Content className={styles.content}>\r\n {toastItem.data?.customContent ?? (\r\n <>\r\n <div className={styles.leading}>{getVariantIcon(variant)}</div>\r\n <div className={styles.body}>\r\n {toastItem.title ? <Toast.Title className={styles.title}>{toastItem.title}</Toast.Title> : null}\r\n {toastItem.description ? (\r\n <Toast.Description className={cn(styles.description, toastItem.data?.descriptionClassName)}>\r\n {toastItem.description}\r\n </Toast.Description>\r\n ) : null}\r\n <ToastActions\r\n action={action}\r\n cancel={cancel}\r\n toastId={toastItem.id}\r\n />\r\n </div>\r\n {toastItem.data?.closeButton ? (\r\n <Toast.Close\r\n aria-label={toastItem.data.closeButtonAriaLabel}\r\n className={styles.close}>\r\n <X\r\n aria-hidden='true'\r\n className={styles.closeIcon}\r\n />\r\n </Toast.Close>\r\n ) : null}\r\n </>\r\n )}\r\n </Toast.Content>\r\n </Toast.Root>\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n\r\n/**\r\n * Toast notification container.\r\n *\r\n * @remarks\r\n * Renders the Base UI provider, portal, and viewport with defaults that preserve the previous\r\n * shared `Toaster` export behavior used by the website.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Toaster position='top-right' visibleToasts={5} />\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/toast | Base UI Toast Docs}\r\n */\r\nfunction Toaster({\r\n className,\r\n closeButton = true,\r\n containerAriaLabel = DEFAULT_VIEWPORT_ARIA_LABEL,\r\n duration = DEFAULT_TOAST_DURATION,\r\n position = \"bottom-right\",\r\n style,\r\n toastOptions,\r\n visibleToasts = DEFAULT_TOAST_LIMIT,\r\n}: Readonly<ToasterProps>): React.JSX.Element {\r\n const toasterId = React.useId();\r\n\r\n React.useEffect(() => {\r\n toasterRegistrations.set(toasterId, {\r\n closeButton,\r\n toastOptions: toastOptions ?? {},\r\n });\r\n\r\n return () => {\r\n toasterRegistrations.delete(toasterId);\r\n };\r\n }, [closeButton, toastOptions, toasterId]);\r\n\r\n return (\r\n <Toast.Provider\r\n limit={visibleToasts}\r\n timeout={duration}\r\n toastManager={toastManager}>\r\n <Toast.Portal>\r\n <Toast.Viewport\r\n aria-label={containerAriaLabel}\r\n className={cn(styles.viewport, positionStyles[position], className)}\r\n style={style}>\r\n <ToastViewportContent />\r\n </Toast.Viewport>\r\n </Toast.Portal>\r\n </Toast.Provider>\r\n );\r\n}\r\n\r\nToaster.displayName = \"Toaster\";\r\n\r\n/**\r\n * Imperative toast API for creating transient notifications outside React render flows.\r\n *\r\n * @remarks\r\n * Built on Base UI's toast manager and preserved as a drop-in replacement for the previous\r\n * `sonner` export surface.\r\n *\r\n * @example\r\n * ```tsx\r\n * toast.success(\"Profile updated\");\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/toast | Base UI Toast Docs}\r\n */\r\nconst toast = ((message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"default\", options)) as ToastApi;\r\n\r\ntoast.success = (message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"success\", options);\r\ntoast.error = (message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"error\", options);\r\ntoast.info = (message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"info\", options);\r\ntoast.warning = (message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"warning\", options);\r\ntoast.loading = (message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"loading\", options);\r\ntoast.message = (message: ToastRenderable, options?: ToastOptions): string => showToast(message, \"default\", options);\r\ntoast.update = (toastId: ToastIdentifier, options: ToastUpdateOptions): string => updateToast(toastId, options);\r\ntoast.dismiss = (toastId?: ToastIdentifier): string | undefined => dismissToast(toastId);\r\ntoast.custom = (renderer: (toastId: string) => React.ReactElement, options?: ToastOptions): string => {\r\n const mergedOptions = mergeToastOptions(options);\r\n const toastId = createToastIdentifier(mergedOptions.id);\r\n const record = createToastRecord({\r\n customContent: renderer(toastId),\r\n id: toastId,\r\n options: mergedOptions,\r\n variant: \"default\",\r\n });\r\n\r\n registerToastRecord(record);\r\n\r\n toastManager.add(createToastAddPayload(record));\r\n\r\n return toastId;\r\n};\r\nfunction mergePromiseToastOptions(baseOptions: ToastOptions, override?: ToastPromiseResolvedOptions): ToastOptions {\r\n if (!override) {\r\n return baseOptions;\r\n }\r\n\r\n return {\r\n action: override.action ?? baseOptions.action,\r\n cancel: override.cancel ?? baseOptions.cancel,\r\n className: override.className ?? baseOptions.className,\r\n closeButton: override.closeButton ?? baseOptions.closeButton,\r\n closeButtonAriaLabel: override.closeButtonAriaLabel ?? baseOptions.closeButtonAriaLabel,\r\n description: override.description ?? baseOptions.description,\r\n descriptionClassName: override.descriptionClassName ?? baseOptions.descriptionClassName,\r\n duration: override.duration ?? baseOptions.duration,\r\n id: override.id ?? baseOptions.id,\r\n onAutoClose: override.onAutoClose ?? baseOptions.onAutoClose,\r\n onDismiss: override.onDismiss ?? baseOptions.onDismiss,\r\n priority: override.priority ?? baseOptions.priority,\r\n style: override.style ?? baseOptions.style,\r\n };\r\n}\r\n\r\nfunction getPromiseBaseOptions<Value>(options?: ToastPromiseOptions<Value>): ToastOptions {\r\n return {\r\n action: options?.action,\r\n cancel: options?.cancel,\r\n className: options?.className,\r\n closeButton: options?.closeButton,\r\n closeButtonAriaLabel: options?.closeButtonAriaLabel,\r\n description: options?.description,\r\n descriptionClassName: options?.descriptionClassName,\r\n duration: options?.duration,\r\n id: options?.id,\r\n onAutoClose: options?.onAutoClose,\r\n onDismiss: options?.onDismiss,\r\n priority: options?.priority,\r\n style: options?.style,\r\n };\r\n}\r\n\r\nfunction showResolvedPromiseToast(\r\n loadingToastId: string | undefined,\r\n variant: Exclude<ToastVariant, \"default\">,\r\n resolvedState: ToastRenderable | ToastPromiseResolvedOptions | undefined,\r\n baseOptions: ToastOptions,\r\n): void {\r\n if (!resolvedState) {\r\n if (loadingToastId) {\r\n dismissToast(loadingToastId);\r\n }\r\n\r\n return;\r\n }\r\n\r\n const overrideOptions = isPromiseResolvedOptions(resolvedState) ? resolvedState : undefined;\r\n const message = isPromiseResolvedOptions(resolvedState) ? resolvedState.message : resolvedState;\r\n const mergedOptions = mergePromiseToastOptions(baseOptions, overrideOptions);\r\n\r\n if (loadingToastId) {\r\n toast.update(loadingToastId, {\r\n ...mergedOptions,\r\n message,\r\n variant,\r\n });\r\n\r\n return;\r\n }\r\n\r\n showToast(message, variant, mergedOptions);\r\n}\r\n\r\ntoast.promise = async function promise<Value>(promiseValue: ToastPromise<Value>, options?: ToastPromiseOptions<Value>): Promise<Value> {\r\n const pendingPromise = typeof promiseValue === \"function\" ? promiseValue() : promiseValue;\r\n const baseOptions = getPromiseBaseOptions(options);\r\n const loadingState = options?.loading;\r\n const loadingOptions = isPromiseResolvedOptions(loadingState) ? loadingState : undefined;\r\n const loadingMessage = isPromiseResolvedOptions(loadingState) ? loadingState.message : loadingState;\r\n const loadingToastId = loadingMessage ? toast.loading(loadingMessage, mergePromiseToastOptions(baseOptions, loadingOptions)) : undefined;\r\n\r\n try {\r\n const result = await pendingPromise;\r\n const successState = await resolvePromiseState(options?.success, result);\r\n showResolvedPromiseToast(loadingToastId, \"success\", successState, baseOptions);\r\n\r\n return result;\r\n } catch (error: unknown) {\r\n const errorState = await resolvePromiseState(options?.error, error);\r\n showResolvedPromiseToast(loadingToastId, \"error\", errorState, baseOptions);\r\n\r\n throw error;\r\n } finally {\r\n const handleFinally = options?.finally;\r\n if (handleFinally) {\r\n await handleFinally();\r\n }\r\n }\r\n};\r\ntoast.getToasts = (): ReadonlyArray<ToastSnapshot> => [...activeToasts.values()];\r\ntoast.getHistory = (): ReadonlyArray<ToastSnapshot> => [...toastHistory];\r\n\r\nexport type {Toast} from \"@base-ui/react/toast\";\r\nexport {toast, Toaster};\r\n"],"names":["DEFAULT_TOAST_DURATION","DEFAULT_TOAST_LIMIT","DEFAULT_TOAST_CLOSE_LABEL","DEFAULT_VIEWPORT_ARIA_LABEL","positionStyles","styles","variantStyles","toastManager","Toast","toastHistory","activeToasts","Map","toastRecords","toasterRegistrations","toastSequence","createToastIdentifier","identifier","undefined","String","globalThis","isRenderableFactory","value","resolveRenderable","resolvedValue","getSnapshot","id","variant","title","description","registerToast","snapshot","registerToastRecord","record","replaceToastHistorySnapshot","index","replaceToastRecord","unregisterToast","toastId","getActiveToasterRegistration","registrations","mergeToastOptions","options","isToastVariant","createToastMetadata","closeButton","customContent","createToastRecord","message","activeRegistration","createToastLifecycleHandlers","createToastAddPayload","lifecycleHandlers","buildToastOptions","mergedOptions","showToast","payload","dismissToast","normalizedToastId","updateToast","existingRecord","nextMessage","nextDescription","metadata","resolvePromiseState","state","Promise","isPromiseResolvedOptions","isToastAction","React","getVariantIcon","icons","BellRing","AlertCircle","Info","LoaderCircle","cn","CheckCircle2","TriangleAlert","ToastActions","action","cancel","renderAction","className","event","ToastViewportContent","toasts","toastItem","X","Toaster","containerAriaLabel","duration","position","style","toastOptions","visibleToasts","toasterId","toast","renderer","mergePromiseToastOptions","baseOptions","override","getPromiseBaseOptions","showResolvedPromiseToast","loadingToastId","resolvedState","overrideOptions","promiseValue","pendingPromise","loadingState","loadingOptions","loadingMessage","result","successState","error","errorState","handleFinally"],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import "./sonner_module.css";
2
- const sonner_module = {
3
- viewport: "viewport-H8aveR",
4
- viewportTopLeft: "viewportTopLeft-xM6PF1",
5
- viewportTopRight: "viewportTopRight-J7LgEN",
6
- viewportBottomLeft: "viewportBottomLeft-gduLsn",
7
- viewportBottomRight: "viewportBottomRight-cgRbCY",
8
- viewportTopCenter: "viewportTopCenter-GmipAX",
9
- viewportBottomCenter: "viewportBottomCenter-iNRY6t",
10
- root: "root-Rvm8fE",
11
- content: "content-y92flZ",
12
- leading: "leading-GRRnqU",
13
- body: "body-Lw99EO",
14
- title: "title-ymKu15",
15
- description: "description-ZtIAQh",
16
- close: "close-n3q99W",
17
- closeIcon: "closeIcon-gqyKiy",
18
- icon: "icon-vXiuPh",
19
- iconSpin: "iconSpin-ly7P4C",
20
- "toast-spin": "toast-spin-u5gKWc",
21
- toastSpin: "toast-spin-u5gKWc",
22
- actions: "actions-wq9nP1",
23
- primaryAction: "primaryAction-IbtEiI",
24
- secondaryAction: "secondaryAction-DWySkL",
25
- default: "default-ecwLjq",
26
- success: "success-pLAR9p",
27
- error: "error-pOqy4L",
28
- info: "info-t5y2YI",
29
- warning: "warning-M6kW38",
30
- loading: "loading-pRuJz9"
31
- };
32
- export default sonner_module;
33
-
34
- //# sourceMappingURL=sonner.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"components/ui/sonner.module.js","sources":["../../../src/components/ui/sonner.module.css"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./sonner_module.css\"\nexport default {\"viewport\":\"viewport-H8aveR\",\"viewportTopLeft\":\"viewportTopLeft-xM6PF1\",\"viewportTopRight\":\"viewportTopRight-J7LgEN\",\"viewportBottomLeft\":\"viewportBottomLeft-gduLsn\",\"viewportBottomRight\":\"viewportBottomRight-cgRbCY\",\"viewportTopCenter\":\"viewportTopCenter-GmipAX\",\"viewportBottomCenter\":\"viewportBottomCenter-iNRY6t\",\"root\":\"root-Rvm8fE\",\"content\":\"content-y92flZ\",\"leading\":\"leading-GRRnqU\",\"body\":\"body-Lw99EO\",\"title\":\"title-ymKu15\",\"description\":\"description-ZtIAQh\",\"close\":\"close-n3q99W\",\"closeIcon\":\"closeIcon-gqyKiy\",\"icon\":\"icon-vXiuPh\",\"iconSpin\":\"iconSpin-ly7P4C\",\"toast-spin\":\"toast-spin-u5gKWc\",\"toastSpin\":\"toast-spin-u5gKWc\",\"actions\":\"actions-wq9nP1\",\"primaryAction\":\"primaryAction-IbtEiI\",\"secondaryAction\":\"secondaryAction-DWySkL\",\"default\":\"default-ecwLjq\",\"success\":\"success-pLAR9p\",\"error\":\"error-pOqy4L\",\"info\":\"info-t5y2YI\",\"warning\":\"warning-M6kW38\",\"loading\":\"loading-pRuJz9\"};"],"names":[],"mappings":";AAEA,sBAAe;IAAC,UAAW;IAAkB,iBAAkB;IAAyB,kBAAmB;IAA0B,oBAAqB;IAA4B,qBAAsB;IAA6B,mBAAoB;IAA2B,sBAAuB;IAA8B,MAAO;IAAc,SAAU;IAAiB,SAAU;IAAiB,MAAO;IAAc,OAAQ;IAAe,aAAc;IAAqB,OAAQ;IAAe,WAAY;IAAmB,MAAO;IAAc,UAAW;IAAkB,cAAa;IAAoB,WAAY;IAAoB,SAAU;IAAiB,eAAgB;IAAuB,iBAAkB;IAAyB,SAAU;IAAiB,SAAU;IAAiB,OAAQ;IAAe,MAAO;IAAc,SAAU;IAAiB,SAAU;AAAgB"}