@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,63 @@
1
+ import { cva } from "class-variance-authority";
2
+ const paginationNavClass = "bg-surface-canvas py-(--space-2)";
3
+ const paginationListClass = "flex flex-wrap items-center gap-(--space-4)";
4
+ const paginationItemClass = "inline-flex items-center";
5
+ const paginationControlVariants = cva(
6
+ [
7
+ // type ROLE + shape + the icon-to-label gap; logical inline padding so it mirrors under RTL
8
+ "inline-flex items-center justify-center gap-(--space-2) rounded-(--radius-md) px-(--space-2)",
9
+ "text-label font-medium select-none",
10
+ // resting state — enabled, non-current: secondary label, no fill, pointer cursor
11
+ "cursor-pointer text-text-secondary",
12
+ // hover: the restrained ghost fill (the only fill a non-current control paints)
13
+ "hover:bg-action-ghost-bg-hover",
14
+ // motion: fast + verdify easing, instant under reduced motion (NEVER the check theatre)
15
+ "transition-[color,background-color] duration-(--motion-duration-fast) ease-(--motion-easing-verdify)",
16
+ "motion-reduce:duration-(--motion-duration-instant)",
17
+ // target-size floor — 44px touch / 40px pointer, on every control (spec §7, 2.5.8)
18
+ "min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop)",
19
+ // focus ring — identical on every state, never removed (spec §4 / 2.4.7)
20
+ "outline-none",
21
+ "focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2",
22
+ // disabled prev/next — DEC-C: dim via the disabled TOKEN for BOTH the native-button form
23
+ // (`disabled`) and the link form (`aria-disabled`), never a blanket opacity. The component
24
+ // also strips href + tabindex on a disabled link so it cannot navigate or be tabbed to.
25
+ "disabled:pointer-events-none disabled:text-text-disabled",
26
+ "aria-disabled:pointer-events-none aria-disabled:text-text-disabled"
27
+ ],
28
+ {
29
+ variants: {
30
+ // STATE axis (spec §4): the current page is the only control carrying the brand action fill.
31
+ current: {
32
+ true: [
33
+ // the current page: brand action accent (where you are in the set), non-navigating.
34
+ // This is the action(primary) alias, NEVER status-verified (brand != state, G-U2).
35
+ "bg-action-primary-bg text-action-primary-fg",
36
+ // the current page is not a control: no hover fill, no pointer
37
+ "cursor-default hover:bg-action-primary-bg"
38
+ ],
39
+ false: ""
40
+ },
41
+ // SIZE axis (spec §3, DEC-B): both sizes hold the shared target-size floor above; sm differs
42
+ // only by density (tighter vertical padding) below the type role, never a height below the floor.
43
+ size: {
44
+ md: "py-(--space-2)",
45
+ sm: "py-(--space-1)"
46
+ }
47
+ },
48
+ defaultVariants: { current: false, size: "md" }
49
+ }
50
+ );
51
+ const paginationIconClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center";
52
+ const paginationStatusClass = "inline-flex items-center px-(--space-2) text-label text-text-secondary select-none";
53
+ const paginationEllipsisClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted";
54
+ export {
55
+ paginationControlVariants,
56
+ paginationEllipsisClass,
57
+ paginationIconClass,
58
+ paginationItemClass,
59
+ paginationListClass,
60
+ paginationNavClass,
61
+ paginationStatusClass
62
+ };
63
+ //# sourceMappingURL=pagination.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/pagination/pagination.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// Pagination is a row of standard links/buttons inside a labeled navigation landmark (spec §7):\n// there is no APG \"pagination\" widget. Brand and status colors are accents — NEUTRALS carry the\n// surface (spec §3). The one accent the pager paints is on the CURRENT page, and that accent is\n// the primary ACTION (brand) alias, never a status color: a current page reports where you are in\n// the set, not a verification result, so it binds nothing from the status tier (brand != state,\n// G-U2). The set paints from the text, action(primary + ghost), border, and surface aliases only\n// (spec §5).\n\n// The nav landmark wrapping the control set. A neutral canvas surface with logical-property block\n// padding so the row mirrors under dir=\"rtl\" (G-U6). The optional divider above the set (spec §5,\n// border-default) is a caller decision applied via className, not a default binding.\nexport const paginationNavClass = \"bg-surface-canvas py-(--space-2)\";\n\n// The control list. An inline row of items with the inter-control gap; wraps when narrow. The\n// list carries no text color — each control sets its own.\nexport const paginationListClass =\n \"flex flex-wrap items-center gap-(--space-4)\";\n\n// A single item (the <li>). Inline so the control sits in the row.\nexport const paginationItemClass = \"inline-flex items-center\";\n\n// A page / prev / next control (spec §4). At rest, an enabled non-current control is the label\n// type role in the SECONDARY text color with NO fill; on hover it takes the restrained ghost fill\n// (the only fill a non-current control paints) and the cursor is a pointer. The CURRENT page lifts\n// its label to the primary action FG on the primary action BG and does not navigate — this accent\n// is the BRAND action alias (where you are), never a status. The focus ring is part of the base on\n// every state, never removed. Motion is the fast token transition on the verdify easing, collapsing\n// to the instant endpoint under reduced motion — never the 350ms VerifiedBadge-only theatre\n// duration (a page turning is a plain wait, G-U3). A disabled prev/next dims via the disabled TOKEN\n// (DEC-C): native `disabled:` for a button-form control and `aria-disabled:` for a link-form one\n// (an <a> has no native disabled), never a blanket opacity.\nexport const paginationControlVariants = cva(\n [\n // type ROLE + shape + the icon-to-label gap; logical inline padding so it mirrors under RTL\n \"inline-flex items-center justify-center gap-(--space-2) rounded-(--radius-md) px-(--space-2)\",\n \"text-label font-medium select-none\",\n // resting state — enabled, non-current: secondary label, no fill, pointer cursor\n \"cursor-pointer text-text-secondary\",\n // hover: the restrained ghost fill (the only fill a non-current control paints)\n \"hover:bg-action-ghost-bg-hover\",\n // motion: fast + verdify easing, instant under reduced motion (NEVER the check theatre)\n \"transition-[color,background-color] duration-(--motion-duration-fast) ease-(--motion-easing-verdify)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n // target-size floor — 44px touch / 40px pointer, on every control (spec §7, 2.5.8)\n \"min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop)\",\n // focus ring — identical on every state, never removed (spec §4 / 2.4.7)\n \"outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\",\n // disabled prev/next — DEC-C: dim via the disabled TOKEN for BOTH the native-button form\n // (`disabled`) and the link form (`aria-disabled`), never a blanket opacity. The component\n // also strips href + tabindex on a disabled link so it cannot navigate or be tabbed to.\n \"disabled:pointer-events-none disabled:text-text-disabled\",\n \"aria-disabled:pointer-events-none aria-disabled:text-text-disabled\",\n ],\n {\n variants: {\n // STATE axis (spec §4): the current page is the only control carrying the brand action fill.\n current: {\n true: [\n // the current page: brand action accent (where you are in the set), non-navigating.\n // This is the action(primary) alias, NEVER status-verified (brand != state, G-U2).\n \"bg-action-primary-bg text-action-primary-fg\",\n // the current page is not a control: no hover fill, no pointer\n \"cursor-default hover:bg-action-primary-bg\",\n ],\n false: \"\",\n },\n // SIZE axis (spec §3, DEC-B): both sizes hold the shared target-size floor above; sm differs\n // only by density (tighter vertical padding) below the type role, never a height below the floor.\n size: {\n md: \"py-(--space-2)\",\n sm: \"py-(--space-1)\",\n },\n },\n defaultVariants: { current: false, size: \"md\" },\n },\n);\n\nexport type PaginationControlVariantProps = VariantProps<typeof paginationControlVariants>;\n\n// The prev/next direction icon (spec §5): the sm icon role, decorative (the control names its\n// direction via aria-label, not the glyph). Inherits the control's current text color.\nexport const paginationIconClass =\n \"inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center\";\n\n// The \"Page m of n\" readout for the prev-next variant (spec §3): plain text in the secondary\n// color at the label type role. Not a control — a non-interactive status of position in the set.\nexport const paginationStatusClass =\n \"inline-flex items-center px-(--space-2) text-label text-text-secondary select-none\";\n\n// The ellipsis gap (spec §2/§7): a DECORATIVE, non-interactive stand-in for a run of hidden page\n// controls, in the muted text color at the sm icon role. Removed from the a11y tree + tab order by\n// the component (aria-hidden); it is never a stop.\nexport const paginationEllipsisClass =\n \"inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted\";\n"],"mappings":"AAAA,SAAS,WAA8B;AAahC,MAAM,qBAAqB;AAI3B,MAAM,sBACX;AAGK,MAAM,sBAAsB;AAY5B,MAAM,4BAA4B;AAAA,EACvC;AAAA;AAAA,IAEE;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA,MAER,SAAS;AAAA,QACP,MAAM;AAAA;AAAA;AAAA,UAGJ;AAAA;AAAA,UAEA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA;AAAA;AAAA,MAGA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,OAAO,MAAM,KAAK;AAAA,EAChD;AACF;AAMO,MAAM,sBACX;AAIK,MAAM,wBACX;AAKK,MAAM,0BACX;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Popover, PopoverTrigger, PopoverContent, PopoverHeader, PopoverTitle, PopoverBody, PopoverClose, PopoverArrow, type PopoverProps, type PopoverTriggerProps, type PopoverContentProps, type PopoverHeaderProps, type PopoverTitleProps, type PopoverBodyProps, type PopoverCloseProps, type PopoverArrowProps, } from "./popover";
2
+ export { popoverTriggerClass, popoverPanelClass, popoverHeaderClass, popoverTitleClass, popoverBodyClass, popoverArrowClass, popoverCloseClass, popoverCloseGlyphClass, } from "./popover.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import {
2
+ Popover,
3
+ PopoverTrigger,
4
+ PopoverContent,
5
+ PopoverHeader,
6
+ PopoverTitle,
7
+ PopoverBody,
8
+ PopoverClose,
9
+ PopoverArrow
10
+ } from "./popover";
11
+ import {
12
+ popoverTriggerClass,
13
+ popoverPanelClass,
14
+ popoverHeaderClass,
15
+ popoverTitleClass,
16
+ popoverBodyClass,
17
+ popoverArrowClass,
18
+ popoverCloseClass,
19
+ popoverCloseGlyphClass
20
+ } from "./popover.variants";
21
+ export {
22
+ Popover,
23
+ PopoverArrow,
24
+ PopoverBody,
25
+ PopoverClose,
26
+ PopoverContent,
27
+ PopoverHeader,
28
+ PopoverTitle,
29
+ PopoverTrigger,
30
+ popoverArrowClass,
31
+ popoverBodyClass,
32
+ popoverCloseClass,
33
+ popoverCloseGlyphClass,
34
+ popoverHeaderClass,
35
+ popoverPanelClass,
36
+ popoverTitleClass,
37
+ popoverTriggerClass
38
+ };
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/popover/index.ts"],"sourcesContent":["export {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverHeader,\n PopoverTitle,\n PopoverBody,\n PopoverClose,\n PopoverArrow,\n type PopoverProps,\n type PopoverTriggerProps,\n type PopoverContentProps,\n type PopoverHeaderProps,\n type PopoverTitleProps,\n type PopoverBodyProps,\n type PopoverCloseProps,\n type PopoverArrowProps,\n} from \"./popover\";\nexport {\n popoverTriggerClass,\n popoverPanelClass,\n popoverHeaderClass,\n popoverTitleClass,\n popoverBodyClass,\n popoverArrowClass,\n popoverCloseClass,\n popoverCloseGlyphClass,\n} from \"./popover.variants\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OASK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -0,0 +1,92 @@
1
+ import * as React from "react";
2
+ import { Popover as PopoverPrimitive } from "radix-ui";
3
+ export interface PopoverProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {
4
+ }
5
+ /**
6
+ * Popover is a small, NON-MODAL surface that a trigger opens next to itself to hold secondary
7
+ * content — a short form, a definition, a set of related controls, a detail card — without leaving
8
+ * the page (spec §1). Reach for it when the content is too rich for a Tooltip's plain label yet too
9
+ * small to interrupt the page with a Dialog or a Sheet. The page behind a popover stays LIVE: it is
10
+ * not dimmed, focus is not trapped, and you can keep working around it.
11
+ *
12
+ * It is a NEUTRAL surface (spec §3): the panel, arrow, and border are neutral, and the brand violet
13
+ * never tints the panel to look "premium." Color enters only through the components placed inside it
14
+ * — a primary Button, a VerifiedBadge — never on the panel or arrow themselves (brand != state).
15
+ *
16
+ * Wraps the Radix Popover primitive (WAI-ARIA disclosure pattern, NON-MODAL: `modal` defaults to
17
+ * `false`, so the page is not made inert and Tab leaves the panel rather than cycling inside it). A
18
+ * stateful primitive, so this file is `'use client'`.
19
+ */
20
+ export declare function Popover({ children, ...rootProps }: PopoverProps): import("react/jsx-runtime").JSX.Element;
21
+ export interface PopoverTriggerProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger> {
22
+ }
23
+ /**
24
+ * The control that opens the popover (spec §2 trigger): the one stop in the page tab order for this
25
+ * control, carrying the 2px focus ring. Radix sets `aria-expanded` (the single source of truth for
26
+ * open vs. closed, spec §7) and `aria-controls` (pointing at the panel) for you. Pass `asChild` to
27
+ * wrap your own Button so the trigger inherits its role, keyboard, and focus ring rather than nesting
28
+ * a second button; the bare (non-`asChild`) form renders the default neutral-ghost trigger.
29
+ */
30
+ export declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
31
+ export interface PopoverContentProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {
32
+ /** Render the optional decorative arrow joining the panel to its trigger (spec §2 arrow). Default `false`. */
33
+ arrow?: boolean;
34
+ }
35
+ /**
36
+ * Renders the portal and the panel (spec §2 panel): the floating NEUTRAL raised surface that opens
37
+ * on activation, raised above the page on the POPOVER layer and anchored to the trigger, repositioning
38
+ * to stay in the viewport (Radix). It is NON-MODAL — NO scrim, NO `aria-modal`, NO focus-trap — the
39
+ * page behind stays live and Tab leaves the panel rather than cycling inside it, so the popover is
40
+ * never a keyboard trap (spec §7, 2.1.2). On open, Radix moves focus INTO the panel (to the first
41
+ * focusable control, or to the panel container when it has none); on close — by Escape, the close
42
+ * control, the trigger toggle, or a click away — focus returns to the trigger (spec §6/§7).
43
+ *
44
+ * When the panel carries a `PopoverTitle`, the panel takes `role="dialog"` and is named by the title
45
+ * via `aria-labelledby` (spec §7: the only dialog-role case — a short modal-like task WITH a title);
46
+ * an untitled panel stays a generic container with no role. Even titled it never sets `aria-modal`,
47
+ * because the popover is non-modal. The open/close is the FAST motion duration and a plain fade,
48
+ * instant under `prefers-reduced-motion` — never the deliberate "check" duration (spec §4, G-U3).
49
+ */
50
+ export declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
51
+ export interface PopoverHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
52
+ }
53
+ /** The top region: a short title and the optional close control on the inline-end (spec §2 header). */
54
+ export declare const PopoverHeader: React.ForwardRefExoticComponent<PopoverHeaderProps & React.RefAttributes<HTMLDivElement>>;
55
+ export interface PopoverTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
56
+ }
57
+ /**
58
+ * Names the panel in one short statement, sentence case (spec §2 header title). When present it IS
59
+ * the panel's accessible name: it generates a stable id and registers it with the Popover so the
60
+ * panel takes `role="dialog"` + `aria-labelledby` (spec §7). Rendered as an `<h2>` by default at the
61
+ * panel's title type role; pass `as`/override via props if a different heading level fits the page
62
+ * outline.
63
+ */
64
+ export declare const PopoverTitle: React.ForwardRefExoticComponent<PopoverTitleProps & React.RefAttributes<HTMLHeadingElement>>;
65
+ export interface PopoverBodyProps extends React.HTMLAttributes<HTMLDivElement> {
66
+ }
67
+ /**
68
+ * The content region (spec §2 body): text, a short form, or a few controls. Keep it small — content
69
+ * that needs to scroll usually belongs in a Sheet (spec §2). Body text is the body type role in the
70
+ * secondary text color (spec §5).
71
+ */
72
+ export declare const PopoverBody: React.ForwardRefExoticComponent<PopoverBodyProps & React.RefAttributes<HTMLDivElement>>;
73
+ export interface PopoverCloseProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Close> {
74
+ }
75
+ /**
76
+ * The in-panel dismiss control (spec §2 close): closing returns focus to the trigger (Radix). A
77
+ * popover with no in-panel close is still dismissible by Escape and by clicking away (spec §2/§6).
78
+ * Two forms, both proven by the tests:
79
+ * - default (no children): the styled neutral-ghost icon-button for the header — pass an
80
+ * `aria-label` (e.g. "Close"), since the glyph is decorative and the placeholder is never a name.
81
+ * - `asChild`: wrap your own control so it also dismisses without nesting a second button.
82
+ */
83
+ export declare const PopoverClose: React.ForwardRefExoticComponent<PopoverCloseProps & React.RefAttributes<HTMLButtonElement>>;
84
+ /**
85
+ * The optional decorative arrow joining the panel to its trigger (spec §2 arrow). It carries the
86
+ * panel's neutral surface fill, never a brand or status color, and is hidden from assistive
87
+ * technology (Radix renders it inside an aria-hidden wrapper). Usually rendered for you by
88
+ * `PopoverContent`'s `arrow` prop; exported for direct composition.
89
+ */
90
+ export declare const PopoverArrow: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverArrowProps & React.RefAttributes<SVGSVGElement>, "ref"> & React.RefAttributes<SVGSVGElement>>;
91
+ export type PopoverArrowProps = React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow>;
92
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/components/popover/popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA8BvD,MAAM,WAAW,YACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAAG;AAEzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,EAAE,YAAY,2CAU/D;AAED,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC;CAAG;AAE5E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,+FAYzB,CAAC;AAEH,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC;IACvE,8GAA8G;IAC9G,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,4FAoCzB,CAAC;AAEH,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEnF,uGAAuG;AACvG,eAAO,MAAM,aAAa,2FAIzB,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC;CAAG;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,8FAexB,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjF;;;;GAIG;AACH,eAAO,MAAM,WAAW,yFAIvB,CAAC;AAoBF,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC;CAAG;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,6FAoBvB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,4JAcvB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,wBAAwB,CAC5D,OAAO,gBAAgB,CAAC,KAAK,CAC9B,CAAC"}
@@ -0,0 +1,135 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Popover as PopoverPrimitive } from "radix-ui";
5
+ import { cn } from "../../lib/cn";
6
+ import {
7
+ popoverTriggerClass,
8
+ popoverPanelClass,
9
+ popoverHeaderClass,
10
+ popoverTitleClass,
11
+ popoverBodyClass,
12
+ popoverArrowClass,
13
+ popoverCloseClass,
14
+ popoverCloseGlyphClass
15
+ } from "./popover.variants";
16
+ const PopoverContext = React.createContext({
17
+ titleId: void 0,
18
+ setTitleId: () => {
19
+ }
20
+ });
21
+ function Popover({ children, ...rootProps }) {
22
+ const [titleId, setTitleId] = React.useState(void 0);
23
+ const value = React.useMemo(() => ({ titleId, setTitleId }), [titleId]);
24
+ return /* @__PURE__ */ jsx(PopoverContext.Provider, { value, children: /* @__PURE__ */ jsx(PopoverPrimitive.Root, { ...rootProps, children }) });
25
+ }
26
+ const PopoverTrigger = React.forwardRef(function PopoverTrigger2({ className, asChild, ...props }, ref) {
27
+ return /* @__PURE__ */ jsx(
28
+ PopoverPrimitive.Trigger,
29
+ {
30
+ ref,
31
+ asChild,
32
+ className: asChild ? className : cn(popoverTriggerClass, className),
33
+ ...props
34
+ }
35
+ );
36
+ });
37
+ const PopoverContent = React.forwardRef(function PopoverContent2({ className, children, sideOffset = 6, arrow = false, ...props }, ref) {
38
+ const { titleId } = React.useContext(PopoverContext);
39
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
40
+ PopoverPrimitive.Content,
41
+ {
42
+ ref,
43
+ sideOffset,
44
+ role: titleId ? "dialog" : void 0,
45
+ "aria-labelledby": titleId,
46
+ className: cn(popoverPanelClass, className),
47
+ ...props,
48
+ children: [
49
+ children,
50
+ arrow ? /* @__PURE__ */ jsx(
51
+ PopoverPrimitive.Arrow,
52
+ {
53
+ "data-testid": "popover-arrow",
54
+ "aria-hidden": "true",
55
+ className: popoverArrowClass
56
+ }
57
+ ) : null
58
+ ]
59
+ }
60
+ ) });
61
+ });
62
+ const PopoverHeader = React.forwardRef(
63
+ function PopoverHeader2({ className, ...props }, ref) {
64
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(popoverHeaderClass, className), ...props });
65
+ }
66
+ );
67
+ const PopoverTitle = React.forwardRef(
68
+ function PopoverTitle2({ className, id, ...props }, ref) {
69
+ const ctx = React.useContext(PopoverContext);
70
+ const generatedId = React.useId();
71
+ const titleId = id ?? generatedId;
72
+ React.useEffect(() => {
73
+ ctx.setTitleId(titleId);
74
+ return () => ctx.setTitleId(void 0);
75
+ }, [ctx, titleId]);
76
+ return /* @__PURE__ */ jsx("h2", { ref, id: titleId, className: cn(popoverTitleClass, className), ...props });
77
+ }
78
+ );
79
+ const PopoverBody = React.forwardRef(
80
+ function PopoverBody2({ className, ...props }, ref) {
81
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(popoverBodyClass, className), ...props });
82
+ }
83
+ );
84
+ function CloseGlyph() {
85
+ return /* @__PURE__ */ jsx(
86
+ "svg",
87
+ {
88
+ "data-testid": "popover-close-glyph",
89
+ "aria-hidden": "true",
90
+ viewBox: "0 0 16 16",
91
+ fill: "none",
92
+ stroke: "currentColor",
93
+ strokeWidth: "1.5",
94
+ className: popoverCloseGlyphClass,
95
+ children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", strokeLinecap: "round", strokeLinejoin: "round" })
96
+ }
97
+ );
98
+ }
99
+ const PopoverClose = React.forwardRef(function PopoverClose2({ className, children, asChild, ...props }, ref) {
100
+ if (asChild) {
101
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Close, { ref, asChild: true, className, ...props, children });
102
+ }
103
+ return /* @__PURE__ */ jsx(
104
+ PopoverPrimitive.Close,
105
+ {
106
+ ref,
107
+ className: cn(popoverCloseClass, className),
108
+ ...props,
109
+ children: children ?? /* @__PURE__ */ jsx(CloseGlyph, {})
110
+ }
111
+ );
112
+ });
113
+ const PopoverArrow = React.forwardRef(function PopoverArrow2({ className, ...props }, ref) {
114
+ return /* @__PURE__ */ jsx(
115
+ PopoverPrimitive.Arrow,
116
+ {
117
+ ref,
118
+ "data-testid": "popover-arrow",
119
+ "aria-hidden": "true",
120
+ className: cn(popoverArrowClass, className),
121
+ ...props
122
+ }
123
+ );
124
+ });
125
+ export {
126
+ Popover,
127
+ PopoverArrow,
128
+ PopoverBody,
129
+ PopoverClose,
130
+ PopoverContent,
131
+ PopoverHeader,
132
+ PopoverTitle,
133
+ PopoverTrigger
134
+ };
135
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/popover/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n popoverTriggerClass,\n popoverPanelClass,\n popoverHeaderClass,\n popoverTitleClass,\n popoverBodyClass,\n popoverArrowClass,\n popoverCloseClass,\n popoverCloseGlyphClass,\n} from \"./popover.variants\";\n\n// Radix Popover has no Title primitive (unlike Dialog), so it never auto-wires aria-labelledby and\n// never sets role=\"dialog\" on the panel. The spec §7 makes the panel a GENERIC container by default\n// and only role=\"dialog\" + aria-labelledby WHEN the panel carries a title (a short modal-like task\n// with a name). We hand-compose that: PopoverTitle registers its generated id into this context, and\n// PopoverContent reads the registered id to decide whether to set the dialog role + label. This is\n// the compound \"compose a role by hand when Radix can't express the spec's anatomy\" pattern (skill F)\n// and the named Radix-vs-spec deviation step — accept Radix's non-modal popover and add the labelling\n// the spec names on top of it, rather than abandoning the primitive.\ntype PopoverContextValue = {\n titleId: string | undefined;\n setTitleId: (id: string | undefined) => void;\n};\nconst PopoverContext = React.createContext<PopoverContextValue>({\n titleId: undefined,\n setTitleId: () => {},\n});\n\nexport interface PopoverProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {}\n\n/**\n * Popover is a small, NON-MODAL surface that a trigger opens next to itself to hold secondary\n * content — a short form, a definition, a set of related controls, a detail card — without leaving\n * the page (spec §1). Reach for it when the content is too rich for a Tooltip's plain label yet too\n * small to interrupt the page with a Dialog or a Sheet. The page behind a popover stays LIVE: it is\n * not dimmed, focus is not trapped, and you can keep working around it.\n *\n * It is a NEUTRAL surface (spec §3): the panel, arrow, and border are neutral, and the brand violet\n * never tints the panel to look \"premium.\" Color enters only through the components placed inside it\n * — a primary Button, a VerifiedBadge — never on the panel or arrow themselves (brand != state).\n *\n * Wraps the Radix Popover primitive (WAI-ARIA disclosure pattern, NON-MODAL: `modal` defaults to\n * `false`, so the page is not made inert and Tab leaves the panel rather than cycling inside it). A\n * stateful primitive, so this file is `'use client'`.\n */\nexport function Popover({ children, ...rootProps }: PopoverProps) {\n const [titleId, setTitleId] = React.useState<string | undefined>(undefined);\n const value = React.useMemo(() => ({ titleId, setTitleId }), [titleId]);\n return (\n <PopoverContext.Provider value={value}>\n {/* `modal` is intentionally NOT set: Radix defaults it to false, which is exactly the spec's\n non-modal contract — no scrim, no focus-trap, no inert siblings, Tab leaves the panel. */}\n <PopoverPrimitive.Root {...rootProps}>{children}</PopoverPrimitive.Root>\n </PopoverContext.Provider>\n );\n}\n\nexport interface PopoverTriggerProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger> {}\n\n/**\n * The control that opens the popover (spec §2 trigger): the one stop in the page tab order for this\n * control, carrying the 2px focus ring. Radix sets `aria-expanded` (the single source of truth for\n * open vs. closed, spec §7) and `aria-controls` (pointing at the panel) for you. Pass `asChild` to\n * wrap your own Button so the trigger inherits its role, keyboard, and focus ring rather than nesting\n * a second button; the bare (non-`asChild`) form renders the default neutral-ghost trigger.\n */\nexport const PopoverTrigger = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Trigger>,\n PopoverTriggerProps\n>(function PopoverTrigger({ className, asChild, ...props }, ref) {\n return (\n <PopoverPrimitive.Trigger\n ref={ref}\n asChild={asChild}\n className={asChild ? className : cn(popoverTriggerClass, className)}\n {...props}\n />\n );\n});\n\nexport interface PopoverContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n /** Render the optional decorative arrow joining the panel to its trigger (spec §2 arrow). Default `false`. */\n arrow?: boolean;\n}\n\n/**\n * Renders the portal and the panel (spec §2 panel): the floating NEUTRAL raised surface that opens\n * on activation, raised above the page on the POPOVER layer and anchored to the trigger, repositioning\n * to stay in the viewport (Radix). It is NON-MODAL — NO scrim, NO `aria-modal`, NO focus-trap — the\n * page behind stays live and Tab leaves the panel rather than cycling inside it, so the popover is\n * never a keyboard trap (spec §7, 2.1.2). On open, Radix moves focus INTO the panel (to the first\n * focusable control, or to the panel container when it has none); on close — by Escape, the close\n * control, the trigger toggle, or a click away — focus returns to the trigger (spec §6/§7).\n *\n * When the panel carries a `PopoverTitle`, the panel takes `role=\"dialog\"` and is named by the title\n * via `aria-labelledby` (spec §7: the only dialog-role case — a short modal-like task WITH a title);\n * an untitled panel stays a generic container with no role. Even titled it never sets `aria-modal`,\n * because the popover is non-modal. The open/close is the FAST motion duration and a plain fade,\n * instant under `prefers-reduced-motion` — never the deliberate \"check\" duration (spec §4, G-U3).\n */\nexport const PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(function PopoverContent(\n { className, children, sideOffset = 6, arrow = false, ...props },\n ref,\n) {\n const { titleId } = React.useContext(PopoverContext);\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n // role=\"dialog\" + aria-labelledby ONLY when the panel carries a title (spec §7). Radix\n // Popover does NOT emit either, so we set them by hand from the registered title id; an\n // untitled panel is a plain generic container. aria-modal is NEVER set — the popover is\n // non-modal (no focus-trap, no inert page), and a literal aria-modal would lie to AT.\n role={titleId ? \"dialog\" : undefined}\n aria-labelledby={titleId}\n className={cn(popoverPanelClass, className)}\n {...props}\n >\n {children}\n {arrow ? (\n <PopoverPrimitive.Arrow\n data-testid=\"popover-arrow\"\n // The arrow is purely DECORATIVE (spec §2/§7): Radix renders it as a bare <svg> with no\n // role and no aria-hidden, so we set aria-hidden explicitly to keep it out of the AT tree\n // per the frozen contract — the arrow carries no meaning the panel does not already.\n aria-hidden=\"true\"\n className={popoverArrowClass}\n />\n ) : null}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n});\n\nexport interface PopoverHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/** The top region: a short title and the optional close control on the inline-end (spec §2 header). */\nexport const PopoverHeader = React.forwardRef<HTMLDivElement, PopoverHeaderProps>(\n function PopoverHeader({ className, ...props }, ref) {\n return <div ref={ref} className={cn(popoverHeaderClass, className)} {...props} />;\n },\n);\n\nexport interface PopoverTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\n/**\n * Names the panel in one short statement, sentence case (spec §2 header title). When present it IS\n * the panel's accessible name: it generates a stable id and registers it with the Popover so the\n * panel takes `role=\"dialog\"` + `aria-labelledby` (spec §7). Rendered as an `<h2>` by default at the\n * panel's title type role; pass `as`/override via props if a different heading level fits the page\n * outline.\n */\nexport const PopoverTitle = React.forwardRef<HTMLHeadingElement, PopoverTitleProps>(\n function PopoverTitle({ className, id, ...props }, ref) {\n const ctx = React.useContext(PopoverContext);\n const generatedId = React.useId();\n const titleId = id ?? generatedId;\n // register this title's id so PopoverContent can name the panel + take the dialog role; clear it\n // on unmount so a titled panel that loses its title reverts to a generic container.\n React.useEffect(() => {\n ctx.setTitleId(titleId);\n return () => ctx.setTitleId(undefined);\n }, [ctx, titleId]);\n return (\n <h2 ref={ref} id={titleId} className={cn(popoverTitleClass, className)} {...props} />\n );\n },\n);\n\nexport interface PopoverBodyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * The content region (spec §2 body): text, a short form, or a few controls. Keep it small — content\n * that needs to scroll usually belongs in a Sheet (spec §2). Body text is the body type role in the\n * secondary text color (spec §5).\n */\nexport const PopoverBody = React.forwardRef<HTMLDivElement, PopoverBodyProps>(\n function PopoverBody({ className, ...props }, ref) {\n return <div ref={ref} className={cn(popoverBodyClass, className)} {...props} />;\n },\n);\n\n// A neutral X glyph, --size-icon-md, 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=\"popover-close-glyph\"\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className={popoverCloseGlyphClass}\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nexport interface PopoverCloseProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Close> {}\n\n/**\n * The in-panel dismiss control (spec §2 close): closing returns focus to the trigger (Radix). A\n * popover with no in-panel close is still dismissible by Escape and by clicking away (spec §2/§6).\n * Two forms, both proven by the tests:\n * - default (no children): the styled neutral-ghost icon-button for the header — pass an\n * `aria-label` (e.g. \"Close\"), since the glyph is decorative and the placeholder is never a name.\n * - `asChild`: wrap your own control so it also dismisses without nesting a second button.\n */\nexport const PopoverClose = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Close>,\n PopoverCloseProps\n>(function PopoverClose({ className, children, asChild, ...props }, ref) {\n if (asChild) {\n return (\n <PopoverPrimitive.Close ref={ref} asChild className={className} {...props}>\n {children}\n </PopoverPrimitive.Close>\n );\n }\n return (\n <PopoverPrimitive.Close\n ref={ref}\n className={cn(popoverCloseClass, className)}\n {...props}\n >\n {children ?? <CloseGlyph />}\n </PopoverPrimitive.Close>\n );\n});\n\n/**\n * The optional decorative arrow joining the panel to its trigger (spec §2 arrow). It carries the\n * panel's neutral surface fill, never a brand or status color, and is hidden from assistive\n * technology (Radix renders it inside an aria-hidden wrapper). Usually rendered for you by\n * `PopoverContent`'s `arrow` prop; exported for direct composition.\n */\nexport const PopoverArrow = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow>\n>(function PopoverArrow({ className, ...props }, ref) {\n return (\n <PopoverPrimitive.Arrow\n ref={ref}\n data-testid=\"popover-arrow\"\n // decorative — kept out of the AT tree per spec §2/§7 (Radix's bare arrow sets no aria-hidden)\n aria-hidden=\"true\"\n className={cn(popoverArrowClass, className)}\n {...props}\n />\n );\n});\n\nexport type PopoverArrowProps = React.ComponentPropsWithoutRef<\n typeof PopoverPrimitive.Arrow\n>;\n"],"mappings":";AA0DM,cA4DA,YA5DA;AAxDN,YAAY,WAAW;AACvB,SAAS,WAAW,wBAAwB;AAC5C,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,MAAM,iBAAiB,MAAM,cAAmC;AAAA,EAC9D,SAAS;AAAA,EACT,YAAY,MAAM;AAAA,EAAC;AACrB,CAAC;AAoBM,SAAS,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAiB;AAChE,QAAM,CAAC,SAAS,UAAU,IAAI,MAAM,SAA6B,MAAS;AAC1E,QAAM,QAAQ,MAAM,QAAQ,OAAO,EAAE,SAAS,WAAW,IAAI,CAAC,OAAO,CAAC;AACtE,SACE,oBAAC,eAAe,UAAf,EAAwB,OAGvB,8BAAC,iBAAiB,MAAjB,EAAuB,GAAG,WAAY,UAAS,GAClD;AAEJ;AAYO,MAAM,iBAAiB,MAAM,WAGlC,SAASA,gBAAe,EAAE,WAAW,SAAS,GAAG,MAAM,GAAG,KAAK;AAC/D,SACE;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,UAAU,YAAY,GAAG,qBAAqB,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAuBM,MAAM,iBAAiB,MAAM,WAGlC,SAASC,gBACT,EAAE,WAAW,UAAU,aAAa,GAAG,QAAQ,OAAO,GAAG,MAAM,GAC/D,KACA;AACA,QAAM,EAAE,QAAQ,IAAI,MAAM,WAAW,cAAc;AACnD,SACE,oBAAC,iBAAiB,QAAjB,EACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MAKA,MAAM,UAAU,WAAW;AAAA,MAC3B,mBAAiB;AAAA,MACjB,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,QACC;AAAA,UAAC,iBAAiB;AAAA,UAAjB;AAAA,YACC,eAAY;AAAA,YAIZ,eAAY;AAAA,YACZ,WAAW;AAAA;AAAA,QACb,IACE;AAAA;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AAKM,MAAM,gBAAgB,MAAM;AAAA,EACjC,SAASC,eAAc,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACnD,WAAO,oBAAC,SAAI,KAAU,WAAW,GAAG,oBAAoB,SAAS,GAAI,GAAG,OAAO;AAAA,EACjF;AACF;AAWO,MAAM,eAAe,MAAM;AAAA,EAChC,SAASC,cAAa,EAAE,WAAW,IAAI,GAAG,MAAM,GAAG,KAAK;AACtD,UAAM,MAAM,MAAM,WAAW,cAAc;AAC3C,UAAM,cAAc,MAAM,MAAM;AAChC,UAAM,UAAU,MAAM;AAGtB,UAAM,UAAU,MAAM;AACpB,UAAI,WAAW,OAAO;AACtB,aAAO,MAAM,IAAI,WAAW,MAAS;AAAA,IACvC,GAAG,CAAC,KAAK,OAAO,CAAC;AACjB,WACE,oBAAC,QAAG,KAAU,IAAI,SAAS,WAAW,GAAG,mBAAmB,SAAS,GAAI,GAAG,OAAO;AAAA,EAEvF;AACF;AASO,MAAM,cAAc,MAAM;AAAA,EAC/B,SAASC,aAAY,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACjD,WAAO,oBAAC,SAAI,KAAU,WAAW,GAAG,kBAAkB,SAAS,GAAI,GAAG,OAAO;AAAA,EAC/E;AACF;AAIA,SAAS,aAAa;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,WAAW;AAAA,MAEX,8BAAC,UAAK,GAAE,sBAAqB,eAAc,SAAQ,gBAAe,SAAQ;AAAA;AAAA,EAC5E;AAEJ;AAaO,MAAM,eAAe,MAAM,WAGhC,SAASC,cAAa,EAAE,WAAW,UAAU,SAAS,GAAG,MAAM,GAAG,KAAK;AACvE,MAAI,SAAS;AACX,WACE,oBAAC,iBAAiB,OAAjB,EAAuB,KAAU,SAAO,MAAC,WAAuB,GAAG,OACjE,UACH;AAAA,EAEJ;AACA,SACE;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA,MAEH,sBAAY,oBAAC,cAAW;AAAA;AAAA,EAC3B;AAEJ,CAAC;AAQM,MAAM,eAAe,MAAM,WAGhC,SAASC,cAAa,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACpD,SACE;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,eAAY;AAAA,MAEZ,eAAY;AAAA,MACZ,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;","names":["PopoverTrigger","PopoverContent","PopoverHeader","PopoverTitle","PopoverBody","PopoverClose","PopoverArrow"]}
@@ -0,0 +1,9 @@
1
+ export declare const popoverTriggerClass: string;
2
+ export declare const popoverPanelClass: string;
3
+ export declare const popoverHeaderClass = "flex items-start justify-between gap-(--space-3)";
4
+ export declare const popoverTitleClass = "text-h3 text-text-primary";
5
+ export declare const popoverBodyClass = "text-body text-text-secondary";
6
+ export declare const popoverArrowClass = "fill-surface-raised";
7
+ export declare const popoverCloseClass: string;
8
+ export declare const popoverCloseGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
9
+ //# sourceMappingURL=popover.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.variants.d.ts","sourceRoot":"","sources":["../../../src/components/popover/popover.variants.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,mBAAmB,QAQ4B,CAAC;AAc7D,eAAO,MAAM,iBAAiB,QAOmE,CAAC;AAIlG,eAAO,MAAM,kBAAkB,qDACqB,CAAC;AAKrD,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAK7D,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAShE,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAOvD,eAAO,MAAM,iBAAiB,QAOmE,CAAC;AAIlG,eAAO,MAAM,sBAAsB,0CAA0C,CAAC"}
@@ -0,0 +1,19 @@
1
+ const popoverTriggerClass = "inline-flex items-center justify-center gap-(--space-2) rounded-(--radius-md) px-(--space-3) text-label text-action-ghost-fg cursor-pointer select-none hover:bg-action-ghost-bg-hover transition-[color,background-color] 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 disabled:pointer-events-none disabled:text-text-disabled";
2
+ const popoverPanelClass = "z-(--z-index-popover) flex flex-col gap-(--space-3) max-w-(--container-sm) p-(--space-4) bg-surface-raised border border-surface-border rounded-(--radius-md) shadow-(--shadow-md) transition-opacity duration-(--motion-duration-fast) ease-(--motion-easing-verdify) motion-reduce:duration-(--motion-duration-instant) data-[state=open]:opacity-100 data-[state=closed]:opacity-0 outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2";
3
+ const popoverHeaderClass = "flex items-start justify-between gap-(--space-3)";
4
+ const popoverTitleClass = "text-h3 text-text-primary";
5
+ const popoverBodyClass = "text-body text-text-secondary";
6
+ const popoverArrowClass = "fill-surface-raised";
7
+ const popoverCloseClass = "inline-flex 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";
8
+ const popoverCloseGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
9
+ export {
10
+ popoverArrowClass,
11
+ popoverBodyClass,
12
+ popoverCloseClass,
13
+ popoverCloseGlyphClass,
14
+ popoverHeaderClass,
15
+ popoverPanelClass,
16
+ popoverTitleClass,
17
+ popoverTriggerClass
18
+ };
19
+ //# sourceMappingURL=popover.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/popover/popover.variants.ts"],"sourcesContent":["// Popover is a small NON-MODAL surface a trigger opens next to itself to hold secondary content —\n// a short form, a definition, a few related controls (spec §1). It is a NEUTRAL surface (spec §3):\n// the panel, the arrow, and the border are neutral, and the brand violet NEVER tints the panel to\n// look \"premium.\" A status color NEVER paints the panel — a verified result is reported by a\n// VerifiedBadge placed INSIDE the body, not by coloring the popover. So NOTHING in this file binds a\n// --color-status-* token or the brand action-primary tier; color enters only through the components\n// the caller places inside it (brand != state, G-U2). This is the ONLY token-binding site (skill §5\n// hard rule). All open/close motion is the FAST token transition on the verdify easing, instant\n// under reduced motion — never the 350ms VerifiedBadge-only theatre duration (G-U3).\n\n// The trigger: the one stop in the page tab order for this control (spec §2 trigger, §4 Focus). A\n// NEUTRAL ghost surface — the label/glyph in the ghost action fg at rest (spec §5\n// --color-action-ghost-fg), the restrained ghost hover fill (spec §5 --color-action-ghost-bg-hover),\n// the md radius, the persistent 2px focus ring (never removed, spec §4 Focus), and the target-size\n// floor (44px touch / 40px pointer, spec §7 2.5.8 / DEC-B) with the height EMERGING from the floor.\n// A disabled trigger dims via the disabled TOKEN (DEC-C), never a blanket opacity. fast functional\n// hover motion + verdify easing, instant under reduced motion (G-U3). This styles the DEFAULT\n// (non-asChild) trigger; when a Button is passed via `asChild` it carries its own treatment.\nexport const popoverTriggerClass =\n \"inline-flex items-center justify-center gap-(--space-2) rounded-(--radius-md) px-(--space-3) \" +\n \"text-label text-action-ghost-fg cursor-pointer select-none \" +\n \"hover:bg-action-ghost-bg-hover \" +\n \"transition-[color,background-color] 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 \"disabled:pointer-events-none disabled:text-text-disabled\";\n\n// The panel (spec §2 panel, §5): the floating surface that opens on activation, raised above the\n// page and anchored to the trigger; it repositions to stay in the viewport (Radix). A NEUTRAL raised\n// surface (spec §5 --color-surface-raised) with the outer surface border (spec §5\n// --color-surface-border), the md corner radius (spec §5 --radius-md), and the md elevation shadow\n// above the page (spec §5 --shadow-md), on the POPOVER z-layer (a popover is a non-modal popover\n// layer, NOT the modal layer — there is no scrim, the page behind stays live, spec §1/§7). It NEVER\n// wears a brand or status fill (spec §3/§8). Inset padding + content gaps from --space-*; a column so\n// the header, body, and footer stack. The open/close fade is a PLAIN fast transition + verdify\n// easing, instant under reduced motion — never the 350ms VerifiedBadge-only theatre (spec §4, G-U3).\n// Enter/exit ride Radix's data-state on the content (attribute-selector variants, not arbitrary\n// values). The panel is focusable (Radix sets tabIndex=-1) so focus can land on it when the body has\n// no focusable control; its ring is never removed (spec §7 focus management).\nexport const popoverPanelClass =\n \"z-(--z-index-popover) flex flex-col gap-(--space-3) \" +\n \"max-w-(--container-sm) p-(--space-4) \" +\n \"bg-surface-raised border border-surface-border rounded-(--radius-md) shadow-(--shadow-md) \" +\n \"transition-opacity duration-(--motion-duration-fast) ease-(--motion-easing-verdify) \" +\n \"motion-reduce:duration-(--motion-duration-instant) \" +\n \"data-[state=open]:opacity-100 data-[state=closed]:opacity-0 \" +\n \"outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\";\n\n// The header (spec §2 header): the top region holding a short title and an optional close control on\n// the inline-end. Logical-property layout (G-U6) so it mirrors under RTL.\nexport const popoverHeaderClass =\n \"flex items-start justify-between gap-(--space-3)\";\n\n// The title (spec §2 header title, §5): names the panel as a statement, sentence case. The h3 type\n// role in the PRIMARY text color (spec §5 --text-h3 / --color-text-primary). When present, it is the\n// panel's accessible name, wired via aria-labelledby (the panel takes role=\"dialog\", spec §7).\nexport const popoverTitleClass = \"text-h3 text-text-primary\";\n\n// The body (spec §2 body, §5): the content region — text, a short form, or a few controls. The body\n// type role; supporting text in the SECONDARY text color (spec §5 --text-body / --color-text-secondary).\n// Content that needs to scroll usually belongs in a Sheet (spec §2), so the body does not own a scroll.\nexport const popoverBodyClass = \"text-body text-text-secondary\";\n\n// The arrow (spec §2 arrow): a small DECORATIVE pointer joining the panel to its trigger, carrying no\n// meaning of its own (Radix renders it inside an aria-hidden wrapper). It is filled with the SAME\n// neutral raised surface as the panel so it reads as part of the surface, never a brand or status\n// fill (spec §3/§5). `fill-*` is the SVG fill utility for the Radix arrow polygon. (Radix's bare\n// arrow does not carry the panel's outer BORDER edge — a conformant, non-load-bearing deviation from\n// the §5 \"arrow edge\" border, flagged for amendment rather than hand-rolling a bordered polygon, the\n// same deviation the Tooltip arrow pins.)\nexport const popoverArrowClass = \"fill-surface-raised\";\n\n// The close control (spec §2 close, §5): the in-panel dismiss button. A NEUTRAL ghost surface — the\n// glyph in --color-action-ghost-fg at rest, the restrained ghost hover fill (spec §5 ghost-fg /\n// ghost-bg-hover), the md radius, the persistent focus ring, the target-size floor (44px touch /\n// 40px pointer, spec §7 2.5.8 / DEC-B) with the height EMERGING from the floor, never fixed below it.\n// fast functional hover motion + verdify easing, instant under reduced motion (G-U3).\nexport const popoverCloseClass =\n \"inline-flex 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 close glyph: a neutral X, --size-icon-md, drawn with currentColor so it inherits the close\n// button's ghost-fg. Decorative (aria-hidden) — the button carries the accessible name (spec §7).\nexport const popoverCloseGlyphClass = \"h-(--size-icon-md) w-(--size-icon-md)\";\n"],"mappings":"AAkBO,MAAM,sBACX;AAqBK,MAAM,oBACX;AAUK,MAAM,qBACX;AAKK,MAAM,oBAAoB;AAK1B,MAAM,mBAAmB;AASzB,MAAM,oBAAoB;AAO1B,MAAM,oBACX;AAUK,MAAM,yBAAyB;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Progress, type ProgressProps } from "./progress";
2
+ export { progressFillVariants, progressRootClass, progressHeaderClass, progressTrackClass, progressLabelClass, progressValueTextClass, progressDescriptionClass, progressErrorClass, type ProgressFillVariantProps, } from "./progress.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Progress } from "./progress";
2
+ import {
3
+ progressFillVariants,
4
+ progressRootClass,
5
+ progressHeaderClass,
6
+ progressTrackClass,
7
+ progressLabelClass,
8
+ progressValueTextClass,
9
+ progressDescriptionClass,
10
+ progressErrorClass
11
+ } from "./progress.variants";
12
+ export {
13
+ Progress,
14
+ progressDescriptionClass,
15
+ progressErrorClass,
16
+ progressFillVariants,
17
+ progressHeaderClass,
18
+ progressLabelClass,
19
+ progressRootClass,
20
+ progressTrackClass,
21
+ progressValueTextClass
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/progress/index.ts"],"sourcesContent":["export { Progress, type ProgressProps } from \"./progress\";\nexport {\n progressFillVariants,\n progressRootClass,\n progressHeaderClass,\n progressTrackClass,\n progressLabelClass,\n progressValueTextClass,\n progressDescriptionClass,\n progressErrorClass,\n type ProgressFillVariantProps,\n} from \"./progress.variants\";\n"],"mappings":"AAAA,SAAS,gBAAoC;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
@@ -0,0 +1,71 @@
1
+ import * as React from "react";
2
+ export interface ProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "aria-label"> {
3
+ /**
4
+ * The text naming the task, bound to the bar (spec §2/§7). When present it is rendered
5
+ * as visible text AND becomes the accessible name via `aria-labelledby`. Progress is
6
+ * never unlabeled: provide EITHER a visible `label` or an `aria-label`.
7
+ */
8
+ label?: React.ReactNode;
9
+ /**
10
+ * The accessible name when no visible {@link label} fits (spec §7). State the task
11
+ * ("Uploading your file."). Used only when there is no visible label — the bar is never
12
+ * nameless to assistive technology.
13
+ */
14
+ "aria-label"?: string;
15
+ /**
16
+ * The current progress value (spec §4/§7). Sets `aria-valuenow` (the raw value) and the
17
+ * determinate fill length (clamped to {@link min}..{@link max}). Omit it — or set
18
+ * {@link indeterminate} — when the size of the work is genuinely unknown; do not fake a
19
+ * number.
20
+ */
21
+ value?: number;
22
+ /** Lower bound of the range (spec §7). Default `0`. */
23
+ min?: number;
24
+ /** Upper bound of the range (spec §7). Default `100`. */
25
+ max?: number;
26
+ /**
27
+ * Whether the work is running but its size is unknown (spec §3/§4). A moving indicator
28
+ * travels the track and NO value is claimed: `aria-valuenow` and the visible
29
+ * `valueText` are both suppressed. Switch back to a determinate `value` the moment a
30
+ * real measure is known.
31
+ */
32
+ indeterminate?: boolean;
33
+ /**
34
+ * An optional plain progress readout next to the bar (spec §2/§7) — "40%" or
35
+ * "Step 2 of 4". Determinate only: it is rendered AND exposed as `aria-valuetext` so a
36
+ * bare number is never misleading. Ignored when {@link indeterminate}, where no honest
37
+ * number exists.
38
+ */
39
+ valueText?: React.ReactNode;
40
+ /**
41
+ * One line clarifying what is running (spec §2), written as a statement ending with a
42
+ * period. Wired to the bar via `aria-describedby`.
43
+ */
44
+ description?: React.ReactNode;
45
+ /**
46
+ * The task failed before completing (spec §4/§7). Renders the message beside the bar in
47
+ * the critical status color, sets `aria-invalid="true"` and the critical track edge,
48
+ * escalates the live region to assertive, and points `aria-describedby` at the error.
49
+ * State what failed and the next step, without blaming the reader.
50
+ */
51
+ error?: React.ReactNode;
52
+ }
53
+ /**
54
+ * Progress reports how far a task has advanced so the reader knows the system is working
55
+ * and roughly how long is left (spec §1). Use the `value` (determinate) form when the work
56
+ * is measurable — a known percentage or a step count — and the `indeterminate` form only
57
+ * when the size of the work is genuinely unknown; an honest number beats a guessed one.
58
+ *
59
+ * It is a status OUTPUT, not a control: it takes no focus, binds no keys, and is never a
60
+ * tab stop (spec §4/§6). The bar carries `role="progressbar"` with `aria-valuenow`/`min`/
61
+ * `max` (and `aria-valuetext` for a plain readout); value changes are announced through a
62
+ * polite live region so a screen-reader user hears progress without focus moving (spec
63
+ * §7). A blocking error escalates the live region to assertive and sets `aria-invalid`.
64
+ *
65
+ * The fill is a plain control affordance: neutrals carry the track and the fill takes the
66
+ * primary ACTION accent, never the verified status color, and never animates on the
67
+ * verified check's only theatre duration — a finished bar means the task ran, not that
68
+ * anything is verified (brand != state, spec §3/§5/§8).
69
+ */
70
+ export declare const Progress: React.ForwardRefExoticComponent<ProgressProps & React.RefAttributes<HTMLDivElement>>;
71
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/components/progress/progress.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAyB/B,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC;IAChE;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,sFAmHpB,CAAC"}