@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,145 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Select as SelectPrimitive } from "radix-ui";
5
+ import { cn } from "../../lib/cn";
6
+ import {
7
+ triggerVariants,
8
+ placeholderClass,
9
+ listboxClass,
10
+ optionVariants,
11
+ checkClass,
12
+ groupLabelClass,
13
+ separatorClass,
14
+ errorTextClass,
15
+ descriptionClass,
16
+ labelClass
17
+ } from "./select.variants";
18
+ function ChevronIcon() {
19
+ return /* @__PURE__ */ jsx(
20
+ "svg",
21
+ {
22
+ "aria-hidden": "true",
23
+ viewBox: "0 0 16 16",
24
+ className: "h-(--size-icon-md) w-(--size-icon-md)",
25
+ fill: "none",
26
+ stroke: "currentColor",
27
+ strokeWidth: "1.5",
28
+ children: /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4", strokeLinecap: "round", strokeLinejoin: "round" })
29
+ }
30
+ );
31
+ }
32
+ function CheckMark() {
33
+ return /* @__PURE__ */ jsx(
34
+ "svg",
35
+ {
36
+ "data-testid": "select-check",
37
+ "aria-hidden": "true",
38
+ viewBox: "0 0 16 16",
39
+ className: cn("h-(--size-icon-md) w-(--size-icon-md)", checkClass),
40
+ fill: "none",
41
+ stroke: "currentColor",
42
+ strokeWidth: "1.5",
43
+ children: /* @__PURE__ */ jsx("path", { d: "M3.5 8.5l3 3 6-6.5", strokeLinecap: "round", strokeLinejoin: "round" })
44
+ }
45
+ );
46
+ }
47
+ function groupOptions(options) {
48
+ const out = [];
49
+ for (const opt of options) {
50
+ const last = out[out.length - 1];
51
+ if (last && last.group === opt.group) last.items.push(opt);
52
+ else out.push({ group: opt.group, items: [opt] });
53
+ }
54
+ return out;
55
+ }
56
+ function Select({
57
+ label,
58
+ options,
59
+ placeholder,
60
+ description,
61
+ error,
62
+ disabled = false,
63
+ loading = false,
64
+ value,
65
+ defaultValue,
66
+ onValueChange,
67
+ size,
68
+ width,
69
+ className
70
+ }) {
71
+ const reactId = React.useId();
72
+ const labelId = `${reactId}-label`;
73
+ const descId = `${reactId}-desc`;
74
+ const errId = `${reactId}-err`;
75
+ const describedBy = [description ? descId : null, error ? errId : null].filter(Boolean).join(" ") || void 0;
76
+ const groups = groupOptions(options);
77
+ return /* @__PURE__ */ jsxs("div", { className: cn("inline-flex flex-col", width === "full" && "w-full", className), children: [
78
+ /* @__PURE__ */ jsx("label", { id: labelId, className: labelClass, children: label }),
79
+ /* @__PURE__ */ jsxs(
80
+ SelectPrimitive.Root,
81
+ {
82
+ value,
83
+ defaultValue,
84
+ onValueChange,
85
+ disabled,
86
+ children: [
87
+ /* @__PURE__ */ jsxs(
88
+ SelectPrimitive.Trigger,
89
+ {
90
+ "aria-labelledby": labelId,
91
+ "aria-haspopup": "listbox",
92
+ "aria-invalid": error ? true : void 0,
93
+ "aria-describedby": describedBy,
94
+ "aria-busy": loading || void 0,
95
+ className: cn(triggerVariants({ size, width })),
96
+ children: [
97
+ /* @__PURE__ */ jsx(SelectPrimitive.Value, { placeholder, className: placeholderClass }),
98
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { children: /* @__PURE__ */ jsx(ChevronIcon, {}) })
99
+ ]
100
+ }
101
+ ),
102
+ /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx(
103
+ SelectPrimitive.Content,
104
+ {
105
+ role: "listbox",
106
+ position: "popper",
107
+ sideOffset: 4,
108
+ className: listboxClass,
109
+ children: /* @__PURE__ */ jsx(SelectPrimitive.Viewport, { children: groups.map((g, gi) => {
110
+ const groupLabelId = `${reactId}-group-${gi}`;
111
+ const body = g.items.map((opt) => /* @__PURE__ */ jsxs(
112
+ SelectPrimitive.Item,
113
+ {
114
+ value: opt.value,
115
+ disabled: opt.disabled,
116
+ className: cn(optionVariants({ size })),
117
+ children: [
118
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children: opt.label }),
119
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckMark, {}) })
120
+ ]
121
+ },
122
+ opt.value
123
+ ));
124
+ if (!g.group) return /* @__PURE__ */ jsx(React.Fragment, { children: body }, gi);
125
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [
126
+ gi > 0 ? /* @__PURE__ */ jsx(SelectPrimitive.Separator, { className: separatorClass }) : null,
127
+ /* @__PURE__ */ jsxs(SelectPrimitive.Group, { "aria-labelledby": groupLabelId, children: [
128
+ /* @__PURE__ */ jsx(SelectPrimitive.Label, { id: groupLabelId, className: groupLabelClass, children: g.group }),
129
+ body
130
+ ] })
131
+ ] }, gi);
132
+ }) })
133
+ }
134
+ ) })
135
+ ]
136
+ }
137
+ ),
138
+ description ? /* @__PURE__ */ jsx("span", { id: descId, className: descriptionClass, children: description }) : null,
139
+ error ? /* @__PURE__ */ jsx("span", { id: errId, className: errorTextClass, children: error }) : null
140
+ ] });
141
+ }
142
+ export {
143
+ Select
144
+ };
145
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/select/select.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n triggerVariants,\n placeholderClass,\n listboxClass,\n optionVariants,\n checkClass,\n groupLabelClass,\n separatorClass,\n errorTextClass,\n descriptionClass,\n labelClass,\n type TriggerVariantProps,\n} from \"./select.variants\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n /** Optional group heading; consecutive options sharing a group are grouped. */\n group?: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends TriggerVariantProps {\n /** Visible, associated label — required; never replaced by the placeholder. */\n label: string;\n options: SelectOption[];\n placeholder?: string;\n /** Non-error helper text, wired via aria-describedby. */\n description?: string;\n /** Error text; sets aria-invalid + the strong border and wires aria-describedby. */\n error?: string;\n disabled?: boolean;\n /** Options are resolving: sets aria-busy without blocking focus. */\n loading?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n className?: string;\n}\n\n// Chevron + check as inline SVG (no extra icon dep); --size-icon-md sizing.\nfunction ChevronIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-(--size-icon-md) w-(--size-icon-md)\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n >\n <path d=\"M4 6l4 4 4-4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction CheckMark() {\n return (\n <svg\n data-testid=\"select-check\"\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className={cn(\"h-(--size-icon-md) w-(--size-icon-md)\", checkClass)}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n >\n <path d=\"M3.5 8.5l3 3 6-6.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\n/** Group consecutive options by their `group` key, preserving order. */\nfunction groupOptions(options: SelectOption[]): { group?: string; items: SelectOption[] }[] {\n const out: { group?: string; items: SelectOption[] }[] = [];\n for (const opt of options) {\n const last = out[out.length - 1];\n if (last && last.group === opt.group) last.items.push(opt);\n else out.push({ group: opt.group, items: [opt] });\n }\n return out;\n}\n\nexport function Select({\n label,\n options,\n placeholder,\n description,\n error,\n disabled = false,\n loading = false,\n value,\n defaultValue,\n onValueChange,\n size,\n width,\n className,\n}: SelectProps) {\n const reactId = React.useId();\n const labelId = `${reactId}-label`;\n const descId = `${reactId}-desc`;\n const errId = `${reactId}-err`;\n // aria-describedby: helper first, then error (both when present).\n const describedBy =\n [description ? descId : null, error ? errId : null].filter(Boolean).join(\" \") || undefined;\n const groups = groupOptions(options);\n\n return (\n <div className={cn(\"inline-flex flex-col\", width === \"full\" && \"w-full\", className)}>\n <label id={labelId} className={labelClass}>\n {label}\n </label>\n <SelectPrimitive.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n // accessible name comes from the visible label, never the placeholder\n aria-labelledby={labelId}\n // Radix's trigger emits role=combobox + aria-controls + aria-expanded but\n // NOT aria-haspopup; set it explicitly so the §7 listbox contract holds.\n aria-haspopup=\"listbox\"\n // FOCUS-MODEL DEVIATION from select.md §7 (recipe-level, accepted):\n // §7 mandates DOM focus stay on the trigger with the active option conveyed\n // ONLY via aria-activedescendant. radix-ui's Select (react-select 2.2.6)\n // implements the *focus-moving* variant of the same APG select-only\n // listbox pattern instead — it moves real DOM focus into the option items\n // (focusSelectedItem/focusFirst) and emits NO aria-activedescendant at all.\n // Both are documented APG variants; the keyboard model (incl. type-ahead),\n // visible focus, name/role/value, and target-size floor all hold, and axe\n // is clean closed and open. The literal §7 focus mechanism is therefore the\n // one part of the contract this primitive does not implement; honoring it\n // verbatim would require hand-rolling the listbox and abandoning Radix.\n // select.md §7 wording to be amended to permit the focus-moving variant.\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n aria-busy={loading || undefined}\n className={cn(triggerVariants({ size, width }))}\n >\n <SelectPrimitive.Value placeholder={placeholder} className={placeholderClass} />\n <SelectPrimitive.Icon>\n <ChevronIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n role=\"listbox\"\n position=\"popper\"\n sideOffset={4}\n className={listboxClass}\n >\n <SelectPrimitive.Viewport>\n {groups.map((g, gi) => {\n const groupLabelId = `${reactId}-group-${gi}`;\n const body = g.items.map((opt) => (\n <SelectPrimitive.Item\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n className={cn(optionVariants({ size }))}\n >\n <SelectPrimitive.ItemText>{opt.label}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator>\n <CheckMark />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n ));\n if (!g.group) return <React.Fragment key={gi}>{body}</React.Fragment>;\n return (\n <React.Fragment key={gi}>\n {gi > 0 ? <SelectPrimitive.Separator className={separatorClass} /> : null}\n <SelectPrimitive.Group aria-labelledby={groupLabelId}>\n <SelectPrimitive.Label id={groupLabelId} className={groupLabelClass}>\n {g.group}\n </SelectPrimitive.Label>\n {body}\n </SelectPrimitive.Group>\n </React.Fragment>\n );\n })}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n\n {description ? (\n <span id={descId} className={descriptionClass}>\n {description}\n </span>\n ) : null}\n {error ? (\n <span id={errId} className={errorTextClass}>\n {error}\n </span>\n ) : null}\n </div>\n );\n}\n"],"mappings":";AAwDM,cAmEE,YAnEF;AAtDN,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,EACA;AAAA,OAEK;AA6BP,SAAS,cAAc;AACrB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MAEZ,8BAAC,UAAK,GAAE,gBAAe,eAAc,SAAQ,gBAAe,SAAQ;AAAA;AAAA,EACtE;AAEJ;AAEA,SAAS,YAAY;AACnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,WAAW,GAAG,yCAAyC,UAAU;AAAA,MACjE,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MAEZ,8BAAC,UAAK,GAAE,sBAAqB,eAAc,SAAQ,gBAAe,SAAQ;AAAA;AAAA,EAC5E;AAEJ;AAGA,SAAS,aAAa,SAAsE;AAC1F,QAAM,MAAmD,CAAC;AAC1D,aAAW,OAAO,SAAS;AACzB,UAAM,OAAO,IAAI,IAAI,SAAS,CAAC;AAC/B,QAAI,QAAQ,KAAK,UAAU,IAAI,MAAO,MAAK,MAAM,KAAK,GAAG;AAAA,QACpD,KAAI,KAAK,EAAE,OAAO,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AAAA,EAClD;AACA,SAAO;AACT;AAEO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgB;AACd,QAAM,UAAU,MAAM,MAAM;AAC5B,QAAM,UAAU,GAAG,OAAO;AAC1B,QAAM,SAAS,GAAG,OAAO;AACzB,QAAM,QAAQ,GAAG,OAAO;AAExB,QAAM,cACJ,CAAC,cAAc,SAAS,MAAM,QAAQ,QAAQ,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AACnF,QAAM,SAAS,aAAa,OAAO;AAEnC,SACE,qBAAC,SAAI,WAAW,GAAG,wBAAwB,UAAU,UAAU,UAAU,SAAS,GAChF;AAAA,wBAAC,WAAM,IAAI,SAAS,WAAW,YAC5B,iBACH;AAAA,IACA;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA;AAAA,YAAC,gBAAgB;AAAA,YAAhB;AAAA,cAEC,mBAAiB;AAAA,cAGjB,iBAAc;AAAA,cAad,gBAAc,QAAQ,OAAO;AAAA,cAC7B,oBAAkB;AAAA,cAClB,aAAW,WAAW;AAAA,cACtB,WAAW,GAAG,gBAAgB,EAAE,MAAM,MAAM,CAAC,CAAC;AAAA,cAE9C;AAAA,oCAAC,gBAAgB,OAAhB,EAAsB,aAA0B,WAAW,kBAAkB;AAAA,gBAC9E,oBAAC,gBAAgB,MAAhB,EACC,8BAAC,eAAY,GACf;AAAA;AAAA;AAAA,UACF;AAAA,UAEA,oBAAC,gBAAgB,QAAhB,EACC;AAAA,YAAC,gBAAgB;AAAA,YAAhB;AAAA,cACC,MAAK;AAAA,cACL,UAAS;AAAA,cACT,YAAY;AAAA,cACZ,WAAW;AAAA,cAEX,8BAAC,gBAAgB,UAAhB,EACE,iBAAO,IAAI,CAAC,GAAG,OAAO;AACrB,sBAAM,eAAe,GAAG,OAAO,UAAU,EAAE;AAC3C,sBAAM,OAAO,EAAE,MAAM,IAAI,CAAC,QACxB;AAAA,kBAAC,gBAAgB;AAAA,kBAAhB;AAAA,oBAEC,OAAO,IAAI;AAAA,oBACX,UAAU,IAAI;AAAA,oBACd,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC,CAAC;AAAA,oBAEtC;AAAA,0CAAC,gBAAgB,UAAhB,EAA0B,cAAI,OAAM;AAAA,sBACrC,oBAAC,gBAAgB,eAAhB,EACC,8BAAC,aAAU,GACb;AAAA;AAAA;AAAA,kBARK,IAAI;AAAA,gBASX,CACD;AACD,oBAAI,CAAC,EAAE,MAAO,QAAO,oBAAC,MAAM,UAAN,EAAyB,kBAAL,EAAU;AACpD,uBACE,qBAAC,MAAM,UAAN,EACE;AAAA,uBAAK,IAAI,oBAAC,gBAAgB,WAAhB,EAA0B,WAAW,gBAAgB,IAAK;AAAA,kBACrE,qBAAC,gBAAgB,OAAhB,EAAsB,mBAAiB,cACtC;AAAA,wCAAC,gBAAgB,OAAhB,EAAsB,IAAI,cAAc,WAAW,iBACjD,YAAE,OACL;AAAA,oBACC;AAAA,qBACH;AAAA,qBAPmB,EAQrB;AAAA,cAEJ,CAAC,GACH;AAAA;AAAA,UACF,GACF;AAAA;AAAA;AAAA,IACF;AAAA,IAEC,cACC,oBAAC,UAAK,IAAI,QAAQ,WAAW,kBAC1B,uBACH,IACE;AAAA,IACH,QACC,oBAAC,UAAK,IAAI,OAAO,WAAW,gBACzB,iBACH,IACE;AAAA,KACN;AAEJ;","names":[]}
@@ -0,0 +1,18 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ export declare const triggerVariants: (props?: ({
3
+ size?: "md" | "sm" | "lg" | null | undefined;
4
+ width?: "auto" | "full" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare const placeholderClass = "text-control-placeholder";
7
+ export declare const listboxClass: string;
8
+ export declare const optionVariants: (props?: ({
9
+ size?: "md" | "sm" | "lg" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
+ export declare const checkClass = "absolute end-2 inline-flex text-text-primary";
12
+ export declare const groupLabelClass = "px-3 py-1 text-label text-text-muted select-none";
13
+ export declare const separatorClass = "my-1 h-px bg-border-default";
14
+ export declare const errorTextClass = "mt-1 text-label text-status-critical-fg";
15
+ export declare const descriptionClass = "mt-1 text-label text-text-muted";
16
+ export declare const labelClass = "text-label text-text-primary";
17
+ export type TriggerVariantProps = VariantProps<typeof triggerVariants>;
18
+ //# sourceMappingURL=select.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.variants.d.ts","sourceRoot":"","sources":["../../../src/components/select/select.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,eAAO,MAAM,eAAe;;;8EAqD3B,CAAC;AAGF,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAG3D,eAAO,MAAM,YAAY,QAKd,CAAC;AAYZ,eAAO,MAAM,cAAc;;8EAoB1B,CAAC;AAGF,eAAO,MAAM,UAAU,iDAAiD,CAAC;AAGzE,eAAO,MAAM,eAAe,qDAAqD,CAAC;AAGlF,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAG5D,eAAO,MAAM,cAAc,4CAA4C,CAAC;AAExE,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,eAAO,MAAM,UAAU,iCAAiC,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { cva } from "class-variance-authority";
2
+ const triggerVariants = cva(
3
+ [
4
+ "inline-flex items-center justify-between gap-2 rounded-(--radius-md) px-3",
5
+ "bg-control-bg text-control-fg border border-control-border",
6
+ "hover:bg-action-secondary-bg-hover cursor-pointer select-none",
7
+ // DEC-A — the trigger is a form field, so its value SIZE is text-base (16px): the
8
+ // iOS no-zoom reset is a hard floor that holds on EVERY size. The brand type ROLE
9
+ // (line-height + letter-spacing) rides along via the role-suffix vars set per size
10
+ // below. text-body itself (a 15px font-size) is NEVER bound on the trigger — under
11
+ // the role-aware cn it collapses against text-base, and 15px reintroduces the iOS
12
+ // focus zoom the reset exists to prevent. So the font-size stays text-base across
13
+ // sizes; only the leading/tracking role and the padding density shift.
14
+ "text-base",
15
+ // open/close transition — base duration + verdify easing, never deliberate theatre
16
+ "transition-colors duration-(--motion-duration-base) ease-(--motion-easing-verdify)",
17
+ // target-size floor: 44px touch / 40px pointer
18
+ "min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop)",
19
+ // visible 2px signal-blue ring at 2px offset; persists while the listbox is open
20
+ "outline-none",
21
+ "focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2",
22
+ "data-[state=open]:ring-2 data-[state=open]:ring-border-focus data-[state=open]:ring-offset-2",
23
+ // error: strong border treatment, driven by aria-invalid
24
+ "aria-invalid:border-border-strong",
25
+ // disabled: out of tab order (Radix sets data-disabled), reduced emphasis
26
+ "data-[disabled]:pointer-events-none data-[disabled]:cursor-default",
27
+ "disabled:text-text-disabled data-[disabled]:text-text-disabled"
28
+ ],
29
+ {
30
+ variants: {
31
+ // DEC-B: @verdify/tokens exposes only target-size FLOORS (44px / 40px), no
32
+ // height scale. Every size anchors the shared floor (min-h-, in the base) and
33
+ // NEVER sets a fixed height below it (a11y). Each size is TYPE-ROLE + vertical
34
+ // padding (density) ABOVE the floor; the resting height EMERGES from the padding
35
+ // and grows monotonically sm <= md <= lg. Because the trigger is a form field
36
+ // (DEC-A), the value font-SIZE is pinned to text-base in the base — so here the
37
+ // type role shifts only through the brand line-height + letter-spacing role
38
+ // suffix (NOT the font-size), tightening at sm (caption metrics) and loosening at
39
+ // lg (body-lg metrics). The padding ladder is --space-1 (.25rem) <= --space-2
40
+ // (.5rem) <= --space-3 (.75rem), all >= the floor. (An earlier build set fixed
41
+ // h-(--size-target-*), which made lg SHORTER than sm/md on desktop — the inverse
42
+ // of the requirement — and is removed.)
43
+ size: {
44
+ sm: "leading-(--text-caption--line-height) tracking-(--text-caption--letter-spacing) py-(--space-1)",
45
+ md: "leading-(--text-body--line-height) tracking-(--text-body--letter-spacing) py-(--space-2)",
46
+ lg: "leading-(--text-body-lg--line-height) tracking-(--text-body-lg--letter-spacing) py-(--space-3)"
47
+ },
48
+ width: {
49
+ auto: "w-auto",
50
+ full: "w-full"
51
+ }
52
+ },
53
+ defaultVariants: { size: "md", width: "auto" }
54
+ }
55
+ );
56
+ const placeholderClass = "text-control-placeholder";
57
+ const listboxClass = [
58
+ "z-50 overflow-hidden rounded-(--radius-md) p-1",
59
+ "bg-surface-raised border border-surface-border shadow-(--shadow-md)",
60
+ "transition-opacity duration-(--motion-duration-base) ease-(--motion-easing-verdify)",
61
+ "motion-reduce:transition-none"
62
+ ].join(" ");
63
+ const optionVariants = cva(
64
+ [
65
+ "relative flex items-center gap-2 rounded-(--radius-md) pe-8 ps-3",
66
+ "text-text-primary outline-none cursor-pointer select-none",
67
+ "min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop)",
68
+ // active (highlighted) option uses the secondary hover fill
69
+ "data-[highlighted]:bg-action-secondary-bg-hover data-[highlighted]:outline-none",
70
+ // disabled option: reduced emphasis, not operable
71
+ "data-[disabled]:text-text-disabled data-[disabled]:pointer-events-none"
72
+ ],
73
+ {
74
+ variants: {
75
+ size: {
76
+ sm: "text-caption py-(--space-1)",
77
+ md: "text-body py-(--space-2)",
78
+ lg: "text-body-lg py-(--space-3)"
79
+ }
80
+ },
81
+ defaultVariants: { size: "md" }
82
+ }
83
+ );
84
+ const checkClass = "absolute end-2 inline-flex text-text-primary";
85
+ const groupLabelClass = "px-3 py-1 text-label text-text-muted select-none";
86
+ const separatorClass = "my-1 h-px bg-border-default";
87
+ const errorTextClass = "mt-1 text-label text-status-critical-fg";
88
+ const descriptionClass = "mt-1 text-label text-text-muted";
89
+ const labelClass = "text-label text-text-primary";
90
+ export {
91
+ checkClass,
92
+ descriptionClass,
93
+ errorTextClass,
94
+ groupLabelClass,
95
+ labelClass,
96
+ listboxClass,
97
+ optionVariants,
98
+ placeholderClass,
99
+ separatorClass,
100
+ triggerVariants
101
+ };
102
+ //# sourceMappingURL=select.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/select/select.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// Trigger: control-* tier surface, secondary hover fill, focus ring that persists\n// while open, strong border in error, target-size floor, base+verdify motion.\nexport const triggerVariants = cva(\n [\n \"inline-flex items-center justify-between gap-2 rounded-(--radius-md) px-3\",\n \"bg-control-bg text-control-fg border border-control-border\",\n \"hover:bg-action-secondary-bg-hover cursor-pointer select-none\",\n // DEC-A — the trigger is a form field, so its value SIZE is text-base (16px): the\n // iOS no-zoom reset is a hard floor that holds on EVERY size. The brand type ROLE\n // (line-height + letter-spacing) rides along via the role-suffix vars set per size\n // below. text-body itself (a 15px font-size) is NEVER bound on the trigger — under\n // the role-aware cn it collapses against text-base, and 15px reintroduces the iOS\n // focus zoom the reset exists to prevent. So the font-size stays text-base across\n // sizes; only the leading/tracking role and the padding density shift.\n \"text-base\",\n // open/close transition — base duration + verdify easing, never deliberate theatre\n \"transition-colors duration-(--motion-duration-base) ease-(--motion-easing-verdify)\",\n // target-size floor: 44px touch / 40px pointer\n \"min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop)\",\n // visible 2px signal-blue ring at 2px offset; persists while the listbox is open\n \"outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\",\n \"data-[state=open]:ring-2 data-[state=open]:ring-border-focus data-[state=open]:ring-offset-2\",\n // error: strong border treatment, driven by aria-invalid\n \"aria-invalid:border-border-strong\",\n // disabled: out of tab order (Radix sets data-disabled), reduced emphasis\n \"data-[disabled]:pointer-events-none data-[disabled]:cursor-default\",\n \"disabled:text-text-disabled data-[disabled]:text-text-disabled\",\n ],\n {\n variants: {\n // DEC-B: @verdify/tokens exposes only target-size FLOORS (44px / 40px), no\n // height scale. Every size anchors the shared floor (min-h-, in the base) and\n // NEVER sets a fixed height below it (a11y). Each size is TYPE-ROLE + vertical\n // padding (density) ABOVE the floor; the resting height EMERGES from the padding\n // and grows monotonically sm <= md <= lg. Because the trigger is a form field\n // (DEC-A), the value font-SIZE is pinned to text-base in the base — so here the\n // type role shifts only through the brand line-height + letter-spacing role\n // suffix (NOT the font-size), tightening at sm (caption metrics) and loosening at\n // lg (body-lg metrics). The padding ladder is --space-1 (.25rem) <= --space-2\n // (.5rem) <= --space-3 (.75rem), all >= the floor. (An earlier build set fixed\n // h-(--size-target-*), which made lg SHORTER than sm/md on desktop — the inverse\n // of the requirement — and is removed.)\n size: {\n sm: \"leading-(--text-caption--line-height) tracking-(--text-caption--letter-spacing) py-(--space-1)\",\n md: \"leading-(--text-body--line-height) tracking-(--text-body--letter-spacing) py-(--space-2)\",\n lg: \"leading-(--text-body-lg--line-height) tracking-(--text-body-lg--letter-spacing) py-(--space-3)\",\n },\n width: {\n auto: \"w-auto\",\n full: \"w-full\",\n },\n },\n defaultVariants: { size: \"md\", width: \"auto\" },\n },\n);\n\n// Placeholder text: de-emphasised, never the accessible name.\nexport const placeholderClass = \"text-control-placeholder\";\n\n// Listbox: raised surface, outer border, md elevation; opens with base motion only.\nexport const listboxClass = [\n \"z-50 overflow-hidden rounded-(--radius-md) p-1\",\n \"bg-surface-raised border border-surface-border shadow-(--shadow-md)\",\n \"transition-opacity duration-(--motion-duration-base) ease-(--motion-easing-verdify)\",\n \"motion-reduce:transition-none\",\n].join(\" \");\n\n// Option row: primary label, secondary hover/active fill, target-row floor.\n// DEC-B: the option row is parameterized by the SAME size the trigger is, so the\n// listbox density tracks the trigger. It anchors the shared target-row floor\n// (min-h-, in the base) and NEVER sets a fixed height below it; each size is\n// TYPE-ROLE + vertical padding (density) ABOVE the floor, the row height emerging\n// from the padding. Unlike the trigger, an option row is NOT a focused text field —\n// the iOS no-zoom reset does not apply — so here the type role shifts through the\n// actual font-SIZE role: caption (sm) < body (md) < body-lg (lg), paired with the\n// identical --space-1 <= --space-2 <= --space-3 padding ladder as the trigger. Both\n// type role and density therefore climb monotonically sm <= md <= lg, all >= floor.\nexport const optionVariants = cva(\n [\n \"relative flex items-center gap-2 rounded-(--radius-md) pe-8 ps-3\",\n \"text-text-primary outline-none cursor-pointer select-none\",\n \"min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop)\",\n // active (highlighted) option uses the secondary hover fill\n \"data-[highlighted]:bg-action-secondary-bg-hover data-[highlighted]:outline-none\",\n // disabled option: reduced emphasis, not operable\n \"data-[disabled]:text-text-disabled data-[disabled]:pointer-events-none\",\n ],\n {\n variants: {\n size: {\n sm: \"text-caption py-(--space-1)\",\n md: \"text-body py-(--space-2)\",\n lg: \"text-body-lg py-(--space-3)\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\n// The selected-option check — a NEUTRAL mark (text-text-primary), never a status color.\nexport const checkClass = \"absolute end-2 inline-flex text-text-primary\";\n\n// Group heading: non-selectable, muted.\nexport const groupLabelClass = \"px-3 py-1 text-label text-text-muted select-none\";\n\n// Listbox/option dividers.\nexport const separatorClass = \"my-1 h-px bg-border-default\";\n\n// Error-slot text — status critical foreground.\nexport const errorTextClass = \"mt-1 text-label text-status-critical-fg\";\n// Non-error helper text — muted.\nexport const descriptionClass = \"mt-1 text-label text-text-muted\";\n// The visible, associated label.\nexport const labelClass = \"text-label text-text-primary\";\n\nexport type TriggerVariantProps = VariantProps<typeof triggerVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAIhC,MAAM,kBAAkB;AAAA,EAC7B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,MAAM,OAAO,OAAO;AAAA,EAC/C;AACF;AAGO,MAAM,mBAAmB;AAGzB,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAYH,MAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAGO,MAAM,aAAa;AAGnB,MAAM,kBAAkB;AAGxB,MAAM,iBAAiB;AAGvB,MAAM,iBAAiB;AAEvB,MAAM,mBAAmB;AAEzB,MAAM,aAAa;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Separator, type SeparatorProps } from "./separator";
2
+ export { separatorVariants, labeledSeparatorVariants, ruleSegmentVariants, separatorLabelClass, type SeparatorVariantProps, } from "./separator.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/separator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Separator } from "./separator";
2
+ import {
3
+ separatorVariants,
4
+ labeledSeparatorVariants,
5
+ ruleSegmentVariants,
6
+ separatorLabelClass
7
+ } from "./separator.variants";
8
+ export {
9
+ Separator,
10
+ labeledSeparatorVariants,
11
+ ruleSegmentVariants,
12
+ separatorLabelClass,
13
+ separatorVariants
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/separator/index.ts"],"sourcesContent":["export { Separator, type SeparatorProps } from \"./separator\";\nexport {\n separatorVariants,\n labeledSeparatorVariants,\n ruleSegmentVariants,\n separatorLabelClass,\n type SeparatorVariantProps,\n} from \"./separator.variants\";\n"],"mappings":"AAAA,SAAS,iBAAsC;AAC/C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ import { type SeparatorVariantProps } from "./separator.variants";
3
+ export interface SeparatorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "role">, SeparatorVariantProps {
4
+ /**
5
+ * `horizontal` (default) splits content stacked top to bottom; `vertical`
6
+ * splits content laid out inline and spans the block size of its row.
7
+ */
8
+ orientation?: "horizontal" | "vertical";
9
+ /**
10
+ * Decorative: the split is already obvious from layout and the line only
11
+ * reinforces it. Removed from the accessibility tree (role="none"). Ignored
12
+ * when a `label` is present — a labeled Separator is always semantic (spec §3).
13
+ */
14
+ decorative?: boolean;
15
+ /**
16
+ * A short centered word or phrase (for example "or") breaking the rule. When
17
+ * set, the rule renders as two segments with the label between them and the
18
+ * Separator is always semantic, exposing the label as its accessible name.
19
+ */
20
+ label?: string;
21
+ }
22
+ export declare const Separator: React.ForwardRefExoticComponent<SeparatorProps & React.RefAttributes<HTMLDivElement>>;
23
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../src/components/separator/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EACxD,qBAAqB;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,SAAS,uFAkDrB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Separator as SeparatorPrimitive } from "radix-ui";
4
+ import { cn } from "../../lib/cn";
5
+ import {
6
+ separatorVariants,
7
+ labeledSeparatorVariants,
8
+ ruleSegmentVariants,
9
+ separatorLabelClass
10
+ } from "./separator.variants";
11
+ const Separator = React.forwardRef(
12
+ function Separator2({ className, orientation = "horizontal", decorative = false, label, ...props }, ref) {
13
+ if (label != null && label !== "") {
14
+ return /* @__PURE__ */ jsxs(
15
+ "div",
16
+ {
17
+ ref,
18
+ role: "separator",
19
+ "aria-label": label,
20
+ "aria-orientation": orientation === "vertical" ? "vertical" : void 0,
21
+ "data-orientation": orientation,
22
+ className: cn(labeledSeparatorVariants({ orientation }), className),
23
+ ...props,
24
+ children: [
25
+ /* @__PURE__ */ jsx(
26
+ "div",
27
+ {
28
+ "data-testid": "separator-rule",
29
+ "aria-hidden": "true",
30
+ className: cn(ruleSegmentVariants({ orientation }))
31
+ }
32
+ ),
33
+ /* @__PURE__ */ jsx("span", { className: separatorLabelClass, children: label }),
34
+ /* @__PURE__ */ jsx(
35
+ "div",
36
+ {
37
+ "data-testid": "separator-rule",
38
+ "aria-hidden": "true",
39
+ className: cn(ruleSegmentVariants({ orientation }))
40
+ }
41
+ )
42
+ ]
43
+ }
44
+ );
45
+ }
46
+ return /* @__PURE__ */ jsx(
47
+ SeparatorPrimitive.Root,
48
+ {
49
+ ref,
50
+ orientation,
51
+ decorative,
52
+ className: cn(separatorVariants({ orientation }), className),
53
+ ...props
54
+ }
55
+ );
56
+ }
57
+ );
58
+ export {
59
+ Separator
60
+ };
61
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/separator/separator.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n separatorVariants,\n labeledSeparatorVariants,\n ruleSegmentVariants,\n separatorLabelClass,\n type SeparatorVariantProps,\n} from \"./separator.variants\";\n\nexport interface SeparatorProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"role\">,\n SeparatorVariantProps {\n /**\n * `horizontal` (default) splits content stacked top to bottom; `vertical`\n * splits content laid out inline and spans the block size of its row.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Decorative: the split is already obvious from layout and the line only\n * reinforces it. Removed from the accessibility tree (role=\"none\"). Ignored\n * when a `label` is present — a labeled Separator is always semantic (spec §3).\n */\n decorative?: boolean;\n /**\n * A short centered word or phrase (for example \"or\") breaking the rule. When\n * set, the rule renders as two segments with the label between them and the\n * Separator is always semantic, exposing the label as its accessible name.\n */\n label?: string;\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n function Separator(\n { className, orientation = \"horizontal\", decorative = false, label, ...props },\n ref,\n ) {\n // A labeled Separator is always semantic (never decorative): a role=\"separator\"\n // container with two aria-hidden rule segments flanking the centered label, which\n // is the element's accessible name. Radix Separator.Root renders a single element,\n // so the two-segment-plus-label anatomy (spec §2) is composed here.\n if (label != null && label !== \"\") {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-label={label}\n aria-orientation={orientation === \"vertical\" ? \"vertical\" : undefined}\n data-orientation={orientation}\n className={cn(labeledSeparatorVariants({ orientation }), className)}\n {...props}\n >\n <div\n data-testid=\"separator-rule\"\n aria-hidden=\"true\"\n className={cn(ruleSegmentVariants({ orientation }))}\n />\n <span className={separatorLabelClass}>{label}</span>\n <div\n data-testid=\"separator-rule\"\n aria-hidden=\"true\"\n className={cn(ruleSegmentVariants({ orientation }))}\n />\n </div>\n );\n }\n\n // The bare rule. Radix Separator.Root gives the role mapping for free:\n // role=\"separator\" when semantic (with aria-orientation only on the vertical one,\n // since horizontal is the implicit default), or role=\"none\" when decorative —\n // removing it from the accessibility tree. It is render-only (no hook / no state),\n // so this component needs no 'use client' directive.\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n orientation={orientation}\n decorative={decorative}\n className={cn(separatorVariants({ orientation }), className)}\n {...props}\n />\n );\n },\n);\n"],"mappings":"AA4CQ,SASE,KATF;AA5CR,YAAY,WAAW;AACvB,SAAS,aAAa,0BAA0B;AAChD,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAwBA,MAAM,YAAY,MAAM;AAAA,EAC7B,SAASA,WACP,EAAE,WAAW,cAAc,cAAc,aAAa,OAAO,OAAO,GAAG,MAAM,GAC7E,KACA;AAKA,QAAI,SAAS,QAAQ,UAAU,IAAI;AACjC,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAK;AAAA,UACL,cAAY;AAAA,UACZ,oBAAkB,gBAAgB,aAAa,aAAa;AAAA,UAC5D,oBAAkB;AAAA,UAClB,WAAW,GAAG,yBAAyB,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,UACjE,GAAG;AAAA,UAEJ;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,eAAY;AAAA,gBACZ,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,CAAC;AAAA;AAAA,YACpD;AAAA,YACA,oBAAC,UAAK,WAAW,qBAAsB,iBAAM;AAAA,YAC7C;AAAA,cAAC;AAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,eAAY;AAAA,gBACZ,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,CAAC;AAAA;AAAA,YACpD;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAOA,WACE;AAAA,MAAC,mBAAmB;AAAA,MAAnB;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,GAAG,kBAAkB,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,QAC1D,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;","names":["Separator"]}
@@ -0,0 +1,13 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ export declare const separatorVariants: (props?: ({
3
+ orientation?: "horizontal" | "vertical" | null | undefined;
4
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
+ export declare const labeledSeparatorVariants: (props?: ({
6
+ orientation?: "horizontal" | "vertical" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export declare const ruleSegmentVariants: (props?: ({
9
+ orientation?: "horizontal" | "vertical" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
+ export declare const separatorLabelClass = "shrink-0 text-caption text-text-secondary";
12
+ export type SeparatorVariantProps = VariantProps<typeof separatorVariants>;
13
+ //# sourceMappingURL=separator.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.variants.d.ts","sourceRoot":"","sources":["../../../src/components/separator/separator.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAUlE,eAAO,MAAM,iBAAiB;;8EAiB7B,CAAC;AAKF,eAAO,MAAM,wBAAwB;;8EASnC,CAAC;AAIH,eAAO,MAAM,mBAAmB;;8EAQ9B,CAAC;AAIH,eAAO,MAAM,mBAAmB,8CAA8C,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { cva } from "class-variance-authority";
2
+ const separatorVariants = cva(
3
+ [
4
+ // a flat, neutral structural line — the stroke comes from the border-default alias
5
+ "shrink-0 bg-border-default"
6
+ ],
7
+ {
8
+ variants: {
9
+ orientation: {
10
+ // splits content stacked top-to-bottom: a full-width 1px rule with block spacing
11
+ horizontal: "h-px w-full my-(--space-4)",
12
+ // splits content laid out inline: a 1px rule spanning the row's block size,
13
+ // with inline spacing
14
+ vertical: "w-px self-stretch mx-(--space-4)"
15
+ }
16
+ },
17
+ defaultVariants: { orientation: "horizontal" }
18
+ }
19
+ );
20
+ const labeledSeparatorVariants = cva(["flex items-center"], {
21
+ variants: {
22
+ orientation: {
23
+ horizontal: "w-full gap-(--space-2) my-(--space-4)",
24
+ // a vertical labeled separator stacks its two segments around the label
25
+ vertical: "flex-col self-stretch gap-(--space-2) mx-(--space-4)"
26
+ }
27
+ },
28
+ defaultVariants: { orientation: "horizontal" }
29
+ });
30
+ const ruleSegmentVariants = cva(["shrink-0 grow bg-border-default"], {
31
+ variants: {
32
+ orientation: {
33
+ horizontal: "h-px",
34
+ vertical: "w-px"
35
+ }
36
+ },
37
+ defaultVariants: { orientation: "horizontal" }
38
+ });
39
+ const separatorLabelClass = "shrink-0 text-caption text-text-secondary";
40
+ export {
41
+ labeledSeparatorVariants,
42
+ ruleSegmentVariants,
43
+ separatorLabelClass,
44
+ separatorVariants
45
+ };
46
+ //# sourceMappingURL=separator.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/separator/separator.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// The rule stroke: a 1px line painted from the border-intent alias (NOT a neutral\n// primitive), so the divider re-points with the theme. A Separator has no\n// interactive state (spec §4) — no focus ring, no target-size floor, no state axis;\n// the ONLY axis is the structural orientation (spec §3). Block spacing (horizontal)\n// or inline spacing (vertical) is reserved around the rule from --space-4.\n//\n// Sizing uses the standard 1px utilities (h-px / w-px) — a stroke, not an arbitrary\n// raw value — and the full cross-axis extent (w-full / self-stretch).\nexport const separatorVariants = cva(\n [\n // a flat, neutral structural line — the stroke comes from the border-default alias\n \"shrink-0 bg-border-default\",\n ],\n {\n variants: {\n orientation: {\n // splits content stacked top-to-bottom: a full-width 1px rule with block spacing\n horizontal: \"h-px w-full my-(--space-4)\",\n // splits content laid out inline: a 1px rule spanning the row's block size,\n // with inline spacing\n vertical: \"w-px self-stretch mx-(--space-4)\",\n },\n },\n defaultVariants: { orientation: \"horizontal\" },\n },\n);\n\n// The labeled container: a semantic separator whose rule renders as two segments with\n// the centered label between them. The container reserves the same block/inline\n// spacing as the bare rule; the gap between each segment and the label is --space-2.\nexport const labeledSeparatorVariants = cva([\"flex items-center\"], {\n variants: {\n orientation: {\n horizontal: \"w-full gap-(--space-2) my-(--space-4)\",\n // a vertical labeled separator stacks its two segments around the label\n vertical: \"flex-col self-stretch gap-(--space-2) mx-(--space-4)\",\n },\n },\n defaultVariants: { orientation: \"horizontal\" },\n});\n\n// One flanking rule segment inside a labeled separator: a decorative 1px line that\n// grows to fill the space on its side of the label. Same border-default stroke.\nexport const ruleSegmentVariants = cva([\"shrink-0 grow bg-border-default\"], {\n variants: {\n orientation: {\n horizontal: \"h-px\",\n vertical: \"w-px\",\n },\n },\n defaultVariants: { orientation: \"horizontal\" },\n});\n\n// The centered label text: the caption type role + secondary text color. Never the\n// brand violet, never a status hue — a divider carries no verification meaning.\nexport const separatorLabelClass = \"shrink-0 text-caption text-text-secondary\";\n\nexport type SeparatorVariantProps = VariantProps<typeof separatorVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAUhC,MAAM,oBAAoB;AAAA,EAC/B;AAAA;AAAA,IAEE;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA;AAAA,QAEX,YAAY;AAAA;AAAA;AAAA,QAGZ,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,aAAa,aAAa;AAAA,EAC/C;AACF;AAKO,MAAM,2BAA2B,IAAI,CAAC,mBAAmB,GAAG;AAAA,EACjE,UAAU;AAAA,IACR,aAAa;AAAA,MACX,YAAY;AAAA;AAAA,MAEZ,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,aAAa,aAAa;AAC/C,CAAC;AAIM,MAAM,sBAAsB,IAAI,CAAC,iCAAiC,GAAG;AAAA,EAC1E,UAAU;AAAA,IACR,aAAa;AAAA,MACX,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,aAAa,aAAa;AAC/C,CAAC;AAIM,MAAM,sBAAsB;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetBody, SheetFooter, SheetClose, type SheetProps, type SheetTriggerProps, type SheetContentProps, type SheetHeaderProps, type SheetTitleProps, type SheetDescriptionProps, type SheetBodyProps, type SheetFooterProps, type SheetCloseProps, } from "./sheet";
2
+ export { sheetPanelVariants, sheetScrimVariants, sheetCloseVariants, type SheetPanelVariantProps, } from "./sheet.variants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/sheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,UAAU,EACV,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import {
2
+ Sheet,
3
+ SheetTrigger,
4
+ SheetContent,
5
+ SheetHeader,
6
+ SheetTitle,
7
+ SheetDescription,
8
+ SheetBody,
9
+ SheetFooter,
10
+ SheetClose
11
+ } from "./sheet";
12
+ import {
13
+ sheetPanelVariants,
14
+ sheetScrimVariants,
15
+ sheetCloseVariants
16
+ } from "./sheet.variants";
17
+ export {
18
+ Sheet,
19
+ SheetBody,
20
+ SheetClose,
21
+ SheetContent,
22
+ SheetDescription,
23
+ SheetFooter,
24
+ SheetHeader,
25
+ SheetTitle,
26
+ SheetTrigger,
27
+ sheetCloseVariants,
28
+ sheetPanelVariants,
29
+ sheetScrimVariants
30
+ };
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/sheet/index.ts"],"sourcesContent":["export {\n Sheet,\n SheetTrigger,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetDescription,\n SheetBody,\n SheetFooter,\n SheetClose,\n type SheetProps,\n type SheetTriggerProps,\n type SheetContentProps,\n type SheetHeaderProps,\n type SheetTitleProps,\n type SheetDescriptionProps,\n type SheetBodyProps,\n type SheetFooterProps,\n type SheetCloseProps,\n} from \"./sheet\";\nexport {\n sheetPanelVariants,\n sheetScrimVariants,\n sheetCloseVariants,\n type SheetPanelVariantProps,\n} from \"./sheet.variants\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAUK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}