@verdify/ui 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 (443) hide show
  1. package/LICENSE +12 -0
  2. package/README.md +117 -0
  3. package/dist/components/accordion/accordion.d.ts +66 -0
  4. package/dist/components/accordion/accordion.d.ts.map +1 -0
  5. package/dist/components/accordion/accordion.js +97 -0
  6. package/dist/components/accordion/accordion.js.map +1 -0
  7. package/dist/components/accordion/accordion.variants.d.ts +9 -0
  8. package/dist/components/accordion/accordion.variants.d.ts.map +1 -0
  9. package/dist/components/accordion/accordion.variants.js +54 -0
  10. package/dist/components/accordion/accordion.variants.js.map +1 -0
  11. package/dist/components/accordion/index.d.ts +3 -0
  12. package/dist/components/accordion/index.d.ts.map +1 -0
  13. package/dist/components/accordion/index.js +25 -0
  14. package/dist/components/accordion/index.js.map +1 -0
  15. package/dist/components/agent-badge/agent-badge.d.ts +56 -0
  16. package/dist/components/agent-badge/agent-badge.d.ts.map +1 -0
  17. package/dist/components/agent-badge/agent-badge.js +35 -0
  18. package/dist/components/agent-badge/agent-badge.js.map +1 -0
  19. package/dist/components/agent-badge/agent-badge.variants.d.ts +7 -0
  20. package/dist/components/agent-badge/agent-badge.variants.d.ts.map +1 -0
  21. package/dist/components/agent-badge/agent-badge.variants.js +35 -0
  22. package/dist/components/agent-badge/agent-badge.variants.js.map +1 -0
  23. package/dist/components/agent-badge/index.d.ts +3 -0
  24. package/dist/components/agent-badge/index.d.ts.map +1 -0
  25. package/dist/components/agent-badge/index.js +11 -0
  26. package/dist/components/agent-badge/index.js.map +1 -0
  27. package/dist/components/alert/alert.d.ts +94 -0
  28. package/dist/components/alert/alert.d.ts.map +1 -0
  29. package/dist/components/alert/alert.js +105 -0
  30. package/dist/components/alert/alert.js.map +1 -0
  31. package/dist/components/alert/alert.variants.d.ts +15 -0
  32. package/dist/components/alert/alert.variants.d.ts.map +1 -0
  33. package/dist/components/alert/alert.variants.js +74 -0
  34. package/dist/components/alert/alert.variants.js.map +1 -0
  35. package/dist/components/alert/index.d.ts +3 -0
  36. package/dist/components/alert/index.d.ts.map +1 -0
  37. package/dist/components/alert/index.js +37 -0
  38. package/dist/components/alert/index.js.map +1 -0
  39. package/dist/components/avatar/avatar.d.ts +56 -0
  40. package/dist/components/avatar/avatar.d.ts.map +1 -0
  41. package/dist/components/avatar/avatar.js +107 -0
  42. package/dist/components/avatar/avatar.js.map +1 -0
  43. package/dist/components/avatar/avatar.variants.d.ts +11 -0
  44. package/dist/components/avatar/avatar.variants.d.ts.map +1 -0
  45. package/dist/components/avatar/avatar.variants.js +48 -0
  46. package/dist/components/avatar/avatar.variants.js.map +1 -0
  47. package/dist/components/avatar/index.d.ts +3 -0
  48. package/dist/components/avatar/index.d.ts.map +1 -0
  49. package/dist/components/avatar/index.js +15 -0
  50. package/dist/components/avatar/index.js.map +1 -0
  51. package/dist/components/badge/badge.d.ts +30 -0
  52. package/dist/components/badge/badge.d.ts.map +1 -0
  53. package/dist/components/badge/badge.js +33 -0
  54. package/dist/components/badge/badge.js.map +1 -0
  55. package/dist/components/badge/badge.variants.d.ts +7 -0
  56. package/dist/components/badge/badge.variants.d.ts.map +1 -0
  57. package/dist/components/badge/badge.variants.js +33 -0
  58. package/dist/components/badge/badge.variants.js.map +1 -0
  59. package/dist/components/badge/index.d.ts +3 -0
  60. package/dist/components/badge/index.d.ts.map +1 -0
  61. package/dist/components/badge/index.js +8 -0
  62. package/dist/components/badge/index.js.map +1 -0
  63. package/dist/components/breadcrumb/breadcrumb.d.ts +90 -0
  64. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  65. package/dist/components/breadcrumb/breadcrumb.js +143 -0
  66. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  67. package/dist/components/breadcrumb/breadcrumb.variants.d.ts +10 -0
  68. package/dist/components/breadcrumb/breadcrumb.variants.d.ts.map +1 -0
  69. package/dist/components/breadcrumb/breadcrumb.variants.js +41 -0
  70. package/dist/components/breadcrumb/breadcrumb.variants.js.map +1 -0
  71. package/dist/components/breadcrumb/index.d.ts +3 -0
  72. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  73. package/dist/components/breadcrumb/index.js +35 -0
  74. package/dist/components/breadcrumb/index.js.map +1 -0
  75. package/dist/components/button/button.d.ts +10 -0
  76. package/dist/components/button/button.d.ts.map +1 -0
  77. package/dist/components/button/button.js +42 -0
  78. package/dist/components/button/button.js.map +1 -0
  79. package/dist/components/button/button.variants.d.ts +6 -0
  80. package/dist/components/button/button.variants.d.ts.map +1 -0
  81. package/dist/components/button/button.variants.js +45 -0
  82. package/dist/components/button/button.variants.js.map +1 -0
  83. package/dist/components/button/index.d.ts +3 -0
  84. package/dist/components/button/index.d.ts.map +1 -0
  85. package/dist/components/button/index.js +7 -0
  86. package/dist/components/button/index.js.map +1 -0
  87. package/dist/components/card/card.d.ts +59 -0
  88. package/dist/components/card/card.d.ts.map +1 -0
  89. package/dist/components/card/card.js +101 -0
  90. package/dist/components/card/card.js.map +1 -0
  91. package/dist/components/card/card.variants.d.ts +13 -0
  92. package/dist/components/card/card.variants.d.ts.map +1 -0
  93. package/dist/components/card/card.variants.js +64 -0
  94. package/dist/components/card/card.variants.js.map +1 -0
  95. package/dist/components/card/index.d.ts +3 -0
  96. package/dist/components/card/index.d.ts.map +1 -0
  97. package/dist/components/card/index.js +35 -0
  98. package/dist/components/card/index.js.map +1 -0
  99. package/dist/components/checkbox/checkbox.d.ts +20 -0
  100. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  101. package/dist/components/checkbox/checkbox.js +102 -0
  102. package/dist/components/checkbox/checkbox.js.map +1 -0
  103. package/dist/components/checkbox/checkbox.variants.d.ts +15 -0
  104. package/dist/components/checkbox/checkbox.variants.d.ts.map +1 -0
  105. package/dist/components/checkbox/checkbox.variants.js +70 -0
  106. package/dist/components/checkbox/checkbox.variants.js.map +1 -0
  107. package/dist/components/checkbox/index.d.ts +3 -0
  108. package/dist/components/checkbox/index.d.ts.map +1 -0
  109. package/dist/components/checkbox/index.js +11 -0
  110. package/dist/components/checkbox/index.js.map +1 -0
  111. package/dist/components/command-palette/command-palette.d.ts +76 -0
  112. package/dist/components/command-palette/command-palette.d.ts.map +1 -0
  113. package/dist/components/command-palette/command-palette.js +271 -0
  114. package/dist/components/command-palette/command-palette.js.map +1 -0
  115. package/dist/components/command-palette/command-palette.variants.d.ts +18 -0
  116. package/dist/components/command-palette/command-palette.variants.d.ts.map +1 -0
  117. package/dist/components/command-palette/command-palette.variants.js +62 -0
  118. package/dist/components/command-palette/command-palette.variants.js.map +1 -0
  119. package/dist/components/command-palette/index.d.ts +3 -0
  120. package/dist/components/command-palette/index.d.ts.map +1 -0
  121. package/dist/components/command-palette/index.js +35 -0
  122. package/dist/components/command-palette/index.js.map +1 -0
  123. package/dist/components/consent-toggle/consent-toggle.d.ts +107 -0
  124. package/dist/components/consent-toggle/consent-toggle.d.ts.map +1 -0
  125. package/dist/components/consent-toggle/consent-toggle.js +68 -0
  126. package/dist/components/consent-toggle/consent-toggle.js.map +1 -0
  127. package/dist/components/consent-toggle/consent-toggle.variants.d.ts +10 -0
  128. package/dist/components/consent-toggle/consent-toggle.variants.d.ts.map +1 -0
  129. package/dist/components/consent-toggle/consent-toggle.variants.js +29 -0
  130. package/dist/components/consent-toggle/consent-toggle.variants.js.map +1 -0
  131. package/dist/components/consent-toggle/index.d.ts +3 -0
  132. package/dist/components/consent-toggle/index.d.ts.map +1 -0
  133. package/dist/components/consent-toggle/index.js +19 -0
  134. package/dist/components/consent-toggle/index.js.map +1 -0
  135. package/dist/components/credential-card/credential-card.d.ts +144 -0
  136. package/dist/components/credential-card/credential-card.d.ts.map +1 -0
  137. package/dist/components/credential-card/credential-card.js +117 -0
  138. package/dist/components/credential-card/credential-card.js.map +1 -0
  139. package/dist/components/credential-card/credential-card.variants.d.ts +15 -0
  140. package/dist/components/credential-card/credential-card.variants.d.ts.map +1 -0
  141. package/dist/components/credential-card/credential-card.variants.js +48 -0
  142. package/dist/components/credential-card/credential-card.variants.js.map +1 -0
  143. package/dist/components/credential-card/index.d.ts +3 -0
  144. package/dist/components/credential-card/index.d.ts.map +1 -0
  145. package/dist/components/credential-card/index.js +29 -0
  146. package/dist/components/credential-card/index.js.map +1 -0
  147. package/dist/components/data-grid/data-grid.d.ts +247 -0
  148. package/dist/components/data-grid/data-grid.d.ts.map +1 -0
  149. package/dist/components/data-grid/data-grid.js +529 -0
  150. package/dist/components/data-grid/data-grid.js.map +1 -0
  151. package/dist/components/data-grid/data-grid.variants.d.ts +29 -0
  152. package/dist/components/data-grid/data-grid.variants.d.ts.map +1 -0
  153. package/dist/components/data-grid/data-grid.variants.js +110 -0
  154. package/dist/components/data-grid/data-grid.variants.js.map +1 -0
  155. package/dist/components/data-grid/index.d.ts +3 -0
  156. package/dist/components/data-grid/index.d.ts.map +1 -0
  157. package/dist/components/data-grid/index.js +59 -0
  158. package/dist/components/data-grid/index.js.map +1 -0
  159. package/dist/components/dialog/dialog.d.ts +98 -0
  160. package/dist/components/dialog/dialog.d.ts.map +1 -0
  161. package/dist/components/dialog/dialog.js +121 -0
  162. package/dist/components/dialog/dialog.js.map +1 -0
  163. package/dist/components/dialog/dialog.variants.d.ts +14 -0
  164. package/dist/components/dialog/dialog.variants.d.ts.map +1 -0
  165. package/dist/components/dialog/dialog.variants.js +71 -0
  166. package/dist/components/dialog/dialog.variants.js.map +1 -0
  167. package/dist/components/dialog/index.d.ts +3 -0
  168. package/dist/components/dialog/index.d.ts.map +1 -0
  169. package/dist/components/dialog/index.js +31 -0
  170. package/dist/components/dialog/index.js.map +1 -0
  171. package/dist/components/identity-chip/identity-chip.d.ts +121 -0
  172. package/dist/components/identity-chip/identity-chip.d.ts.map +1 -0
  173. package/dist/components/identity-chip/identity-chip.js +203 -0
  174. package/dist/components/identity-chip/identity-chip.js.map +1 -0
  175. package/dist/components/identity-chip/identity-chip.variants.d.ts +11 -0
  176. package/dist/components/identity-chip/identity-chip.variants.d.ts.map +1 -0
  177. package/dist/components/identity-chip/identity-chip.variants.js +61 -0
  178. package/dist/components/identity-chip/identity-chip.variants.js.map +1 -0
  179. package/dist/components/identity-chip/index.d.ts +3 -0
  180. package/dist/components/identity-chip/index.d.ts.map +1 -0
  181. package/dist/components/identity-chip/index.js +21 -0
  182. package/dist/components/identity-chip/index.js.map +1 -0
  183. package/dist/components/input/index.d.ts +3 -0
  184. package/dist/components/input/index.d.ts.map +1 -0
  185. package/dist/components/input/index.js +11 -0
  186. package/dist/components/input/index.js.map +1 -0
  187. package/dist/components/input/input.d.ts +17 -0
  188. package/dist/components/input/input.d.ts.map +1 -0
  189. package/dist/components/input/input.js +71 -0
  190. package/dist/components/input/input.js.map +1 -0
  191. package/dist/components/input/input.variants.d.ts +11 -0
  192. package/dist/components/input/input.variants.d.ts.map +1 -0
  193. package/dist/components/input/input.variants.js +64 -0
  194. package/dist/components/input/input.variants.js.map +1 -0
  195. package/dist/components/label/index.d.ts +3 -0
  196. package/dist/components/label/index.d.ts.map +1 -0
  197. package/dist/components/label/index.js +13 -0
  198. package/dist/components/label/index.js.map +1 -0
  199. package/dist/components/label/label.d.ts +16 -0
  200. package/dist/components/label/label.d.ts.map +1 -0
  201. package/dist/components/label/label.js +27 -0
  202. package/dist/components/label/label.js.map +1 -0
  203. package/dist/components/label/label.variants.d.ts +8 -0
  204. package/dist/components/label/label.variants.d.ts.map +1 -0
  205. package/dist/components/label/label.variants.js +27 -0
  206. package/dist/components/label/label.variants.js.map +1 -0
  207. package/dist/components/menu/index.d.ts +3 -0
  208. package/dist/components/menu/index.d.ts.map +1 -0
  209. package/dist/components/menu/index.js +43 -0
  210. package/dist/components/menu/index.js.map +1 -0
  211. package/dist/components/menu/menu.d.ts +115 -0
  212. package/dist/components/menu/menu.d.ts.map +1 -0
  213. package/dist/components/menu/menu.js +130 -0
  214. package/dist/components/menu/menu.js.map +1 -0
  215. package/dist/components/menu/menu.variants.d.ts +13 -0
  216. package/dist/components/menu/menu.variants.d.ts.map +1 -0
  217. package/dist/components/menu/menu.variants.js +56 -0
  218. package/dist/components/menu/menu.variants.js.map +1 -0
  219. package/dist/components/pagination/index.d.ts +3 -0
  220. package/dist/components/pagination/index.d.ts.map +1 -0
  221. package/dist/components/pagination/index.js +37 -0
  222. package/dist/components/pagination/index.js.map +1 -0
  223. package/dist/components/pagination/pagination.d.ts +118 -0
  224. package/dist/components/pagination/pagination.d.ts.map +1 -0
  225. package/dist/components/pagination/pagination.js +204 -0
  226. package/dist/components/pagination/pagination.js.map +1 -0
  227. package/dist/components/pagination/pagination.variants.d.ts +13 -0
  228. package/dist/components/pagination/pagination.variants.d.ts.map +1 -0
  229. package/dist/components/pagination/pagination.variants.js +63 -0
  230. package/dist/components/pagination/pagination.variants.js.map +1 -0
  231. package/dist/components/popover/index.d.ts +3 -0
  232. package/dist/components/popover/index.d.ts.map +1 -0
  233. package/dist/components/popover/index.js +39 -0
  234. package/dist/components/popover/index.js.map +1 -0
  235. package/dist/components/popover/popover.d.ts +92 -0
  236. package/dist/components/popover/popover.d.ts.map +1 -0
  237. package/dist/components/popover/popover.js +135 -0
  238. package/dist/components/popover/popover.js.map +1 -0
  239. package/dist/components/popover/popover.variants.d.ts +9 -0
  240. package/dist/components/popover/popover.variants.d.ts.map +1 -0
  241. package/dist/components/popover/popover.variants.js +19 -0
  242. package/dist/components/popover/popover.variants.js.map +1 -0
  243. package/dist/components/progress/index.d.ts +3 -0
  244. package/dist/components/progress/index.d.ts.map +1 -0
  245. package/dist/components/progress/index.js +23 -0
  246. package/dist/components/progress/index.js.map +1 -0
  247. package/dist/components/progress/progress.d.ts +71 -0
  248. package/dist/components/progress/progress.d.ts.map +1 -0
  249. package/dist/components/progress/progress.js +91 -0
  250. package/dist/components/progress/progress.js.map +1 -0
  251. package/dist/components/progress/progress.variants.d.ts +14 -0
  252. package/dist/components/progress/progress.variants.d.ts.map +1 -0
  253. package/dist/components/progress/progress.variants.js +37 -0
  254. package/dist/components/progress/progress.variants.js.map +1 -0
  255. package/dist/components/radio/index.d.ts +3 -0
  256. package/dist/components/radio/index.d.ts.map +1 -0
  257. package/dist/components/radio/index.js +22 -0
  258. package/dist/components/radio/index.js.map +1 -0
  259. package/dist/components/radio/radio.d.ts +23 -0
  260. package/dist/components/radio/radio.d.ts.map +1 -0
  261. package/dist/components/radio/radio.js +183 -0
  262. package/dist/components/radio/radio.js.map +1 -0
  263. package/dist/components/radio/radio.variants.d.ts +17 -0
  264. package/dist/components/radio/radio.variants.d.ts.map +1 -0
  265. package/dist/components/radio/radio.variants.js +60 -0
  266. package/dist/components/radio/radio.variants.js.map +1 -0
  267. package/dist/components/select/index.d.ts +3 -0
  268. package/dist/components/select/index.d.ts.map +1 -0
  269. package/dist/components/select/index.js +9 -0
  270. package/dist/components/select/index.js.map +1 -0
  271. package/dist/components/select/select.d.ts +27 -0
  272. package/dist/components/select/select.d.ts.map +1 -0
  273. package/dist/components/select/select.js +145 -0
  274. package/dist/components/select/select.js.map +1 -0
  275. package/dist/components/select/select.variants.d.ts +18 -0
  276. package/dist/components/select/select.variants.d.ts.map +1 -0
  277. package/dist/components/select/select.variants.js +102 -0
  278. package/dist/components/select/select.variants.js.map +1 -0
  279. package/dist/components/separator/index.d.ts +3 -0
  280. package/dist/components/separator/index.d.ts.map +1 -0
  281. package/dist/components/separator/index.js +15 -0
  282. package/dist/components/separator/index.js.map +1 -0
  283. package/dist/components/separator/separator.d.ts +23 -0
  284. package/dist/components/separator/separator.d.ts.map +1 -0
  285. package/dist/components/separator/separator.js +61 -0
  286. package/dist/components/separator/separator.js.map +1 -0
  287. package/dist/components/separator/separator.variants.d.ts +13 -0
  288. package/dist/components/separator/separator.variants.d.ts.map +1 -0
  289. package/dist/components/separator/separator.variants.js +46 -0
  290. package/dist/components/separator/separator.variants.js.map +1 -0
  291. package/dist/components/sheet/index.d.ts +3 -0
  292. package/dist/components/sheet/index.d.ts.map +1 -0
  293. package/dist/components/sheet/index.js +31 -0
  294. package/dist/components/sheet/index.js.map +1 -0
  295. package/dist/components/sheet/sheet.d.ts +102 -0
  296. package/dist/components/sheet/sheet.d.ts.map +1 -0
  297. package/dist/components/sheet/sheet.js +120 -0
  298. package/dist/components/sheet/sheet.js.map +1 -0
  299. package/dist/components/sheet/sheet.variants.d.ts +15 -0
  300. package/dist/components/sheet/sheet.variants.d.ts.map +1 -0
  301. package/dist/components/sheet/sheet.variants.js +97 -0
  302. package/dist/components/sheet/sheet.variants.js.map +1 -0
  303. package/dist/components/sidebar/index.d.ts +3 -0
  304. package/dist/components/sidebar/index.d.ts.map +1 -0
  305. package/dist/components/sidebar/index.js +43 -0
  306. package/dist/components/sidebar/index.js.map +1 -0
  307. package/dist/components/sidebar/sidebar.d.ts +114 -0
  308. package/dist/components/sidebar/sidebar.d.ts.map +1 -0
  309. package/dist/components/sidebar/sidebar.js +202 -0
  310. package/dist/components/sidebar/sidebar.js.map +1 -0
  311. package/dist/components/sidebar/sidebar.variants.d.ts +19 -0
  312. package/dist/components/sidebar/sidebar.variants.d.ts.map +1 -0
  313. package/dist/components/sidebar/sidebar.variants.js +93 -0
  314. package/dist/components/sidebar/sidebar.variants.js.map +1 -0
  315. package/dist/components/skeleton/index.d.ts +3 -0
  316. package/dist/components/skeleton/index.d.ts.map +1 -0
  317. package/dist/components/skeleton/index.js +15 -0
  318. package/dist/components/skeleton/index.js.map +1 -0
  319. package/dist/components/skeleton/skeleton.d.ts +42 -0
  320. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  321. package/dist/components/skeleton/skeleton.js +54 -0
  322. package/dist/components/skeleton/skeleton.js.map +1 -0
  323. package/dist/components/skeleton/skeleton.variants.d.ts +9 -0
  324. package/dist/components/skeleton/skeleton.variants.d.ts.map +1 -0
  325. package/dist/components/skeleton/skeleton.variants.js +31 -0
  326. package/dist/components/skeleton/skeleton.variants.js.map +1 -0
  327. package/dist/components/spinner/index.d.ts +3 -0
  328. package/dist/components/spinner/index.d.ts.map +1 -0
  329. package/dist/components/spinner/index.js +13 -0
  330. package/dist/components/spinner/index.js.map +1 -0
  331. package/dist/components/spinner/spinner.d.ts +41 -0
  332. package/dist/components/spinner/spinner.d.ts.map +1 -0
  333. package/dist/components/spinner/spinner.js +48 -0
  334. package/dist/components/spinner/spinner.js.map +1 -0
  335. package/dist/components/spinner/spinner.variants.d.ts +8 -0
  336. package/dist/components/spinner/spinner.variants.d.ts.map +1 -0
  337. package/dist/components/spinner/spinner.variants.js +32 -0
  338. package/dist/components/spinner/spinner.variants.js.map +1 -0
  339. package/dist/components/switch/index.d.ts +3 -0
  340. package/dist/components/switch/index.d.ts.map +1 -0
  341. package/dist/components/switch/index.js +15 -0
  342. package/dist/components/switch/index.js.map +1 -0
  343. package/dist/components/switch/switch.d.ts +20 -0
  344. package/dist/components/switch/switch.d.ts.map +1 -0
  345. package/dist/components/switch/switch.js +107 -0
  346. package/dist/components/switch/switch.js.map +1 -0
  347. package/dist/components/switch/switch.variants.d.ts +14 -0
  348. package/dist/components/switch/switch.variants.d.ts.map +1 -0
  349. package/dist/components/switch/switch.variants.js +69 -0
  350. package/dist/components/switch/switch.variants.js.map +1 -0
  351. package/dist/components/table/index.d.ts +3 -0
  352. package/dist/components/table/index.d.ts.map +1 -0
  353. package/dist/components/table/index.js +51 -0
  354. package/dist/components/table/index.js.map +1 -0
  355. package/dist/components/table/table.d.ts +173 -0
  356. package/dist/components/table/table.d.ts.map +1 -0
  357. package/dist/components/table/table.js +172 -0
  358. package/dist/components/table/table.js.map +1 -0
  359. package/dist/components/table/table.variants.d.ts +39 -0
  360. package/dist/components/table/table.variants.d.ts.map +1 -0
  361. package/dist/components/table/table.variants.js +124 -0
  362. package/dist/components/table/table.variants.js.map +1 -0
  363. package/dist/components/tabs/index.d.ts +3 -0
  364. package/dist/components/tabs/index.d.ts.map +1 -0
  365. package/dist/components/tabs/index.js +21 -0
  366. package/dist/components/tabs/index.js.map +1 -0
  367. package/dist/components/tabs/tabs.d.ts +66 -0
  368. package/dist/components/tabs/tabs.d.ts.map +1 -0
  369. package/dist/components/tabs/tabs.js +81 -0
  370. package/dist/components/tabs/tabs.js.map +1 -0
  371. package/dist/components/tabs/tabs.variants.d.ts +15 -0
  372. package/dist/components/tabs/tabs.variants.d.ts.map +1 -0
  373. package/dist/components/tabs/tabs.variants.js +98 -0
  374. package/dist/components/tabs/tabs.variants.js.map +1 -0
  375. package/dist/components/textarea/index.d.ts +3 -0
  376. package/dist/components/textarea/index.d.ts.map +1 -0
  377. package/dist/components/textarea/index.js +7 -0
  378. package/dist/components/textarea/index.js.map +1 -0
  379. package/dist/components/textarea/textarea.d.ts +18 -0
  380. package/dist/components/textarea/textarea.d.ts.map +1 -0
  381. package/dist/components/textarea/textarea.js +136 -0
  382. package/dist/components/textarea/textarea.js.map +1 -0
  383. package/dist/components/textarea/textarea.variants.d.ts +6 -0
  384. package/dist/components/textarea/textarea.variants.d.ts.map +1 -0
  385. package/dist/components/textarea/textarea.variants.js +53 -0
  386. package/dist/components/textarea/textarea.variants.js.map +1 -0
  387. package/dist/components/toast/index.d.ts +3 -0
  388. package/dist/components/toast/index.d.ts.map +1 -0
  389. package/dist/components/toast/index.js +43 -0
  390. package/dist/components/toast/index.js.map +1 -0
  391. package/dist/components/toast/toast.d.ts +140 -0
  392. package/dist/components/toast/toast.d.ts.map +1 -0
  393. package/dist/components/toast/toast.js +123 -0
  394. package/dist/components/toast/toast.js.map +1 -0
  395. package/dist/components/toast/toast.variants.d.ts +16 -0
  396. package/dist/components/toast/toast.variants.d.ts.map +1 -0
  397. package/dist/components/toast/toast.variants.js +77 -0
  398. package/dist/components/toast/toast.variants.js.map +1 -0
  399. package/dist/components/tooltip/index.d.ts +3 -0
  400. package/dist/components/tooltip/index.d.ts.map +1 -0
  401. package/dist/components/tooltip/index.js +16 -0
  402. package/dist/components/tooltip/index.js.map +1 -0
  403. package/dist/components/tooltip/tooltip.d.ts +81 -0
  404. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  405. package/dist/components/tooltip/tooltip.js +44 -0
  406. package/dist/components/tooltip/tooltip.js.map +1 -0
  407. package/dist/components/tooltip/tooltip.variants.d.ts +3 -0
  408. package/dist/components/tooltip/tooltip.variants.d.ts.map +1 -0
  409. package/dist/components/tooltip/tooltip.variants.js +7 -0
  410. package/dist/components/tooltip/tooltip.variants.js.map +1 -0
  411. package/dist/components/trust-score/index.d.ts +3 -0
  412. package/dist/components/trust-score/index.d.ts.map +1 -0
  413. package/dist/components/trust-score/index.js +11 -0
  414. package/dist/components/trust-score/index.js.map +1 -0
  415. package/dist/components/trust-score/trust-score.d.ts +100 -0
  416. package/dist/components/trust-score/trust-score.d.ts.map +1 -0
  417. package/dist/components/trust-score/trust-score.js +146 -0
  418. package/dist/components/trust-score/trust-score.js.map +1 -0
  419. package/dist/components/trust-score/trust-score.variants.d.ts +16 -0
  420. package/dist/components/trust-score/trust-score.variants.d.ts.map +1 -0
  421. package/dist/components/trust-score/trust-score.variants.js +50 -0
  422. package/dist/components/trust-score/trust-score.variants.js.map +1 -0
  423. package/dist/components/verified-badge/index.d.ts +3 -0
  424. package/dist/components/verified-badge/index.d.ts.map +1 -0
  425. package/dist/components/verified-badge/index.js +15 -0
  426. package/dist/components/verified-badge/index.js.map +1 -0
  427. package/dist/components/verified-badge/verified-badge.d.ts +55 -0
  428. package/dist/components/verified-badge/verified-badge.d.ts.map +1 -0
  429. package/dist/components/verified-badge/verified-badge.js +67 -0
  430. package/dist/components/verified-badge/verified-badge.js.map +1 -0
  431. package/dist/components/verified-badge/verified-badge.variants.d.ts +11 -0
  432. package/dist/components/verified-badge/verified-badge.variants.d.ts.map +1 -0
  433. package/dist/components/verified-badge/verified-badge.variants.js +45 -0
  434. package/dist/components/verified-badge/verified-badge.variants.js.map +1 -0
  435. package/dist/index.d.ts +39 -0
  436. package/dist/index.d.ts.map +1 -0
  437. package/dist/index.js +322 -0
  438. package/dist/index.js.map +1 -0
  439. package/dist/lib/cn.d.ts +3 -0
  440. package/dist/lib/cn.d.ts.map +1 -0
  441. package/dist/lib/cn.js +24 -0
  442. package/dist/lib/cn.js.map +1 -0
  443. package/package.json +74 -0
@@ -0,0 +1,43 @@
1
+ import {
2
+ ToastProvider,
3
+ ToastViewport,
4
+ Toast,
5
+ ToastIcon,
6
+ ToastContent,
7
+ ToastTitle,
8
+ ToastDescription,
9
+ ToastAction,
10
+ ToastClose
11
+ } from "./toast";
12
+ import {
13
+ toastViewportClass,
14
+ toastVariants,
15
+ toastIconVariants,
16
+ toastContentClass,
17
+ toastTitleClass,
18
+ toastDescriptionClass,
19
+ toastActionClass,
20
+ toastCloseClass,
21
+ toastCloseGlyphClass
22
+ } from "./toast.variants";
23
+ export {
24
+ Toast,
25
+ ToastAction,
26
+ ToastClose,
27
+ ToastContent,
28
+ ToastDescription,
29
+ ToastIcon,
30
+ ToastProvider,
31
+ ToastTitle,
32
+ ToastViewport,
33
+ toastActionClass,
34
+ toastCloseClass,
35
+ toastCloseGlyphClass,
36
+ toastContentClass,
37
+ toastDescriptionClass,
38
+ toastIconVariants,
39
+ toastTitleClass,
40
+ toastVariants,
41
+ toastViewportClass
42
+ };
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export {\n ToastProvider,\n ToastViewport,\n Toast,\n ToastIcon,\n ToastContent,\n ToastTitle,\n ToastDescription,\n ToastAction,\n ToastClose,\n type ToastProviderProps,\n type ToastViewportProps,\n type ToastProps,\n type ToastIconProps,\n type ToastContentProps,\n type ToastTitleProps,\n type ToastDescriptionProps,\n type ToastActionProps,\n type ToastCloseProps,\n} from \"./toast\";\nexport {\n toastViewportClass,\n toastVariants,\n toastIconVariants,\n toastContentClass,\n toastTitleClass,\n toastDescriptionClass,\n toastActionClass,\n toastCloseClass,\n toastCloseGlyphClass,\n type ToastVariantProps,\n} from \"./toast.variants\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAUK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
@@ -0,0 +1,140 @@
1
+ import * as React from "react";
2
+ import { Toast as ToastPrimitive } from "radix-ui";
3
+ import { type ToastVariantProps } from "./toast.variants";
4
+ type ToastVariant = NonNullable<ToastVariantProps["variant"]>;
5
+ export interface ToastProviderProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Provider> {
6
+ }
7
+ /**
8
+ * The queue + announcement manager for a surface's toasts (spec §2 region). Wraps the Radix Toast
9
+ * provider — a stateful primitive owning the stack, the auto-dismiss timers, and the swipe context,
10
+ * so this file is `'use client'`. One per surface. `swipeDirection="right"` makes a toast
11
+ * swipe-dismissable toward the inline-end edge (spec §4 swipe dismissal); `label` names the region
12
+ * landmark for screen readers (spec §7). The region owns the announcement behavior so individual
13
+ * toasts do not each fight to be read (spec §2).
14
+ */
15
+ export declare function ToastProvider({ swipeDirection, label, children, ...props }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
16
+ export interface ToastViewportProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport> {
17
+ }
18
+ /**
19
+ * The corner-anchored live region that holds the stack of toasts (spec §2 region, §7). Rendered as
20
+ * an `<ol>` with `role="region"` (Radix) — the landmark a screen-reader or keyboard user jumps to.
21
+ *
22
+ * The keyboard "jump to notifications" key is pinned to `F6` to honor the frozen spec §6, overriding
23
+ * Radix's default `F8` (the hotkey is configurable, so this is a setting, not a behavior deviation).
24
+ * On the jump, focus moves into the region; pressing it again returns focus to where you were
25
+ * (Radix). The region sits on the dedicated `--z-index-toast` layer above page content, NOT the
26
+ * modal layer the overlays use — a toast floats over content without the inert/scrim modality of a
27
+ * Dialog.
28
+ */
29
+ export declare const ToastViewport: React.ForwardRefExoticComponent<ToastViewportProps & React.RefAttributes<HTMLOListElement>>;
30
+ export interface ToastProps extends Omit<React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>, "type">, ToastVariantProps {
31
+ /**
32
+ * The type the toast reports (spec §3): `verified` (an action succeeded or a claim is now proven —
33
+ * the in-product Verified Green status, NEVER the brand), `signal` (default — a neutral,
34
+ * informational result that needs no action), `caution` (a non-blocking warning completed with a
35
+ * caveat), or `critical` (a failure or error). The variant sets the border accent and the paired
36
+ * icon, and drives the announcement politeness; it never sets the brand color (brand != state).
37
+ */
38
+ variant?: ToastVariant;
39
+ }
40
+ /**
41
+ * Toast is a brief, transient message that floats over the page to confirm an action or report an
42
+ * async result without taking focus or blocking the page (spec §1). Use it for a passing
43
+ * acknowledgement — "Profile saved", "Link copied"; use Alert for a message that must persist in the
44
+ * layout, and a Dialog for a choice that must be answered before continuing.
45
+ *
46
+ * It is a feedback surface, not the brand: its color comes from the status it reports, never from
47
+ * Sovereign Violet — the brand violet is never a status, and a `verified` toast is the green status,
48
+ * never a branded moment (spec §3/§8, brand != state). The status is carried by the border color AND
49
+ * the per-variant icon AND the message text, so it survives for a reader who cannot perceive color
50
+ * (WCAG 1.4.1). Wraps the Radix Toast primitive (a stateful primitive — portal, queue, swipe, and
51
+ * the offscreen announce live region), so this file is `'use client'`.
52
+ *
53
+ * Severity drives announcement politeness (spec §7/§8): `critical` maps to Radix `type="foreground"`
54
+ * (the announce region is `aria-live="assertive"` — a failure must not be missed), while `verified`,
55
+ * `signal`, and `caution` map to `type="background"` (`aria-live="polite"` — a routine result waits
56
+ * for a pause and never interrupts). The toast does NOT take focus on appearance; the page's focus
57
+ * stays put, and the result is announced through the offscreen live region (WCAG 4.1.3).
58
+ *
59
+ * RADIX-VS-SPEC DEVIATION (skill step E): spec §7 names `role="alert"` for the `critical` type. The
60
+ * Radix Toast renders a single offscreen announce node as `role="status"` and switches only its
61
+ * `aria-live` by the toast `type` — so `critical` announces via `role="status"` + `aria-live="assertive"`
62
+ * rather than `role="alert"`. Both are APG-conformant (an alert role IS an implicit assertive live
63
+ * region; an explicit `aria-live="assertive"` on a status region produces the same announcement),
64
+ * and hand-rolling the announce node to emit `role="alert"` would mean abandoning the Radix queue and
65
+ * focus model. We ACCEPT the Radix behavior and PIN it with a dedicated test asserting the assertive
66
+ * politeness on `critical`; the spec note is to be amended.
67
+ *
68
+ * RADIX-VS-SPEC DEVIATION (skill step E): spec §7 also names `aria-atomic="true"` on the region "so
69
+ * the whole message is read, not a fragment". Radix does NOT set `aria-atomic` on its `role="status"`
70
+ * announce node; instead it CLONES the toast subtree's text (title + description, action `altText`)
71
+ * into the offscreen announce node as a single batch of children injected in one render — so the
72
+ * whole message is composed and announced as one unit, which IS the intent `aria-atomic` encodes (an
73
+ * atomic announcement is only needed to coalesce piecemeal updates to a persistent region; Radix's
74
+ * announce node is populated once, not mutated fragment-by-fragment). The live region is that
75
+ * offscreen announce node, not the viewport `<ol>` landmark, and Radix does not forward arbitrary
76
+ * `aria-*` onto it — hand-rolling the announce node to carry `aria-atomic` would mean abandoning the
77
+ * Radix queue + announce model. We ACCEPT the Radix behavior and PIN it with a dedicated test
78
+ * documenting that the announce-clone (not a literal `aria-atomic`) satisfies §7's intent; the spec
79
+ * note is to be amended.
80
+ */
81
+ export declare const Toast: React.ForwardRefExoticComponent<ToastProps & React.RefAttributes<HTMLLIElement>>;
82
+ export interface ToastIconProps extends React.HTMLAttributes<HTMLSpanElement> {
83
+ }
84
+ /**
85
+ * The optional type icon that reinforces the status (spec §2). It pairs with the variant color and
86
+ * the message text so the status is never the only carrier of meaning, since status is not conveyed
87
+ * by color or icon alone (WCAG 1.4.1). Decorative — `aria-hidden`, so it is not announced twice; the
88
+ * message text carries the status if the icon is dropped. Being decorative, it takes the BRIGHT
89
+ * variant accent color (tokens 0.6.0) via the ToastContext, at the md icon role.
90
+ */
91
+ export declare const ToastIcon: React.ForwardRefExoticComponent<ToastIconProps & React.RefAttributes<HTMLSpanElement>>;
92
+ export interface ToastContentProps extends React.HTMLAttributes<HTMLDivElement> {
93
+ }
94
+ /**
95
+ * The stacking message column (spec §2): wraps the message and any secondary line so they stack
96
+ * vertically beside the leading icon. `min-w-0` lets long message text wrap instead of overflowing
97
+ * the row, and `flex-1` lets it take the available width before the action and dismiss controls.
98
+ */
99
+ export declare const ToastContent: React.ForwardRefExoticComponent<ToastContentProps & React.RefAttributes<HTMLDivElement>>;
100
+ export interface ToastTitleProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title> {
101
+ }
102
+ /**
103
+ * The required message (spec §2): a plain statement ending in a period; for a failure it names what
104
+ * failed and what to do next and never blames you. It IS the toast's accessible name, wired to the
105
+ * toast via `aria-labelledby` by Radix (spec §7). The body type role in primary text.
106
+ */
107
+ export declare const ToastTitle: React.ForwardRefExoticComponent<ToastTitleProps & React.RefAttributes<HTMLDivElement>>;
108
+ export interface ToastDescriptionProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description> {
109
+ }
110
+ /**
111
+ * The optional secondary message line under the message (spec §2). Associated with the toast for
112
+ * screen readers via `aria-describedby` (Radix). The body type role in secondary text (spec §5).
113
+ */
114
+ export declare const ToastDescription: React.ForwardRefExoticComponent<ToastDescriptionProps & React.RefAttributes<HTMLDivElement>>;
115
+ export interface ToastActionProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Action> {
116
+ }
117
+ /**
118
+ * The optional inline action (spec §2/§6): at most one, phrased as a verb ("Undo", "View"). A real
119
+ * native `<button>` (Radix ToastAction) so it is named, focusable, and operable on Enter / Space; it
120
+ * dismisses the toast on activation. A toast is not a place for a primary decision — if a choice is
121
+ * required, reach for a Dialog instead (spec §2/§8). Requires `altText`: a short description for
122
+ * screen-reader users who will not navigate to the button quickly (Radix). A neutral ghost surface
123
+ * at the label type role so it never competes with the status accent.
124
+ */
125
+ export declare const ToastAction: React.ForwardRefExoticComponent<ToastActionProps & React.RefAttributes<HTMLButtonElement>>;
126
+ export interface ToastCloseProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close> {
127
+ /** The accessible name for the close control (spec §7). Defaults to `"Dismiss"`. */
128
+ "aria-label"?: string;
129
+ }
130
+ /**
131
+ * The optional dismiss control (spec §2/§6/§7): an explicit close for toasts that do not auto-dismiss
132
+ * and for pointer users clearing one early. A real native `<button>` (Radix ToastClose) so it is a
133
+ * focus stop and activates on Enter / Space for free; closing flows through the toast's
134
+ * `onOpenChange(false)` and returns focus to where it was (Radix). It has an accessible name (default
135
+ * "Dismiss") and a decorative `aria-hidden` glyph (the placeholder is never the name). A neutral ghost
136
+ * icon-button with the square target-size floor and the persistent focus ring.
137
+ */
138
+ export declare const ToastClose: React.ForwardRefExoticComponent<ToastCloseProps & React.RefAttributes<HTMLButtonElement>>;
139
+ export {};
140
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/components/toast/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,KAAK,YAAY,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAO9D,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC;CAAG;AAE3E;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,cAAwB,EACxB,KAAuB,EACvB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAMpB;AAED,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC;CAAG;AAE3E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,6FAYxB,CAAC;AAEH,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,EAC9E,iBAAiB;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,KAAK,kFAgBhB,CAAC;AAEH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CAAG;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,wFAYrB,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAElF;;;;GAIG;AACH,eAAO,MAAM,YAAY,0FAIxB,CAAC;AAEF,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC;CAAG;AAExE;;;;GAIG;AACH,eAAO,MAAM,UAAU,wFAKrB,CAAC;AAEH,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC;CAAG;AAE9E;;;GAGG;AACH,eAAO,MAAM,gBAAgB,8FAW3B,CAAC;AAEH,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC;CAAG;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,4FAOtB,CAAC;AAqBH,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC;IACnE,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,2FAiBrB,CAAC"}
@@ -0,0 +1,123 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Toast as ToastPrimitive } from "radix-ui";
5
+ import { cn } from "../../lib/cn";
6
+ import {
7
+ toastViewportClass,
8
+ toastVariants,
9
+ toastIconVariants,
10
+ toastContentClass,
11
+ toastTitleClass,
12
+ toastDescriptionClass,
13
+ toastActionClass,
14
+ toastCloseClass,
15
+ toastCloseGlyphClass
16
+ } from "./toast.variants";
17
+ const ToastContext = React.createContext({ variant: "signal" });
18
+ function ToastProvider({
19
+ swipeDirection = "right",
20
+ label = "Notifications",
21
+ children,
22
+ ...props
23
+ }) {
24
+ return /* @__PURE__ */ jsx(ToastPrimitive.Provider, { swipeDirection, label, ...props, children });
25
+ }
26
+ const ToastViewport = React.forwardRef(function ToastViewport2({ className, hotkey = ["F6"], ...props }, ref) {
27
+ return /* @__PURE__ */ jsx(
28
+ ToastPrimitive.Viewport,
29
+ {
30
+ ref,
31
+ hotkey,
32
+ className: cn(toastViewportClass, className),
33
+ ...props
34
+ }
35
+ );
36
+ });
37
+ const Toast = React.forwardRef(function Toast2({ className, variant = "signal", ...props }, ref) {
38
+ const type = variant === "critical" ? "foreground" : "background";
39
+ return /* @__PURE__ */ jsx(ToastContext.Provider, { value: { variant }, children: /* @__PURE__ */ jsx(
40
+ ToastPrimitive.Root,
41
+ {
42
+ ref,
43
+ type,
44
+ className: cn(toastVariants({ variant }), className),
45
+ ...props
46
+ }
47
+ ) });
48
+ });
49
+ const ToastIcon = React.forwardRef(
50
+ function ToastIcon2({ className, ...props }, ref) {
51
+ const { variant } = React.useContext(ToastContext);
52
+ return /* @__PURE__ */ jsx(
53
+ "span",
54
+ {
55
+ ref,
56
+ "aria-hidden": "true",
57
+ className: cn(toastIconVariants({ variant }), className),
58
+ ...props
59
+ }
60
+ );
61
+ }
62
+ );
63
+ const ToastContent = React.forwardRef(
64
+ function ToastContent2({ className, ...props }, ref) {
65
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(toastContentClass, className), ...props });
66
+ }
67
+ );
68
+ const ToastTitle = React.forwardRef(function ToastTitle2({ className, ...props }, ref) {
69
+ return /* @__PURE__ */ jsx(ToastPrimitive.Title, { ref, className: cn(toastTitleClass, className), ...props });
70
+ });
71
+ const ToastDescription = React.forwardRef(function ToastDescription2({ className, ...props }, ref) {
72
+ return /* @__PURE__ */ jsx(
73
+ ToastPrimitive.Description,
74
+ {
75
+ ref,
76
+ className: cn(toastDescriptionClass, className),
77
+ ...props
78
+ }
79
+ );
80
+ });
81
+ const ToastAction = React.forwardRef(function ToastAction2({ className, ...props }, ref) {
82
+ return /* @__PURE__ */ jsx(ToastPrimitive.Action, { ref, className: cn(toastActionClass, className), ...props });
83
+ });
84
+ function CloseGlyph() {
85
+ return /* @__PURE__ */ jsx(
86
+ "svg",
87
+ {
88
+ "data-testid": "toast-close-glyph",
89
+ "aria-hidden": "true",
90
+ viewBox: "0 0 24 24",
91
+ fill: "none",
92
+ stroke: "currentColor",
93
+ strokeWidth: 2,
94
+ strokeLinecap: "round",
95
+ className: toastCloseGlyphClass,
96
+ children: /* @__PURE__ */ jsx("path", { d: "M18 6 6 18M6 6l12 12" })
97
+ }
98
+ );
99
+ }
100
+ const ToastClose = React.forwardRef(function ToastClose2({ className, children, "aria-label": ariaLabel = "Dismiss", ...props }, ref) {
101
+ return /* @__PURE__ */ jsx(
102
+ ToastPrimitive.Close,
103
+ {
104
+ ref,
105
+ "aria-label": ariaLabel,
106
+ className: cn(toastCloseClass, className),
107
+ ...props,
108
+ children: children ?? /* @__PURE__ */ jsx(CloseGlyph, {})
109
+ }
110
+ );
111
+ });
112
+ export {
113
+ Toast,
114
+ ToastAction,
115
+ ToastClose,
116
+ ToastContent,
117
+ ToastDescription,
118
+ ToastIcon,
119
+ ToastProvider,
120
+ ToastTitle,
121
+ ToastViewport
122
+ };
123
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/toast/toast.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Toast as ToastPrimitive } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n toastViewportClass,\n toastVariants,\n toastIconVariants,\n toastContentClass,\n toastTitleClass,\n toastDescriptionClass,\n toastActionClass,\n toastCloseClass,\n toastCloseGlyphClass,\n type ToastVariantProps,\n} from \"./toast.variants\";\n\ntype ToastVariant = NonNullable<ToastVariantProps[\"variant\"]>;\n\n// The variant set on the Toast root travels to the ToastIcon via context (the Dialog/Sheet/Tabs/\n// Accordion/Alert precedent), so the icon takes the matching status fg without the caller repeating\n// `variant` on ToastIcon.\nconst ToastContext = React.createContext<{ variant: ToastVariant }>({ variant: \"signal\" });\n\nexport interface ToastProviderProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Provider> {}\n\n/**\n * The queue + announcement manager for a surface's toasts (spec §2 region). Wraps the Radix Toast\n * provider — a stateful primitive owning the stack, the auto-dismiss timers, and the swipe context,\n * so this file is `'use client'`. One per surface. `swipeDirection=\"right\"` makes a toast\n * swipe-dismissable toward the inline-end edge (spec §4 swipe dismissal); `label` names the region\n * landmark for screen readers (spec §7). The region owns the announcement behavior so individual\n * toasts do not each fight to be read (spec §2).\n */\nexport function ToastProvider({\n swipeDirection = \"right\",\n label = \"Notifications\",\n children,\n ...props\n}: ToastProviderProps) {\n return (\n <ToastPrimitive.Provider swipeDirection={swipeDirection} label={label} {...props}>\n {children}\n </ToastPrimitive.Provider>\n );\n}\n\nexport interface ToastViewportProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport> {}\n\n/**\n * The corner-anchored live region that holds the stack of toasts (spec §2 region, §7). Rendered as\n * an `<ol>` with `role=\"region\"` (Radix) — the landmark a screen-reader or keyboard user jumps to.\n *\n * The keyboard \"jump to notifications\" key is pinned to `F6` to honor the frozen spec §6, overriding\n * Radix's default `F8` (the hotkey is configurable, so this is a setting, not a behavior deviation).\n * On the jump, focus moves into the region; pressing it again returns focus to where you were\n * (Radix). The region sits on the dedicated `--z-index-toast` layer above page content, NOT the\n * modal layer the overlays use — a toast floats over content without the inert/scrim modality of a\n * Dialog.\n */\nexport const ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Viewport>,\n ToastViewportProps\n>(function ToastViewport({ className, hotkey = [\"F6\"], ...props }, ref) {\n return (\n <ToastPrimitive.Viewport\n ref={ref}\n hotkey={hotkey}\n className={cn(toastViewportClass, className)}\n {...props}\n />\n );\n});\n\nexport interface ToastProps\n extends Omit<React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>, \"type\">,\n ToastVariantProps {\n /**\n * The type the toast reports (spec §3): `verified` (an action succeeded or a claim is now proven —\n * the in-product Verified Green status, NEVER the brand), `signal` (default — a neutral,\n * informational result that needs no action), `caution` (a non-blocking warning completed with a\n * caveat), or `critical` (a failure or error). The variant sets the border accent and the paired\n * icon, and drives the announcement politeness; it never sets the brand color (brand != state).\n */\n variant?: ToastVariant;\n}\n\n/**\n * Toast is a brief, transient message that floats over the page to confirm an action or report an\n * async result without taking focus or blocking the page (spec §1). Use it for a passing\n * acknowledgement — \"Profile saved\", \"Link copied\"; use Alert for a message that must persist in the\n * layout, and a Dialog for a choice that must be answered before continuing.\n *\n * It is a feedback surface, not the brand: its color comes from the status it reports, never from\n * Sovereign Violet — the brand violet is never a status, and a `verified` toast is the green status,\n * never a branded moment (spec §3/§8, brand != state). The status is carried by the border color AND\n * the per-variant icon AND the message text, so it survives for a reader who cannot perceive color\n * (WCAG 1.4.1). Wraps the Radix Toast primitive (a stateful primitive — portal, queue, swipe, and\n * the offscreen announce live region), so this file is `'use client'`.\n *\n * Severity drives announcement politeness (spec §7/§8): `critical` maps to Radix `type=\"foreground\"`\n * (the announce region is `aria-live=\"assertive\"` — a failure must not be missed), while `verified`,\n * `signal`, and `caution` map to `type=\"background\"` (`aria-live=\"polite\"` — a routine result waits\n * for a pause and never interrupts). The toast does NOT take focus on appearance; the page's focus\n * stays put, and the result is announced through the offscreen live region (WCAG 4.1.3).\n *\n * RADIX-VS-SPEC DEVIATION (skill step E): spec §7 names `role=\"alert\"` for the `critical` type. The\n * Radix Toast renders a single offscreen announce node as `role=\"status\"` and switches only its\n * `aria-live` by the toast `type` — so `critical` announces via `role=\"status\"` + `aria-live=\"assertive\"`\n * rather than `role=\"alert\"`. Both are APG-conformant (an alert role IS an implicit assertive live\n * region; an explicit `aria-live=\"assertive\"` on a status region produces the same announcement),\n * and hand-rolling the announce node to emit `role=\"alert\"` would mean abandoning the Radix queue and\n * focus model. We ACCEPT the Radix behavior and PIN it with a dedicated test asserting the assertive\n * politeness on `critical`; the spec note is to be amended.\n *\n * RADIX-VS-SPEC DEVIATION (skill step E): spec §7 also names `aria-atomic=\"true\"` on the region \"so\n * the whole message is read, not a fragment\". Radix does NOT set `aria-atomic` on its `role=\"status\"`\n * announce node; instead it CLONES the toast subtree's text (title + description, action `altText`)\n * into the offscreen announce node as a single batch of children injected in one render — so the\n * whole message is composed and announced as one unit, which IS the intent `aria-atomic` encodes (an\n * atomic announcement is only needed to coalesce piecemeal updates to a persistent region; Radix's\n * announce node is populated once, not mutated fragment-by-fragment). The live region is that\n * offscreen announce node, not the viewport `<ol>` landmark, and Radix does not forward arbitrary\n * `aria-*` onto it — hand-rolling the announce node to carry `aria-atomic` would mean abandoning the\n * Radix queue + announce model. We ACCEPT the Radix behavior and PIN it with a dedicated test\n * documenting that the announce-clone (not a literal `aria-atomic`) satisfies §7's intent; the spec\n * note is to be amended.\n */\nexport const Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(function Toast({ className, variant = \"signal\", ...props }, ref) {\n // severity -> Radix announce politeness: critical interrupts (assertive), the rest wait (polite)\n const type = variant === \"critical\" ? \"foreground\" : \"background\";\n return (\n <ToastContext.Provider value={{ variant }}>\n <ToastPrimitive.Root\n ref={ref}\n type={type}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n </ToastContext.Provider>\n );\n});\n\nexport interface ToastIconProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/**\n * The optional type icon that reinforces the status (spec §2). It pairs with the variant color and\n * the message text so the status is never the only carrier of meaning, since status is not conveyed\n * by color or icon alone (WCAG 1.4.1). Decorative — `aria-hidden`, so it is not announced twice; the\n * message text carries the status if the icon is dropped. Being decorative, it takes the BRIGHT\n * variant accent color (tokens 0.6.0) via the ToastContext, at the md icon role.\n */\nexport const ToastIcon = React.forwardRef<HTMLSpanElement, ToastIconProps>(\n function ToastIcon({ className, ...props }, ref) {\n const { variant } = React.useContext(ToastContext);\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={cn(toastIconVariants({ variant }), className)}\n {...props}\n />\n );\n },\n);\n\nexport interface ToastContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * The stacking message column (spec §2): wraps the message and any secondary line so they stack\n * vertically beside the leading icon. `min-w-0` lets long message text wrap instead of overflowing\n * the row, and `flex-1` lets it take the available width before the action and dismiss controls.\n */\nexport const ToastContent = React.forwardRef<HTMLDivElement, ToastContentProps>(\n function ToastContent({ className, ...props }, ref) {\n return <div ref={ref} className={cn(toastContentClass, className)} {...props} />;\n },\n);\n\nexport interface ToastTitleProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title> {}\n\n/**\n * The required message (spec §2): a plain statement ending in a period; for a failure it names what\n * failed and what to do next and never blames you. It IS the toast's accessible name, wired to the\n * toast via `aria-labelledby` by Radix (spec §7). The body type role in primary text.\n */\nexport const ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Title>,\n ToastTitleProps\n>(function ToastTitle({ className, ...props }, ref) {\n return <ToastPrimitive.Title ref={ref} className={cn(toastTitleClass, className)} {...props} />;\n});\n\nexport interface ToastDescriptionProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description> {}\n\n/**\n * The optional secondary message line under the message (spec §2). Associated with the toast for\n * screen readers via `aria-describedby` (Radix). The body type role in secondary text (spec §5).\n */\nexport const ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Description>,\n ToastDescriptionProps\n>(function ToastDescription({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Description\n ref={ref}\n className={cn(toastDescriptionClass, className)}\n {...props}\n />\n );\n});\n\nexport interface ToastActionProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Action> {}\n\n/**\n * The optional inline action (spec §2/§6): at most one, phrased as a verb (\"Undo\", \"View\"). A real\n * native `<button>` (Radix ToastAction) so it is named, focusable, and operable on Enter / Space; it\n * dismisses the toast on activation. A toast is not a place for a primary decision — if a choice is\n * required, reach for a Dialog instead (spec §2/§8). Requires `altText`: a short description for\n * screen-reader users who will not navigate to the button quickly (Radix). A neutral ghost surface\n * at the label type role so it never competes with the status accent.\n */\nexport const ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Action>,\n ToastActionProps\n>(function ToastAction({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Action ref={ref} className={cn(toastActionClass, className)} {...props} />\n );\n});\n\n// A neutral X glyph at the md icon role, drawn with currentColor so it inherits the close button's\n// ghost fg. Decorative (aria-hidden) — the button carries the accessible name (spec §7).\nfunction CloseGlyph() {\n return (\n <svg\n data-testid=\"toast-close-glyph\"\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n className={toastCloseGlyphClass}\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n );\n}\n\nexport interface ToastCloseProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close> {\n /** The accessible name for the close control (spec §7). Defaults to `\"Dismiss\"`. */\n \"aria-label\"?: string;\n}\n\n/**\n * The optional dismiss control (spec §2/§6/§7): an explicit close for toasts that do not auto-dismiss\n * and for pointer users clearing one early. A real native `<button>` (Radix ToastClose) so it is a\n * focus stop and activates on Enter / Space for free; closing flows through the toast's\n * `onOpenChange(false)` and returns focus to where it was (Radix). It has an accessible name (default\n * \"Dismiss\") and a decorative `aria-hidden` glyph (the placeholder is never the name). A neutral ghost\n * icon-button with the square target-size floor and the persistent focus ring.\n */\nexport const ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Close>,\n ToastCloseProps\n>(function ToastClose(\n { className, children, \"aria-label\": ariaLabel = \"Dismiss\", ...props },\n ref,\n) {\n return (\n <ToastPrimitive.Close\n ref={ref}\n aria-label={ariaLabel}\n className={cn(toastCloseClass, className)}\n {...props}\n >\n {children ?? <CloseGlyph />}\n </ToastPrimitive.Close>\n );\n});\n"],"mappings":";AA2CI;AAzCJ,YAAY,WAAW;AACvB,SAAS,SAAS,sBAAsB;AACxC,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAOP,MAAM,eAAe,MAAM,cAAyC,EAAE,SAAS,SAAS,CAAC;AAalF,SAAS,cAAc;AAAA,EAC5B,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAAuB;AACrB,SACE,oBAAC,eAAe,UAAf,EAAwB,gBAAgC,OAAe,GAAG,OACxE,UACH;AAEJ;AAgBO,MAAM,gBAAgB,MAAM,WAGjC,SAASA,eAAc,EAAE,WAAW,SAAS,CAAC,IAAI,GAAG,GAAG,MAAM,GAAG,KAAK;AACtE,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,GAAG,oBAAoB,SAAS;AAAA,MAC1C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAwDM,MAAM,QAAQ,MAAM,WAGzB,SAASC,OAAM,EAAE,WAAW,UAAU,UAAU,GAAG,MAAM,GAAG,KAAK;AAEjE,QAAM,OAAO,YAAY,aAAa,eAAe;AACrD,SACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,QAAQ,GACtC;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AAWM,MAAM,YAAY,MAAM;AAAA,EAC7B,SAASC,WAAU,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC/C,UAAM,EAAE,QAAQ,IAAI,MAAM,WAAW,YAAY;AACjD,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAY;AAAA,QACZ,WAAW,GAAG,kBAAkB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,QACtD,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AASO,MAAM,eAAe,MAAM;AAAA,EAChC,SAASC,cAAa,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAClD,WAAO,oBAAC,SAAI,KAAU,WAAW,GAAG,mBAAmB,SAAS,GAAI,GAAG,OAAO;AAAA,EAChF;AACF;AAUO,MAAM,aAAa,MAAM,WAG9B,SAASC,YAAW,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAClD,SAAO,oBAAC,eAAe,OAAf,EAAqB,KAAU,WAAW,GAAG,iBAAiB,SAAS,GAAI,GAAG,OAAO;AAC/F,CAAC;AASM,MAAM,mBAAmB,MAAM,WAGpC,SAASC,kBAAiB,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACxD,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC;AAAA,MACA,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAaM,MAAM,cAAc,MAAM,WAG/B,SAASC,aAAY,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACnD,SACE,oBAAC,eAAe,QAAf,EAAsB,KAAU,WAAW,GAAG,kBAAkB,SAAS,GAAI,GAAG,OAAO;AAE5F,CAAC;AAID,SAAS,aAAa;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAa;AAAA,MACb,eAAc;AAAA,MACd,WAAW;AAAA,MAEX,8BAAC,UAAK,GAAE,wBAAuB;AAAA;AAAA,EACjC;AAEJ;AAgBO,MAAM,aAAa,MAAM,WAG9B,SAASC,YACT,EAAE,WAAW,UAAU,cAAc,YAAY,WAAW,GAAG,MAAM,GACrE,KACA;AACA,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC;AAAA,MACA,cAAY;AAAA,MACZ,WAAW,GAAG,iBAAiB,SAAS;AAAA,MACvC,GAAG;AAAA,MAEH,sBAAY,oBAAC,cAAW;AAAA;AAAA,EAC3B;AAEJ,CAAC;","names":["ToastViewport","Toast","ToastIcon","ToastContent","ToastTitle","ToastDescription","ToastAction","ToastClose"]}
@@ -0,0 +1,16 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ export declare const toastViewportClass: string;
3
+ export declare const toastVariants: (props?: ({
4
+ variant?: "verified" | "signal" | "caution" | "critical" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare const toastIconVariants: (props?: ({
7
+ variant?: "verified" | "signal" | "caution" | "critical" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export declare const toastContentClass = "flex min-w-0 flex-1 flex-col gap-(--space-2)";
10
+ export declare const toastTitleClass = "text-body text-text-primary";
11
+ export declare const toastDescriptionClass = "text-body text-text-secondary";
12
+ export declare const toastActionClass: string;
13
+ export declare const toastCloseClass: string;
14
+ export declare const toastCloseGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
15
+ export type ToastVariantProps = VariantProps<typeof toastVariants>;
16
+ //# sourceMappingURL=toast.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.variants.d.ts","sourceRoot":"","sources":["../../../src/components/toast/toast.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAelE,eAAO,MAAM,kBAAkB,QAGF,CAAC;AAkB9B,eAAO,MAAM,aAAa;;8EA0CzB,CAAC;AAQF,eAAO,MAAM,iBAAiB;;8EAa7B,CAAC;AAKF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAKhF,eAAO,MAAM,eAAe,gCAAgC,CAAC;AAK7D,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AAWrE,eAAO,MAAM,gBAAgB,QAOoE,CAAC;AASlG,eAAO,MAAM,eAAe,QAOqE,CAAC;AAIlG,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { cva } from "class-variance-authority";
2
+ const toastViewportClass = "fixed bottom-0 end-0 z-(--z-index-toast) flex max-h-screen w-full flex-col gap-(--space-3) p-(--space-4) sm:max-w-(--container-sm)";
3
+ const toastVariants = cva(
4
+ [
5
+ // layout: a row holding the leading type icon, the stacked message column, then the inline
6
+ // action and the dismiss control; logical-property gap so it mirrors under dir="rtl" (G-U6)
7
+ "flex items-start gap-(--space-3)",
8
+ // the raised surface: neutral fill, neutral outer-surface fallback, internal padding off the
9
+ // edge, the md corner radius, the lg elevation shadow above the page content (spec §5)
10
+ "bg-surface-raised rounded-(--radius-md) border p-(--space-3) shadow-(--shadow-lg)",
11
+ // logical-property text alignment so the toast mirrors under dir="rtl" (G-U6)
12
+ "text-start",
13
+ // enter/exit slide-and-fade: the BASE duration on AMBIENT easing (spec §4/§5), collapsing to
14
+ // the instant endpoint under reduced motion. NEVER the verified-check theatre (G-U3).
15
+ "transition-[opacity,transform] duration-(--motion-duration-base) ease-(--motion-easing-ambient)",
16
+ "motion-reduce:duration-(--motion-duration-instant)",
17
+ // enter/exit ride Radix's data-state — attribute-selector variants, not arbitrary values
18
+ "data-[state=open]:opacity-100 data-[state=closed]:opacity-0",
19
+ // swipe-to-dismiss rides Radix's data-swipe — the toast follows the pointer on move, snaps back
20
+ // on cancel, and fades out on end (attribute-selector variants, not arbitrary values, spec §4)
21
+ "data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)]",
22
+ "data-[swipe=cancel]:translate-x-0 data-[swipe=cancel]:transition-[transform]",
23
+ "data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)]",
24
+ "data-[swipe=end]:opacity-0"
25
+ ],
26
+ {
27
+ variants: {
28
+ // STRUCTURAL axis = spec §3: the type the toast reports. Each maps to the matching
29
+ // --color-status-*-border accent on the neutral surface (spec §3/§5).
30
+ variant: {
31
+ // an action succeeded / a claim is now proven — the in-product Verified Green status,
32
+ // NEVER the brand (spec §3/§8)
33
+ verified: "border-status-verified-border",
34
+ // a neutral, informational result that needs no action (spec §3)
35
+ signal: "border-status-signal-border",
36
+ // a non-blocking warning — completed with a caveat worth seeing (spec §3)
37
+ caution: "border-status-caution-border",
38
+ // a failure or error — the highest-urgency type (spec §3)
39
+ critical: "border-status-critical-border"
40
+ }
41
+ },
42
+ // the lowest-urgency status is the default; a louder type is spent only when warranted (spec §8)
43
+ defaultVariants: { variant: "signal" }
44
+ }
45
+ );
46
+ const toastIconVariants = cva(
47
+ "inline-flex shrink-0 h-(--size-icon-md) w-(--size-icon-md)",
48
+ {
49
+ variants: {
50
+ variant: {
51
+ verified: "text-status-verified-accent",
52
+ signal: "text-status-signal-accent",
53
+ caution: "text-status-caution-accent",
54
+ critical: "text-status-critical-accent"
55
+ }
56
+ },
57
+ defaultVariants: { variant: "signal" }
58
+ }
59
+ );
60
+ const toastContentClass = "flex min-w-0 flex-1 flex-col gap-(--space-2)";
61
+ const toastTitleClass = "text-body text-text-primary";
62
+ const toastDescriptionClass = "text-body text-text-secondary";
63
+ const toastActionClass = "inline-flex shrink-0 items-center justify-center rounded-(--radius-md) px-(--space-3) text-label font-medium text-action-ghost-fg hover:bg-action-ghost-bg-hover transition-colors duration-(--motion-duration-fast) ease-(--motion-easing-verdify) motion-reduce:duration-(--motion-duration-instant) min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop) outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2";
64
+ const toastCloseClass = "inline-flex shrink-0 items-center justify-center rounded-(--radius-md) text-action-ghost-fg hover:bg-action-ghost-bg-hover transition-colors duration-(--motion-duration-fast) ease-(--motion-easing-verdify) motion-reduce:duration-(--motion-duration-instant) min-h-(--size-target-mobile) min-w-(--size-target-mobile) sm:min-h-(--size-target-desktop) sm:min-w-(--size-target-desktop) outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2";
65
+ const toastCloseGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
66
+ export {
67
+ toastActionClass,
68
+ toastCloseClass,
69
+ toastCloseGlyphClass,
70
+ toastContentClass,
71
+ toastDescriptionClass,
72
+ toastIconVariants,
73
+ toastTitleClass,
74
+ toastVariants,
75
+ toastViewportClass
76
+ };
77
+ //# sourceMappingURL=toast.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/toast/toast.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// A Toast is a brief, transient feedback surface that floats over the page to confirm an action or\n// report an async result without taking focus (spec §1). It is NOT the brand: its type is carried\n// by the status it reports, never by Sovereign Violet, so this file binds nothing from the\n// --color-action-primary-* tier as a status (brand != state, G-U2). The only action-tier utility\n// used is the NEUTRAL ghost treatment on the inline action and dismiss controls — that is the\n// control's own treatment, not the toast's status (the brand != state gate scopes status keys to\n// the toast variant axis only). This is the ONLY token-binding site (skill §5 hard rule).\n\n// The viewport: the corner-anchored live region that holds the stack of toasts (spec §2 region). It\n// is the fixed <ol> on the toast z-layer (spec §5 --z-index-toast — the dedicated layer above page\n// content, distinct from the modal layer the overlays use). Logical-property anchoring (G-U6): the\n// stack sits at the block-end inline-end corner and flows as a column with the stack gap. It is a\n// landmark region (Radix role=region), decorative of fill — neutral, no status color.\nexport const toastViewportClass =\n \"fixed bottom-0 end-0 z-(--z-index-toast) \" +\n \"flex max-h-screen w-full flex-col gap-(--space-3) p-(--space-4) \" +\n \"sm:max-w-(--container-sm)\";\n\n// The toast: one message in the stack (spec §2 toast). A NEUTRAL raised surface (spec §3/§5:\n// neutrals carry the body) with the lg elevation shadow above the page, the md corner radius, and a\n// 1px border whose COLOR is the single status accent — the status is an edge + the icon, never a\n// saturated fill that floods the surface (spec §3/§5, restraint over volume). The status border is\n// the ONLY status binding on the container; bg/text stay neutral.\n//\n// Enter/exit is a plain slide-and-fade on the BASE duration + AMBIENT easing (spec §4/§5), riding\n// Radix's data-state and data-swipe attributes (attribute-selector variants, not arbitrary values).\n// It collapses to the instant endpoint under reduced motion. A toast NEVER uses the 350ms\n// VerifiedBadge-only theatre duration — that motion is the one piece of theatre in the system and is\n// reserved for the verified moment (G-U3 motion-theatre gate). Even a `verified` toast slides in on\n// the base duration.\n//\n// variant = the type the toast reports (spec §3): the four statuses map one-to-one to the\n// --color-status-*-border accent; there is no neutral or brand-colored toast. NONE binds\n// --color-action-* as a status (brand != state, spec §3/§8).\nexport const toastVariants = cva(\n [\n // layout: a row holding the leading type icon, the stacked message column, then the inline\n // action and the dismiss control; logical-property gap so it mirrors under dir=\"rtl\" (G-U6)\n \"flex items-start gap-(--space-3)\",\n // the raised surface: neutral fill, neutral outer-surface fallback, internal padding off the\n // edge, the md corner radius, the lg elevation shadow above the page content (spec §5)\n \"bg-surface-raised rounded-(--radius-md) border p-(--space-3) shadow-(--shadow-lg)\",\n // logical-property text alignment so the toast mirrors under dir=\"rtl\" (G-U6)\n \"text-start\",\n // enter/exit slide-and-fade: the BASE duration on AMBIENT easing (spec §4/§5), collapsing to\n // the instant endpoint under reduced motion. NEVER the verified-check theatre (G-U3).\n \"transition-[opacity,transform] duration-(--motion-duration-base) ease-(--motion-easing-ambient)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n // enter/exit ride Radix's data-state — attribute-selector variants, not arbitrary values\n \"data-[state=open]:opacity-100 data-[state=closed]:opacity-0\",\n // swipe-to-dismiss rides Radix's data-swipe — the toast follows the pointer on move, snaps back\n // on cancel, and fades out on end (attribute-selector variants, not arbitrary values, spec §4)\n \"data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)]\",\n \"data-[swipe=cancel]:translate-x-0 data-[swipe=cancel]:transition-[transform]\",\n \"data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)]\",\n \"data-[swipe=end]:opacity-0\",\n ],\n {\n variants: {\n // STRUCTURAL axis = spec §3: the type the toast reports. Each maps to the matching\n // --color-status-*-border accent on the neutral surface (spec §3/§5).\n variant: {\n // an action succeeded / a claim is now proven — the in-product Verified Green status,\n // NEVER the brand (spec §3/§8)\n verified: \"border-status-verified-border\",\n // a neutral, informational result that needs no action (spec §3)\n signal: \"border-status-signal-border\",\n // a non-blocking warning — completed with a caveat worth seeing (spec §3)\n caution: \"border-status-caution-border\",\n // a failure or error — the highest-urgency type (spec §3)\n critical: \"border-status-critical-border\",\n },\n },\n // the lowest-urgency status is the default; a louder type is spent only when warranted (spec §8)\n defaultVariants: { variant: \"signal\" },\n },\n);\n\n// The type icon (spec §2/§5): a type icon reinforcing the status at the md icon role. It pairs\n// with the message text so status is never carried by color or icon alone (WCAG 1.4.1, spec §2).\n// Because the icon is DECORATIVE (aria-hidden in tsx) and the message text carries the status\n// meaning, it is exempt from the AA text floor and takes the BRIGHT variant ACCENT via the\n// matching --color-status-*-accent (tokens 0.6.0) — the vivid status color reads as an emphasis\n// mark, while the readable message keeps its AA text token.\nexport const toastIconVariants = cva(\n \"inline-flex shrink-0 h-(--size-icon-md) w-(--size-icon-md)\",\n {\n variants: {\n variant: {\n verified: \"text-status-verified-accent\",\n signal: \"text-status-signal-accent\",\n caution: \"text-status-caution-accent\",\n critical: \"text-status-critical-accent\",\n },\n },\n defaultVariants: { variant: \"signal\" },\n },\n);\n\n// The stacked message column (spec §2): the primary message and an optional secondary line stack\n// vertically beside the leading icon. min-w-0 lets long message text wrap instead of overflowing the\n// row, and flex-1 lets it take the available width before the action/dismiss controls.\nexport const toastContentClass = \"flex min-w-0 flex-1 flex-col gap-(--space-2)\";\n\n// The message (spec §2/§5): the text. A plain statement ending in a period; for a failure it names\n// what failed and what to do next, and never blames you (spec §2). The body type role in primary\n// text. It is the toast's accessible name (Radix wires aria-labelledby). Brand violet never paints it.\nexport const toastTitleClass = \"text-body text-text-primary\";\n\n// The secondary message line (spec §2/§5): a supporting line under the message, where used. The body\n// type role in --color-text-secondary. It is the toast's accessible description (Radix wires\n// aria-describedby).\nexport const toastDescriptionClass = \"text-body text-text-secondary\";\n\n// The inline action (spec §2/§6): at most one inline action, phrased as a verb (\"Undo\", \"View\"). A\n// NEUTRAL ghost surface — the label in --color-action-ghost-fg at rest, the restrained ghost hover\n// fill (no bg/border at rest) — so the action is neutral and never competes with the status accent.\n// The ghost fg/hover is the control's OWN action treatment, not the toast's status (the brand !=\n// state gate scopes status keys to the toast container variant). It is a real focus stop (Radix\n// ToastAction renders a native <button>) with the label type role, the target-size floor (44px touch\n// / 40px pointer, spec §5 / DEC-B; the height EMERGES from the floor, never fixed below it), the\n// persistent focus ring, and the fast functional hover motion + verdify easing, instant under\n// reduced motion (G-U3).\nexport const toastActionClass =\n \"inline-flex shrink-0 items-center justify-center rounded-(--radius-md) px-(--space-3) \" +\n \"text-label font-medium \" +\n \"text-action-ghost-fg hover:bg-action-ghost-bg-hover \" +\n \"transition-colors duration-(--motion-duration-fast) ease-(--motion-easing-verdify) \" +\n \"motion-reduce:duration-(--motion-duration-instant) \" +\n \"min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop) \" +\n \"outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\";\n\n// The dismiss control (spec §2/§6/§7): an explicit close on the inline-end edge for toasts that do\n// not auto-dismiss and for pointer users clearing one early. A NEUTRAL ghost icon-button — the glyph\n// in --color-action-ghost-fg at rest, the restrained ghost hover fill — so it never competes with\n// the status. A real focus stop (Radix ToastClose renders a native <button>) with the square\n// target-size floor (44px touch / 40px pointer, spec §5 / DEC-B; height EMERGES from the floor,\n// never fixed below it), the persistent focus ring, and the fast functional hover motion + verdify\n// easing, instant under reduced motion (G-U3).\nexport const toastCloseClass =\n \"inline-flex shrink-0 items-center justify-center rounded-(--radius-md) \" +\n \"text-action-ghost-fg hover:bg-action-ghost-bg-hover \" +\n \"transition-colors duration-(--motion-duration-fast) ease-(--motion-easing-verdify) \" +\n \"motion-reduce:duration-(--motion-duration-instant) \" +\n \"min-h-(--size-target-mobile) min-w-(--size-target-mobile) \" +\n \"sm:min-h-(--size-target-desktop) sm:min-w-(--size-target-desktop) \" +\n \"outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\";\n\n// The dismiss glyph (spec §7): a neutral X at the md icon role, drawn with currentColor so it\n// inherits the button's ghost fg. Decorative (aria-hidden in tsx) — the button carries the name.\nexport const toastCloseGlyphClass = \"h-(--size-icon-md) w-(--size-icon-md)\";\n\nexport type ToastVariantProps = VariantProps<typeof toastVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAehC,MAAM,qBACX;AAoBK,MAAM,gBAAgB;AAAA,EAC3B;AAAA;AAAA;AAAA,IAGE;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA;AAAA,MAGR,SAAS;AAAA;AAAA;AAAA,QAGP,UAAU;AAAA;AAAA,QAEV,QAAQ;AAAA;AAAA,QAER,SAAS;AAAA;AAAA,QAET,UAAU;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,IAEA,iBAAiB,EAAE,SAAS,SAAS;AAAA,EACvC;AACF;AAQO,MAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,SAAS;AAAA,EACvC;AACF;AAKO,MAAM,oBAAoB;AAK1B,MAAM,kBAAkB;AAKxB,MAAM,wBAAwB;AAW9B,MAAM,mBACX;AAeK,MAAM,kBACX;AAUK,MAAM,uBAAuB;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, type TooltipProviderProps, type TooltipProps, type TooltipTriggerProps, type TooltipContentProps, type TooltipVariant, } from "./tooltip";
2
+ export { tooltipContentClass, tooltipArrowClass } from "./tooltip.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,OAAO,EACP,cAAc,EACd,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import {
2
+ TooltipProvider,
3
+ Tooltip,
4
+ TooltipTrigger,
5
+ TooltipContent
6
+ } from "./tooltip";
7
+ import { tooltipContentClass, tooltipArrowClass } from "./tooltip.variants";
8
+ export {
9
+ Tooltip,
10
+ TooltipContent,
11
+ TooltipProvider,
12
+ TooltipTrigger,
13
+ tooltipArrowClass,
14
+ tooltipContentClass
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/tooltip/index.ts"],"sourcesContent":["export {\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n type TooltipProviderProps,\n type TooltipProps,\n type TooltipTriggerProps,\n type TooltipContentProps,\n type TooltipVariant,\n} from \"./tooltip\";\nexport { tooltipContentClass, tooltipArrowClass } from \"./tooltip.variants\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AACP,SAAS,qBAAqB,yBAAyB;","names":[]}
@@ -0,0 +1,81 @@
1
+ import * as React from "react";
2
+ import { Tooltip as TooltipPrimitive } from "radix-ui";
3
+ export interface TooltipProviderProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider> {
4
+ }
5
+ /**
6
+ * Wraps the app (or a region of it) to provide global tooltip timing (spec §4). It owns the open
7
+ * DELAY: hovering a trigger opens its tooltip after a short delay (`delayDuration`), while moving
8
+ * between triggers within `skipDelayDuration` opens the next one immediately, so a row of icon
9
+ * buttons does not re-delay on every hover. Keyboard focus always opens with NO delay regardless of
10
+ * this setting, so a keyboard user gets the same information a pointer user does (spec §4 Focus).
11
+ *
12
+ * `disableHoverableContent` is intentionally NOT defaulted on: leaving it OFF keeps the tooltip open
13
+ * while the pointer moves onto the content, which is what makes the tooltip HOVERABLE under
14
+ * WCAG 1.4.13 — disabling it has accessibility consequences, so prefer the default.
15
+ *
16
+ * Place ONE Provider near the root of the app; individual tooltips read its timing. Wraps the Radix
17
+ * Tooltip Provider — a stateful primitive, so this file is `'use client'`.
18
+ */
19
+ export declare function TooltipProvider({ delayDuration, ...props }: TooltipProviderProps): import("react/jsx-runtime").JSX.Element;
20
+ export interface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {
21
+ }
22
+ /**
23
+ * One tooltip: the trigger-plus-tooltip pair (spec §2/§4). Wraps `TooltipTrigger` and
24
+ * `TooltipContent`. The tooltip is hidden until its trigger is hovered or focused, stays open while
25
+ * the trigger holds focus or the pointer is over the trigger or the content (WCAG 1.4.13 hoverable
26
+ * / persistent), and is dismissible with Escape (1.4.13 dismissible) — Radix wires all of this. Pass
27
+ * a per-tooltip `delayDuration` (e.g. `0` for an instant open) to override the Provider's timing.
28
+ */
29
+ export declare function Tooltip(props: TooltipProps): import("react/jsx-runtime").JSX.Element;
30
+ export interface TooltipTriggerProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger> {
31
+ }
32
+ /**
33
+ * The control the tooltip describes (spec §2 trigger): a REAL control — a button, a link, a field —
34
+ * never inert text. The trigger owns the single tab stop and the 2px focus ring; the tooltip itself
35
+ * never takes focus (spec §2/§4 Focus/§7). Radix sets the trigger's `aria-describedby` to the
36
+ * tooltip's id while it is open, so the tooltip is announced as a DESCRIPTION after the trigger's own
37
+ * name (spec §7) — it supplements the name, it does not replace it.
38
+ *
39
+ * Pass `asChild` to project the trigger onto your own control (commonly a Button) so the trigger
40
+ * inherits that control's role, keyboard, and focus ring rather than nesting a second button — the
41
+ * Menu/Dialog trigger precedent.
42
+ *
43
+ * The `label` variant (spec §3): on an ICON-ONLY control with no other accessible name, give that
44
+ * control its OWN name (e.g. `aria-label="Revoke"`) so it is never nameless — the tooltip still
45
+ * describes it. The Tooltip surface is identical for both variants; the distinction is purely how the
46
+ * caller names the trigger, which is the caller's responsibility and cannot be forced onto an
47
+ * arbitrary child here.
48
+ */
49
+ export declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
50
+ /** The two spec §3 variants. They share ONE neutral surface; the distinction is how the trigger is named (§7). */
51
+ export type TooltipVariant = "label" | "description";
52
+ export interface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {
53
+ /**
54
+ * Which spec §3 variant this tooltip plays (default `description`). `description` adds a short hint
55
+ * to a control that already has a visible label; `label` shows AND names an icon-only control (the
56
+ * trigger must still carry its own `aria-label`/`aria-labelledby` — see `TooltipTrigger`). This is
57
+ * a documentation/intent marker: the rendered surface is identical for both, and Radix wires the
58
+ * trigger's `aria-describedby` either way — neutrals carry the whole surface, no status or brand
59
+ * tint, by design (spec §3/§5).
60
+ */
61
+ variant?: TooltipVariant;
62
+ /** Render the optional decorative arrow connecting the content to its trigger (spec §2 arrow). Default `true`. */
63
+ arrow?: boolean;
64
+ }
65
+ /**
66
+ * The floating label (spec §2 content, §3/§5): a `role="tooltip"` element holding ONE short line of
67
+ * plain text, raised above the page on the POPOVER layer and anchored to its trigger. It holds NO
68
+ * interactive content — no link, no button, no field (if you need those, you need a Popover, spec
69
+ * §1/§2). It is a NON-MODAL popover: no scrim, no `aria-modal`, no focus-trap — focus never enters
70
+ * it, so there is nothing to trap (spec §7). A NEUTRAL surface: the brand violet and a status color
71
+ * never appear on a tooltip (spec §3/§5/§8, brand != state).
72
+ *
73
+ * The open/close is the FAST motion duration and a plain fade — no slide, no bounce — instant under
74
+ * `prefers-reduced-motion`; never the deliberate "check" duration, which is the VerifiedBadge-only
75
+ * theatre (spec §4, G-U3). Portaled so it escapes overflow clipping. The decorative arrow's `fill`
76
+ * matches the surface; Radix's bare arrow does not carry the surface's outer BORDER edge — a
77
+ * conformant, non-load-bearing deviation from the §5 "arrow edge" border, flagged for amendment
78
+ * rather than hand-rolling a custom bordered arrow polygon.
79
+ */
80
+ export declare const TooltipContent: React.ForwardRefExoticComponent<TooltipContentProps & React.RefAttributes<HTMLDivElement>>;
81
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC;CAAG;AAE7E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAAE,aAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAEtF;AAED,MAAM,WAAW,YACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAAG;AAEzE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAE1C;AAED,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC;CAAG;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,+FAKzB,CAAC;AAEH,kHAAkH;AAClH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,aAAa,CAAC;AAErD,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC;IACvE;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kHAAkH;IAClH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,4FAiCzB,CAAC"}