@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 @@
1
+ {"version":3,"file":"avatar.variants.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAclE,eAAO,MAAM,cAAc;;;;8EAoC1B,CAAC;AAOF,eAAO,MAAM,mBAAmB,QAE4C,CAAC;AAG7E,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAI7D,eAAO,MAAM,gBAAgB,0CAA0C,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { cva } from "class-variance-authority";
2
+ const avatarVariants = cva(
3
+ [
4
+ // shape / layout: a self-contained unit that clips the image or holds the fallback,
5
+ // centered, never shrinking in a flex row (spec §2)
6
+ "relative inline-flex shrink-0 items-center justify-center overflow-hidden",
7
+ // global-first: select-none keeps the decorative initials from being grabbed as text
8
+ "select-none"
9
+ ],
10
+ {
11
+ variants: {
12
+ // STRUCTURAL axis = spec §3: shape, not meaning.
13
+ shape: {
14
+ // circle (default): the standard identity Avatar — full radius (spec §3/§5)
15
+ circle: "rounded-(--radius-full)",
16
+ // rounded: a square-with-soft-corners Avatar for an organization or non-person
17
+ // entity, where a circle would read as a person — the md radius (spec §3/§5)
18
+ rounded: "rounded-(--radius-md)"
19
+ },
20
+ // STRUCTURAL axis = spec §3: size. Tokens expose no avatar width scale, so the
21
+ // footprint is a square sized by the type scale (DEC-B: density above the floor,
22
+ // never a fixed control height); sm/md/lg differ by footprint + initials size.
23
+ size: {
24
+ sm: "h-(--space-7) w-(--space-7)",
25
+ md: "h-(--space-9) w-(--space-9)",
26
+ lg: "h-(--space-12) w-(--space-12)"
27
+ },
28
+ // optional subtle border separating the Avatar from a same-colored surface
29
+ // (spec §2/§5). The muted border role meets the 3:1 non-text-contrast bar (1.4.11),
30
+ // so the edge is visible without relying on color (spec §7).
31
+ bordered: {
32
+ true: "border border-surface-border-muted",
33
+ false: ""
34
+ }
35
+ },
36
+ defaultVariants: { shape: "circle", size: "md", bordered: false }
37
+ }
38
+ );
39
+ const avatarFallbackClass = "absolute inset-0 flex items-center justify-center bg-surface-raised text-text-secondary text-caption font-medium uppercase";
40
+ const avatarImageClass = "h-full w-full object-cover";
41
+ const avatarGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
42
+ export {
43
+ avatarFallbackClass,
44
+ avatarGlyphClass,
45
+ avatarImageClass,
46
+ avatarVariants
47
+ };
48
+ //# sourceMappingURL=avatar.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/avatar/avatar.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// An Avatar is a small, NON-INTERACTIVE image standing in for an identity — a person\n// or an AI agent (spec §1). It is NOT a control: no focus ring, no target-size floor,\n// no state transition of its own (spec §4/§5/§6). Its variants are about size and\n// shape, never meaning — an Avatar carries no status, so it has no status variant\n// (spec §3).\n//\n// Neutrals carry the surface here. The fallback fill is the neutral raised surface and\n// the initials/glyph are the secondary text role; the optional container border is the\n// muted border role. An Avatar binds NOTHING from the status tier and NOTHING from the\n// action tier — it reports no state and carries no brand, so it can never be read as a\n// verification signal (brand != state; identity is not credentials, spec §1/§3/§8). The\n// verified status is the VerifiedBadge adornment placed beside it, never painted here.\nexport const avatarVariants = cva(\n [\n // shape / layout: a self-contained unit that clips the image or holds the fallback,\n // centered, never shrinking in a flex row (spec §2)\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden\",\n // global-first: select-none keeps the decorative initials from being grabbed as text\n \"select-none\",\n ],\n {\n variants: {\n // STRUCTURAL axis = spec §3: shape, not meaning.\n shape: {\n // circle (default): the standard identity Avatar — full radius (spec §3/§5)\n circle: \"rounded-(--radius-full)\",\n // rounded: a square-with-soft-corners Avatar for an organization or non-person\n // entity, where a circle would read as a person — the md radius (spec §3/§5)\n rounded: \"rounded-(--radius-md)\",\n },\n // STRUCTURAL axis = spec §3: size. Tokens expose no avatar width scale, so the\n // footprint is a square sized by the type scale (DEC-B: density above the floor,\n // never a fixed control height); sm/md/lg differ by footprint + initials size.\n size: {\n sm: \"h-(--space-7) w-(--space-7)\",\n md: \"h-(--space-9) w-(--space-9)\",\n lg: \"h-(--space-12) w-(--space-12)\",\n },\n // optional subtle border separating the Avatar from a same-colored surface\n // (spec §2/§5). The muted border role meets the 3:1 non-text-contrast bar (1.4.11),\n // so the edge is visible without relying on color (spec §7).\n bordered: {\n true: \"border border-surface-border-muted\",\n false: \"\",\n },\n },\n defaultVariants: { shape: \"circle\", size: \"md\", bordered: false },\n },\n);\n\n// The fallback (spec §2/§4): what shows when there is no image, or the image failed to\n// load — the identity's initials, or a neutral generic glyph when no name is available.\n// It is a placeholder for a missing picture, NOT a status or a category: a neutral raised\n// surface fill behind secondary-text initials/glyph, NEVER a status color and NEVER the\n// brand (spec §2/§3/§5/§8). It fills the container shape and inherits its clip.\nexport const avatarFallbackClass =\n \"absolute inset-0 flex items-center justify-center \" +\n \"bg-surface-raised text-text-secondary text-caption font-medium uppercase\";\n\n// The rendered picture (spec §2): fills the container and is cropped to its shape.\nexport const avatarImageClass = \"h-full w-full object-cover\";\n\n// The generic fallback glyph when no name is available (spec §5): sized at the md icon\n// role, decorative, in the same secondary text role as the initials.\nexport const avatarGlyphClass = \"h-(--size-icon-md) w-(--size-icon-md)\";\n\nexport type AvatarVariantProps = VariantProps<typeof avatarVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAchC,MAAM,iBAAiB;AAAA,EAC5B;AAAA;AAAA;AAAA,IAGE;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA,MAER,OAAO;AAAA;AAAA,QAEL,QAAQ;AAAA;AAAA;AAAA,QAGR,SAAS;AAAA,MACX;AAAA;AAAA;AAAA;AAAA,MAIA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA;AAAA;AAAA;AAAA,MAIA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,OAAO,UAAU,MAAM,MAAM,UAAU,MAAM;AAAA,EAClE;AACF;AAOO,MAAM,sBACX;AAIK,MAAM,mBAAmB;AAIzB,MAAM,mBAAmB;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Avatar, type AvatarProps, type AvatarShape, type AvatarSize } from "./avatar";
2
+ export { avatarVariants, avatarFallbackClass, avatarImageClass, avatarGlyphClass, type AvatarVariantProps, } from "./avatar.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Avatar } from "./avatar";
2
+ import {
3
+ avatarVariants,
4
+ avatarFallbackClass,
5
+ avatarImageClass,
6
+ avatarGlyphClass
7
+ } from "./avatar.variants";
8
+ export {
9
+ Avatar,
10
+ avatarFallbackClass,
11
+ avatarGlyphClass,
12
+ avatarImageClass,
13
+ avatarVariants
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/avatar/index.ts"],"sourcesContent":["export { Avatar, type AvatarProps, type AvatarShape, type AvatarSize } from \"./avatar\";\nexport {\n avatarVariants,\n avatarFallbackClass,\n avatarImageClass,\n avatarGlyphClass,\n type AvatarVariantProps,\n} from \"./avatar.variants\";\n"],"mappings":"AAAA,SAAS,cAAmE;AAC5E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
@@ -0,0 +1,30 @@
1
+ import * as React from "react";
2
+ import { type BadgeVariantProps } from "./badge.variants";
3
+ /** The status a Badge can report (spec §3). Omit for the default `neutral` Badge. */
4
+ export type BadgeStatus = Exclude<NonNullable<BadgeVariantProps["variant"]>, "neutral">;
5
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
6
+ /**
7
+ * The state the Badge reports (spec §3). Omit for the default `neutral` Badge —
8
+ * a plain category, tag, or count with no state meaning. A status color is spent
9
+ * only when the Badge reports a real state. The brand color is never a Badge
10
+ * variant; for a first-class verified result use the VerifiedBadge molecule.
11
+ */
12
+ status?: BadgeStatus;
13
+ /**
14
+ * One small leading glyph that reinforces the label (spec §2). Decorative and
15
+ * `aria-hidden` — the label still carries the meaning if the icon is dropped, so
16
+ * the meaning never rests on color (or icon) alone.
17
+ */
18
+ icon?: React.ReactNode;
19
+ }
20
+ /**
21
+ * A small, non-interactive inline label that classifies or counts the thing it
22
+ * sits on — a category, a count, or a status (spec §1). It carries meaning, not
23
+ * action: it never receives focus and does nothing when clicked. A Badge is
24
+ * `neutral` by default and reaches for a status color only when it reports a real
25
+ * state, because brand and status colors are accents and neutrals carry the
26
+ * surface. A Badge that reports the in-product verified result is the
27
+ * VerifiedBadge molecule, not a hand-colored Badge.
28
+ */
29
+ export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
30
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/badge/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzF,qFAAqF;AACrF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAExF,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,oFAgCjB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../lib/cn";
4
+ import { badgeVariants, badgeIconClass } from "./badge.variants";
5
+ const Badge = React.forwardRef(
6
+ function Badge2({ className, status, icon, children, "aria-label": ariaLabel, ...props }, ref) {
7
+ const variant = status ?? "neutral";
8
+ const iconOnly = children == null && ariaLabel != null;
9
+ return (
10
+ // native <span>: inline text in a styled container. No tabIndex, no focus ring — a
11
+ // Badge is a label, not a control (spec §6/§7). role="img" only on the icon-only marker,
12
+ // so the aria-label naming the state is valid and announced.
13
+ /* @__PURE__ */ jsxs(
14
+ "span",
15
+ {
16
+ ref,
17
+ className: cn(badgeVariants({ variant }), className),
18
+ role: iconOnly ? "img" : void 0,
19
+ "aria-label": ariaLabel,
20
+ ...props,
21
+ children: [
22
+ icon ? /* @__PURE__ */ jsx("span", { "data-testid": "badge-icon", className: badgeIconClass, "aria-hidden": "true", children: icon }) : null,
23
+ children
24
+ ]
25
+ }
26
+ )
27
+ );
28
+ }
29
+ );
30
+ export {
31
+ Badge
32
+ };
33
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/badge/badge.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { badgeVariants, badgeIconClass, type BadgeVariantProps } from \"./badge.variants\";\n\n/** The status a Badge can report (spec §3). Omit for the default `neutral` Badge. */\nexport type BadgeStatus = Exclude<NonNullable<BadgeVariantProps[\"variant\"]>, \"neutral\">;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * The state the Badge reports (spec §3). Omit for the default `neutral` Badge —\n * a plain category, tag, or count with no state meaning. A status color is spent\n * only when the Badge reports a real state. The brand color is never a Badge\n * variant; for a first-class verified result use the VerifiedBadge molecule.\n */\n status?: BadgeStatus;\n /**\n * One small leading glyph that reinforces the label (spec §2). Decorative and\n * `aria-hidden` — the label still carries the meaning if the icon is dropped, so\n * the meaning never rests on color (or icon) alone.\n */\n icon?: React.ReactNode;\n}\n\n/**\n * A small, non-interactive inline label that classifies or counts the thing it\n * sits on — a category, a count, or a status (spec §1). It carries meaning, not\n * action: it never receives focus and does nothing when clicked. A Badge is\n * `neutral` by default and reaches for a status color only when it reports a real\n * state, because brand and status colors are accents and neutrals carry the\n * surface. A Badge that reports the in-product verified result is the\n * VerifiedBadge molecule, not a hand-colored Badge.\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n function Badge({ className, status, icon, children, \"aria-label\": ariaLabel, ...props }, ref) {\n const variant = status ?? \"neutral\";\n // The label text MUST reach the accessibility tree (spec §7): when there is a visible\n // word, that text is the accessible name and no role is needed (the spec default). When\n // the Badge is shown icon-and-color only — no visible word — the meaning can only be\n // carried by the caller's aria-label, but `aria-label` on a roleless <span> is prohibited\n // by ARIA (aria-prohibited-attr) and would be silently dropped, leaving the state unnamed\n // and resting on color alone — exactly what spec §1/§8 forbids. So give the icon-only\n // marker role=\"img\" (a graphical element with a text alternative, the same pattern Avatar\n // and AgentBadge use) to make the name valid and announced.\n const iconOnly = children == null && ariaLabel != null;\n return (\n // native <span>: inline text in a styled container. No tabIndex, no focus ring — a\n // Badge is a label, not a control (spec §6/§7). role=\"img\" only on the icon-only marker,\n // so the aria-label naming the state is valid and announced.\n <span\n ref={ref}\n className={cn(badgeVariants({ variant }), className)}\n role={iconOnly ? \"img\" : undefined}\n aria-label={ariaLabel}\n {...props}\n >\n {icon ? (\n <span data-testid=\"badge-icon\" className={badgeIconClass} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n {children}\n </span>\n );\n },\n);\n"],"mappings":"AAgDM,SAQI,KARJ;AAhDN,YAAY,WAAW;AACvB,SAAS,UAAU;AACnB,SAAS,eAAe,sBAA8C;AA8B/D,MAAM,QAAQ,MAAM;AAAA,EACzB,SAASA,OAAM,EAAE,WAAW,QAAQ,MAAM,UAAU,cAAc,WAAW,GAAG,MAAM,GAAG,KAAK;AAC5F,UAAM,UAAU,UAAU;AAS1B,UAAM,WAAW,YAAY,QAAQ,aAAa;AAClD;AAAA;AAAA;AAAA;AAAA,MAIE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,UACnD,MAAM,WAAW,QAAQ;AAAA,UACzB,cAAY;AAAA,UACX,GAAG;AAAA,UAEH;AAAA,mBACC,oBAAC,UAAK,eAAY,cAAa,WAAW,gBAAgB,eAAY,QACnE,gBACH,IACE;AAAA,YACH;AAAA;AAAA;AAAA,MACH;AAAA;AAAA,EAEJ;AACF;","names":["Badge"]}
@@ -0,0 +1,7 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ export declare const badgeVariants: (props?: ({
3
+ variant?: "neutral" | "verified" | "signal" | "caution" | "critical" | null | undefined;
4
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
+ export declare const badgeIconClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0";
6
+ export type BadgeVariantProps = VariantProps<typeof badgeVariants>;
7
+ //# sourceMappingURL=badge.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.variants.d.ts","sourceRoot":"","sources":["../../../src/components/badge/badge.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAelE,eAAO,MAAM,aAAa;;8EAyBzB,CAAC;AAKF,eAAO,MAAM,cAAc,+DAA+D,CAAC;AAE3F,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { cva } from "class-variance-authority";
2
+ const badgeVariants = cva(
3
+ [
4
+ // shape / layout: a pill holding the optional icon + label at the small gap
5
+ "inline-flex items-center gap-(--space-1) rounded-(--radius-full) border px-(--space-1)",
6
+ // type ROLE — caption (spec §5); meaning never rests on color alone, so the
7
+ // label text always reads on its own
8
+ "text-caption font-medium",
9
+ // global-first: never wrap, isolate so a monospace count stays LTR in RTL text
10
+ "whitespace-nowrap"
11
+ ],
12
+ {
13
+ variants: {
14
+ // STRUCTURAL axis = spec §3 (the meaning the Badge carries)
15
+ variant: {
16
+ // neutral: a plain category/tag/count — neutral surface, text, border roles
17
+ neutral: "bg-surface-raised border-surface-border-muted text-text-secondary",
18
+ // status: the matching --color-status-* trio; bg is the neutral surface
19
+ verified: "bg-status-verified-bg border-status-verified-border text-status-verified-fg",
20
+ signal: "bg-status-signal-bg border-status-signal-border text-status-signal-fg",
21
+ caution: "bg-status-caution-bg border-status-caution-border text-status-caution-fg",
22
+ critical: "bg-status-critical-bg border-status-critical-border text-status-critical-fg"
23
+ }
24
+ },
25
+ defaultVariants: { variant: "neutral" }
26
+ }
27
+ );
28
+ const badgeIconClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0";
29
+ export {
30
+ badgeIconClass,
31
+ badgeVariants
32
+ };
33
+ //# sourceMappingURL=badge.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/badge/badge.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// A Badge is a small, non-interactive inline label (spec §1). It is a pill that\n// holds a label and an optional decorative icon — NOT a control: no focus ring,\n// no target-size floor, no state transition (spec §4/§5/§6).\n//\n// `variant` is the meaning the Badge carries (spec §3). `neutral` is the default\n// — restraint over volume; a status color is spent only when the Badge reports a\n// real state. The brand color (Sovereign Violet) is NEVER a Badge variant: the\n// brand is not a status, so the Badge family binds nothing from the action tier.\n//\n// Container fill: every variant — neutral AND each status — paints the SAME one\n// raised surface. The status trio's `-bg` resolves to that same surface, so the\n// meaning is carried by the fg (label + icon) and the border, never a saturated\n// fill (brand != state; color lives in fg/border, spec §3/§5).\nexport const badgeVariants = cva(\n [\n // shape / layout: a pill holding the optional icon + label at the small gap\n \"inline-flex items-center gap-(--space-1) rounded-(--radius-full) border px-(--space-1)\",\n // type ROLE — caption (spec §5); meaning never rests on color alone, so the\n // label text always reads on its own\n \"text-caption font-medium\",\n // global-first: never wrap, isolate so a monospace count stays LTR in RTL text\n \"whitespace-nowrap\",\n ],\n {\n variants: {\n // STRUCTURAL axis = spec §3 (the meaning the Badge carries)\n variant: {\n // neutral: a plain category/tag/count — neutral surface, text, border roles\n neutral: \"bg-surface-raised border-surface-border-muted text-text-secondary\",\n // status: the matching --color-status-* trio; bg is the neutral surface\n verified: \"bg-status-verified-bg border-status-verified-border text-status-verified-fg\",\n signal: \"bg-status-signal-bg border-status-signal-border text-status-signal-fg\",\n caution: \"bg-status-caution-bg border-status-caution-border text-status-caution-fg\",\n critical: \"bg-status-critical-bg border-status-critical-border text-status-critical-fg\",\n },\n },\n defaultVariants: { variant: \"neutral\" },\n },\n);\n\n// The optional leading icon (spec §2): one small decorative glyph at the sm icon\n// role. It inherits the variant fg via `currentColor`; the label still carries\n// the meaning if the icon is dropped.\nexport const badgeIconClass = \"inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0\";\n\nexport type BadgeVariantProps = VariantProps<typeof badgeVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAehC,MAAM,gBAAgB;AAAA,EAC3B;AAAA;AAAA,IAEE;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA,MAER,SAAS;AAAA;AAAA,QAEP,SAAS;AAAA;AAAA,QAET,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAKO,MAAM,iBAAiB;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Badge, type BadgeProps, type BadgeStatus } from "./badge";
2
+ export { badgeVariants, badgeIconClass, type BadgeVariantProps } from "./badge.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/badge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Badge } from "./badge";
2
+ import { badgeVariants, badgeIconClass } from "./badge.variants";
3
+ export {
4
+ Badge,
5
+ badgeIconClass,
6
+ badgeVariants
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/badge/index.ts"],"sourcesContent":["export { Badge, type BadgeProps, type BadgeStatus } from \"./badge\";\nexport { badgeVariants, badgeIconClass, type BadgeVariantProps } from \"./badge.variants\";\n"],"mappings":"AAAA,SAAS,aAAgD;AACzD,SAAS,eAAe,sBAA8C;","names":[]}
@@ -0,0 +1,90 @@
1
+ import * as React from "react";
2
+ export interface BreadcrumbProps extends React.ComponentPropsWithoutRef<"nav"> {
3
+ /**
4
+ * The landmark's accessible name (spec §7). Defaults to `"Breadcrumb"` so the trail is
5
+ * distinguishable from other `navigation` landmarks on the page. Override it (or point
6
+ * `aria-labelledby` at a visible label) when the app names its trails differently.
7
+ */
8
+ "aria-label"?: string;
9
+ }
10
+ /**
11
+ * A Breadcrumb shows where the current page sits in the hierarchy and lets you step back up it
12
+ * (spec §1). It is the `navigation` landmark wrapping an ordered trail of links from a root to
13
+ * the current page. It is NOT primary navigation and NOT a wizard's step indicator — reach for
14
+ * a Sidebar or Tabs when the choices are siblings rather than ancestors.
15
+ *
16
+ * The trail is structural wayfinding in neutral text (spec §3): it never carries the brand
17
+ * violet or a status color, because a crumb reports a location in the hierarchy, not a
18
+ * verification result. Coloring a crumb with a status hue would break brand != state.
19
+ *
20
+ * It is render-only (no hook / no stateful Radix primitive), so it needs no `'use client'`.
21
+ */
22
+ export declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
23
+ export type BreadcrumbListProps = React.ComponentPropsWithoutRef<"ol">;
24
+ /**
25
+ * The trail's ordered list (spec §2): order is the meaning here, root -> current, so it is an
26
+ * `<ol>`, not a loose group. Holds the alternating `BreadcrumbItem` / `BreadcrumbSeparator`
27
+ * sequence.
28
+ */
29
+ export declare const BreadcrumbList: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>;
30
+ export type BreadcrumbItemProps = React.ComponentPropsWithoutRef<"li">;
31
+ /**
32
+ * One ancestor in the trail (spec §2): a `<li>` holding either a `BreadcrumbLink` (an ancestor
33
+ * you can return to) or the `BreadcrumbPage` (the current page).
34
+ */
35
+ export declare const BreadcrumbItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
36
+ export interface BreadcrumbLinkProps extends React.ComponentPropsWithoutRef<"a"> {
37
+ /**
38
+ * Project the link styling onto a caller-supplied anchor (a framework router `<Link>` rendered
39
+ * as an `<a>`) via Radix Slot, instead of the default native `<a>` (spec §2). Slot runs
40
+ * `React.Children.only` — pass exactly one anchor child.
41
+ */
42
+ asChild?: boolean;
43
+ /**
44
+ * The ancestor cannot be returned to in the current context (spec §4, rare). The item dims via
45
+ * the disabled TOKEN (DEC-C), is removed from the tab order, and drops its `href` so it cannot
46
+ * navigate — while its label stays readable to assistive technology. Do not disable the
47
+ * current page; it is already non-interactive by being the current page.
48
+ */
49
+ disabled?: boolean;
50
+ }
51
+ /**
52
+ * A link to an ancestor (spec §2/§4). A native `<a>` so it exposes the link role and is operable
53
+ * without extra wiring; it gets the visible focus ring, the restrained ghost hover fill, and the
54
+ * target-size floor. Use `asChild` to project the styling onto a router anchor.
55
+ */
56
+ export declare const BreadcrumbLink: React.ForwardRefExoticComponent<BreadcrumbLinkProps & React.RefAttributes<HTMLAnchorElement>>;
57
+ export type BreadcrumbPageProps = React.ComponentPropsWithoutRef<"span">;
58
+ /**
59
+ * The current page (spec §2/§4): the last item, plain text in the primary color carrying
60
+ * `aria-current="page"`. It is NOT a link and is non-interactive — no focus ring, no
61
+ * target-size floor, not focusable — so a screen-reader user is never told the page they are on
62
+ * is somewhere to go.
63
+ */
64
+ export declare const BreadcrumbPage: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
65
+ export interface BreadcrumbSeparatorProps extends React.ComponentPropsWithoutRef<"li"> {
66
+ /** The separator glyph (spec §2). Defaults to a chevron; pass a slash or other glyph to override. */
67
+ children?: React.ReactNode;
68
+ }
69
+ /**
70
+ * The glyph between two items (spec §2/§4): decoration only, in the muted text color. It carries
71
+ * `aria-hidden` and `role="presentation"` so it is removed from the accessibility tree — the
72
+ * trail does not read as "Home slash Billing slash Invoice". It is a list item structurally but
73
+ * is not announced as one.
74
+ */
75
+ export declare const BreadcrumbSeparator: React.ForwardRefExoticComponent<BreadcrumbSeparatorProps & React.RefAttributes<HTMLLIElement>>;
76
+ export type BreadcrumbEllipsisProps = React.ComponentPropsWithoutRef<"span">;
77
+ /**
78
+ * The overflow indicator for the collapsed variant (spec §2): an ellipsis standing in for the
79
+ * middle of a long trail when the path is too long for its container.
80
+ *
81
+ * It renders here as a DECORATIVE, non-interactive glyph in the muted text color. The spec's
82
+ * interactive overflow (a Menu button that reveals the hidden ancestors and opens them in a Menu,
83
+ * spec §2/§6/§7) is intentionally NOT wired here: the library has no Menu / Popover primitive
84
+ * yet, and the build order places Navigation overlays after this trail. Once a Menu primitive
85
+ * lands, this slot becomes the Menu trigger (a `button` with `aria-haspopup="menu"` and
86
+ * `aria-expanded`). Until then, render the collapsed middle as this decorative indicator and keep
87
+ * the root and current page visible alongside it.
88
+ */
89
+ export declare const BreadcrumbEllipsis: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
90
+ //# sourceMappingURL=breadcrumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/breadcrumb.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC5E;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,qFAarB,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,cAAc,2KAI1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,cAAc,kKAI1B,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC;IAC9E;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,+FAgB1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,sKAY1B,CAAC;AAEF,MAAM,WAAW,wBAAyB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC;IACpF,qGAAqG;IACrG,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gGAe/B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAE7E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,sKAc9B,CAAC"}
@@ -0,0 +1,143 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Slot } from "radix-ui";
4
+ import { cn } from "../../lib/cn";
5
+ import {
6
+ breadcrumbNavClass,
7
+ breadcrumbListClass,
8
+ breadcrumbItemClass,
9
+ breadcrumbLinkClass,
10
+ breadcrumbPageClass,
11
+ breadcrumbSeparatorClass,
12
+ breadcrumbEllipsisClass
13
+ } from "./breadcrumb.variants";
14
+ const Breadcrumb = React.forwardRef(function Breadcrumb2({ className, "aria-label": ariaLabel = "Breadcrumb", ...props }, ref) {
15
+ return (
16
+ // the navigation landmark, named so a screen reader can jump to the breadcrumb directly
17
+ /* @__PURE__ */ jsx(
18
+ "nav",
19
+ {
20
+ ref,
21
+ "aria-label": ariaLabel,
22
+ className: cn(breadcrumbNavClass, className),
23
+ ...props
24
+ }
25
+ )
26
+ );
27
+ });
28
+ const BreadcrumbList = React.forwardRef(
29
+ function BreadcrumbList2({ className, ...props }, ref) {
30
+ return /* @__PURE__ */ jsx("ol", { ref, className: cn(breadcrumbListClass, className), ...props });
31
+ }
32
+ );
33
+ const BreadcrumbItem = React.forwardRef(
34
+ function BreadcrumbItem2({ className, ...props }, ref) {
35
+ return /* @__PURE__ */ jsx("li", { ref, className: cn(breadcrumbItemClass, className), ...props });
36
+ }
37
+ );
38
+ const BreadcrumbLink = React.forwardRef(
39
+ function BreadcrumbLink2({ className, asChild = false, disabled = false, href, ...props }, ref) {
40
+ const Comp = asChild ? Slot.Root : "a";
41
+ return /* @__PURE__ */ jsx(
42
+ Comp,
43
+ {
44
+ ref,
45
+ href: disabled ? void 0 : href,
46
+ "aria-disabled": disabled || void 0,
47
+ tabIndex: disabled ? -1 : void 0,
48
+ className: cn(breadcrumbLinkClass(), className),
49
+ ...props
50
+ }
51
+ );
52
+ }
53
+ );
54
+ const BreadcrumbPage = React.forwardRef(
55
+ function BreadcrumbPage2({ className, ...props }, ref) {
56
+ return /* @__PURE__ */ jsx(
57
+ "span",
58
+ {
59
+ ref,
60
+ "aria-current": "page",
61
+ className: cn(breadcrumbPageClass, className),
62
+ ...props
63
+ }
64
+ );
65
+ }
66
+ );
67
+ const BreadcrumbSeparator = React.forwardRef(
68
+ function BreadcrumbSeparator2({ className, children, ...props }, ref) {
69
+ return /* @__PURE__ */ jsx(
70
+ "li",
71
+ {
72
+ ref,
73
+ role: "presentation",
74
+ "aria-hidden": "true",
75
+ "data-testid": "breadcrumb-separator",
76
+ className: cn(breadcrumbSeparatorClass, className),
77
+ ...props,
78
+ children: children ?? /* @__PURE__ */ jsx(ChevronGlyph, {})
79
+ }
80
+ );
81
+ }
82
+ );
83
+ const BreadcrumbEllipsis = React.forwardRef(
84
+ function BreadcrumbEllipsis2({ className, children, ...props }, ref) {
85
+ return /* @__PURE__ */ jsx(
86
+ "span",
87
+ {
88
+ ref,
89
+ "aria-hidden": "true",
90
+ "data-testid": "breadcrumb-ellipsis",
91
+ className: cn(breadcrumbEllipsisClass, className),
92
+ ...props,
93
+ children: children ?? /* @__PURE__ */ jsx(EllipsisGlyph, {})
94
+ }
95
+ );
96
+ }
97
+ );
98
+ function ChevronGlyph() {
99
+ return /* @__PURE__ */ jsx(
100
+ "svg",
101
+ {
102
+ width: "16",
103
+ height: "16",
104
+ viewBox: "0 0 16 16",
105
+ fill: "none",
106
+ stroke: "currentColor",
107
+ strokeWidth: "1.5",
108
+ strokeLinecap: "round",
109
+ strokeLinejoin: "round",
110
+ "aria-hidden": "true",
111
+ focusable: "false",
112
+ children: /* @__PURE__ */ jsx("path", { d: "M6 4l4 4-4 4" })
113
+ }
114
+ );
115
+ }
116
+ function EllipsisGlyph() {
117
+ return /* @__PURE__ */ jsxs(
118
+ "svg",
119
+ {
120
+ width: "16",
121
+ height: "16",
122
+ viewBox: "0 0 16 16",
123
+ fill: "currentColor",
124
+ "aria-hidden": "true",
125
+ focusable: "false",
126
+ children: [
127
+ /* @__PURE__ */ jsx("circle", { cx: "3", cy: "8", r: "1.25" }),
128
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "1.25" }),
129
+ /* @__PURE__ */ jsx("circle", { cx: "13", cy: "8", r: "1.25" })
130
+ ]
131
+ }
132
+ );
133
+ }
134
+ export {
135
+ Breadcrumb,
136
+ BreadcrumbEllipsis,
137
+ BreadcrumbItem,
138
+ BreadcrumbLink,
139
+ BreadcrumbList,
140
+ BreadcrumbPage,
141
+ BreadcrumbSeparator
142
+ };
143
+ //# sourceMappingURL=breadcrumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n breadcrumbNavClass,\n breadcrumbListClass,\n breadcrumbItemClass,\n breadcrumbLinkClass,\n breadcrumbPageClass,\n breadcrumbSeparatorClass,\n breadcrumbEllipsisClass,\n} from \"./breadcrumb.variants\";\n\nexport interface BreadcrumbProps extends React.ComponentPropsWithoutRef<\"nav\"> {\n /**\n * The landmark's accessible name (spec §7). Defaults to `\"Breadcrumb\"` so the trail is\n * distinguishable from other `navigation` landmarks on the page. Override it (or point\n * `aria-labelledby` at a visible label) when the app names its trails differently.\n */\n \"aria-label\"?: string;\n}\n\n/**\n * A Breadcrumb shows where the current page sits in the hierarchy and lets you step back up it\n * (spec §1). It is the `navigation` landmark wrapping an ordered trail of links from a root to\n * the current page. It is NOT primary navigation and NOT a wizard's step indicator — reach for\n * a Sidebar or Tabs when the choices are siblings rather than ancestors.\n *\n * The trail is structural wayfinding in neutral text (spec §3): it never carries the brand\n * violet or a status color, because a crumb reports a location in the hierarchy, not a\n * verification result. Coloring a crumb with a status hue would break brand != state.\n *\n * It is render-only (no hook / no stateful Radix primitive), so it needs no `'use client'`.\n */\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { className, \"aria-label\": ariaLabel = \"Breadcrumb\", ...props },\n ref,\n) {\n return (\n // the navigation landmark, named so a screen reader can jump to the breadcrumb directly\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn(breadcrumbNavClass, className)}\n {...props}\n />\n );\n});\n\nexport type BreadcrumbListProps = React.ComponentPropsWithoutRef<\"ol\">;\n\n/**\n * The trail's ordered list (spec §2): order is the meaning here, root -> current, so it is an\n * `<ol>`, not a loose group. Holds the alternating `BreadcrumbItem` / `BreadcrumbSeparator`\n * sequence.\n */\nexport const BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n function BreadcrumbList({ className, ...props }, ref) {\n return <ol ref={ref} className={cn(breadcrumbListClass, className)} {...props} />;\n },\n);\n\nexport type BreadcrumbItemProps = React.ComponentPropsWithoutRef<\"li\">;\n\n/**\n * One ancestor in the trail (spec §2): a `<li>` holding either a `BreadcrumbLink` (an ancestor\n * you can return to) or the `BreadcrumbPage` (the current page).\n */\nexport const BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return <li ref={ref} className={cn(breadcrumbItemClass, className)} {...props} />;\n },\n);\n\nexport interface BreadcrumbLinkProps extends React.ComponentPropsWithoutRef<\"a\"> {\n /**\n * Project the link styling onto a caller-supplied anchor (a framework router `<Link>` rendered\n * as an `<a>`) via Radix Slot, instead of the default native `<a>` (spec §2). Slot runs\n * `React.Children.only` — pass exactly one anchor child.\n */\n asChild?: boolean;\n /**\n * The ancestor cannot be returned to in the current context (spec §4, rare). The item dims via\n * the disabled TOKEN (DEC-C), is removed from the tab order, and drops its `href` so it cannot\n * navigate — while its label stays readable to assistive technology. Do not disable the\n * current page; it is already non-interactive by being the current page.\n */\n disabled?: boolean;\n}\n\n/**\n * A link to an ancestor (spec §2/§4). A native `<a>` so it exposes the link role and is operable\n * without extra wiring; it gets the visible focus ring, the restrained ghost hover fill, and the\n * target-size floor. Use `asChild` to project the styling onto a router anchor.\n */\nexport const BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n function BreadcrumbLink({ className, asChild = false, disabled = false, href, ...props }, ref) {\n const Comp = asChild ? Slot.Root : \"a\";\n return (\n <Comp\n ref={ref}\n // a disabled ancestor drops its href (cannot navigate), leaves the tab order, and is\n // marked aria-disabled so AT still reads its label (spec §4/§7)\n href={disabled ? undefined : href}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n className={cn(breadcrumbLinkClass(), className)}\n {...props}\n />\n );\n },\n);\n\nexport type BreadcrumbPageProps = React.ComponentPropsWithoutRef<\"span\">;\n\n/**\n * The current page (spec §2/§4): the last item, plain text in the primary color carrying\n * `aria-current=\"page\"`. It is NOT a link and is non-interactive — no focus ring, no\n * target-size floor, not focusable — so a screen-reader user is never told the page they are on\n * is somewhere to go.\n */\nexport const BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n // the only item with aria-current; plain text, not a link (spec §7)\n aria-current=\"page\"\n className={cn(breadcrumbPageClass, className)}\n {...props}\n />\n );\n },\n);\n\nexport interface BreadcrumbSeparatorProps extends React.ComponentPropsWithoutRef<\"li\"> {\n /** The separator glyph (spec §2). Defaults to a chevron; pass a slash or other glyph to override. */\n children?: React.ReactNode;\n}\n\n/**\n * The glyph between two items (spec §2/§4): decoration only, in the muted text color. It carries\n * `aria-hidden` and `role=\"presentation\"` so it is removed from the accessibility tree — the\n * trail does not read as \"Home slash Billing slash Invoice\". It is a list item structurally but\n * is not announced as one.\n */\nexport const BreadcrumbSeparator = React.forwardRef<HTMLLIElement, BreadcrumbSeparatorProps>(\n function BreadcrumbSeparator({ className, children, ...props }, ref) {\n return (\n <li\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n data-testid=\"breadcrumb-separator\"\n className={cn(breadcrumbSeparatorClass, className)}\n {...props}\n >\n {children ?? <ChevronGlyph />}\n </li>\n );\n },\n);\n\nexport type BreadcrumbEllipsisProps = React.ComponentPropsWithoutRef<\"span\">;\n\n/**\n * The overflow indicator for the collapsed variant (spec §2): an ellipsis standing in for the\n * middle of a long trail when the path is too long for its container.\n *\n * It renders here as a DECORATIVE, non-interactive glyph in the muted text color. The spec's\n * interactive overflow (a Menu button that reveals the hidden ancestors and opens them in a Menu,\n * spec §2/§6/§7) is intentionally NOT wired here: the library has no Menu / Popover primitive\n * yet, and the build order places Navigation overlays after this trail. Once a Menu primitive\n * lands, this slot becomes the Menu trigger (a `button` with `aria-haspopup=\"menu\"` and\n * `aria-expanded`). Until then, render the collapsed middle as this decorative indicator and keep\n * the root and current page visible alongside it.\n */\nexport const BreadcrumbEllipsis = React.forwardRef<HTMLSpanElement, BreadcrumbEllipsisProps>(\n function BreadcrumbEllipsis({ className, children, ...props }, ref) {\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-testid=\"breadcrumb-ellipsis\"\n className={cn(breadcrumbEllipsisClass, className)}\n {...props}\n >\n {children ?? <EllipsisGlyph />}\n </span>\n );\n },\n);\n\n/** The default separator glyph — a chevron pointing in the reading direction. Decorative. */\nfunction ChevronGlyph() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M6 4l4 4-4 4\" />\n </svg>\n );\n}\n\n/** The default overflow glyph — three dots. Decorative. */\nfunction EllipsisGlyph() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"3\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"13\" cy=\"8\" r=\"1.25\" />\n </svg>\n );\n}\n"],"mappings":"AAwCI,cAgLA,YAhLA;AAxCJ,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAuBA,MAAM,aAAa,MAAM,WAAyC,SAASA,YAChF,EAAE,WAAW,cAAc,YAAY,cAAc,GAAG,MAAM,GAC9D,KACA;AACA;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,cAAY;AAAA,QACZ,WAAW,GAAG,oBAAoB,SAAS;AAAA,QAC1C,GAAG;AAAA;AAAA,IACN;AAAA;AAEJ,CAAC;AASM,MAAM,iBAAiB,MAAM;AAAA,EAClC,SAASC,gBAAe,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACpD,WAAO,oBAAC,QAAG,KAAU,WAAW,GAAG,qBAAqB,SAAS,GAAI,GAAG,OAAO;AAAA,EACjF;AACF;AAQO,MAAM,iBAAiB,MAAM;AAAA,EAClC,SAASC,gBAAe,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACpD,WAAO,oBAAC,QAAG,KAAU,WAAW,GAAG,qBAAqB,SAAS,GAAI,GAAG,OAAO;AAAA,EACjF;AACF;AAuBO,MAAM,iBAAiB,MAAM;AAAA,EAClC,SAASC,gBAAe,EAAE,WAAW,UAAU,OAAO,WAAW,OAAO,MAAM,GAAG,MAAM,GAAG,KAAK;AAC7F,UAAM,OAAO,UAAU,KAAK,OAAO;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QAGA,MAAM,WAAW,SAAY;AAAA,QAC7B,iBAAe,YAAY;AAAA,QAC3B,UAAU,WAAW,KAAK;AAAA,QAC1B,WAAW,GAAG,oBAAoB,GAAG,SAAS;AAAA,QAC7C,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAUO,MAAM,iBAAiB,MAAM;AAAA,EAClC,SAASC,gBAAe,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACpD,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QAEA,gBAAa;AAAA,QACb,WAAW,GAAG,qBAAqB,SAAS;AAAA,QAC3C,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAaO,MAAM,sBAAsB,MAAM;AAAA,EACvC,SAASC,qBAAoB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AACnE,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,eAAY;AAAA,QACZ,eAAY;AAAA,QACZ,WAAW,GAAG,0BAA0B,SAAS;AAAA,QAChD,GAAG;AAAA,QAEH,sBAAY,oBAAC,gBAAa;AAAA;AAAA,IAC7B;AAAA,EAEJ;AACF;AAgBO,MAAM,qBAAqB,MAAM;AAAA,EACtC,SAASC,oBAAmB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AAClE,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAY;AAAA,QACZ,eAAY;AAAA,QACZ,WAAW,GAAG,yBAAyB,SAAS;AAAA,QAC/C,GAAG;AAAA,QAEH,sBAAY,oBAAC,iBAAc;AAAA;AAAA,IAC9B;AAAA,EAEJ;AACF;AAGA,SAAS,eAAe;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV,8BAAC,UAAK,GAAE,gBAAe;AAAA;AAAA,EACzB;AAEJ;AAGA,SAAS,gBAAgB;AACvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV;AAAA,4BAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,QAAO;AAAA,QAC/B,oBAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,QAAO;AAAA,QAC/B,oBAAC,YAAO,IAAG,MAAK,IAAG,KAAI,GAAE,QAAO;AAAA;AAAA;AAAA,EAClC;AAEJ;","names":["Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis"]}
@@ -0,0 +1,10 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ export declare const breadcrumbNavClass = "bg-surface-canvas py-(--space-2)";
3
+ export declare const breadcrumbListClass = "flex flex-wrap items-center gap-(--space-1) text-caption";
4
+ export declare const breadcrumbItemClass = "inline-flex items-center gap-(--space-1)";
5
+ export declare const breadcrumbLinkClass: (props?: ({} & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare const breadcrumbPageClass = "inline-flex items-center gap-(--space-1) px-(--space-1) text-caption text-text-primary";
7
+ export declare const breadcrumbSeparatorClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted";
8
+ export declare const breadcrumbEllipsisClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted";
9
+ export type BreadcrumbLinkVariantProps = VariantProps<typeof breadcrumbLinkClass>;
10
+ //# sourceMappingURL=breadcrumb.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb.variants.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/breadcrumb.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAYlE,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AAIrE,eAAO,MAAM,mBAAmB,6DAC4B,CAAC;AAG7D,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAS9E,eAAO,MAAM,mBAAmB,2FAuB/B,CAAC;AAKF,eAAO,MAAM,mBAAmB,2FAC0D,CAAC;AAK3F,eAAO,MAAM,wBAAwB,2GACqE,CAAC;AAM3G,eAAO,MAAM,uBAAuB,2GACsE,CAAC;AAE3G,MAAM,MAAM,0BAA0B,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { cva } from "class-variance-authority";
2
+ const breadcrumbNavClass = "bg-surface-canvas py-(--space-2)";
3
+ const breadcrumbListClass = "flex flex-wrap items-center gap-(--space-1) text-caption";
4
+ const breadcrumbItemClass = "inline-flex items-center gap-(--space-1)";
5
+ const breadcrumbLinkClass = cva(
6
+ [
7
+ // type ROLE + resting color; logical inline padding + the small icon gap for an optional glyph
8
+ "inline-flex items-center gap-(--space-1) rounded-(--radius-sm) px-(--space-1)",
9
+ "text-caption text-text-secondary",
10
+ // hover: the restrained ghost fill, label lifts to the primary text color, pointer cursor
11
+ "cursor-pointer hover:bg-action-ghost-bg-hover hover:text-text-primary",
12
+ // active text where the ghost treatment applies (spec §5)
13
+ "active:text-action-ghost-fg",
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 (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 (non-returnable) ancestor — DEC-C: dim via the disabled TOKEN, never opacity.
23
+ // aria-disabled drives it because a breadcrumb ancestor is an <a>, which has no native
24
+ // disabled; the component also strips href + tabindex so it cannot navigate or be tabbed to.
25
+ "aria-disabled:pointer-events-none aria-disabled:text-text-disabled"
26
+ ],
27
+ { variants: {}, defaultVariants: {} }
28
+ );
29
+ const breadcrumbPageClass = "inline-flex items-center gap-(--space-1) px-(--space-1) text-caption text-text-primary";
30
+ const breadcrumbSeparatorClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted";
31
+ const breadcrumbEllipsisClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted";
32
+ export {
33
+ breadcrumbEllipsisClass,
34
+ breadcrumbItemClass,
35
+ breadcrumbLinkClass,
36
+ breadcrumbListClass,
37
+ breadcrumbNavClass,
38
+ breadcrumbPageClass,
39
+ breadcrumbSeparatorClass
40
+ };
41
+ //# sourceMappingURL=breadcrumb.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/breadcrumb/breadcrumb.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// A Breadcrumb is structural wayfinding in NEUTRAL text (spec §3): it names the trail from a\n// root to the current page. It has no status-colored and no brand-accented variant at rest —\n// a crumb reports a location in the hierarchy, not a verification result, so it binds nothing\n// from the status tier and nothing from the action(brand) tier. The trail paints from the\n// text, ghost-action, border, and surface aliases only (spec §5).\n\n// The nav landmark wrapping the trail. A neutral canvas surface with logical-property block\n// padding so the trail mirrors under dir=\"rtl\" (G-U6). The optional hairline separating the\n// breadcrumb from the content below it (spec §5, border-default) is a caller decision, not a\n// default binding — apply it via className where the surface needs the divide.\nexport const breadcrumbNavClass = \"bg-surface-canvas py-(--space-2)\";\n\n// The ordered list: root -> current. Inline row of items + separators, wrapping when narrow,\n// with the small inter-item gap. The list itself carries no text color — each item sets its own.\nexport const breadcrumbListClass =\n \"flex flex-wrap items-center gap-(--space-1) text-caption\";\n\n// A single trail item (the <li>). Inline so the item and its trailing separator sit on one row.\nexport const breadcrumbItemClass = \"inline-flex items-center gap-(--space-1)\";\n\n// The link item (spec §4). At rest it is the trail label type role in the SECONDARY text color;\n// on hover it takes a restrained ghost fill and the label lifts to the PRIMARY text color (the\n// ghost-action hover fill is the only fill a crumb ever paints). The focus ring is part of the\n// base, on every state, never removed. Motion is the fast token transition on the verdify easing,\n// collapsing to the instant endpoint under reduced motion — never the 350ms VerifiedBadge-only\n// theatre duration. A disabled (non-returnable) ancestor dims via the disabled TOKEN, not a\n// blanket opacity (DEC-C), and is taken out of the tab order + pointer flow by the component.\nexport const breadcrumbLinkClass = cva(\n [\n // type ROLE + resting color; logical inline padding + the small icon gap for an optional glyph\n \"inline-flex items-center gap-(--space-1) rounded-(--radius-sm) px-(--space-1)\",\n \"text-caption text-text-secondary\",\n // hover: the restrained ghost fill, label lifts to the primary text color, pointer cursor\n \"cursor-pointer hover:bg-action-ghost-bg-hover hover:text-text-primary\",\n // active text where the ghost treatment applies (spec §5)\n \"active:text-action-ghost-fg\",\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 (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 (non-returnable) ancestor — DEC-C: dim via the disabled TOKEN, never opacity.\n // aria-disabled drives it because a breadcrumb ancestor is an <a>, which has no native\n // disabled; the component also strips href + tabindex so it cannot navigate or be tabbed to.\n \"aria-disabled:pointer-events-none aria-disabled:text-text-disabled\",\n ],\n { variants: {}, defaultVariants: {} },\n);\n\n// The current page (spec §2/§4/§5): the last item. PLAIN text in the PRIMARY color, NOT a link —\n// no focus ring, no target-size floor, not focusable. The non-interactive guidance: a current\n// crumb is a label, not a control.\nexport const breadcrumbPageClass =\n \"inline-flex items-center gap-(--space-1) px-(--space-1) text-caption text-text-primary\";\n\n// The separator glyph between two items (spec §2/§4): decoration only, in the MUTED text color,\n// at the sm icon role. Removed from the a11y tree by the component (aria-hidden + role=presentation)\n// so the trail is not announced as \"Home slash Billing slash Invoice\".\nexport const breadcrumbSeparatorClass =\n \"inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted\";\n\n// The overflow indicator for the collapsed variant (spec §2): the ellipsis standing in for the\n// middle of a long trail. It renders here as a DECORATIVE, non-interactive glyph in the muted\n// text color — the interactive overflow Menu (a Menu button revealing the hidden ancestors)\n// defers to the Menu primitive, which the library has not built yet (see component TSDoc).\nexport const breadcrumbEllipsisClass =\n \"inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0 items-center justify-center text-text-muted\";\n\nexport type BreadcrumbLinkVariantProps = VariantProps<typeof breadcrumbLinkClass>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAYhC,MAAM,qBAAqB;AAI3B,MAAM,sBACX;AAGK,MAAM,sBAAsB;AAS5B,MAAM,sBAAsB;AAAA,EACjC;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,EACF;AAAA,EACA,EAAE,UAAU,CAAC,GAAG,iBAAiB,CAAC,EAAE;AACtC;AAKO,MAAM,sBACX;AAKK,MAAM,2BACX;AAMK,MAAM,0BACX;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, type BreadcrumbProps, type BreadcrumbListProps, type BreadcrumbItemProps, type BreadcrumbLinkProps, type BreadcrumbPageProps, type BreadcrumbSeparatorProps, type BreadcrumbEllipsisProps, } from "./breadcrumb";
2
+ export { breadcrumbNavClass, breadcrumbListClass, breadcrumbItemClass, breadcrumbLinkClass, breadcrumbPageClass, breadcrumbSeparatorClass, breadcrumbEllipsisClass, type BreadcrumbLinkVariantProps, } from "./breadcrumb.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,uBAAuB,CAAC"}