@dowel-ui/react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/LICENSE +21 -0
  2. package/dist/blocks/admin-users/meta.js +27 -0
  3. package/dist/blocks/admin-users/meta.js.map +1 -0
  4. package/dist/blocks/ai-chat/meta.js +30 -0
  5. package/dist/blocks/ai-chat/meta.js.map +1 -0
  6. package/dist/blocks/dashboard/meta.js +23 -0
  7. package/dist/blocks/dashboard/meta.js.map +1 -0
  8. package/dist/blocks/forgot-password/meta.js +24 -0
  9. package/dist/blocks/forgot-password/meta.js.map +1 -0
  10. package/dist/blocks/login/meta.js +26 -0
  11. package/dist/blocks/login/meta.js.map +1 -0
  12. package/dist/blocks/pricing/meta.js +24 -0
  13. package/dist/blocks/pricing/meta.js.map +1 -0
  14. package/dist/blocks/settings/meta.js +29 -0
  15. package/dist/blocks/settings/meta.js.map +1 -0
  16. package/dist/blocks/signup/meta.js +25 -0
  17. package/dist/blocks/signup/meta.js.map +1 -0
  18. package/dist/components/accordion/accordion.d.ts +19 -0
  19. package/dist/components/accordion/accordion.d.ts.map +1 -0
  20. package/dist/components/accordion/accordion.js +58 -0
  21. package/dist/components/accordion/accordion.js.map +1 -0
  22. package/dist/components/accordion/index.d.ts +2 -0
  23. package/dist/components/accordion/index.js +2 -0
  24. package/dist/components/accordion/meta.js +17 -0
  25. package/dist/components/accordion/meta.js.map +1 -0
  26. package/dist/components/activity-feed/activity-feed.d.ts +39 -0
  27. package/dist/components/activity-feed/activity-feed.d.ts.map +1 -0
  28. package/dist/components/activity-feed/activity-feed.js +77 -0
  29. package/dist/components/activity-feed/activity-feed.js.map +1 -0
  30. package/dist/components/activity-feed/index.d.ts +2 -0
  31. package/dist/components/activity-feed/index.js +2 -0
  32. package/dist/components/activity-feed/meta.js +17 -0
  33. package/dist/components/activity-feed/meta.js.map +1 -0
  34. package/dist/components/ai-agent-status/ai-agent-status.d.ts +30 -0
  35. package/dist/components/ai-agent-status/ai-agent-status.d.ts.map +1 -0
  36. package/dist/components/ai-agent-status/ai-agent-status.js +43 -0
  37. package/dist/components/ai-agent-status/ai-agent-status.js.map +1 -0
  38. package/dist/components/ai-agent-status/index.d.ts +2 -0
  39. package/dist/components/ai-agent-status/index.js +2 -0
  40. package/dist/components/ai-agent-status/meta.js +17 -0
  41. package/dist/components/ai-agent-status/meta.js.map +1 -0
  42. package/dist/components/ai-conversation/ai-conversation.d.ts +45 -0
  43. package/dist/components/ai-conversation/ai-conversation.d.ts.map +1 -0
  44. package/dist/components/ai-conversation/ai-conversation.js +138 -0
  45. package/dist/components/ai-conversation/ai-conversation.js.map +1 -0
  46. package/dist/components/ai-conversation/index.d.ts +2 -0
  47. package/dist/components/ai-conversation/index.js +2 -0
  48. package/dist/components/ai-conversation/meta.js +17 -0
  49. package/dist/components/ai-conversation/meta.js.map +1 -0
  50. package/dist/components/ai-message/ai-message.d.ts +56 -0
  51. package/dist/components/ai-message/ai-message.d.ts.map +1 -0
  52. package/dist/components/ai-message/ai-message.js +90 -0
  53. package/dist/components/ai-message/ai-message.js.map +1 -0
  54. package/dist/components/ai-message/index.d.ts +2 -0
  55. package/dist/components/ai-message/index.js +2 -0
  56. package/dist/components/ai-message/meta.js +17 -0
  57. package/dist/components/ai-message/meta.js.map +1 -0
  58. package/dist/components/ai-model-selector/ai-model-selector.d.ts +42 -0
  59. package/dist/components/ai-model-selector/ai-model-selector.d.ts.map +1 -0
  60. package/dist/components/ai-model-selector/ai-model-selector.js +48 -0
  61. package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -0
  62. package/dist/components/ai-model-selector/index.d.ts +2 -0
  63. package/dist/components/ai-model-selector/index.js +2 -0
  64. package/dist/components/ai-model-selector/meta.js +17 -0
  65. package/dist/components/ai-model-selector/meta.js.map +1 -0
  66. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts +61 -0
  67. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -0
  68. package/dist/components/ai-prompt-input/ai-prompt-input.js +170 -0
  69. package/dist/components/ai-prompt-input/ai-prompt-input.js.map +1 -0
  70. package/dist/components/ai-prompt-input/index.d.ts +2 -0
  71. package/dist/components/ai-prompt-input/index.js +2 -0
  72. package/dist/components/ai-prompt-input/meta.js +17 -0
  73. package/dist/components/ai-prompt-input/meta.js.map +1 -0
  74. package/dist/components/ai-reasoning/ai-reasoning.d.ts +24 -0
  75. package/dist/components/ai-reasoning/ai-reasoning.d.ts.map +1 -0
  76. package/dist/components/ai-reasoning/ai-reasoning.js +64 -0
  77. package/dist/components/ai-reasoning/ai-reasoning.js.map +1 -0
  78. package/dist/components/ai-reasoning/index.d.ts +2 -0
  79. package/dist/components/ai-reasoning/index.js +2 -0
  80. package/dist/components/ai-reasoning/meta.js +17 -0
  81. package/dist/components/ai-reasoning/meta.js.map +1 -0
  82. package/dist/components/ai-response/ai-response.d.ts +36 -0
  83. package/dist/components/ai-response/ai-response.d.ts.map +1 -0
  84. package/dist/components/ai-response/ai-response.js +46 -0
  85. package/dist/components/ai-response/ai-response.js.map +1 -0
  86. package/dist/components/ai-response/index.d.ts +2 -0
  87. package/dist/components/ai-response/index.js +2 -0
  88. package/dist/components/ai-response/meta.js +17 -0
  89. package/dist/components/ai-response/meta.js.map +1 -0
  90. package/dist/components/ai-sources/ai-sources.d.ts +44 -0
  91. package/dist/components/ai-sources/ai-sources.d.ts.map +1 -0
  92. package/dist/components/ai-sources/ai-sources.js +112 -0
  93. package/dist/components/ai-sources/ai-sources.js.map +1 -0
  94. package/dist/components/ai-sources/index.d.ts +2 -0
  95. package/dist/components/ai-sources/index.js +2 -0
  96. package/dist/components/ai-sources/meta.js +17 -0
  97. package/dist/components/ai-sources/meta.js.map +1 -0
  98. package/dist/components/ai-token-usage/ai-token-usage.d.ts +34 -0
  99. package/dist/components/ai-token-usage/ai-token-usage.d.ts.map +1 -0
  100. package/dist/components/ai-token-usage/ai-token-usage.js +58 -0
  101. package/dist/components/ai-token-usage/ai-token-usage.js.map +1 -0
  102. package/dist/components/ai-token-usage/index.d.ts +2 -0
  103. package/dist/components/ai-token-usage/index.js +2 -0
  104. package/dist/components/ai-token-usage/meta.js +17 -0
  105. package/dist/components/ai-token-usage/meta.js.map +1 -0
  106. package/dist/components/ai-tool/ai-tool.d.ts +50 -0
  107. package/dist/components/ai-tool/ai-tool.d.ts.map +1 -0
  108. package/dist/components/ai-tool/ai-tool.js +129 -0
  109. package/dist/components/ai-tool/ai-tool.js.map +1 -0
  110. package/dist/components/ai-tool/index.d.ts +2 -0
  111. package/dist/components/ai-tool/index.js +2 -0
  112. package/dist/components/ai-tool/meta.js +17 -0
  113. package/dist/components/ai-tool/meta.js.map +1 -0
  114. package/dist/components/alert/alert.d.ts +32 -0
  115. package/dist/components/alert/alert.d.ts.map +1 -0
  116. package/dist/components/alert/alert.js +49 -0
  117. package/dist/components/alert/alert.js.map +1 -0
  118. package/dist/components/alert/index.d.ts +2 -0
  119. package/dist/components/alert/index.js +2 -0
  120. package/dist/components/alert/meta.js +17 -0
  121. package/dist/components/alert/meta.js.map +1 -0
  122. package/dist/components/avatar/avatar.d.ts +23 -0
  123. package/dist/components/avatar/avatar.d.ts.map +1 -0
  124. package/dist/components/avatar/avatar.js +44 -0
  125. package/dist/components/avatar/avatar.js.map +1 -0
  126. package/dist/components/avatar/index.d.ts +2 -0
  127. package/dist/components/avatar/index.js +2 -0
  128. package/dist/components/avatar/meta.js +17 -0
  129. package/dist/components/avatar/meta.js.map +1 -0
  130. package/dist/components/badge/badge.d.ts +20 -0
  131. package/dist/components/badge/badge.d.ts.map +1 -0
  132. package/dist/components/badge/badge.js +47 -0
  133. package/dist/components/badge/badge.js.map +1 -0
  134. package/dist/components/badge/index.d.ts +2 -0
  135. package/dist/components/badge/index.js +2 -0
  136. package/dist/components/badge/meta.js +17 -0
  137. package/dist/components/badge/meta.js.map +1 -0
  138. package/dist/components/button/button.d.ts +28 -0
  139. package/dist/components/button/button.d.ts.map +1 -0
  140. package/dist/components/button/button.js +77 -0
  141. package/dist/components/button/button.js.map +1 -0
  142. package/dist/components/button/index.d.ts +2 -0
  143. package/dist/components/button/index.js +2 -0
  144. package/dist/components/button/meta.js +17 -0
  145. package/dist/components/button/meta.js.map +1 -0
  146. package/dist/components/calendar/calendar.d.ts +16 -0
  147. package/dist/components/calendar/calendar.d.ts.map +1 -0
  148. package/dist/components/calendar/calendar.js +70 -0
  149. package/dist/components/calendar/calendar.js.map +1 -0
  150. package/dist/components/calendar/index.d.ts +2 -0
  151. package/dist/components/calendar/index.js +2 -0
  152. package/dist/components/calendar/meta.js +17 -0
  153. package/dist/components/calendar/meta.js.map +1 -0
  154. package/dist/components/card/card.d.ts +23 -0
  155. package/dist/components/card/card.d.ts.map +1 -0
  156. package/dist/components/card/card.js +53 -0
  157. package/dist/components/card/card.js.map +1 -0
  158. package/dist/components/card/index.d.ts +2 -0
  159. package/dist/components/card/index.js +2 -0
  160. package/dist/components/card/meta.js +17 -0
  161. package/dist/components/card/meta.js.map +1 -0
  162. package/dist/components/checkbox/checkbox.d.ts +15 -0
  163. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  164. package/dist/components/checkbox/checkbox.js +45 -0
  165. package/dist/components/checkbox/checkbox.js.map +1 -0
  166. package/dist/components/checkbox/index.d.ts +2 -0
  167. package/dist/components/checkbox/index.js +2 -0
  168. package/dist/components/checkbox/meta.js +17 -0
  169. package/dist/components/checkbox/meta.js.map +1 -0
  170. package/dist/components/code-block/code-block.d.ts +46 -0
  171. package/dist/components/code-block/code-block.d.ts.map +1 -0
  172. package/dist/components/code-block/code-block.js +110 -0
  173. package/dist/components/code-block/code-block.js.map +1 -0
  174. package/dist/components/code-block/index.d.ts +2 -0
  175. package/dist/components/code-block/index.js +2 -0
  176. package/dist/components/code-block/meta.js +17 -0
  177. package/dist/components/code-block/meta.js.map +1 -0
  178. package/dist/components/combobox/combobox.d.ts +59 -0
  179. package/dist/components/combobox/combobox.d.ts.map +1 -0
  180. package/dist/components/combobox/combobox.js +346 -0
  181. package/dist/components/combobox/combobox.js.map +1 -0
  182. package/dist/components/combobox/index.d.ts +2 -0
  183. package/dist/components/combobox/index.js +2 -0
  184. package/dist/components/combobox/meta.js +17 -0
  185. package/dist/components/combobox/meta.js.map +1 -0
  186. package/dist/components/command/command.d.ts +65 -0
  187. package/dist/components/command/command.d.ts.map +1 -0
  188. package/dist/components/command/command.js +330 -0
  189. package/dist/components/command/command.js.map +1 -0
  190. package/dist/components/command/index.d.ts +2 -0
  191. package/dist/components/command/index.js +2 -0
  192. package/dist/components/command/meta.js +17 -0
  193. package/dist/components/command/meta.js.map +1 -0
  194. package/dist/components/data-table/data-table.d.ts +91 -0
  195. package/dist/components/data-table/data-table.d.ts.map +1 -0
  196. package/dist/components/data-table/data-table.js +263 -0
  197. package/dist/components/data-table/data-table.js.map +1 -0
  198. package/dist/components/data-table/index.d.ts +2 -0
  199. package/dist/components/data-table/index.js +2 -0
  200. package/dist/components/data-table/meta.js +22 -0
  201. package/dist/components/data-table/meta.js.map +1 -0
  202. package/dist/components/date-picker/date-picker.d.ts +31 -0
  203. package/dist/components/date-picker/date-picker.d.ts.map +1 -0
  204. package/dist/components/date-picker/date-picker.js +123 -0
  205. package/dist/components/date-picker/date-picker.js.map +1 -0
  206. package/dist/components/date-picker/index.d.ts +2 -0
  207. package/dist/components/date-picker/index.js +2 -0
  208. package/dist/components/date-picker/meta.js +21 -0
  209. package/dist/components/date-picker/meta.js.map +1 -0
  210. package/dist/components/dialog/dialog.d.ts +30 -0
  211. package/dist/components/dialog/dialog.d.ts.map +1 -0
  212. package/dist/components/dialog/dialog.js +79 -0
  213. package/dist/components/dialog/dialog.js.map +1 -0
  214. package/dist/components/dialog/index.d.ts +2 -0
  215. package/dist/components/dialog/index.js +2 -0
  216. package/dist/components/dialog/meta.js +17 -0
  217. package/dist/components/dialog/meta.js.map +1 -0
  218. package/dist/components/drawer/drawer.d.ts +32 -0
  219. package/dist/components/drawer/drawer.d.ts.map +1 -0
  220. package/dist/components/drawer/drawer.js +153 -0
  221. package/dist/components/drawer/drawer.js.map +1 -0
  222. package/dist/components/drawer/index.d.ts +2 -0
  223. package/dist/components/drawer/index.js +2 -0
  224. package/dist/components/drawer/meta.js +17 -0
  225. package/dist/components/drawer/meta.js.map +1 -0
  226. package/dist/components/dropdown-menu/dropdown-menu.d.ts +43 -0
  227. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  228. package/dist/components/dropdown-menu/dropdown-menu.js +130 -0
  229. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  230. package/dist/components/dropdown-menu/index.d.ts +2 -0
  231. package/dist/components/dropdown-menu/index.js +2 -0
  232. package/dist/components/dropdown-menu/meta.js +17 -0
  233. package/dist/components/dropdown-menu/meta.js.map +1 -0
  234. package/dist/components/empty-state/empty-state.d.ts +24 -0
  235. package/dist/components/empty-state/empty-state.d.ts.map +1 -0
  236. package/dist/components/empty-state/empty-state.js +73 -0
  237. package/dist/components/empty-state/empty-state.js.map +1 -0
  238. package/dist/components/empty-state/index.d.ts +2 -0
  239. package/dist/components/empty-state/index.js +2 -0
  240. package/dist/components/empty-state/meta.js +17 -0
  241. package/dist/components/empty-state/meta.js.map +1 -0
  242. package/dist/components/form/form.d.ts +43 -0
  243. package/dist/components/form/form.d.ts.map +1 -0
  244. package/dist/components/form/form.js +127 -0
  245. package/dist/components/form/form.js.map +1 -0
  246. package/dist/components/form/index.d.ts +2 -0
  247. package/dist/components/form/index.js +2 -0
  248. package/dist/components/form/meta.js +17 -0
  249. package/dist/components/form/meta.js.map +1 -0
  250. package/dist/components/input/index.d.ts +2 -0
  251. package/dist/components/input/index.js +2 -0
  252. package/dist/components/input/input.d.ts +21 -0
  253. package/dist/components/input/input.d.ts.map +1 -0
  254. package/dist/components/input/input.js +34 -0
  255. package/dist/components/input/input.js.map +1 -0
  256. package/dist/components/input/meta.js +17 -0
  257. package/dist/components/input/meta.js.map +1 -0
  258. package/dist/components/label/index.d.ts +2 -0
  259. package/dist/components/label/index.js +2 -0
  260. package/dist/components/label/label.d.ts +14 -0
  261. package/dist/components/label/label.d.ts.map +1 -0
  262. package/dist/components/label/label.js +20 -0
  263. package/dist/components/label/label.js.map +1 -0
  264. package/dist/components/label/meta.js +17 -0
  265. package/dist/components/label/meta.js.map +1 -0
  266. package/dist/components/pagination/index.d.ts +2 -0
  267. package/dist/components/pagination/index.js +2 -0
  268. package/dist/components/pagination/meta.js +17 -0
  269. package/dist/components/pagination/meta.js.map +1 -0
  270. package/dist/components/pagination/pagination.d.ts +33 -0
  271. package/dist/components/pagination/pagination.d.ts.map +1 -0
  272. package/dist/components/pagination/pagination.js +143 -0
  273. package/dist/components/pagination/pagination.js.map +1 -0
  274. package/dist/components/popover/index.d.ts +2 -0
  275. package/dist/components/popover/index.js +2 -0
  276. package/dist/components/popover/meta.js +17 -0
  277. package/dist/components/popover/meta.js.map +1 -0
  278. package/dist/components/popover/popover.d.ts +24 -0
  279. package/dist/components/popover/popover.d.ts.map +1 -0
  280. package/dist/components/popover/popover.js +60 -0
  281. package/dist/components/popover/popover.js.map +1 -0
  282. package/dist/components/progress/index.d.ts +2 -0
  283. package/dist/components/progress/index.js +2 -0
  284. package/dist/components/progress/meta.js +17 -0
  285. package/dist/components/progress/meta.js.map +1 -0
  286. package/dist/components/progress/progress.d.ts +21 -0
  287. package/dist/components/progress/progress.d.ts.map +1 -0
  288. package/dist/components/progress/progress.js +55 -0
  289. package/dist/components/progress/progress.js.map +1 -0
  290. package/dist/components/radio-group/index.d.ts +2 -0
  291. package/dist/components/radio-group/index.js +2 -0
  292. package/dist/components/radio-group/meta.js +17 -0
  293. package/dist/components/radio-group/meta.js.map +1 -0
  294. package/dist/components/radio-group/radio-group.d.ts +17 -0
  295. package/dist/components/radio-group/radio-group.d.ts.map +1 -0
  296. package/dist/components/radio-group/radio-group.js +29 -0
  297. package/dist/components/radio-group/radio-group.js.map +1 -0
  298. package/dist/components/select/index.d.ts +2 -0
  299. package/dist/components/select/index.js +2 -0
  300. package/dist/components/select/meta.js +17 -0
  301. package/dist/components/select/meta.js.map +1 -0
  302. package/dist/components/select/select.d.ts +37 -0
  303. package/dist/components/select/select.d.ts.map +1 -0
  304. package/dist/components/select/select.js +128 -0
  305. package/dist/components/select/select.js.map +1 -0
  306. package/dist/components/separator/index.d.ts +2 -0
  307. package/dist/components/separator/index.js +2 -0
  308. package/dist/components/separator/meta.js +17 -0
  309. package/dist/components/separator/meta.js.map +1 -0
  310. package/dist/components/separator/separator.d.ts +15 -0
  311. package/dist/components/separator/separator.d.ts.map +1 -0
  312. package/dist/components/separator/separator.js +23 -0
  313. package/dist/components/separator/separator.js.map +1 -0
  314. package/dist/components/sheet/index.d.ts +2 -0
  315. package/dist/components/sheet/index.js +2 -0
  316. package/dist/components/sheet/meta.js +17 -0
  317. package/dist/components/sheet/meta.js.map +1 -0
  318. package/dist/components/sheet/sheet.d.ts +31 -0
  319. package/dist/components/sheet/sheet.d.ts.map +1 -0
  320. package/dist/components/sheet/sheet.js +90 -0
  321. package/dist/components/sheet/sheet.js.map +1 -0
  322. package/dist/components/skeleton/index.d.ts +2 -0
  323. package/dist/components/skeleton/index.js +2 -0
  324. package/dist/components/skeleton/meta.js +17 -0
  325. package/dist/components/skeleton/meta.js.map +1 -0
  326. package/dist/components/skeleton/skeleton.d.ts +20 -0
  327. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  328. package/dist/components/skeleton/skeleton.js +29 -0
  329. package/dist/components/skeleton/skeleton.js.map +1 -0
  330. package/dist/components/slider/index.d.ts +2 -0
  331. package/dist/components/slider/index.js +2 -0
  332. package/dist/components/slider/meta.js +17 -0
  333. package/dist/components/slider/meta.js.map +1 -0
  334. package/dist/components/slider/slider.d.ts +29 -0
  335. package/dist/components/slider/slider.d.ts.map +1 -0
  336. package/dist/components/slider/slider.js +61 -0
  337. package/dist/components/slider/slider.js.map +1 -0
  338. package/dist/components/spinner/index.d.ts +2 -0
  339. package/dist/components/spinner/index.js +2 -0
  340. package/dist/components/spinner/meta.js +17 -0
  341. package/dist/components/spinner/meta.js.map +1 -0
  342. package/dist/components/spinner/spinner.d.ts +21 -0
  343. package/dist/components/spinner/spinner.d.ts.map +1 -0
  344. package/dist/components/spinner/spinner.js +45 -0
  345. package/dist/components/spinner/spinner.js.map +1 -0
  346. package/dist/components/switch/index.d.ts +2 -0
  347. package/dist/components/switch/index.js +2 -0
  348. package/dist/components/switch/meta.js +17 -0
  349. package/dist/components/switch/meta.js.map +1 -0
  350. package/dist/components/switch/switch.d.ts +15 -0
  351. package/dist/components/switch/switch.d.ts.map +1 -0
  352. package/dist/components/switch/switch.js +21 -0
  353. package/dist/components/switch/switch.js.map +1 -0
  354. package/dist/components/table/index.d.ts +2 -0
  355. package/dist/components/table/index.js +2 -0
  356. package/dist/components/table/meta.js +17 -0
  357. package/dist/components/table/meta.js.map +1 -0
  358. package/dist/components/table/table.d.ts +41 -0
  359. package/dist/components/table/table.d.ts.map +1 -0
  360. package/dist/components/table/table.js +78 -0
  361. package/dist/components/table/table.js.map +1 -0
  362. package/dist/components/tabs/index.d.ts +2 -0
  363. package/dist/components/tabs/index.js +2 -0
  364. package/dist/components/tabs/meta.js +17 -0
  365. package/dist/components/tabs/meta.js.map +1 -0
  366. package/dist/components/tabs/tabs.d.ts +28 -0
  367. package/dist/components/tabs/tabs.d.ts.map +1 -0
  368. package/dist/components/tabs/tabs.js +58 -0
  369. package/dist/components/tabs/tabs.js.map +1 -0
  370. package/dist/components/toast/index.d.ts +3 -0
  371. package/dist/components/toast/index.js +3 -0
  372. package/dist/components/toast/meta.js +17 -0
  373. package/dist/components/toast/meta.js.map +1 -0
  374. package/dist/components/toast/toast-store.d.ts +84 -0
  375. package/dist/components/toast/toast-store.d.ts.map +1 -0
  376. package/dist/components/toast/toast-store.js +115 -0
  377. package/dist/components/toast/toast-store.js.map +1 -0
  378. package/dist/components/toast/toast.d.ts +39 -0
  379. package/dist/components/toast/toast.d.ts.map +1 -0
  380. package/dist/components/toast/toast.js +140 -0
  381. package/dist/components/toast/toast.js.map +1 -0
  382. package/dist/components/tooltip/index.d.ts +2 -0
  383. package/dist/components/tooltip/index.js +2 -0
  384. package/dist/components/tooltip/meta.js +17 -0
  385. package/dist/components/tooltip/meta.js.map +1 -0
  386. package/dist/components/tooltip/tooltip.d.ts +24 -0
  387. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  388. package/dist/components/tooltip/tooltip.js +38 -0
  389. package/dist/components/tooltip/tooltip.js.map +1 -0
  390. package/dist/index.d.ts +97 -0
  391. package/dist/index.js +51 -0
  392. package/dist/lib/styles.d.ts +21 -0
  393. package/dist/lib/styles.d.ts.map +1 -0
  394. package/dist/lib/styles.js +22 -0
  395. package/dist/lib/styles.js.map +1 -0
  396. package/dist/lib/utils.d.ts +11 -0
  397. package/dist/lib/utils.d.ts.map +1 -0
  398. package/dist/lib/utils.js +21 -0
  399. package/dist/lib/utils.js.map +1 -0
  400. package/dist/registry/blocks.d.ts +15 -0
  401. package/dist/registry/blocks.d.ts.map +1 -0
  402. package/dist/registry/blocks.js +32 -0
  403. package/dist/registry/blocks.js.map +1 -0
  404. package/dist/registry/components.d.ts +18 -0
  405. package/dist/registry/components.d.ts.map +1 -0
  406. package/dist/registry/components.js +112 -0
  407. package/dist/registry/components.js.map +1 -0
  408. package/dist/registry/schema.d.ts +44 -0
  409. package/dist/registry/schema.d.ts.map +1 -0
  410. package/dist/registry/schema.js +33 -0
  411. package/dist/registry/schema.js.map +1 -0
  412. package/package.json +74 -0
  413. package/src/blocks/admin-users/admin-users.stories.tsx +83 -0
  414. package/src/blocks/admin-users/admin-users.test.tsx +159 -0
  415. package/src/blocks/admin-users/admin-users.tsx +251 -0
  416. package/src/blocks/admin-users/index.ts +1 -0
  417. package/src/blocks/admin-users/meta.ts +27 -0
  418. package/src/blocks/ai-chat/ai-chat.stories.tsx +149 -0
  419. package/src/blocks/ai-chat/ai-chat.test.tsx +166 -0
  420. package/src/blocks/ai-chat/ai-chat.tsx +280 -0
  421. package/src/blocks/ai-chat/index.ts +7 -0
  422. package/src/blocks/ai-chat/meta.ts +32 -0
  423. package/src/blocks/dashboard/dashboard.stories.tsx +106 -0
  424. package/src/blocks/dashboard/dashboard.test.tsx +94 -0
  425. package/src/blocks/dashboard/dashboard.tsx +192 -0
  426. package/src/blocks/dashboard/index.ts +6 -0
  427. package/src/blocks/dashboard/meta.ts +18 -0
  428. package/src/blocks/forgot-password/forgot-password.stories.tsx +41 -0
  429. package/src/blocks/forgot-password/forgot-password.test.tsx +62 -0
  430. package/src/blocks/forgot-password/forgot-password.tsx +158 -0
  431. package/src/blocks/forgot-password/index.ts +1 -0
  432. package/src/blocks/forgot-password/meta.ts +18 -0
  433. package/src/blocks/login/index.ts +1 -0
  434. package/src/blocks/login/login.stories.tsx +46 -0
  435. package/src/blocks/login/login.test.tsx +100 -0
  436. package/src/blocks/login/login.tsx +178 -0
  437. package/src/blocks/login/meta.ts +18 -0
  438. package/src/blocks/pricing/index.ts +1 -0
  439. package/src/blocks/pricing/meta.ts +18 -0
  440. package/src/blocks/pricing/pricing.stories.tsx +62 -0
  441. package/src/blocks/pricing/pricing.test.tsx +101 -0
  442. package/src/blocks/pricing/pricing.tsx +176 -0
  443. package/src/blocks/settings/index.ts +6 -0
  444. package/src/blocks/settings/meta.ts +29 -0
  445. package/src/blocks/settings/settings.stories.tsx +94 -0
  446. package/src/blocks/settings/settings.test.tsx +167 -0
  447. package/src/blocks/settings/settings.tsx +317 -0
  448. package/src/blocks/signup/index.ts +1 -0
  449. package/src/blocks/signup/meta.ts +18 -0
  450. package/src/blocks/signup/signup.stories.tsx +27 -0
  451. package/src/blocks/signup/signup.test.tsx +97 -0
  452. package/src/blocks/signup/signup.tsx +240 -0
  453. package/src/components/accordion/accordion.stories.tsx +90 -0
  454. package/src/components/accordion/accordion.test.tsx +156 -0
  455. package/src/components/accordion/accordion.tsx +88 -0
  456. package/src/components/accordion/index.ts +9 -0
  457. package/src/components/accordion/meta.ts +16 -0
  458. package/src/components/activity-feed/activity-feed.stories.tsx +163 -0
  459. package/src/components/activity-feed/activity-feed.test.tsx +125 -0
  460. package/src/components/activity-feed/activity-feed.tsx +115 -0
  461. package/src/components/activity-feed/index.ts +12 -0
  462. package/src/components/activity-feed/meta.ts +17 -0
  463. package/src/components/ai-agent-status/ai-agent-status.stories.tsx +86 -0
  464. package/src/components/ai-agent-status/ai-agent-status.test.tsx +66 -0
  465. package/src/components/ai-agent-status/ai-agent-status.tsx +88 -0
  466. package/src/components/ai-agent-status/index.ts +6 -0
  467. package/src/components/ai-agent-status/meta.ts +17 -0
  468. package/src/components/ai-conversation/ai-conversation.stories.tsx +126 -0
  469. package/src/components/ai-conversation/ai-conversation.test.tsx +144 -0
  470. package/src/components/ai-conversation/ai-conversation.tsx +229 -0
  471. package/src/components/ai-conversation/index.ts +9 -0
  472. package/src/components/ai-conversation/meta.ts +20 -0
  473. package/src/components/ai-message/ai-message.stories.tsx +106 -0
  474. package/src/components/ai-message/ai-message.test.tsx +160 -0
  475. package/src/components/ai-message/ai-message.tsx +162 -0
  476. package/src/components/ai-message/index.ts +13 -0
  477. package/src/components/ai-message/meta.ts +17 -0
  478. package/src/components/ai-model-selector/ai-model-selector.stories.tsx +66 -0
  479. package/src/components/ai-model-selector/ai-model-selector.test.tsx +120 -0
  480. package/src/components/ai-model-selector/ai-model-selector.tsx +112 -0
  481. package/src/components/ai-model-selector/index.ts +1 -0
  482. package/src/components/ai-model-selector/meta.ts +17 -0
  483. package/src/components/ai-prompt-input/ai-prompt-input.stories.tsx +145 -0
  484. package/src/components/ai-prompt-input/ai-prompt-input.test.tsx +273 -0
  485. package/src/components/ai-prompt-input/ai-prompt-input.tsx +306 -0
  486. package/src/components/ai-prompt-input/index.ts +11 -0
  487. package/src/components/ai-prompt-input/meta.ts +18 -0
  488. package/src/components/ai-reasoning/ai-reasoning.stories.tsx +60 -0
  489. package/src/components/ai-reasoning/ai-reasoning.test.tsx +95 -0
  490. package/src/components/ai-reasoning/ai-reasoning.tsx +106 -0
  491. package/src/components/ai-reasoning/index.ts +7 -0
  492. package/src/components/ai-reasoning/meta.ts +17 -0
  493. package/src/components/ai-response/ai-response.stories.tsx +75 -0
  494. package/src/components/ai-response/ai-response.test.tsx +96 -0
  495. package/src/components/ai-response/ai-response.tsx +95 -0
  496. package/src/components/ai-response/index.ts +7 -0
  497. package/src/components/ai-response/meta.ts +17 -0
  498. package/src/components/ai-sources/ai-sources.stories.tsx +93 -0
  499. package/src/components/ai-sources/ai-sources.test.tsx +102 -0
  500. package/src/components/ai-sources/ai-sources.tsx +186 -0
  501. package/src/components/ai-sources/index.ts +11 -0
  502. package/src/components/ai-sources/meta.ts +17 -0
  503. package/src/components/ai-token-usage/ai-token-usage.stories.tsx +59 -0
  504. package/src/components/ai-token-usage/ai-token-usage.test.tsx +83 -0
  505. package/src/components/ai-token-usage/ai-token-usage.tsx +105 -0
  506. package/src/components/ai-token-usage/index.ts +6 -0
  507. package/src/components/ai-token-usage/meta.ts +16 -0
  508. package/src/components/ai-tool/ai-tool.stories.tsx +96 -0
  509. package/src/components/ai-tool/ai-tool.test.tsx +137 -0
  510. package/src/components/ai-tool/ai-tool.tsx +235 -0
  511. package/src/components/ai-tool/index.ts +13 -0
  512. package/src/components/ai-tool/meta.ts +17 -0
  513. package/src/components/alert/alert.stories.tsx +101 -0
  514. package/src/components/alert/alert.test.tsx +94 -0
  515. package/src/components/alert/alert.tsx +89 -0
  516. package/src/components/alert/index.ts +8 -0
  517. package/src/components/alert/meta.ts +16 -0
  518. package/src/components/avatar/avatar.stories.tsx +58 -0
  519. package/src/components/avatar/avatar.test.tsx +64 -0
  520. package/src/components/avatar/avatar.tsx +68 -0
  521. package/src/components/avatar/index.ts +9 -0
  522. package/src/components/avatar/meta.ts +15 -0
  523. package/src/components/badge/badge.stories.tsx +68 -0
  524. package/src/components/badge/badge.test.tsx +61 -0
  525. package/src/components/badge/badge.tsx +54 -0
  526. package/src/components/badge/index.ts +1 -0
  527. package/src/components/badge/meta.ts +15 -0
  528. package/src/components/button/button.stories.tsx +128 -0
  529. package/src/components/button/button.test.tsx +224 -0
  530. package/src/components/button/button.tsx +114 -0
  531. package/src/components/button/index.ts +1 -0
  532. package/src/components/button/meta.ts +16 -0
  533. package/src/components/calendar/calendar.stories.tsx +105 -0
  534. package/src/components/calendar/calendar.test.tsx +255 -0
  535. package/src/components/calendar/calendar.tsx +115 -0
  536. package/src/components/calendar/index.ts +1 -0
  537. package/src/components/calendar/meta.ts +17 -0
  538. package/src/components/card/card.stories.tsx +61 -0
  539. package/src/components/card/card.test.tsx +66 -0
  540. package/src/components/card/card.tsx +81 -0
  541. package/src/components/card/index.ts +9 -0
  542. package/src/components/card/meta.ts +16 -0
  543. package/src/components/checkbox/checkbox.stories.tsx +124 -0
  544. package/src/components/checkbox/checkbox.test.tsx +121 -0
  545. package/src/components/checkbox/checkbox.tsx +66 -0
  546. package/src/components/checkbox/index.ts +1 -0
  547. package/src/components/checkbox/meta.ts +16 -0
  548. package/src/components/code-block/code-block.stories.tsx +62 -0
  549. package/src/components/code-block/code-block.test.tsx +139 -0
  550. package/src/components/code-block/code-block.tsx +188 -0
  551. package/src/components/code-block/index.ts +1 -0
  552. package/src/components/code-block/meta.ts +17 -0
  553. package/src/components/combobox/combobox.stories.tsx +171 -0
  554. package/src/components/combobox/combobox.test.tsx +429 -0
  555. package/src/components/combobox/combobox.tsx +544 -0
  556. package/src/components/combobox/index.ts +15 -0
  557. package/src/components/combobox/meta.ts +17 -0
  558. package/src/components/command/command.stories.tsx +152 -0
  559. package/src/components/command/command.test.tsx +380 -0
  560. package/src/components/command/command.tsx +482 -0
  561. package/src/components/command/index.ts +17 -0
  562. package/src/components/command/meta.ts +18 -0
  563. package/src/components/data-table/data-table.stories.tsx +151 -0
  564. package/src/components/data-table/data-table.test.tsx +288 -0
  565. package/src/components/data-table/data-table.tsx +485 -0
  566. package/src/components/data-table/index.ts +13 -0
  567. package/src/components/data-table/meta.ts +19 -0
  568. package/src/components/date-picker/date-picker.stories.tsx +103 -0
  569. package/src/components/date-picker/date-picker.test.tsx +205 -0
  570. package/src/components/date-picker/date-picker.tsx +198 -0
  571. package/src/components/date-picker/index.ts +6 -0
  572. package/src/components/date-picker/meta.ts +18 -0
  573. package/src/components/dialog/dialog.stories.tsx +140 -0
  574. package/src/components/dialog/dialog.test.tsx +186 -0
  575. package/src/components/dialog/dialog.tsx +132 -0
  576. package/src/components/dialog/index.ts +16 -0
  577. package/src/components/dialog/meta.ts +16 -0
  578. package/src/components/drawer/drawer.stories.tsx +111 -0
  579. package/src/components/drawer/drawer.test.tsx +187 -0
  580. package/src/components/drawer/drawer.tsx +293 -0
  581. package/src/components/drawer/index.ts +16 -0
  582. package/src/components/drawer/meta.ts +16 -0
  583. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +128 -0
  584. package/src/components/dropdown-menu/dropdown-menu.test.tsx +321 -0
  585. package/src/components/dropdown-menu/dropdown-menu.tsx +242 -0
  586. package/src/components/dropdown-menu/index.ts +21 -0
  587. package/src/components/dropdown-menu/meta.ts +17 -0
  588. package/src/components/empty-state/empty-state.stories.tsx +70 -0
  589. package/src/components/empty-state/empty-state.test.tsx +97 -0
  590. package/src/components/empty-state/empty-state.tsx +92 -0
  591. package/src/components/empty-state/index.ts +9 -0
  592. package/src/components/empty-state/meta.ts +16 -0
  593. package/src/components/form/form.stories.tsx +144 -0
  594. package/src/components/form/form.test.tsx +203 -0
  595. package/src/components/form/form.tsx +221 -0
  596. package/src/components/form/index.ts +13 -0
  597. package/src/components/form/meta.ts +17 -0
  598. package/src/components/input/index.ts +1 -0
  599. package/src/components/input/input.stories.tsx +84 -0
  600. package/src/components/input/input.test.tsx +108 -0
  601. package/src/components/input/input.tsx +51 -0
  602. package/src/components/input/meta.ts +15 -0
  603. package/src/components/label/index.ts +1 -0
  604. package/src/components/label/label.stories.tsx +51 -0
  605. package/src/components/label/label.test.tsx +55 -0
  606. package/src/components/label/label.tsx +26 -0
  607. package/src/components/label/meta.ts +15 -0
  608. package/src/components/pagination/index.ts +10 -0
  609. package/src/components/pagination/meta.ts +17 -0
  610. package/src/components/pagination/pagination.stories.tsx +129 -0
  611. package/src/components/pagination/pagination.test.tsx +119 -0
  612. package/src/components/pagination/pagination.tsx +142 -0
  613. package/src/components/popover/index.ts +9 -0
  614. package/src/components/popover/meta.ts +18 -0
  615. package/src/components/popover/popover.stories.tsx +84 -0
  616. package/src/components/popover/popover.test.tsx +163 -0
  617. package/src/components/popover/popover.tsx +89 -0
  618. package/src/components/progress/index.ts +1 -0
  619. package/src/components/progress/meta.ts +17 -0
  620. package/src/components/progress/progress.stories.tsx +90 -0
  621. package/src/components/progress/progress.test.tsx +78 -0
  622. package/src/components/progress/progress.tsx +70 -0
  623. package/src/components/radio-group/index.ts +6 -0
  624. package/src/components/radio-group/meta.ts +16 -0
  625. package/src/components/radio-group/radio-group.stories.tsx +102 -0
  626. package/src/components/radio-group/radio-group.test.tsx +152 -0
  627. package/src/components/radio-group/radio-group.tsx +53 -0
  628. package/src/components/select/index.ts +14 -0
  629. package/src/components/select/meta.ts +16 -0
  630. package/src/components/select/select.stories.tsx +137 -0
  631. package/src/components/select/select.test.tsx +209 -0
  632. package/src/components/select/select.tsx +222 -0
  633. package/src/components/separator/index.ts +1 -0
  634. package/src/components/separator/meta.ts +15 -0
  635. package/src/components/separator/separator.stories.tsx +42 -0
  636. package/src/components/separator/separator.test.tsx +46 -0
  637. package/src/components/separator/separator.tsx +33 -0
  638. package/src/components/sheet/index.ts +14 -0
  639. package/src/components/sheet/meta.ts +16 -0
  640. package/src/components/sheet/sheet.stories.tsx +107 -0
  641. package/src/components/sheet/sheet.test.tsx +152 -0
  642. package/src/components/sheet/sheet.tsx +160 -0
  643. package/src/components/skeleton/index.ts +1 -0
  644. package/src/components/skeleton/meta.ts +15 -0
  645. package/src/components/skeleton/skeleton.stories.tsx +46 -0
  646. package/src/components/skeleton/skeleton.test.tsx +57 -0
  647. package/src/components/skeleton/skeleton.tsx +28 -0
  648. package/src/components/slider/index.ts +1 -0
  649. package/src/components/slider/meta.ts +19 -0
  650. package/src/components/slider/slider.stories.tsx +87 -0
  651. package/src/components/slider/slider.test.tsx +148 -0
  652. package/src/components/slider/slider.tsx +135 -0
  653. package/src/components/spinner/index.ts +1 -0
  654. package/src/components/spinner/meta.ts +15 -0
  655. package/src/components/spinner/spinner.stories.tsx +47 -0
  656. package/src/components/spinner/spinner.test.tsx +41 -0
  657. package/src/components/spinner/spinner.tsx +68 -0
  658. package/src/components/switch/index.ts +1 -0
  659. package/src/components/switch/meta.ts +15 -0
  660. package/src/components/switch/switch.stories.tsx +70 -0
  661. package/src/components/switch/switch.test.tsx +101 -0
  662. package/src/components/switch/switch.tsx +42 -0
  663. package/src/components/table/index.ts +11 -0
  664. package/src/components/table/meta.ts +17 -0
  665. package/src/components/table/table.stories.tsx +131 -0
  666. package/src/components/table/table.test.tsx +153 -0
  667. package/src/components/table/table.tsx +138 -0
  668. package/src/components/tabs/index.ts +11 -0
  669. package/src/components/tabs/meta.ts +17 -0
  670. package/src/components/tabs/tabs.stories.tsx +139 -0
  671. package/src/components/tabs/tabs.test.tsx +148 -0
  672. package/src/components/tabs/tabs.tsx +106 -0
  673. package/src/components/toast/index.ts +24 -0
  674. package/src/components/toast/meta.ts +18 -0
  675. package/src/components/toast/toast-store.ts +181 -0
  676. package/src/components/toast/toast.stories.tsx +167 -0
  677. package/src/components/toast/toast.test.tsx +306 -0
  678. package/src/components/toast/toast.tsx +241 -0
  679. package/src/components/tooltip/index.ts +8 -0
  680. package/src/components/tooltip/meta.ts +17 -0
  681. package/src/components/tooltip/tooltip.stories.tsx +89 -0
  682. package/src/components/tooltip/tooltip.test.tsx +120 -0
  683. package/src/components/tooltip/tooltip.tsx +58 -0
  684. package/src/index.ts +50 -0
  685. package/src/lib/styles.ts +26 -0
  686. package/src/lib/utils.test.ts +32 -0
  687. package/src/lib/utils.ts +24 -0
  688. package/src/registry/blocks.ts +30 -0
  689. package/src/registry/components.ts +114 -0
  690. package/src/registry/meta.test.ts +234 -0
  691. package/src/registry/schema.ts +58 -0
@@ -0,0 +1,84 @@
1
+ import { ReactNode } from "react";
2
+ //#region src/components/toast/toast-store.d.ts
3
+ /**
4
+ * Toast state, kept outside React.
5
+ *
6
+ * A toast is usually raised from somewhere that is not a component — a fetch
7
+ * handler, a mutation callback, a websocket message. Holding the queue in a
8
+ * plain module-level store means `toast()` is callable from anywhere, while
9
+ * `useToasts()` still gives components a properly-subscribed, concurrent-safe
10
+ * read via useSyncExternalStore.
11
+ *
12
+ * Dismiss *timing* deliberately lives in the component layer, not here: the
13
+ * underlying primitive already pauses timers on hover, focus and window blur,
14
+ * and reimplementing that in the store would only fight it.
15
+ */
16
+ type ToastVariant = "default" | "success" | "warning" | "destructive" | "info";
17
+ interface ToastAction {
18
+ label: string;
19
+ onClick: () => void;
20
+ /**
21
+ * Announced instead of the label, describing how to do the same thing without
22
+ * the toast (which may vanish before assistive technology reaches it).
23
+ * Defaults to the label.
24
+ */
25
+ altText?: string;
26
+ }
27
+ interface ToastOptions {
28
+ id?: string;
29
+ title?: ReactNode;
30
+ description?: ReactNode;
31
+ variant?: ToastVariant;
32
+ /** Milliseconds before auto-dismiss. `Infinity` keeps it until dismissed. */
33
+ duration?: number;
34
+ action?: ToastAction;
35
+ onDismiss?: (id: string) => void;
36
+ }
37
+ interface ToastRecord extends ToastOptions {
38
+ id: string;
39
+ variant: ToastVariant;
40
+ }
41
+ /** Beyond a handful, toasts stop being read and start being dismissed. */
42
+ declare const TOAST_LIMIT = 4;
43
+ declare const DEFAULT_TOAST_DURATION = 5000;
44
+ /** Subscribed read of the current queue. */
45
+ declare function useToasts(): ToastRecord[];
46
+ declare function add(options: ToastOptions): string;
47
+ declare function update(id: string, options: Partial<ToastOptions>): void;
48
+ declare function dismiss(id: string): void;
49
+ declare function dismissAll(): void;
50
+ interface ToastPromiseMessages<T> {
51
+ loading: ReactNode;
52
+ success: ReactNode | ((value: T) => ReactNode);
53
+ error: ReactNode | ((error: unknown) => ReactNode);
54
+ }
55
+ /**
56
+ * Shows a pending toast that resolves into a success or error toast.
57
+ *
58
+ * Returns the original promise so it stays awaitable and rejections are not
59
+ * swallowed — the toast is a side effect of the promise, not a replacement for
60
+ * handling it.
61
+ */
62
+ declare function promise<T>(input: Promise<T>, messages: ToastPromiseMessages<T>): Promise<T>;
63
+ /**
64
+ * Raises a toast from anywhere — no hook, no provider lookup.
65
+ *
66
+ * toast.success("Project created");
67
+ * toast.error("Could not save", { description: "Check your connection." });
68
+ * await toast.promise(save(), { loading: "Saving…", success: "Saved", error: "Failed" });
69
+ */
70
+ declare const toast: ((title: ReactNode, options?: Omit<ToastOptions, "title">) => string) & {
71
+ default: (title: ReactNode, options?: Omit<ToastOptions, "title" | "variant">) => string;
72
+ success: (title: ReactNode, options?: Omit<ToastOptions, "title" | "variant">) => string;
73
+ error: (title: ReactNode, options?: Omit<ToastOptions, "title" | "variant">) => string;
74
+ warning: (title: ReactNode, options?: Omit<ToastOptions, "title" | "variant">) => string;
75
+ info: (title: ReactNode, options?: Omit<ToastOptions, "title" | "variant">) => string;
76
+ custom: typeof add;
77
+ update: typeof update;
78
+ dismiss: typeof dismiss;
79
+ dismissAll: typeof dismissAll;
80
+ promise: typeof promise;
81
+ };
82
+ //#endregion
83
+ export { DEFAULT_TOAST_DURATION, TOAST_LIMIT, ToastAction, ToastOptions, ToastPromiseMessages, ToastRecord, ToastVariant, toast, useToasts };
84
+ //# sourceMappingURL=toast-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast-store.d.ts","names":[],"sources":["../../../src/components/toast/toast-store.ts"],"mappings":";;;;;;;;;;;;;;;KAkBY;UAEK;EACf;EACA;;;;;;EAMA;;UAGe;EACf;EACA,QAAQ;EACR,cAAc;EACd,UAAU;;EAEV;EACA,SAAS;EACT,aAAa;;UAGE,oBAAoB;EACnC;EACA,SAAS;;;cAIE;cAEA;;iBAwBG,aAAa;iBAIpB,IAAI,SAAS;iBAUb,OAAO,YAAY,SAAS,QAAQ;iBAIpC,QAAQ;iBAMR;UAMQ,qBAAqB;EACpC,SAAS;EACT,SAAS,cAAc,OAAO,MAAM;EACpC,OAAO,cAAc,mBAAmB;;;;;;;;;iBAiBjC,QAAQ,GAAG,OAAO,QAAQ,IAAI,UAAU,qBAAqB,KAAK,QAAQ;;;;;;;;cAmCtE,SAAK,OACR,WAAS,UAAW,KAAK;EAZlB,UAAA,OAAA,WAAS,UAAW,KAAK;EAAzB,UAAA,OAAA,WAAS,UAAW,KAAK;EAAzB,QAAA,OAAA,WAAS,UAAW,KAAK;EAAzB,UAAA,OAAA,WAAS,UAAW,KAAK;EAAzB,OAAA,OAAA,WAAS,UAAW,KAAK"}
@@ -0,0 +1,115 @@
1
+ "use client";
2
+ import { useSyncExternalStore } from "react";
3
+ //#region src/components/toast/toast-store.ts
4
+ /** Beyond a handful, toasts stop being read and start being dismissed. */
5
+ const TOAST_LIMIT = 4;
6
+ const DEFAULT_TOAST_DURATION = 5e3;
7
+ let toasts = [];
8
+ let nextId = 0;
9
+ const listeners = /* @__PURE__ */ new Set();
10
+ function emit(next) {
11
+ toasts = next;
12
+ for (const listener of listeners) listener();
13
+ }
14
+ function subscribe(listener) {
15
+ listeners.add(listener);
16
+ return () => {
17
+ listeners.delete(listener);
18
+ };
19
+ }
20
+ function getSnapshot() {
21
+ return toasts;
22
+ }
23
+ /** Subscribed read of the current queue. */
24
+ function useToasts() {
25
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
26
+ }
27
+ function add(options) {
28
+ nextId += 1;
29
+ const id = options.id ?? `toast-${String(nextId)}`;
30
+ emit([{
31
+ variant: "default",
32
+ ...options,
33
+ id
34
+ }, ...toasts.filter((existing) => existing.id !== id)].slice(0, 4));
35
+ return id;
36
+ }
37
+ function update(id, options) {
38
+ emit(toasts.map((existing) => existing.id === id ? {
39
+ ...existing,
40
+ ...options
41
+ } : existing));
42
+ }
43
+ function dismiss(id) {
44
+ const target = toasts.find((existing) => existing.id === id);
45
+ emit(toasts.filter((existing) => existing.id !== id));
46
+ target?.onDismiss?.(id);
47
+ }
48
+ function dismissAll() {
49
+ const current = toasts;
50
+ emit([]);
51
+ for (const record of current) record.onDismiss?.(record.id);
52
+ }
53
+ function resolveMessage(message, value) {
54
+ return typeof message === "function" ? message(value) : message;
55
+ }
56
+ /**
57
+ * Shows a pending toast that resolves into a success or error toast.
58
+ *
59
+ * Returns the original promise so it stays awaitable and rejections are not
60
+ * swallowed — the toast is a side effect of the promise, not a replacement for
61
+ * handling it.
62
+ */
63
+ function promise(input, messages) {
64
+ const id = add({
65
+ title: messages.loading,
66
+ duration: Infinity
67
+ });
68
+ input.then((value) => {
69
+ update(id, {
70
+ title: resolveMessage(messages.success, value),
71
+ variant: "success",
72
+ duration: DEFAULT_TOAST_DURATION
73
+ });
74
+ }, (error) => {
75
+ update(id, {
76
+ title: resolveMessage(messages.error, error),
77
+ variant: "destructive",
78
+ duration: DEFAULT_TOAST_DURATION
79
+ });
80
+ });
81
+ return input;
82
+ }
83
+ function withVariant(variant) {
84
+ return (title, options = {}) => add({
85
+ ...options,
86
+ title,
87
+ variant
88
+ });
89
+ }
90
+ /**
91
+ * Raises a toast from anywhere — no hook, no provider lookup.
92
+ *
93
+ * toast.success("Project created");
94
+ * toast.error("Could not save", { description: "Check your connection." });
95
+ * await toast.promise(save(), { loading: "Saving…", success: "Saved", error: "Failed" });
96
+ */
97
+ const toast = Object.assign((title, options = {}) => add({
98
+ ...options,
99
+ title
100
+ }), {
101
+ default: withVariant("default"),
102
+ success: withVariant("success"),
103
+ error: withVariant("destructive"),
104
+ warning: withVariant("warning"),
105
+ info: withVariant("info"),
106
+ custom: add,
107
+ update,
108
+ dismiss,
109
+ dismissAll,
110
+ promise
111
+ });
112
+ //#endregion
113
+ export { DEFAULT_TOAST_DURATION, TOAST_LIMIT, toast, useToasts };
114
+
115
+ //# sourceMappingURL=toast-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast-store.js","names":[],"sources":["../../../src/components/toast/toast-store.ts"],"sourcesContent":["\"use client\";\n\nimport { useSyncExternalStore, type ReactNode } from \"react\";\n\n/**\n * Toast state, kept outside React.\n *\n * A toast is usually raised from somewhere that is not a component — a fetch\n * handler, a mutation callback, a websocket message. Holding the queue in a\n * plain module-level store means `toast()` is callable from anywhere, while\n * `useToasts()` still gives components a properly-subscribed, concurrent-safe\n * read via useSyncExternalStore.\n *\n * Dismiss *timing* deliberately lives in the component layer, not here: the\n * underlying primitive already pauses timers on hover, focus and window blur,\n * and reimplementing that in the store would only fight it.\n */\n\nexport type ToastVariant = \"default\" | \"success\" | \"warning\" | \"destructive\" | \"info\";\n\nexport interface ToastAction {\n label: string;\n onClick: () => void;\n /**\n * Announced instead of the label, describing how to do the same thing without\n * the toast (which may vanish before assistive technology reaches it).\n * Defaults to the label.\n */\n altText?: string;\n}\n\nexport interface ToastOptions {\n id?: string;\n title?: ReactNode;\n description?: ReactNode;\n variant?: ToastVariant;\n /** Milliseconds before auto-dismiss. `Infinity` keeps it until dismissed. */\n duration?: number;\n action?: ToastAction;\n onDismiss?: (id: string) => void;\n}\n\nexport interface ToastRecord extends ToastOptions {\n id: string;\n variant: ToastVariant;\n}\n\n/** Beyond a handful, toasts stop being read and start being dismissed. */\nexport const TOAST_LIMIT = 4;\n\nexport const DEFAULT_TOAST_DURATION = 5000;\n\nlet toasts: ToastRecord[] = [];\nlet nextId = 0;\n\nconst listeners = new Set<() => void>();\n\nfunction emit(next: ToastRecord[]) {\n toasts = next;\n for (const listener of listeners) listener();\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nfunction getSnapshot(): ToastRecord[] {\n return toasts;\n}\n\n/** Subscribed read of the current queue. */\nexport function useToasts(): ToastRecord[] {\n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n\nfunction add(options: ToastOptions): string {\n nextId += 1;\n const id = options.id ?? `toast-${String(nextId)}`;\n const record: ToastRecord = { variant: \"default\", ...options, id };\n\n // Newest first, oldest past the limit dropped.\n emit([record, ...toasts.filter((existing) => existing.id !== id)].slice(0, TOAST_LIMIT));\n return id;\n}\n\nfunction update(id: string, options: Partial<ToastOptions>): void {\n emit(toasts.map((existing) => (existing.id === id ? { ...existing, ...options } : existing)));\n}\n\nfunction dismiss(id: string): void {\n const target = toasts.find((existing) => existing.id === id);\n emit(toasts.filter((existing) => existing.id !== id));\n target?.onDismiss?.(id);\n}\n\nfunction dismissAll(): void {\n const current = toasts;\n emit([]);\n for (const record of current) record.onDismiss?.(record.id);\n}\n\nexport interface ToastPromiseMessages<T> {\n loading: ReactNode;\n success: ReactNode | ((value: T) => ReactNode);\n error: ReactNode | ((error: unknown) => ReactNode);\n}\n\nfunction resolveMessage<T>(\n message: ReactNode | ((value: T) => ReactNode),\n value: T,\n): ReactNode {\n return typeof message === \"function\" ? (message as (value: T) => ReactNode)(value) : message;\n}\n\n/**\n * Shows a pending toast that resolves into a success or error toast.\n *\n * Returns the original promise so it stays awaitable and rejections are not\n * swallowed — the toast is a side effect of the promise, not a replacement for\n * handling it.\n */\nfunction promise<T>(input: Promise<T>, messages: ToastPromiseMessages<T>): Promise<T> {\n const id = add({ title: messages.loading, duration: Infinity });\n\n input.then(\n (value) => {\n update(id, {\n title: resolveMessage(messages.success, value),\n variant: \"success\",\n duration: DEFAULT_TOAST_DURATION,\n });\n },\n (error: unknown) => {\n update(id, {\n title: resolveMessage(messages.error, error),\n variant: \"destructive\",\n duration: DEFAULT_TOAST_DURATION,\n });\n },\n );\n\n return input;\n}\n\nfunction withVariant(variant: ToastVariant) {\n return (title: ReactNode, options: Omit<ToastOptions, \"title\" | \"variant\"> = {}) =>\n add({ ...options, title, variant });\n}\n\n/**\n * Raises a toast from anywhere — no hook, no provider lookup.\n *\n * toast.success(\"Project created\");\n * toast.error(\"Could not save\", { description: \"Check your connection.\" });\n * await toast.promise(save(), { loading: \"Saving…\", success: \"Saved\", error: \"Failed\" });\n */\nexport const toast = Object.assign(\n (title: ReactNode, options: Omit<ToastOptions, \"title\"> = {}) => add({ ...options, title }),\n {\n default: withVariant(\"default\"),\n success: withVariant(\"success\"),\n error: withVariant(\"destructive\"),\n warning: withVariant(\"warning\"),\n info: withVariant(\"info\"),\n custom: add,\n update,\n dismiss,\n dismissAll,\n promise,\n },\n);\n\n/** Test-only reset. Not exported from the package index. */\nexport function resetToasts(): void {\n toasts = [];\n nextId = 0;\n for (const listener of listeners) listener();\n}\n"],"mappings":";;;;AAgDA,MAAa,cAAc;AAE3B,MAAa,yBAAyB;AAEtC,IAAI,SAAwB,CAAC;AAC7B,IAAI,SAAS;AAEb,MAAM,4BAAY,IAAI,IAAgB;AAEtC,SAAS,KAAK,MAAqB;CACjC,SAAS;CACT,KAAK,MAAM,YAAY,WAAW,SAAS;AAC7C;AAEA,SAAS,UAAU,UAAkC;CACnD,UAAU,IAAI,QAAQ;CACtB,aAAa;EACX,UAAU,OAAO,QAAQ;CAC3B;AACF;AAEA,SAAS,cAA6B;CACpC,OAAO;AACT;;AAGA,SAAgB,YAA2B;CACzC,OAAO,qBAAqB,WAAW,aAAa,WAAW;AACjE;AAEA,SAAS,IAAI,SAA+B;CAC1C,UAAU;CACV,MAAM,KAAK,QAAQ,MAAM,SAAS,OAAO,MAAM;CAI/C,KAAK,CAAC;EAHwB,SAAS;EAAW,GAAG;EAAS;CAGnD,GAAG,GAAG,OAAO,QAAQ,aAAa,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,GAAA,CAAc,CAAC;CACvF,OAAO;AACT;AAEA,SAAS,OAAO,IAAY,SAAsC;CAChE,KAAK,OAAO,KAAK,aAAc,SAAS,OAAO,KAAK;EAAE,GAAG;EAAU,GAAG;CAAQ,IAAI,QAAS,CAAC;AAC9F;AAEA,SAAS,QAAQ,IAAkB;CACjC,MAAM,SAAS,OAAO,MAAM,aAAa,SAAS,OAAO,EAAE;CAC3D,KAAK,OAAO,QAAQ,aAAa,SAAS,OAAO,EAAE,CAAC;CACpD,QAAQ,YAAY,EAAE;AACxB;AAEA,SAAS,aAAmB;CAC1B,MAAM,UAAU;CAChB,KAAK,CAAC,CAAC;CACP,KAAK,MAAM,UAAU,SAAS,OAAO,YAAY,OAAO,EAAE;AAC5D;AAQA,SAAS,eACP,SACA,OACW;CACX,OAAO,OAAO,YAAY,aAAc,QAAoC,KAAK,IAAI;AACvF;;;;;;;;AASA,SAAS,QAAW,OAAmB,UAA+C;CACpF,MAAM,KAAK,IAAI;EAAE,OAAO,SAAS;EAAS,UAAU;CAAS,CAAC;CAE9D,MAAM,MACH,UAAU;EACT,OAAO,IAAI;GACT,OAAO,eAAe,SAAS,SAAS,KAAK;GAC7C,SAAS;GACT,UAAU;EACZ,CAAC;CACH,IACC,UAAmB;EAClB,OAAO,IAAI;GACT,OAAO,eAAe,SAAS,OAAO,KAAK;GAC3C,SAAS;GACT,UAAU;EACZ,CAAC;CACH,CACF;CAEA,OAAO;AACT;AAEA,SAAS,YAAY,SAAuB;CAC1C,QAAQ,OAAkB,UAAmD,CAAC,MAC5E,IAAI;EAAE,GAAG;EAAS;EAAO;CAAQ,CAAC;AACtC;;;;;;;;AASA,MAAa,QAAQ,OAAO,QACzB,OAAkB,UAAuC,CAAC,MAAM,IAAI;CAAE,GAAG;CAAS;AAAM,CAAC,GAC1F;CACE,SAAS,YAAY,SAAS;CAC9B,SAAS,YAAY,SAAS;CAC9B,OAAO,YAAY,aAAa;CAChC,SAAS,YAAY,SAAS;CAC9B,MAAM,YAAY,MAAM;CACxB,QAAQ;CACR;CACA;CACA;CACA;AACF,CACF"}
@@ -0,0 +1,39 @@
1
+ import { Toast } from "radix-ui";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import { ComponentPropsWithRef } from "react";
4
+ //#region src/components/toast/toast.d.ts
5
+ /**
6
+ * Brief, non-blocking messages about something that just happened.
7
+ *
8
+ * Render one `<Toaster />` near the root of the app; raise messages from
9
+ * anywhere with `toast()`. The primitive underneath supplies the parts that are
10
+ * easy to get wrong: a screen-reader announcement region, timers that pause on
11
+ * hover, focus and window blur, swipe-to-dismiss, and F8 to jump focus into the
12
+ * toast list from anywhere on the page.
13
+ */
14
+ declare const toastVariants: (props?: ({
15
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
16
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
+ declare const ToastProvider: import("react").FC<Toast.ToastProviderProps>;
18
+ interface ToastProps extends ComponentPropsWithRef<typeof Toast.Root>, VariantProps<typeof toastVariants> {}
19
+ declare function Toast$1({ className, variant, ...props }: ToastProps): import("react").JSX.Element;
20
+ declare function ToastTitle({ className, ...props }: ComponentPropsWithRef<typeof Toast.Title>): import("react").JSX.Element;
21
+ declare function ToastDescription({ className, ...props }: ComponentPropsWithRef<typeof Toast.Description>): import("react").JSX.Element;
22
+ declare function ToastAction({ className, ...props }: ComponentPropsWithRef<typeof Toast.Action>): import("react").JSX.Element;
23
+ declare function ToastClose({ className, ...props }: ComponentPropsWithRef<typeof Toast.Close>): import("react").JSX.Element;
24
+ type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
25
+ interface ToasterProps {
26
+ position?: ToastPosition;
27
+ /** Default auto-dismiss in ms. Individual toasts may override it. */
28
+ duration?: number;
29
+ className?: string;
30
+ /** Names the toast region for assistive technology. */
31
+ label?: string;
32
+ }
33
+ /**
34
+ * Renders the toast queue. Mount once, near the root of the application.
35
+ */
36
+ declare function Toaster({ position, duration, className, label }: ToasterProps): import("react").JSX.Element;
37
+ //#endregion
38
+ export { Toast$1 as Toast, ToastAction, ToastClose, ToastDescription, ToastPosition, ToastProps, ToastProvider, ToastTitle, Toaster, ToasterProps, toastVariants };
39
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","names":[],"sources":["../../../src/components/toast/toast.tsx"],"mappings":";;;;;;;;;;;;;cA2BM,gBAAa;;6CAyBlB;cAEY,+BAAa,GAAA,MAAA;UAET,mBAEb,6BAA6B,MAAe,OAC5C,oBAAoB;iBAER,UAAQ,WAAW,YAAY,SAAS,6BAAU,IAAA;iBAUlD,aACd,cACG,SACF,6BAA6B,MAAe,yBAAM,IAAA;iBAUrC,mBACd,cACG,SACF,6BAA6B,MAAe,+BAAY,IAAA;iBAU3C,cACd,cACG,SACF,6BAA6B,MAAe,0BAAO,IAAA;iBAetC,aACd,cACG,SACF,6BAA6B,MAAe,yBAAM,IAAA;KAyBzC;UAYK;EACf,WAAW;;EAEX;EACA;;EAEA;;;;;iBAMc,UACd,UACA,UACA,WACA,SACC,+BAAY,IAAA"}
@@ -0,0 +1,140 @@
1
+ "use client";
2
+ import { focusRing } from "../../lib/styles.js";
3
+ import { cn } from "../../lib/utils.js";
4
+ import { DEFAULT_TOAST_DURATION, toast, useToasts } from "./toast-store.js";
5
+ import { Toast } from "radix-ui";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { cva } from "class-variance-authority";
8
+ //#region src/components/toast/toast.tsx
9
+ /**
10
+ * Brief, non-blocking messages about something that just happened.
11
+ *
12
+ * Render one `<Toaster />` near the root of the app; raise messages from
13
+ * anywhere with `toast()`. The primitive underneath supplies the parts that are
14
+ * easy to get wrong: a screen-reader announcement region, timers that pause on
15
+ * hover, focus and window blur, swipe-to-dismiss, and F8 to jump focus into the
16
+ * toast list from anywhere on the page.
17
+ */
18
+ const toastVariants = cva(cn("group pointer-events-auto relative flex w-full items-start gap-3 overflow-hidden", "rounded-lg border p-4 pr-10 shadow-lg", "[--slide-x:calc(100%+1rem)]", "data-[state=closed]:animate-float-out data-[state=open]:animate-slide-in", "data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none", "data-[swipe=cancel]:translate-x-0 data-[swipe=cancel]:transition-transform", "data-[swipe=end]:animate-toast-swipe-out"), {
19
+ variants: { variant: {
20
+ default: "border-border bg-popover text-popover-foreground",
21
+ success: "border-success/30 bg-popover text-popover-foreground [&_svg]:text-success",
22
+ warning: "border-warning/35 bg-popover text-popover-foreground [&_svg]:text-warning",
23
+ destructive: "border-destructive/30 bg-popover text-popover-foreground [&_svg]:text-destructive",
24
+ info: "border-info/30 bg-popover text-popover-foreground [&_svg]:text-info"
25
+ } },
26
+ defaultVariants: { variant: "default" }
27
+ });
28
+ const ToastProvider = Toast.Provider;
29
+ function Toast$1({ className, variant, ...props }) {
30
+ return /* @__PURE__ */ jsx(Toast.Root, {
31
+ "data-slot": "toast",
32
+ className: cn(toastVariants({ variant }), className),
33
+ ...props
34
+ });
35
+ }
36
+ function ToastTitle({ className, ...props }) {
37
+ return /* @__PURE__ */ jsx(Toast.Title, {
38
+ "data-slot": "toast-title",
39
+ className: cn("text-sm leading-snug font-medium", className),
40
+ ...props
41
+ });
42
+ }
43
+ function ToastDescription({ className, ...props }) {
44
+ return /* @__PURE__ */ jsx(Toast.Description, {
45
+ "data-slot": "toast-description",
46
+ className: cn("text-sm text-muted-foreground", className),
47
+ ...props
48
+ });
49
+ }
50
+ function ToastAction({ className, ...props }) {
51
+ return /* @__PURE__ */ jsx(Toast.Action, {
52
+ "data-slot": "toast-action",
53
+ className: cn("inline-flex h-8 shrink-0 items-center rounded-md border border-input bg-transparent px-3 text-xs font-medium", "transition-colors duration-[var(--duration-fast)] hover:bg-accent hover:text-accent-foreground", focusRing, className),
54
+ ...props
55
+ });
56
+ }
57
+ function ToastClose({ className, ...props }) {
58
+ return /* @__PURE__ */ jsx(Toast.Close, {
59
+ "data-slot": "toast-close",
60
+ "aria-label": "Dismiss",
61
+ className: cn("absolute top-3 right-3 grid size-6 place-items-center rounded-md text-muted-foreground", "transition-colors duration-[var(--duration-fast)] hover:bg-accent hover:text-foreground", focusRing, className),
62
+ ...props,
63
+ children: /* @__PURE__ */ jsx("svg", {
64
+ viewBox: "0 0 24 24",
65
+ fill: "none",
66
+ "aria-hidden": "true",
67
+ className: "size-3.5",
68
+ children: /* @__PURE__ */ jsx("path", {
69
+ d: "m6 6 12 12M18 6 6 18",
70
+ stroke: "currentColor",
71
+ strokeWidth: "2",
72
+ strokeLinecap: "round"
73
+ })
74
+ })
75
+ });
76
+ }
77
+ const viewportPositions = {
78
+ "top-left": "top-0 left-0 sm:flex-col-reverse",
79
+ "top-center": "top-0 left-1/2 -translate-x-1/2 sm:flex-col-reverse",
80
+ "top-right": "top-0 right-0 sm:flex-col-reverse",
81
+ "bottom-left": "bottom-0 left-0",
82
+ "bottom-center": "bottom-0 left-1/2 -translate-x-1/2",
83
+ "bottom-right": "bottom-0 right-0"
84
+ };
85
+ /**
86
+ * Renders the toast queue. Mount once, near the root of the application.
87
+ */
88
+ function Toaster({ position = "bottom-right", duration = DEFAULT_TOAST_DURATION, className, label = "Notifications" }) {
89
+ const toasts = useToasts();
90
+ const swipeDirection = position.endsWith("left") ? "left" : "right";
91
+ return /* @__PURE__ */ jsxs(Toast.Provider, {
92
+ swipeDirection,
93
+ duration,
94
+ label,
95
+ children: [toasts.map((record) => /* @__PURE__ */ jsx(ToastItem, { record }, record.id)), /* @__PURE__ */ jsx(Toast.Viewport, {
96
+ "data-slot": "toast-viewport",
97
+ className: cn("pointer-events-none fixed z-[var(--z-toast)] flex max-h-screen w-full flex-col gap-2 p-4 sm:max-w-sm", viewportPositions[position], className)
98
+ })]
99
+ });
100
+ }
101
+ /** Variants that report a problem should interrupt rather than wait for a pause. */
102
+ const FOREGROUND_VARIANTS = /* @__PURE__ */ new Set(["destructive", "warning"]);
103
+ /**
104
+ * Largest delay setTimeout accepts (2^31 - 1 ms, about 24 days).
105
+ *
106
+ * Anything above this silently overflows to a 32-bit integer and fires almost
107
+ * immediately, so mapping `Infinity` to MAX_SAFE_INTEGER would dismiss a
108
+ * persistent toast after roughly one millisecond — the exact opposite of what
109
+ * was asked for.
110
+ */
111
+ const MAX_TIMEOUT_MS = 2147483647;
112
+ function ToastItem({ record }) {
113
+ const { id, title, description, variant, action, duration } = record;
114
+ const type = FOREGROUND_VARIANTS.has(variant) ? "foreground" : "background";
115
+ return /* @__PURE__ */ jsxs(Toast$1, {
116
+ variant,
117
+ type,
118
+ "data-type": type,
119
+ duration: duration === Infinity ? MAX_TIMEOUT_MS : duration,
120
+ onOpenChange: (open) => {
121
+ if (!open) toast.dismiss(id);
122
+ },
123
+ children: [
124
+ /* @__PURE__ */ jsxs("div", {
125
+ className: "flex min-w-0 flex-1 flex-col gap-1",
126
+ children: [title === void 0 ? null : /* @__PURE__ */ jsx(ToastTitle, { children: title }), description === void 0 ? null : /* @__PURE__ */ jsx(ToastDescription, { children: description })]
127
+ }),
128
+ action ? /* @__PURE__ */ jsx(ToastAction, {
129
+ altText: action.altText ?? action.label,
130
+ onClick: action.onClick,
131
+ children: action.label
132
+ }) : null,
133
+ /* @__PURE__ */ jsx(ToastClose, {})
134
+ ]
135
+ });
136
+ }
137
+ //#endregion
138
+ export { Toast$1 as Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, Toaster, toastVariants };
139
+
140
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","names":["ToastPrimitive","Toast"],"sources":["../../../src/components/toast/toast.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Toast as ToastPrimitive } from \"radix-ui\";\nimport type { ComponentPropsWithRef } from \"react\";\n\nimport { focusRing } from \"@/lib/styles\";\nimport { cn } from \"@/lib/utils\";\n\nimport {\n DEFAULT_TOAST_DURATION,\n toast,\n useToasts,\n type ToastRecord,\n type ToastVariant,\n} from \"./toast-store\";\n\n/**\n * Brief, non-blocking messages about something that just happened.\n *\n * Render one `<Toaster />` near the root of the app; raise messages from\n * anywhere with `toast()`. The primitive underneath supplies the parts that are\n * easy to get wrong: a screen-reader announcement region, timers that pause on\n * hover, focus and window blur, swipe-to-dismiss, and F8 to jump focus into the\n * toast list from anywhere on the page.\n */\n\nconst toastVariants = cva(\n cn(\n \"group pointer-events-auto relative flex w-full items-start gap-3 overflow-hidden\",\n \"rounded-lg border p-4 pr-10 shadow-lg\",\n \"[--slide-x:calc(100%+1rem)]\",\n \"data-[state=closed]:animate-float-out data-[state=open]:animate-slide-in\",\n \"data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none\",\n \"data-[swipe=cancel]:translate-x-0 data-[swipe=cancel]:transition-transform\",\n \"data-[swipe=end]:animate-toast-swipe-out\",\n ),\n {\n variants: {\n variant: {\n default: \"border-border bg-popover text-popover-foreground\",\n success: \"border-success/30 bg-popover text-popover-foreground [&_svg]:text-success\",\n warning: \"border-warning/35 bg-popover text-popover-foreground [&_svg]:text-warning\",\n destructive:\n \"border-destructive/30 bg-popover text-popover-foreground [&_svg]:text-destructive\",\n info: \"border-info/30 bg-popover text-popover-foreground [&_svg]:text-info\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport const ToastProvider = ToastPrimitive.Provider;\n\nexport interface ToastProps\n extends\n ComponentPropsWithRef<typeof ToastPrimitive.Root>,\n VariantProps<typeof toastVariants> {}\n\nexport function Toast({ className, variant, ...props }: ToastProps) {\n return (\n <ToastPrimitive.Root\n data-slot=\"toast\"\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport function ToastTitle({\n className,\n ...props\n}: ComponentPropsWithRef<typeof ToastPrimitive.Title>) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn(\"text-sm leading-snug font-medium\", className)}\n {...props}\n />\n );\n}\n\nexport function ToastDescription({\n className,\n ...props\n}: ComponentPropsWithRef<typeof ToastPrimitive.Description>) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function ToastAction({\n className,\n ...props\n}: ComponentPropsWithRef<typeof ToastPrimitive.Action>) {\n return (\n <ToastPrimitive.Action\n data-slot=\"toast-action\"\n className={cn(\n \"inline-flex h-8 shrink-0 items-center rounded-md border border-input bg-transparent px-3 text-xs font-medium\",\n \"transition-colors duration-[var(--duration-fast)] hover:bg-accent hover:text-accent-foreground\",\n focusRing,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function ToastClose({\n className,\n ...props\n}: ComponentPropsWithRef<typeof ToastPrimitive.Close>) {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label=\"Dismiss\"\n className={cn(\n \"absolute top-3 right-3 grid size-6 place-items-center rounded-md text-muted-foreground\",\n \"transition-colors duration-[var(--duration-fast)] hover:bg-accent hover:text-foreground\",\n focusRing,\n className,\n )}\n {...props}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" className=\"size-3.5\">\n <path\n d=\"m6 6 12 12M18 6 6 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </ToastPrimitive.Close>\n );\n}\n\nexport type ToastPosition =\n \"top-left\" | \"top-center\" | \"top-right\" | \"bottom-left\" | \"bottom-center\" | \"bottom-right\";\n\nconst viewportPositions: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 sm:flex-col-reverse\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 sm:flex-col-reverse\",\n \"top-right\": \"top-0 right-0 sm:flex-col-reverse\",\n \"bottom-left\": \"bottom-0 left-0\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2\",\n \"bottom-right\": \"bottom-0 right-0\",\n};\n\nexport interface ToasterProps {\n position?: ToastPosition;\n /** Default auto-dismiss in ms. Individual toasts may override it. */\n duration?: number;\n className?: string;\n /** Names the toast region for assistive technology. */\n label?: string;\n}\n\n/**\n * Renders the toast queue. Mount once, near the root of the application.\n */\nexport function Toaster({\n position = \"bottom-right\",\n duration = DEFAULT_TOAST_DURATION,\n className,\n label = \"Notifications\",\n}: ToasterProps) {\n const toasts = useToasts();\n // Swiping should follow the edge the toasts are docked against.\n const swipeDirection = position.endsWith(\"left\") ? \"left\" : \"right\";\n\n return (\n <ToastPrimitive.Provider swipeDirection={swipeDirection} duration={duration} label={label}>\n {toasts.map((record) => (\n <ToastItem key={record.id} record={record} />\n ))}\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn(\n \"pointer-events-none fixed z-[var(--z-toast)] flex max-h-screen w-full flex-col gap-2 p-4 sm:max-w-sm\",\n viewportPositions[position],\n className,\n )}\n />\n </ToastPrimitive.Provider>\n );\n}\n\n/** Variants that report a problem should interrupt rather than wait for a pause. */\nconst FOREGROUND_VARIANTS = new Set<ToastVariant>([\"destructive\", \"warning\"]);\n\n/**\n * Largest delay setTimeout accepts (2^31 - 1 ms, about 24 days).\n *\n * Anything above this silently overflows to a 32-bit integer and fires almost\n * immediately, so mapping `Infinity` to MAX_SAFE_INTEGER would dismiss a\n * persistent toast after roughly one millisecond — the exact opposite of what\n * was asked for.\n */\nconst MAX_TIMEOUT_MS = 2_147_483_647;\n\nfunction ToastItem({ record }: { record: ToastRecord }) {\n const { id, title, description, variant, action, duration } = record;\n\n const type = FOREGROUND_VARIANTS.has(variant) ? \"foreground\" : \"background\";\n\n return (\n <Toast\n variant={variant}\n type={type}\n // Mirrored onto the element because the primitive expresses `type` only\n // through the transient live region it renders elsewhere. Having it here\n // gives styling and tests something stable to read.\n data-type={type}\n duration={duration === Infinity ? MAX_TIMEOUT_MS : duration}\n onOpenChange={(open) => {\n // Covers every route out: the timer, the close button and a swipe.\n if (!open) toast.dismiss(id);\n }}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {title === undefined ? null : <ToastTitle>{title}</ToastTitle>}\n {description === undefined ? null : <ToastDescription>{description}</ToastDescription>}\n </div>\n {action ? (\n <ToastAction altText={action.altText ?? action.label} onClick={action.onClick}>\n {action.label}\n </ToastAction>\n ) : null}\n <ToastClose />\n </Toast>\n );\n}\n\nexport { toastVariants };\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,MAAM,gBAAgB,IACpB,GACE,oFACA,yCACA,+BACA,4EACA,qGACA,8EACA,0CACF,GACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,SAAS;EACT,SAAS;EACT,aACE;EACF,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,MAAa,gBAAgBA,MAAe;AAO5C,SAAgBC,QAAM,EAAE,WAAW,SAAS,GAAG,SAAqB;CAClE,OACE,oBAACD,MAAe,MAAhB;EACE,aAAU;EACV,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,WAAW,EACzB,WACA,GAAG,SACkD;CACrD,OACE,oBAACA,MAAe,OAAhB;EACE,aAAU;EACV,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,iBAAiB,EAC/B,WACA,GAAG,SACwD;CAC3D,OACE,oBAACA,MAAe,aAAhB;EACE,aAAU;EACV,WAAW,GAAG,iCAAiC,SAAS;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,YAAY,EAC1B,WACA,GAAG,SACmD;CACtD,OACE,oBAACA,MAAe,QAAhB;EACE,aAAU;EACV,WAAW,GACT,gHACA,kGACA,WACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,WAAW,EACzB,WACA,GAAG,SACkD;CACrD,OACE,oBAACA,MAAe,OAAhB;EACE,aAAU;EACV,cAAW;EACX,WAAW,GACT,0FACA,2FACA,WACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,OAAD;GAAK,SAAQ;GAAY,MAAK;GAAO,eAAY;GAAO,WAAU;GAChE,UAAA,oBAAC,QAAD;IACE,GAAE;IACF,QAAO;IACP,aAAY;IACZ,eAAc;GACf,CAAA;EACE,CAAA;CACe,CAAA;AAE1B;AAKA,MAAM,oBAAmD;CACvD,YAAY;CACZ,cAAc;CACd,aAAa;CACb,eAAe;CACf,iBAAiB;CACjB,gBAAgB;AAClB;;;;AAcA,SAAgB,QAAQ,EACtB,WAAW,gBACX,WAAW,wBACX,WACA,QAAQ,mBACO;CACf,MAAM,SAAS,UAAU;CAEzB,MAAM,iBAAiB,SAAS,SAAS,MAAM,IAAI,SAAS;CAE5D,OACE,qBAACA,MAAe,UAAhB;EAAyC;EAA0B;EAAiB;EAApF,UAAA,CACG,OAAO,KAAK,WACX,oBAAC,WAAD,EAAmC,OAAS,GAA5B,OAAO,EAAqB,CAC7C,GACD,oBAACA,MAAe,UAAhB;GACE,aAAU;GACV,WAAW,GACT,wGACA,kBAAkB,WAClB,SACF;EACD,CAAA,CACsB;;AAE7B;;AAGA,MAAM,sCAAsB,IAAI,IAAkB,CAAC,eAAe,SAAS,CAAC;;;;;;;;;AAU5E,MAAM,iBAAiB;AAEvB,SAAS,UAAU,EAAE,UAAmC;CACtD,MAAM,EAAE,IAAI,OAAO,aAAa,SAAS,QAAQ,aAAa;CAE9D,MAAM,OAAO,oBAAoB,IAAI,OAAO,IAAI,eAAe;CAE/D,OACE,qBAACC,SAAD;EACW;EACH;EAIN,aAAW;EACX,UAAU,aAAa,WAAW,iBAAiB;EACnD,eAAe,SAAS;GAEtB,IAAI,CAAC,MAAM,MAAM,QAAQ,EAAE;EAC7B;EAXF,UAAA;GAaE,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,UAAU,KAAA,IAAY,OAAO,oBAAC,YAAD,EAAA,UAAa,MAAkB,CAAA,GAC5D,gBAAgB,KAAA,IAAY,OAAO,oBAAC,kBAAD,EAAA,UAAmB,YAA8B,CAAA,CAClF;;GACJ,SACC,oBAAC,aAAD;IAAa,SAAS,OAAO,WAAW,OAAO;IAAO,SAAS,OAAO;IACnE,UAAA,OAAO;GACG,CAAA,IACX;GACJ,oBAAC,YAAD,CAAa,CAAA;EACR;;AAEX"}
@@ -0,0 +1,2 @@
1
+ import { Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipTrigger } from "./tooltip.js";
2
+ export { Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,2 @@
1
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
2
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,17 @@
1
+ import { defineMeta } from "../../registry/schema.js";
2
+ //#region src/components/tooltip/meta.ts
3
+ const meta = defineMeta({
4
+ name: "tooltip",
5
+ title: "Tooltip",
6
+ description: "A short label revealed on hover or keyboard focus.",
7
+ category: "overlay",
8
+ status: "stable",
9
+ dependencies: ["radix-ui"],
10
+ registryDependencies: [],
11
+ files: ["tooltip.tsx"],
12
+ a11y: "Opens on focus as well as hover, and Escape dismisses it. Never put essential or interactive content in a tooltip: it is unreachable on touch and vanishes on blur. For an icon-only button, prefer aria-label for the name and use the tooltip only to repeat it visually."
13
+ });
14
+ //#endregion
15
+ export { meta };
16
+
17
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","names":[],"sources":["../../../src/components/tooltip/meta.ts"],"sourcesContent":["import { defineMeta } from \"@/registry/schema\";\n\nexport const meta = defineMeta({\n name: \"tooltip\",\n title: \"Tooltip\",\n description: \"A short label revealed on hover or keyboard focus.\",\n category: \"overlay\",\n status: \"stable\",\n dependencies: [\"radix-ui\"],\n registryDependencies: [],\n files: [\"tooltip.tsx\"],\n a11y:\n \"Opens on focus as well as hover, and Escape dismisses it. Never put essential or \" +\n \"interactive content in a tooltip: it is unreachable on touch and vanishes on blur. For an \" +\n \"icon-only button, prefer aria-label for the name and use the tooltip only to repeat it \" +\n \"visually.\",\n});\n"],"mappings":";;AAEA,MAAa,OAAO,WAAW;CAC7B,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;CACV,QAAQ;CACR,cAAc,CAAC,UAAU;CACzB,sBAAsB,CAAC;CACvB,OAAO,CAAC,aAAa;CACrB,MACE;AAIJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Tooltip } from "radix-ui";
2
+ import { ComponentPropsWithRef } from "react";
3
+ //#region src/components/tooltip/tooltip.d.ts
4
+ /**
5
+ * A short label revealed on hover or focus.
6
+ *
7
+ * A tooltip supplements a control that is already understandable — it must
8
+ * never be the only place information appears, because it is unreachable on
9
+ * touch devices and disappears the moment attention moves. If the content is
10
+ * essential, put it in the interface.
11
+ */
12
+ declare const TooltipProvider: import("react").FC<Tooltip.TooltipProviderProps>;
13
+ declare const TooltipTrigger: import("react").ForwardRefExoticComponent<Tooltip.TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
14
+ type TooltipProps = ComponentPropsWithRef<typeof Tooltip.Root>;
15
+ /**
16
+ * Self-providing, so a single tooltip works without app-level setup. Wrap a
17
+ * subtree in TooltipProvider to share open/close timing across many tooltips.
18
+ */
19
+ declare function Tooltip$1({ children, ...props }: TooltipProps): import("react").JSX.Element;
20
+ type TooltipContentProps = ComponentPropsWithRef<typeof Tooltip.Content>;
21
+ declare function TooltipContent({ className, sideOffset, children, ...props }: TooltipContentProps): import("react").JSX.Element;
22
+ //#endregion
23
+ export { Tooltip$1 as Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipTrigger };
24
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","names":[],"sources":["../../../src/components/tooltip/tooltip.tsx"],"mappings":";;;;;;;;;;;cAea,iCAAe,GAAA,QAAA;cACf,gCAAc,0BAAA,QAAA,sCAAA,cAAA;KAEf,eAAe,6BAA6B,QAAiB;;;;;iBAMzD,YAAU,aAAa,SAAS,+BAAY,IAAA;KAQhD,sBAAsB,6BAA6B,QAAiB;iBAEhE,iBACd,WACA,YACA,aACG,SACF,sCAAmB,IAAA"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Tooltip } from "radix-ui";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/tooltip/tooltip.tsx
6
+ /**
7
+ * A short label revealed on hover or focus.
8
+ *
9
+ * A tooltip supplements a control that is already understandable — it must
10
+ * never be the only place information appears, because it is unreachable on
11
+ * touch devices and disappears the moment attention moves. If the content is
12
+ * essential, put it in the interface.
13
+ */
14
+ const TooltipProvider = Tooltip.Provider;
15
+ const TooltipTrigger = Tooltip.Trigger;
16
+ /**
17
+ * Self-providing, so a single tooltip works without app-level setup. Wrap a
18
+ * subtree in TooltipProvider to share open/close timing across many tooltips.
19
+ */
20
+ function Tooltip$1({ children, ...props }) {
21
+ return /* @__PURE__ */ jsx(Tooltip.Provider, { children: /* @__PURE__ */ jsx(Tooltip.Root, {
22
+ ...props,
23
+ children
24
+ }) });
25
+ }
26
+ function TooltipContent({ className, sideOffset = 6, children, ...props }) {
27
+ return /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Content, {
28
+ "data-slot": "tooltip-content",
29
+ sideOffset,
30
+ className: cn("z-[var(--z-tooltip)] max-w-64 rounded-md bg-foreground px-2.5 py-1.5 text-xs text-background shadow-md", "origin-[var(--radix-tooltip-content-transform-origin)] text-balance", "data-[state=closed]:animate-float-out data-[state=delayed-open]:animate-float-in", className),
31
+ ...props,
32
+ children
33
+ }) });
34
+ }
35
+ //#endregion
36
+ export { Tooltip$1 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
37
+
38
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":["TooltipPrimitive","Tooltip"],"sources":["../../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\nimport type { ComponentPropsWithRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A short label revealed on hover or focus.\n *\n * A tooltip supplements a control that is already understandable — it must\n * never be the only place information appears, because it is unreachable on\n * touch devices and disappears the moment attention moves. If the content is\n * essential, put it in the interface.\n */\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport type TooltipProps = ComponentPropsWithRef<typeof TooltipPrimitive.Root>;\n\n/**\n * Self-providing, so a single tooltip works without app-level setup. Wrap a\n * subtree in TooltipProvider to share open/close timing across many tooltips.\n */\nexport function Tooltip({ children, ...props }: TooltipProps) {\n return (\n <TooltipPrimitive.Provider>\n <TooltipPrimitive.Root {...props}>{children}</TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n}\n\nexport type TooltipContentProps = ComponentPropsWithRef<typeof TooltipPrimitive.Content>;\n\nexport function TooltipContent({\n className,\n sideOffset = 6,\n children,\n ...props\n}: TooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-[var(--z-tooltip)] max-w-64 rounded-md bg-foreground px-2.5 py-1.5 text-xs text-background shadow-md\",\n \"origin-[var(--radix-tooltip-content-transform-origin)] text-balance\",\n \"data-[state=closed]:animate-float-out data-[state=delayed-open]:animate-float-in\",\n className,\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,MAAa,kBAAkBA,QAAiB;AAChD,MAAa,iBAAiBA,QAAiB;;;;;AAQ/C,SAAgBC,UAAQ,EAAE,UAAU,GAAG,SAAuB;CAC5D,OACE,oBAACD,QAAiB,UAAlB,EAAA,UACE,oBAACA,QAAiB,MAAlB;EAAuB,GAAI;EAAQ;CAAgC,CAAA,EAC1C,CAAA;AAE/B;AAIA,SAAgB,eAAe,EAC7B,WACA,aAAa,GACb,UACA,GAAG,SACmB;CACtB,OACE,oBAACA,QAAiB,QAAlB,EAAA,UACE,oBAACA,QAAiB,SAAlB;EACE,aAAU;EACE;EACZ,WAAW,GACT,0GACA,uEACA,oFACA,SACF;EACA,GAAI;EAEH;CACuB,CAAA,EACH,CAAA;AAE7B"}