@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,102 @@
1
+ import * as React from "react";
2
+ import { Dialog as DialogPrimitive } from "radix-ui";
3
+ import { type SheetPanelVariantProps } from "./sheet.variants";
4
+ type SheetSide = NonNullable<SheetPanelVariantProps["side"]>;
5
+ type SheetSize = NonNullable<SheetPanelVariantProps["size"]>;
6
+ export interface SheetProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {
7
+ /**
8
+ * Docking edge + slide axis (spec §3): `inline-end` (default — slides from the inline-end edge,
9
+ * the right in LTR, for most secondary tasks), `inline-start` (slides from the inline-start edge,
10
+ * for navigation or start-of-reading-order context), or `block-end` (slides up from the block-end
11
+ * edge as a bottom sheet, for narrow and touch viewports). Logical, so it mirrors under dir=rtl.
12
+ */
13
+ side?: SheetSide;
14
+ /**
15
+ * Cross-axis extent (spec §3): `sm` / `md` (default) / `lg` — a width for an inline side, a
16
+ * height for a block side. `lg` never grows to the full viewport; a task that fills the screen
17
+ * should be a route, not a sheet.
18
+ */
19
+ size?: SheetSize;
20
+ }
21
+ /**
22
+ * Sheet is a modal panel that slides in from a viewport edge to hold a focused, secondary task —
23
+ * edit a profile, review a credential, configure a filter — without leaving the page underneath
24
+ * (spec §1). Use it when the task is too large for a popover and you want the page to stay in
25
+ * context behind a scrim; use Dialog for a small centered confirmation and a full route for a
26
+ * primary task. It is a NEUTRAL overlay surface: the panel and scrim are neutral, brand violet
27
+ * appears only on a footer primary action through Button, and Verified Green never appears here as
28
+ * decoration (spec §3 / §5 / §8, brand != state). Wraps the Radix Dialog primitive (WAI-ARIA APG
29
+ * modal-dialog pattern) — a stateful primitive, so this file is `'use client'`.
30
+ */
31
+ export declare function Sheet({ side, size, children, ...rootProps }: SheetProps): import("react/jsx-runtime").JSX.Element;
32
+ export interface SheetTriggerProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger> {
33
+ }
34
+ /**
35
+ * The control that opens the sheet (spec §7: focus returns here on close). Pass `asChild` to wrap
36
+ * your own Button so the trigger inherits its role, keyboard, and focus ring rather than nesting a
37
+ * second button.
38
+ */
39
+ export declare const SheetTrigger: React.ForwardRefExoticComponent<SheetTriggerProps & React.RefAttributes<HTMLButtonElement>>;
40
+ export interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
41
+ }
42
+ /**
43
+ * Renders the portal, the scrim, and the edge-anchored panel (spec §2 scrim + panel). The panel is
44
+ * `role="dialog"` with `aria-modal="true"` (Radix), takes the focus trap, is named by its
45
+ * `SheetTitle` via `aria-labelledby` and described by its `SheetDescription` via `aria-describedby`
46
+ * (Radix wires both). On open, focus moves into the panel — to the first meaningful control, or the
47
+ * panel itself when none exists — and returns to the trigger on close (spec §7). Content behind the
48
+ * open sheet is inert. A sheet is NEVER dismissed by a scrim (outside) click (spec §2 / §8 Don't):
49
+ * Escape and the close control are the only dismissals, so the scrim is a visible inert edge, not a
50
+ * dismiss affordance.
51
+ */
52
+ export declare const SheetContent: React.ForwardRefExoticComponent<SheetContentProps & React.RefAttributes<HTMLDivElement>>;
53
+ export interface SheetHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
54
+ }
55
+ /** The top region: the title and the close button on the inline-end (spec §2 header). */
56
+ export declare const SheetHeader: React.ForwardRefExoticComponent<SheetHeaderProps & React.RefAttributes<HTMLDivElement>>;
57
+ export interface SheetTitleProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {
58
+ }
59
+ /**
60
+ * Names the task in one short statement, sentence case, no exclamation mark — it IS the sheet's
61
+ * accessible name, wired to the panel via `aria-labelledby` by Radix (spec §2 title, §7). Rendered
62
+ * as an `<h2>` by default at the sheet's title type role.
63
+ */
64
+ export declare const SheetTitle: React.ForwardRefExoticComponent<SheetTitleProps & React.RefAttributes<HTMLHeadingElement>>;
65
+ export interface SheetDescriptionProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {
66
+ }
67
+ /**
68
+ * Optional supporting text directly under the title, associated with the panel for screen readers
69
+ * via `aria-describedby` (Radix) (spec §2, §7).
70
+ */
71
+ export declare const SheetDescription: React.ForwardRefExoticComponent<SheetDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
72
+ export interface SheetBodyProps extends React.HTMLAttributes<HTMLDivElement> {
73
+ }
74
+ /**
75
+ * The scrollable content region between header and footer (spec §2 body, §4 scrolled). The panel is
76
+ * a fixed-height flex column; the body takes the remaining space and is the ONLY part that scrolls
77
+ * when content overflows — the header and footer stay pinned.
78
+ */
79
+ export declare const SheetBody: React.ForwardRefExoticComponent<SheetBodyProps & React.RefAttributes<HTMLDivElement>>;
80
+ export interface SheetFooterProps extends React.HTMLAttributes<HTMLDivElement> {
81
+ }
82
+ /**
83
+ * The optional action region (spec §2 footer). The primary action sits at the inline-end with a
84
+ * Cancel beside it; the actions are Buttons — the footer consumes the `--color-action-*` aliases
85
+ * THROUGH Button, which the sheet spec does not restate (spec §5 note). A Cancel never replaces the
86
+ * close control, which stays present in the header.
87
+ */
88
+ export declare const SheetFooter: React.ForwardRefExoticComponent<SheetFooterProps & React.RefAttributes<HTMLDivElement>>;
89
+ export interface SheetCloseProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close> {
90
+ }
91
+ /**
92
+ * The dismiss control (spec §2 close): always present and reachable — a sheet is never closable by
93
+ * the scrim alone (spec §8). Closing returns focus to the trigger (Radix). Two forms, both proven
94
+ * by the tests:
95
+ * - default (no children): the styled neutral-ghost icon-button for the header — pass an
96
+ * `aria-label` (e.g. "Close"), since the glyph is decorative and the placeholder is never a name.
97
+ * - `asChild`: wrap a footer Button (e.g. "Cancel") so the cancel action also dismisses without
98
+ * nesting a second button. A Cancel never replaces the header close control.
99
+ */
100
+ export declare const SheetClose: React.ForwardRefExoticComponent<SheetCloseProps & React.RefAttributes<HTMLButtonElement>>;
101
+ export {};
102
+ //# sourceMappingURL=sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/components/sheet/sheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAUL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAE1B,KAAK,SAAS,GAAG,WAAW,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,KAAK,SAAS,GAAG,WAAW,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAgB7D,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC;IACnE;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,EAAE,IAAmB,EAAE,IAAW,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,EAAE,UAAU,2CAM7F;AAED,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;CAAG;AAE3E;;;;GAIG;AACH,eAAO,MAAM,YAAY,6FAKvB,CAAC;AAEH,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;CAAG;AAE3E;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,0FAkCvB,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjF,yFAAyF;AACzF,eAAO,MAAM,WAAW,yFAIvB,CAAC;AAEF,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC;CAAG;AAEzE;;;;GAIG;AACH,eAAO,MAAM,UAAU,4FAKrB,CAAC;AAEH,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC;CAAG;AAE/E;;;GAGG;AACH,eAAO,MAAM,gBAAgB,oGAW3B,CAAC;AAEH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAE/E;;;;GAIG;AACH,eAAO,MAAM,SAAS,uFAIrB,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,yFAIvB,CAAC;AAoBF,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC;CAAG;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,2FAoBrB,CAAC"}
@@ -0,0 +1,120 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Dialog as DialogPrimitive } from "radix-ui";
5
+ import { cn } from "../../lib/cn";
6
+ import {
7
+ sheetScrimVariants,
8
+ sheetPanelVariants,
9
+ sheetHeaderClass,
10
+ sheetTitleClass,
11
+ sheetDescriptionClass,
12
+ sheetBodyClass,
13
+ sheetFooterClass,
14
+ sheetCloseVariants,
15
+ sheetCloseGlyphClass
16
+ } from "./sheet.variants";
17
+ const SheetContext = React.createContext({
18
+ side: "inline-end",
19
+ size: "md"
20
+ });
21
+ function Sheet({ side = "inline-end", size = "md", children, ...rootProps }) {
22
+ return /* @__PURE__ */ jsx(SheetContext.Provider, { value: { side, size }, children: /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...rootProps, children }) });
23
+ }
24
+ const SheetTrigger = React.forwardRef(function SheetTrigger2(props, ref) {
25
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ref, ...props });
26
+ });
27
+ const SheetContent = React.forwardRef(function SheetContent2({ className, children, ...props }, ref) {
28
+ const { side, size } = React.useContext(SheetContext);
29
+ const guardOutside = (event) => event.preventDefault();
30
+ return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
31
+ /* @__PURE__ */ jsx(
32
+ DialogPrimitive.Overlay,
33
+ {
34
+ "data-testid": "sheet-scrim",
35
+ className: sheetScrimVariants()
36
+ }
37
+ ),
38
+ /* @__PURE__ */ jsx(
39
+ DialogPrimitive.Content,
40
+ {
41
+ ref,
42
+ "aria-modal": "true",
43
+ className: cn(sheetPanelVariants({ side, size }), className),
44
+ onPointerDownOutside: guardOutside,
45
+ onInteractOutside: guardOutside,
46
+ ...props,
47
+ children
48
+ }
49
+ )
50
+ ] });
51
+ });
52
+ const SheetHeader = React.forwardRef(
53
+ function SheetHeader2({ className, ...props }, ref) {
54
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(sheetHeaderClass, className), ...props });
55
+ }
56
+ );
57
+ const SheetTitle = React.forwardRef(function SheetTitle2({ className, ...props }, ref) {
58
+ return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, className: cn(sheetTitleClass, className), ...props });
59
+ });
60
+ const SheetDescription = React.forwardRef(function SheetDescription2({ className, ...props }, ref) {
61
+ return /* @__PURE__ */ jsx(
62
+ DialogPrimitive.Description,
63
+ {
64
+ ref,
65
+ className: cn(sheetDescriptionClass, className),
66
+ ...props
67
+ }
68
+ );
69
+ });
70
+ const SheetBody = React.forwardRef(
71
+ function SheetBody2({ className, ...props }, ref) {
72
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(sheetBodyClass, className), ...props });
73
+ }
74
+ );
75
+ const SheetFooter = React.forwardRef(
76
+ function SheetFooter2({ className, ...props }, ref) {
77
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(sheetFooterClass, className), ...props });
78
+ }
79
+ );
80
+ function CloseGlyph() {
81
+ return /* @__PURE__ */ jsx(
82
+ "svg",
83
+ {
84
+ "data-testid": "sheet-close-glyph",
85
+ "aria-hidden": "true",
86
+ viewBox: "0 0 16 16",
87
+ fill: "none",
88
+ stroke: "currentColor",
89
+ strokeWidth: "1.5",
90
+ className: sheetCloseGlyphClass,
91
+ children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", strokeLinecap: "round", strokeLinejoin: "round" })
92
+ }
93
+ );
94
+ }
95
+ const SheetClose = React.forwardRef(function SheetClose2({ className, children, asChild, ...props }, ref) {
96
+ if (asChild) {
97
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ref, asChild: true, className, ...props, children });
98
+ }
99
+ return /* @__PURE__ */ jsx(
100
+ DialogPrimitive.Close,
101
+ {
102
+ ref,
103
+ className: cn(sheetCloseVariants(), className),
104
+ ...props,
105
+ children: children ?? /* @__PURE__ */ jsx(CloseGlyph, {})
106
+ }
107
+ );
108
+ });
109
+ export {
110
+ Sheet,
111
+ SheetBody,
112
+ SheetClose,
113
+ SheetContent,
114
+ SheetDescription,
115
+ SheetFooter,
116
+ SheetHeader,
117
+ SheetTitle,
118
+ SheetTrigger
119
+ };
120
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/sheet/sheet.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n sheetScrimVariants,\n sheetPanelVariants,\n sheetHeaderClass,\n sheetTitleClass,\n sheetDescriptionClass,\n sheetBodyClass,\n sheetFooterClass,\n sheetCloseVariants,\n sheetCloseGlyphClass,\n type SheetPanelVariantProps,\n} from \"./sheet.variants\";\n\ntype SheetSide = NonNullable<SheetPanelVariantProps[\"side\"]>;\ntype SheetSize = NonNullable<SheetPanelVariantProps[\"size\"]>;\n\n// The presentation axes (spec §3) are set ONCE on the root and travel to the content via context,\n// so callers don't repeat `side`/`size` on `SheetContent` (mirrors the Dialog/Tabs/Accordion\n// precedent). `side` decides the docking edge + slide axis; `size` sets the panel's cross-axis\n// extent. Unlike Dialog, NEITHER axis affects the scrim-dismiss policy — a sheet is NEVER closable\n// by the scrim alone (spec §2 / §8); only Escape or the close control dismisses it.\ntype SheetContextValue = {\n side: SheetSide;\n size: SheetSize;\n};\nconst SheetContext = React.createContext<SheetContextValue>({\n side: \"inline-end\",\n size: \"md\",\n});\n\nexport interface SheetProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {\n /**\n * Docking edge + slide axis (spec §3): `inline-end` (default — slides from the inline-end edge,\n * the right in LTR, for most secondary tasks), `inline-start` (slides from the inline-start edge,\n * for navigation or start-of-reading-order context), or `block-end` (slides up from the block-end\n * edge as a bottom sheet, for narrow and touch viewports). Logical, so it mirrors under dir=rtl.\n */\n side?: SheetSide;\n /**\n * Cross-axis extent (spec §3): `sm` / `md` (default) / `lg` — a width for an inline side, a\n * height for a block side. `lg` never grows to the full viewport; a task that fills the screen\n * should be a route, not a sheet.\n */\n size?: SheetSize;\n}\n\n/**\n * Sheet is a modal panel that slides in from a viewport edge to hold a focused, secondary task —\n * edit a profile, review a credential, configure a filter — without leaving the page underneath\n * (spec §1). Use it when the task is too large for a popover and you want the page to stay in\n * context behind a scrim; use Dialog for a small centered confirmation and a full route for a\n * primary task. It is a NEUTRAL overlay surface: the panel and scrim are neutral, brand violet\n * appears only on a footer primary action through Button, and Verified Green never appears here as\n * decoration (spec §3 / §5 / §8, brand != state). Wraps the Radix Dialog primitive (WAI-ARIA APG\n * modal-dialog pattern) — a stateful primitive, so this file is `'use client'`.\n */\nexport function Sheet({ side = \"inline-end\", size = \"md\", children, ...rootProps }: SheetProps) {\n return (\n <SheetContext.Provider value={{ side, size }}>\n <DialogPrimitive.Root {...rootProps}>{children}</DialogPrimitive.Root>\n </SheetContext.Provider>\n );\n}\n\nexport interface SheetTriggerProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger> {}\n\n/**\n * The control that opens the sheet (spec §7: focus returns here on close). Pass `asChild` to wrap\n * your own Button so the trigger inherits its role, keyboard, and focus ring rather than nesting a\n * second button.\n */\nexport const SheetTrigger = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Trigger>,\n SheetTriggerProps\n>(function SheetTrigger(props, ref) {\n return <DialogPrimitive.Trigger ref={ref} {...props} />;\n});\n\nexport interface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {}\n\n/**\n * Renders the portal, the scrim, and the edge-anchored panel (spec §2 scrim + panel). The panel is\n * `role=\"dialog\"` with `aria-modal=\"true\"` (Radix), takes the focus trap, is named by its\n * `SheetTitle` via `aria-labelledby` and described by its `SheetDescription` via `aria-describedby`\n * (Radix wires both). On open, focus moves into the panel — to the first meaningful control, or the\n * panel itself when none exists — and returns to the trigger on close (spec §7). Content behind the\n * open sheet is inert. A sheet is NEVER dismissed by a scrim (outside) click (spec §2 / §8 Don't):\n * Escape and the close control are the only dismissals, so the scrim is a visible inert edge, not a\n * dismiss affordance.\n */\nexport const SheetContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n SheetContentProps\n>(function SheetContent({ className, children, ...props }, ref) {\n const { side, size } = React.useContext(SheetContext);\n\n // Block scrim-click dismissal (and the focus-out auto-dismiss that would follow a click landing\n // outside) on EVERY sheet — unlike a standard Dialog, the scrim is never a dismiss control (spec\n // §2 / §8). preventDefault on the outside-pointer/interaction keeps the panel open; Escape and\n // the in-panel close control remain the dismissals.\n const guardOutside = (event: Event) => event.preventDefault();\n\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-testid=\"sheet-scrim\"\n className={sheetScrimVariants()}\n />\n <DialogPrimitive.Content\n ref={ref}\n // The spec §7 ARIA contract names aria-modal=\"true\" explicitly. This Radix version makes the\n // rest of the page inert (pointer-events:none on body + aria-hidden on siblings) but does\n // not emit aria-modal, so we set it to honor the frozen contract literally; the panel IS\n // modal (the focus trap + inert siblings back the claim).\n aria-modal=\"true\"\n className={cn(sheetPanelVariants({ side, size }), className)}\n onPointerDownOutside={guardOutside}\n onInteractOutside={guardOutside}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\n\nexport interface SheetHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/** The top region: the title and the close button on the inline-end (spec §2 header). */\nexport const SheetHeader = React.forwardRef<HTMLDivElement, SheetHeaderProps>(\n function SheetHeader({ className, ...props }, ref) {\n return <div ref={ref} className={cn(sheetHeaderClass, className)} {...props} />;\n },\n);\n\nexport interface SheetTitleProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {}\n\n/**\n * Names the task in one short statement, sentence case, no exclamation mark — it IS the sheet's\n * accessible name, wired to the panel via `aria-labelledby` by Radix (spec §2 title, §7). Rendered\n * as an `<h2>` by default at the sheet's title type role.\n */\nexport const SheetTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n SheetTitleProps\n>(function SheetTitle({ className, ...props }, ref) {\n return <DialogPrimitive.Title ref={ref} className={cn(sheetTitleClass, className)} {...props} />;\n});\n\nexport interface SheetDescriptionProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {}\n\n/**\n * Optional supporting text directly under the title, associated with the panel for screen readers\n * via `aria-describedby` (Radix) (spec §2, §7).\n */\nexport const SheetDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n SheetDescriptionProps\n>(function SheetDescription({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(sheetDescriptionClass, className)}\n {...props}\n />\n );\n});\n\nexport interface SheetBodyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * The scrollable content region between header and footer (spec §2 body, §4 scrolled). The panel is\n * a fixed-height flex column; the body takes the remaining space and is the ONLY part that scrolls\n * when content overflows — the header and footer stay pinned.\n */\nexport const SheetBody = React.forwardRef<HTMLDivElement, SheetBodyProps>(\n function SheetBody({ className, ...props }, ref) {\n return <div ref={ref} className={cn(sheetBodyClass, className)} {...props} />;\n },\n);\n\nexport interface SheetFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * The optional action region (spec §2 footer). The primary action sits at the inline-end with a\n * Cancel beside it; the actions are Buttons — the footer consumes the `--color-action-*` aliases\n * THROUGH Button, which the sheet spec does not restate (spec §5 note). A Cancel never replaces the\n * close control, which stays present in the header.\n */\nexport const SheetFooter = React.forwardRef<HTMLDivElement, SheetFooterProps>(\n function SheetFooter({ className, ...props }, ref) {\n return <div ref={ref} className={cn(sheetFooterClass, 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=\"sheet-close-glyph\"\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className={sheetCloseGlyphClass}\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nexport interface SheetCloseProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close> {}\n\n/**\n * The dismiss control (spec §2 close): always present and reachable — a sheet is never closable by\n * the scrim alone (spec §8). Closing returns focus to the trigger (Radix). Two forms, both proven\n * 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 a footer Button (e.g. \"Cancel\") so the cancel action also dismisses without\n * nesting a second button. A Cancel never replaces the header close control.\n */\nexport const SheetClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n SheetCloseProps\n>(function SheetClose({ className, children, asChild, ...props }, ref) {\n if (asChild) {\n return (\n <DialogPrimitive.Close ref={ref} asChild className={className} {...props}>\n {children}\n </DialogPrimitive.Close>\n );\n }\n return (\n <DialogPrimitive.Close\n ref={ref}\n className={cn(sheetCloseVariants(), className)}\n {...props}\n >\n {children ?? <CloseGlyph />}\n </DialogPrimitive.Close>\n );\n});\n"],"mappings":";AAiEM,cA8CF,YA9CE;AA/DN,YAAY,WAAW;AACvB,SAAS,UAAU,uBAAuB;AAC1C,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAcP,MAAM,eAAe,MAAM,cAAiC;AAAA,EAC1D,MAAM;AAAA,EACN,MAAM;AACR,CAAC;AA6BM,SAAS,MAAM,EAAE,OAAO,cAAc,OAAO,MAAM,UAAU,GAAG,UAAU,GAAe;AAC9F,SACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,MAAM,KAAK,GACzC,8BAAC,gBAAgB,MAAhB,EAAsB,GAAG,WAAY,UAAS,GACjD;AAEJ;AAUO,MAAM,eAAe,MAAM,WAGhC,SAASA,cAAa,OAAO,KAAK;AAClC,SAAO,oBAAC,gBAAgB,SAAhB,EAAwB,KAAW,GAAG,OAAO;AACvD,CAAC;AAeM,MAAM,eAAe,MAAM,WAGhC,SAASC,cAAa,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AAC9D,QAAM,EAAE,MAAM,KAAK,IAAI,MAAM,WAAW,YAAY;AAMpD,QAAM,eAAe,CAAC,UAAiB,MAAM,eAAe;AAE5D,SACE,qBAAC,gBAAgB,QAAhB,EACC;AAAA;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC,eAAY;AAAA,QACZ,WAAW,mBAAmB;AAAA;AAAA,IAChC;AAAA,IACA;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC;AAAA,QAKA,cAAW;AAAA,QACX,WAAW,GAAG,mBAAmB,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS;AAAA,QAC3D,sBAAsB;AAAA,QACtB,mBAAmB;AAAA,QAClB,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,KACF;AAEJ,CAAC;AAKM,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;AAUO,MAAM,aAAa,MAAM,WAG9B,SAASC,YAAW,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAClD,SAAO,oBAAC,gBAAgB,OAAhB,EAAsB,KAAU,WAAW,GAAG,iBAAiB,SAAS,GAAI,GAAG,OAAO;AAChG,CAAC;AASM,MAAM,mBAAmB,MAAM,WAGpC,SAASC,kBAAiB,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACxD,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AASM,MAAM,YAAY,MAAM;AAAA,EAC7B,SAASC,WAAU,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC/C,WAAO,oBAAC,SAAI,KAAU,WAAW,GAAG,gBAAgB,SAAS,GAAI,GAAG,OAAO;AAAA,EAC7E;AACF;AAUO,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;AAcO,MAAM,aAAa,MAAM,WAG9B,SAASC,YAAW,EAAE,WAAW,UAAU,SAAS,GAAG,MAAM,GAAG,KAAK;AACrE,MAAI,SAAS;AACX,WACE,oBAAC,gBAAgB,OAAhB,EAAsB,KAAU,SAAO,MAAC,WAAuB,GAAG,OAChE,UACH;AAAA,EAEJ;AACA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,mBAAmB,GAAG,SAAS;AAAA,MAC5C,GAAG;AAAA,MAEH,sBAAY,oBAAC,cAAW;AAAA;AAAA,EAC3B;AAEJ,CAAC;","names":["SheetTrigger","SheetContent","SheetHeader","SheetTitle","SheetDescription","SheetBody","SheetFooter","SheetClose"]}
@@ -0,0 +1,15 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ export declare const sheetScrimVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
3
+ export declare const sheetPanelVariants: (props?: ({
4
+ side?: "inline-end" | "inline-start" | "block-end" | null | undefined;
5
+ size?: "md" | "sm" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export declare const sheetHeaderClass = "flex items-start justify-between gap-(--space-4) border-b border-surface-border-muted pb-(--space-4)";
8
+ export declare const sheetTitleClass = "text-h2 text-text-primary";
9
+ export declare const sheetDescriptionClass = "text-body text-text-secondary";
10
+ export declare const sheetBodyClass = "min-h-0 flex-1 overflow-y-auto text-body text-text-secondary";
11
+ export declare const sheetFooterClass = "flex items-center justify-end gap-(--space-2) border-t border-surface-border-muted pt-(--space-4)";
12
+ export declare const sheetCloseVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
+ export declare const sheetCloseGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
14
+ export type SheetPanelVariantProps = VariantProps<typeof sheetPanelVariants>;
15
+ //# sourceMappingURL=sheet.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.variants.d.ts","sourceRoot":"","sources":["../../../src/components/sheet/sheet.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAclE,eAAO,MAAM,kBAAkB,oFAK7B,CAAC;AA0BH,eAAO,MAAM,kBAAkB;;;8EAyD9B,CAAC;AAMF,eAAO,MAAM,gBAAgB,yGAC2E,CAAC;AAKzG,eAAO,MAAM,eAAe,8BAA8B,CAAC;AAI3D,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AAMrE,eAAO,MAAM,cAAc,iEACqC,CAAC;AAMjE,eAAO,MAAM,gBAAgB,sGACwE,CAAC;AAQtG,eAAO,MAAM,kBAAkB,oFAa7B,CAAC;AAIH,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAE5E,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { cva } from "class-variance-authority";
2
+ const sheetScrimVariants = cva([
3
+ "fixed inset-0 z-(--z-index-modal) bg-scrim-dark",
4
+ "transition-opacity duration-(--motion-duration-base) ease-(--motion-easing-verdify)",
5
+ "motion-reduce:duration-(--motion-duration-instant)",
6
+ "data-[state=open]:opacity-100 data-[state=closed]:opacity-0"
7
+ ]);
8
+ const sheetPanelVariants = cva(
9
+ [
10
+ "fixed z-(--z-index-modal)",
11
+ // a flex column: header + footer stay pinned, the body scrolls within (spec §4 scrolled)
12
+ "flex flex-col gap-(--space-4)",
13
+ // neutral raised surface + outer border + lg radius + lg elevation; panel inset padding
14
+ "bg-surface-raised border border-surface-border rounded-(--radius-lg) shadow-(--shadow-lg)",
15
+ "p-(--space-6)",
16
+ // base slide+fade open/close + verdify easing, instant under reduced motion (NEVER deliberate)
17
+ "transition-[opacity,transform] duration-(--motion-duration-base) ease-(--motion-easing-verdify)",
18
+ "motion-reduce:duration-(--motion-duration-instant)",
19
+ // enter/exit ride Radix data-state — the fade is shared across sides (the per-side slide lives
20
+ // in the side variant); attribute-selector variants, not arbitrary values
21
+ "data-[state=open]:opacity-100 data-[state=closed]:opacity-0",
22
+ // the panel takes focus when there is no obvious first control; its ring is never removed
23
+ "outline-none",
24
+ "focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2"
25
+ ],
26
+ {
27
+ variants: {
28
+ // side = the docking edge + slide axis (spec §3). Logical inset properties (G-U6): inset-y-0
29
+ // / inset-x-0 pin the full extent along the docked edge; start-0 / end-0 / bottom-0 dock it.
30
+ // The closed-state translate slides the panel fully off its own edge; open returns it to 0.
31
+ side: {
32
+ "inline-end": [
33
+ "inset-y-0 end-0 h-full",
34
+ "data-[state=open]:translate-x-0 data-[state=closed]:translate-x-full"
35
+ ],
36
+ "inline-start": [
37
+ "inset-y-0 start-0 h-full",
38
+ "data-[state=open]:translate-x-0 data-[state=closed]:-translate-x-full"
39
+ ],
40
+ "block-end": [
41
+ "inset-x-0 bottom-0 w-full",
42
+ "data-[state=open]:translate-y-0 data-[state=closed]:translate-y-full"
43
+ ]
44
+ },
45
+ // size = cross-axis extent. The concrete axis (width vs height) is resolved per-side by the
46
+ // compoundVariants below — this key only carries the default for type inference.
47
+ size: {
48
+ sm: "",
49
+ md: "",
50
+ lg: ""
51
+ }
52
+ },
53
+ compoundVariants: [
54
+ // inline sides: size -> WIDTH (the cross-axis of a side that pins the block extent)
55
+ { side: ["inline-end", "inline-start"], size: "sm", class: "w-(--container-sm)" },
56
+ { side: ["inline-end", "inline-start"], size: "md", class: "w-(--container-md)" },
57
+ { side: ["inline-end", "inline-start"], size: "lg", class: "w-(--container-lg)" },
58
+ // block side: size -> HEIGHT (the cross-axis of a side that pins the inline extent)
59
+ { side: "block-end", size: "sm", class: "h-(--container-sm)" },
60
+ { side: "block-end", size: "md", class: "h-(--container-md)" },
61
+ { side: "block-end", size: "lg", class: "h-(--container-lg)" }
62
+ ],
63
+ defaultVariants: { side: "inline-end", size: "md" }
64
+ }
65
+ );
66
+ const sheetHeaderClass = "flex items-start justify-between gap-(--space-4) border-b border-surface-border-muted pb-(--space-4)";
67
+ const sheetTitleClass = "text-h2 text-text-primary";
68
+ const sheetDescriptionClass = "text-body text-text-secondary";
69
+ const sheetBodyClass = "min-h-0 flex-1 overflow-y-auto text-body text-text-secondary";
70
+ const sheetFooterClass = "flex items-center justify-end gap-(--space-2) border-t border-surface-border-muted pt-(--space-4)";
71
+ const sheetCloseVariants = cva([
72
+ "inline-flex items-center justify-center rounded-(--radius-md)",
73
+ // neutral ghost surface: glyph color at rest + restrained hover fill (no bg/border at rest)
74
+ "text-action-ghost-fg hover:bg-action-ghost-bg-hover",
75
+ // fast functional hover transition + verdify easing, instant under reduced motion (NEVER deliberate)
76
+ "transition-colors duration-(--motion-duration-fast) ease-(--motion-easing-verdify)",
77
+ "motion-reduce:duration-(--motion-duration-instant)",
78
+ // target-size floor: 44px touch / 40px pointer; the close button is square at the floor (DEC-B)
79
+ "min-h-(--size-target-mobile) min-w-(--size-target-mobile)",
80
+ "sm:min-h-(--size-target-desktop) sm:min-w-(--size-target-desktop)",
81
+ // visible 2px focus ring at 2px offset; never removed
82
+ "outline-none",
83
+ "focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2"
84
+ ]);
85
+ const sheetCloseGlyphClass = "h-(--size-icon-md) w-(--size-icon-md)";
86
+ export {
87
+ sheetBodyClass,
88
+ sheetCloseGlyphClass,
89
+ sheetCloseVariants,
90
+ sheetDescriptionClass,
91
+ sheetFooterClass,
92
+ sheetHeaderClass,
93
+ sheetPanelVariants,
94
+ sheetScrimVariants,
95
+ sheetTitleClass
96
+ };
97
+ //# sourceMappingURL=sheet.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/sheet/sheet.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// Sheet is a NEUTRAL overlay surface (spec §1/§3/§5/§8): brand violet and Verified Green are\n// accents that enter only through the components placed INSIDE the panel (a primary Button, a\n// VerifiedBadge), never on the PANEL or the SCRIM themselves. Restraint over volume — neutrals\n// carry the surface. So NOTHING in this file binds an --color-action-primary-* or --color-status-*\n// fill (brand != state, G-U2). This is the ONLY token-binding site (skill §5 hard rule).\n\n// The scrim: the dimming layer between the page and the panel; it signals the page behind is inert\n// and gives the focus trap a visible edge (spec §2 scrim, §5 --color-scrim-*). A neutral dim on the\n// modal z-layer, decorative (no role). The fade is a PLAIN base transition + verdify easing,\n// instant under reduced motion — never the 350ms VerifiedBadge-only theatre (G-U3 motion-theatre\n// gate). Enter/exit ride Radix's data-state on the overlay (attribute-selector variants, not\n// arbitrary values). On a light surface the dark scrim token applies (spec §5: scrim-dark).\nexport const sheetScrimVariants = cva([\n \"fixed inset-0 z-(--z-index-modal) bg-scrim-dark\",\n \"transition-opacity duration-(--motion-duration-base) ease-(--motion-easing-verdify)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n \"data-[state=open]:opacity-100 data-[state=closed]:opacity-0\",\n]);\n\n// The panel: the raised container anchored to ONE viewport edge; it takes role=dialog + the focus\n// trap (Radix). A NEUTRAL raised surface (--color-surface-raised) with the outer surface border,\n// the lg corner radius on its LEADING corners, the lg elevation shadow above the scrim, fixed on\n// the modal z-layer. It never fills the viewport (spec §3: lg never grows to full screen — a sheet\n// that fills the screen should be a route) and scrolls its BODY when content overflows (spec §4\n// scrolled) — the panel is a flex column; the SheetBody owns the scroll. Panel padding/gaps come\n// from --space-*.\n//\n// side (spec §3) = the docking edge AND the slide axis:\n// - inline-end (default) / inline-start: pinned to the full BLOCK extent (inset-y-0), sized by\n// WIDTH, sliding along the inline axis (translate-x). LTR right / left; mirrors under dir=rtl\n// because start/end are logical (G-U6).\n// - block-end: pinned to the full INLINE extent (inset-x-0), sized by HEIGHT, sliding up from the\n// bottom (translate-y). Reads as a bottom sheet on narrow/touch viewports.\n//\n// size (spec §3) = the CROSS-AXIS extent only — a WIDTH for an inline side, a HEIGHT for a block\n// side. md is the default. Resolved per-side by the compoundVariants below (an inline side maps\n// size -> w-(--container-*); a block side maps size -> h-(--container-*)). Bound to the shared\n// --container-* scale, the same scale Dialog caps its width with.\n//\n// The slide+fade open/close is the BASE duration + verdify easing, instant under reduced motion,\n// and rides Radix's data-state (attribute-selector enter/exit, not arbitrary values). NEVER the\n// deliberate verified-check theatre (G-U3). The closed translate is a per-side keyword utility\n// (translate-x-full / -translate-x-full / translate-y-full), set in the side variant.\nexport const sheetPanelVariants = cva(\n [\n \"fixed z-(--z-index-modal)\",\n // a flex column: header + footer stay pinned, the body scrolls within (spec §4 scrolled)\n \"flex flex-col gap-(--space-4)\",\n // neutral raised surface + outer border + lg radius + lg elevation; panel inset padding\n \"bg-surface-raised border border-surface-border rounded-(--radius-lg) shadow-(--shadow-lg)\",\n \"p-(--space-6)\",\n // base slide+fade open/close + verdify easing, instant under reduced motion (NEVER deliberate)\n \"transition-[opacity,transform] duration-(--motion-duration-base) ease-(--motion-easing-verdify)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n // enter/exit ride Radix data-state — the fade is shared across sides (the per-side slide lives\n // in the side variant); attribute-selector variants, not arbitrary values\n \"data-[state=open]:opacity-100 data-[state=closed]:opacity-0\",\n // the panel takes focus when there is no obvious first control; its ring is never removed\n \"outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\",\n ],\n {\n variants: {\n // side = the docking edge + slide axis (spec §3). Logical inset properties (G-U6): inset-y-0\n // / inset-x-0 pin the full extent along the docked edge; start-0 / end-0 / bottom-0 dock it.\n // The closed-state translate slides the panel fully off its own edge; open returns it to 0.\n side: {\n \"inline-end\": [\n \"inset-y-0 end-0 h-full\",\n \"data-[state=open]:translate-x-0 data-[state=closed]:translate-x-full\",\n ],\n \"inline-start\": [\n \"inset-y-0 start-0 h-full\",\n \"data-[state=open]:translate-x-0 data-[state=closed]:-translate-x-full\",\n ],\n \"block-end\": [\n \"inset-x-0 bottom-0 w-full\",\n \"data-[state=open]:translate-y-0 data-[state=closed]:translate-y-full\",\n ],\n },\n // size = cross-axis extent. The concrete axis (width vs height) is resolved per-side by the\n // compoundVariants below — this key only carries the default for type inference.\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n // inline sides: size -> WIDTH (the cross-axis of a side that pins the block extent)\n { side: [\"inline-end\", \"inline-start\"], size: \"sm\", class: \"w-(--container-sm)\" },\n { side: [\"inline-end\", \"inline-start\"], size: \"md\", class: \"w-(--container-md)\" },\n { side: [\"inline-end\", \"inline-start\"], size: \"lg\", class: \"w-(--container-lg)\" },\n // block side: size -> HEIGHT (the cross-axis of a side that pins the inline extent)\n { side: \"block-end\", size: \"sm\", class: \"h-(--container-sm)\" },\n { side: \"block-end\", size: \"md\", class: \"h-(--container-md)\" },\n { side: \"block-end\", size: \"lg\", class: \"h-(--container-lg)\" },\n ],\n defaultVariants: { side: \"inline-end\", size: \"md\" },\n },\n);\n\n// The header: the top region holding the title and the close button on the inline-end (spec §2\n// header). Logical-property layout (G-U6); a MUTED surface-border hairline divider under it (spec\n// §5 --color-surface-border-muted) — the panel's inner dividers are muted, distinct from its outer\n// surface-border edge.\nexport const sheetHeaderClass =\n \"flex items-start justify-between gap-(--space-4) border-b border-surface-border-muted pb-(--space-4)\";\n\n// The title: names the task as a statement, sentence case (spec §2). It IS the panel's accessible\n// name (Radix wires aria-labelledby). The h2 type role in primary text (spec §5 --text-h2 /\n// --color-text-primary).\nexport const sheetTitleClass = \"text-h2 text-text-primary\";\n\n// The description: optional supporting text under the title, associated with the panel for screen\n// readers (Radix wires aria-describedby). Body type role in secondary text (spec §5).\nexport const sheetDescriptionClass = \"text-body text-text-secondary\";\n\n// The body: the scrollable content region between header and footer (spec §2 body, §4 scrolled).\n// The panel is a fixed-height flex column; the body takes the remaining space and is the ONLY part\n// that scrolls — the header and footer stay pinned. Body text is the body type role in secondary\n// text (spec §5 --text-body / text-secondary).\nexport const sheetBodyClass =\n \"min-h-0 flex-1 overflow-y-auto text-body text-text-secondary\";\n\n// The footer: the optional action region (spec §2 footer). The primary action sits at the\n// inline-end with a Cancel beside it; the actions are Buttons — the sheet spec does not restate\n// their --color-action-* bindings (spec §5 note). A MUTED surface-border hairline divider above it\n// (spec §5). Logical-property layout (G-U6): actions flow inline-end with a gap.\nexport const sheetFooterClass =\n \"flex items-center justify-end gap-(--space-2) border-t border-surface-border-muted pt-(--space-4)\";\n\n// The close button: the dismiss control in the header, always present and reachable — a sheet is\n// never closable by the scrim alone (spec §2 close, §8). A NEUTRAL ghost surface — the glyph in\n// --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\n// it. fast functional hover motion + verdify easing, instant under reduced motion (G-U3).\nexport const sheetCloseVariants = cva([\n \"inline-flex items-center justify-center rounded-(--radius-md)\",\n // neutral ghost surface: glyph color at rest + restrained hover fill (no bg/border at rest)\n \"text-action-ghost-fg hover:bg-action-ghost-bg-hover\",\n // fast functional hover transition + verdify easing, instant under reduced motion (NEVER deliberate)\n \"transition-colors duration-(--motion-duration-fast) ease-(--motion-easing-verdify)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n // target-size floor: 44px touch / 40px pointer; the close button is square at the floor (DEC-B)\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 // visible 2px focus ring at 2px offset; never removed\n \"outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\",\n]);\n\n// The close glyph: a neutral X, --size-icon-md, drawn with currentColor so it inherits the button's\n// ghost-fg. Decorative (aria-hidden) — the button carries the accessible name (spec §7).\nexport const sheetCloseGlyphClass = \"h-(--size-icon-md) w-(--size-icon-md)\";\n\nexport type SheetPanelVariantProps = VariantProps<typeof sheetPanelVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAchC,MAAM,qBAAqB,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AA0BM,MAAM,qBAAqB;AAAA,EAChC;AAAA,IACE;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA;AAAA;AAAA,MAIR,MAAM;AAAA,QACJ,cAAc;AAAA,UACZ;AAAA,UACA;AAAA,QACF;AAAA,QACA,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA,MAGA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA;AAAA,MAEhB,EAAE,MAAM,CAAC,cAAc,cAAc,GAAG,MAAM,MAAM,OAAO,qBAAqB;AAAA,MAChF,EAAE,MAAM,CAAC,cAAc,cAAc,GAAG,MAAM,MAAM,OAAO,qBAAqB;AAAA,MAChF,EAAE,MAAM,CAAC,cAAc,cAAc,GAAG,MAAM,MAAM,OAAO,qBAAqB;AAAA;AAAA,MAEhF,EAAE,MAAM,aAAa,MAAM,MAAM,OAAO,qBAAqB;AAAA,MAC7D,EAAE,MAAM,aAAa,MAAM,MAAM,OAAO,qBAAqB;AAAA,MAC7D,EAAE,MAAM,aAAa,MAAM,MAAM,OAAO,qBAAqB;AAAA,IAC/D;AAAA,IACA,iBAAiB,EAAE,MAAM,cAAc,MAAM,KAAK;AAAA,EACpD;AACF;AAMO,MAAM,mBACX;AAKK,MAAM,kBAAkB;AAIxB,MAAM,wBAAwB;AAM9B,MAAM,iBACX;AAMK,MAAM,mBACX;AAQK,MAAM,qBAAqB,IAAI;AAAA,EACpC;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AACF,CAAC;AAIM,MAAM,uBAAuB;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Sidebar, SidebarHeader, SidebarGroup, SidebarItem, SidebarFooter, SidebarCollapseToggle, type SidebarProps, type SidebarHeaderProps, type SidebarGroupProps, type SidebarItemProps, type SidebarFooterProps, type SidebarCollapseToggleProps, } from "./sidebar";
2
+ export { sidebarRailVariants, sidebarHeaderClass, sidebarGroupClass, sidebarGroupLabelClass, sidebarListClass, sidebarItemVariants, sidebarItemIconClass, sidebarItemLabelClass, sidebarItemTrailingClass, sidebarFooterClass, sidebarCollapseToggleClass, sidebarCollapseIconClass, type SidebarRailVariantProps, type SidebarItemVariantProps, type SidebarCollapseToggleVariantProps, } from "./sidebar.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,GACvC,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import {
2
+ Sidebar,
3
+ SidebarHeader,
4
+ SidebarGroup,
5
+ SidebarItem,
6
+ SidebarFooter,
7
+ SidebarCollapseToggle
8
+ } from "./sidebar";
9
+ import {
10
+ sidebarRailVariants,
11
+ sidebarHeaderClass,
12
+ sidebarGroupClass,
13
+ sidebarGroupLabelClass,
14
+ sidebarListClass,
15
+ sidebarItemVariants,
16
+ sidebarItemIconClass,
17
+ sidebarItemLabelClass,
18
+ sidebarItemTrailingClass,
19
+ sidebarFooterClass,
20
+ sidebarCollapseToggleClass,
21
+ sidebarCollapseIconClass
22
+ } from "./sidebar.variants";
23
+ export {
24
+ Sidebar,
25
+ SidebarCollapseToggle,
26
+ SidebarFooter,
27
+ SidebarGroup,
28
+ SidebarHeader,
29
+ SidebarItem,
30
+ sidebarCollapseIconClass,
31
+ sidebarCollapseToggleClass,
32
+ sidebarFooterClass,
33
+ sidebarGroupClass,
34
+ sidebarGroupLabelClass,
35
+ sidebarHeaderClass,
36
+ sidebarItemIconClass,
37
+ sidebarItemLabelClass,
38
+ sidebarItemTrailingClass,
39
+ sidebarItemVariants,
40
+ sidebarListClass,
41
+ sidebarRailVariants
42
+ };
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/sidebar/index.ts"],"sourcesContent":["export {\n Sidebar,\n SidebarHeader,\n SidebarGroup,\n SidebarItem,\n SidebarFooter,\n SidebarCollapseToggle,\n type SidebarProps,\n type SidebarHeaderProps,\n type SidebarGroupProps,\n type SidebarItemProps,\n type SidebarFooterProps,\n type SidebarCollapseToggleProps,\n} from \"./sidebar\";\nexport {\n sidebarRailVariants,\n sidebarHeaderClass,\n sidebarGroupClass,\n sidebarGroupLabelClass,\n sidebarListClass,\n sidebarItemVariants,\n sidebarItemIconClass,\n sidebarItemLabelClass,\n sidebarItemTrailingClass,\n sidebarFooterClass,\n sidebarCollapseToggleClass,\n sidebarCollapseIconClass,\n type SidebarRailVariantProps,\n type SidebarItemVariantProps,\n type SidebarCollapseToggleVariantProps,\n} from \"./sidebar.variants\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAOK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;","names":[]}
@@ -0,0 +1,114 @@
1
+ import * as React from "react";
2
+ import { type SidebarRailVariantProps } from "./sidebar.variants";
3
+ type SidebarSide = NonNullable<SidebarRailVariantProps["side"]>;
4
+ export interface SidebarProps extends Omit<React.ComponentPropsWithoutRef<"nav">, "onChange"> {
5
+ /** The docked edge (spec §3). `inline-start` (default) or `inline-end` — logical, mirrors under RTL. */
6
+ side?: SidebarSide;
7
+ /**
8
+ * The rail starts collapsed when uncontrolled (spec §3 `collapsed`): a narrow rail of icons only.
9
+ * For a controlled rail set `collapsed` + `onCollapsedChange` instead.
10
+ */
11
+ defaultCollapsed?: boolean;
12
+ /** Controlled collapsed state (spec §3). When set, the rail is controlled — pair with `onCollapsedChange`. */
13
+ collapsed?: boolean;
14
+ /** Notified when the collapse-toggle flips the rail width (spec §3/§4). */
15
+ onCollapsedChange?: (collapsed: boolean) => void;
16
+ /**
17
+ * The landmark's accessible name (spec §7), so multiple `navigation` landmarks on a page are
18
+ * distinguishable — for example "Primary". Use `aria-labelledby` pointing at a visible heading
19
+ * (e.g. the `SidebarHeader`) instead when the rail has a visible title.
20
+ */
21
+ "aria-label"?: string;
22
+ }
23
+ /**
24
+ * A Sidebar is the primary navigation rail down one edge of an app shell: it lists the destinations
25
+ * a person or an agent moves between and marks where they are now (spec §1). It is the `navigation`
26
+ * landmark wrapping a list of real `<a href>` links. Reach for a Menu for a short transient list of
27
+ * actions, Tabs when panels are peers within one page, and Breadcrumb for depth within a destination.
28
+ *
29
+ * The rail is a NEUTRAL surface — it does not wear the brand (spec §3): the current item takes the
30
+ * primary ACTION accent (where you are), never a status color; a verified meaning belongs to
31
+ * VerifiedBadge, never to a navigation item (brand != state). On narrow/touch viewports the rail
32
+ * leaves the layout and opens as a modal drawer — use the Sheet `side=inline-start` pattern
33
+ * (./sheet.md) for that; this component covers the DOCKED rail.
34
+ *
35
+ * It owns the collapse state and the roving arrow-key focus over its items, so it is `'use client'`.
36
+ */
37
+ export declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLElement>>;
38
+ export type SidebarHeaderProps = React.ComponentPropsWithoutRef<"div">;
39
+ /**
40
+ * The top slot for a product mark or workspace switcher (spec §2). It is NOT a navigation item and
41
+ * is skipped by item arrow movement. Give it an `id` and point the rail's `aria-labelledby` at it to
42
+ * name the landmark from a visible heading.
43
+ */
44
+ export declare const SidebarHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
45
+ export interface SidebarGroupProps extends React.ComponentPropsWithoutRef<"div"> {
46
+ /** The cluster's visible heading (spec §2 group). It also names the group for assistive tech. */
47
+ label?: React.ReactNode;
48
+ }
49
+ /**
50
+ * A labeled cluster of items (spec §2 group). Use groups only when the labels earn their space;
51
+ * restraint over volume keeps the rail scannable. The heading names the group via `aria-labelledby`,
52
+ * so its items read as a related set (1.3.1 Info and Relationships). The items live in a `<ul>` so
53
+ * they expose the list relationship. In the collapsed rail the heading is hidden (icons only) but the
54
+ * group keeps its accessible name.
55
+ */
56
+ export declare const SidebarGroup: React.ForwardRefExoticComponent<SidebarGroupProps & React.RefAttributes<HTMLDivElement>>;
57
+ export interface SidebarItemProps extends Omit<React.ComponentPropsWithoutRef<"a">, "color"> {
58
+ /** The destination (spec §7). Items are real links; omit it only on a disabled item. */
59
+ href?: string;
60
+ /** The leading icon (spec §2): decorative, sized by `--size-icon-md`. The item names itself by its label text. */
61
+ icon?: React.ReactNode;
62
+ /** A trailing count or status (spec §2): text or an `aria-label`, never color alone (spec §7). */
63
+ trailing?: React.ReactNode;
64
+ /**
65
+ * This is the item for the page you are on (spec §4 Current). It sets `aria-current="page"`, lifts
66
+ * its label to the primary text color, and shows the brand action indicator bar — where you are,
67
+ * never a status color. Exactly one item in the rail is current.
68
+ */
69
+ current?: boolean;
70
+ /**
71
+ * The item is present but not operable (spec §4 Disabled): it is skipped by arrow movement and the
72
+ * tab order and drops its `href`, while its label stays readable to assistive technology.
73
+ */
74
+ disabled?: boolean;
75
+ /**
76
+ * Project the item styling onto a caller-supplied anchor (a framework router `<Link>` rendered as an
77
+ * `<a>`) via Radix Slot, instead of the default native `<a>` (spec §2). Slot runs
78
+ * `React.Children.only` — pass exactly one anchor child holding the icon + label.
79
+ */
80
+ asChild?: boolean;
81
+ }
82
+ /**
83
+ * One navigation item (spec §2 item, §4 states): a native `<a href>` link holding a leading icon, a
84
+ * label, and an optional trailing count or status. It exposes the link role and is operable without
85
+ * extra wiring; it gets the visible focus ring, the restrained ghost hover fill, and the target-size
86
+ * floor. The current item is a link, not a button — it still navigates (spec §7). In the collapsed
87
+ * rail the label is visually hidden but kept in the accessibility tree, so the item never loses its
88
+ * accessible name (spec §4 Collapsed / §7).
89
+ */
90
+ export declare const SidebarItem: React.ForwardRefExoticComponent<SidebarItemProps & React.RefAttributes<HTMLAnchorElement>>;
91
+ export type SidebarFooterProps = React.ComponentPropsWithoutRef<"div">;
92
+ /**
93
+ * A bottom slot for an account or settings entry (spec §2). Its items follow the same item rules as
94
+ * the rest of the list and join the rail's roving arrow-key order. Wrap its items in a `<ul>` so they
95
+ * keep the list relationship.
96
+ */
97
+ export declare const SidebarFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
98
+ export interface SidebarCollapseToggleProps extends Omit<React.ComponentPropsWithoutRef<"button">, "onClick" | "children"> {
99
+ /** The accessible name when expanded (icon-only). Defaults to "Collapse sidebar" (spec §7). */
100
+ collapseLabel?: string;
101
+ /** The accessible name when collapsed (icon-only). Defaults to "Expand sidebar" (spec §7). */
102
+ expandLabel?: string;
103
+ }
104
+ /**
105
+ * The control that switches the rail between expanded and collapsed (spec §2/§4/§6/§7). It is a
106
+ * native `<button>`, NOT an item, reachable in the rail's tab order. It sets `aria-expanded` to
107
+ * reflect the rail width and names its action with `aria-label` ("Collapse sidebar" / "Expand
108
+ * sidebar"); its glyph is `aria-hidden`. Toggling it does not move focus off the toggle, so a
109
+ * keyboard user keeps their place when switching the rail's width (spec §6). Render it only on a
110
+ * collapsible rail.
111
+ */
112
+ export declare const SidebarCollapseToggle: React.ForwardRefExoticComponent<SidebarCollapseToggleProps & React.RefAttributes<HTMLButtonElement>>;
113
+ export {};
114
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAaL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,KAAK,WAAW,GAAG,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;AA2BhE,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC3F,wGAAwG;IACxG,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8GAA8G;IAC9G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,kFAuGlB,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,aAAa,mKAIzB,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC9E,iGAAiG;IACjG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,0FAqBxB,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAC1F,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kHAAkH;IAClH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,kGAAkG;IAClG,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,4FA4CtB,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,aAAa,mKAQzB,CAAC;AAEF,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9E,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,sGAqBjC,CAAC"}