@elabs-ai/components-ui 5.0.0 → 5.2.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 (563) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-6QU7OVFA.js → chunk-2ZMPAD6C.js} +7 -7
  3. package/dist/{chunk-OBEJUAN6.js → chunk-2ZWUTZHE.js} +5 -5
  4. package/dist/{chunk-U4LHV5DS.js → chunk-36SY7TID.js} +2 -2
  5. package/dist/{chunk-IHMFEPIT.js → chunk-3BZBNDRP.js} +3 -3
  6. package/dist/{chunk-5AWXGBSH.js → chunk-3DJ4KY3U.js} +3 -3
  7. package/dist/{chunk-LR2CU7HK.js → chunk-3ZR5PMKB.js} +2 -2
  8. package/dist/{chunk-QDTGDYMM.js → chunk-47YSHR3H.js} +3 -3
  9. package/dist/{chunk-2HXVFC4B.js → chunk-4B2E4OCZ.js} +2 -2
  10. package/dist/{chunk-3B7W334A.js → chunk-4C4D6T5M.js} +3 -3
  11. package/dist/{chunk-YWB7HLL7.js → chunk-4NSCLIES.js} +3 -3
  12. package/dist/{chunk-UPEMEBWH.js → chunk-55BM2IU2.js} +5 -5
  13. package/dist/{chunk-XMZ5LXL4.js → chunk-5AJQUJ5C.js} +4 -4
  14. package/dist/{chunk-5V5J7APL.js → chunk-5C5W52O2.js} +2 -2
  15. package/dist/{chunk-FINAKMC6.js → chunk-5KNLME6F.js} +14 -8
  16. package/dist/chunk-5KNLME6F.js.map +1 -0
  17. package/dist/{chunk-FDPONOOT.js → chunk-5MXQ5CP7.js} +2 -2
  18. package/dist/{chunk-HVFYAQLK.js → chunk-5QQFXDUY.js} +8 -6
  19. package/dist/{chunk-HVFYAQLK.js.map → chunk-5QQFXDUY.js.map} +1 -1
  20. package/dist/{chunk-XZ23AFOP.js → chunk-64BKIIJC.js} +2 -2
  21. package/dist/{chunk-NBMF7SIS.js → chunk-6HTZBBTC.js} +2 -2
  22. package/dist/{chunk-5RC32MZH.js → chunk-72H7HUTH.js} +2 -2
  23. package/dist/{chunk-URVAZW44.js → chunk-7KV7H2TW.js} +2 -2
  24. package/dist/{chunk-VFF3AN4Y.js → chunk-7Z2RAGOA.js} +2 -2
  25. package/dist/{chunk-LXW3GNF7.js → chunk-7ZJLR6RP.js} +7 -7
  26. package/dist/{chunk-R3SYH7RG.js → chunk-A3JF66ZC.js} +16 -11
  27. package/dist/chunk-A3JF66ZC.js.map +1 -0
  28. package/dist/{chunk-IGP5E4FC.js → chunk-A3TT32GE.js} +5 -5
  29. package/dist/{chunk-LVRULYU4.js → chunk-A4ZSNEZD.js} +9 -9
  30. package/dist/{chunk-BM6NGS3A.js → chunk-AE6LFFME.js} +3 -3
  31. package/dist/{chunk-KTH3GWAL.js → chunk-AR5PJ5ZR.js} +6 -6
  32. package/dist/{chunk-RNC4M6SG.js → chunk-B3DANITU.js} +3 -3
  33. package/dist/{chunk-MGAXCPT7.js → chunk-B7FAQKHH.js} +2 -2
  34. package/dist/{chunk-35ZTVB35.js → chunk-BGXBANS2.js} +6 -6
  35. package/dist/{chunk-NJAGSGPF.js → chunk-C4FNDXBM.js} +4 -4
  36. package/dist/{chunk-VA2OONPE.js → chunk-C5QBV5RE.js} +2 -2
  37. package/dist/{chunk-LOSXINSS.js → chunk-C6I5I5LA.js} +5 -5
  38. package/dist/{chunk-7WXDSTNR.js → chunk-CDMJSXCB.js} +2 -2
  39. package/dist/{chunk-A47AZPCL.js → chunk-CEQ3YKHR.js} +2 -2
  40. package/dist/{chunk-A43B4IT7.js → chunk-CGY25FAG.js} +5 -5
  41. package/dist/{chunk-EHGIW7GA.js → chunk-CMP4F537.js} +2 -2
  42. package/dist/{chunk-6OFWWIEG.js → chunk-D5INX2EF.js} +3 -3
  43. package/dist/{chunk-HDS64Z5L.js → chunk-DIL73NE3.js} +2 -2
  44. package/dist/{chunk-3EKVSKGJ.js → chunk-DXC3DTCV.js} +3 -3
  45. package/dist/{chunk-ZNFHDBUW.js → chunk-EBNPVPR7.js} +2 -2
  46. package/dist/{chunk-ZXBUOHCR.js → chunk-EHN5ZAHP.js} +3 -3
  47. package/dist/{chunk-4PITSMJ3.js → chunk-EJ3XWNY3.js} +2 -2
  48. package/dist/{chunk-4E73UAFA.js → chunk-F6FF4EJN.js} +7 -7
  49. package/dist/{chunk-FYCCNQXQ.js → chunk-FC2LHNJG.js} +7 -7
  50. package/dist/{chunk-6OPDRLMU.js → chunk-FCVHZDP7.js} +8 -8
  51. package/dist/{chunk-B5QQLMEE.js → chunk-FG3PDWE3.js} +2 -2
  52. package/dist/{chunk-EY2PGOG3.js → chunk-FKDI2T7X.js} +4 -4
  53. package/dist/{chunk-XONGYCW3.js → chunk-FNRVVVXX.js} +3 -3
  54. package/dist/{chunk-BLNXHETI.js → chunk-FWAFP76U.js} +4 -4
  55. package/dist/{chunk-KBNWM27Q.js → chunk-FXWWDMMP.js} +9 -2
  56. package/dist/chunk-FXWWDMMP.js.map +1 -0
  57. package/dist/{chunk-KUAVM54Y.js → chunk-FZEG2R3E.js} +2 -2
  58. package/dist/{chunk-FKUP7QRJ.js → chunk-GTBVTLZJ.js} +2 -2
  59. package/dist/{chunk-NTTSHOOK.js → chunk-HF6BGFUV.js} +4 -4
  60. package/dist/{chunk-QNEOO22E.js → chunk-HND6FAMX.js} +2 -2
  61. package/dist/{chunk-ECCNRCC4.js → chunk-HNLYRHAU.js} +2 -2
  62. package/dist/{chunk-7G63B2B7.js → chunk-HUIYDDDL.js} +7 -7
  63. package/dist/{chunk-DCI6IOJX.js → chunk-HUXLE3K3.js} +4 -4
  64. package/dist/{chunk-HANBQNW3.js → chunk-I2C5RZ4S.js} +25 -1
  65. package/dist/{chunk-HANBQNW3.js.map → chunk-I2C5RZ4S.js.map} +1 -1
  66. package/dist/{chunk-J2P4YZLC.js → chunk-I3LBIBVN.js} +6 -6
  67. package/dist/{chunk-XYACSO57.js → chunk-I3U52BDH.js} +2 -2
  68. package/dist/{chunk-RRZUMIYG.js → chunk-IIY5JRNW.js} +3 -3
  69. package/dist/{chunk-4GQFIJAE.js → chunk-IV6OYZTL.js} +3 -3
  70. package/dist/{chunk-UQHWOPUY.js → chunk-IVEDMK5U.js} +2 -2
  71. package/dist/{chunk-U26XDHMX.js → chunk-JQIXRCLG.js} +5 -5
  72. package/dist/{chunk-WW3CD7AU.js → chunk-JU4KW7JN.js} +7 -7
  73. package/dist/{chunk-YIVL6HWS.js → chunk-JVCIAEFT.js} +2 -2
  74. package/dist/{chunk-DUF2VZON.js → chunk-K4V2ELUZ.js} +2 -2
  75. package/dist/{chunk-BPXLHGWI.js → chunk-KK2TIWTF.js} +2 -2
  76. package/dist/{chunk-NRSSSVWB.js → chunk-KPZFLTZ2.js} +2 -2
  77. package/dist/{chunk-OYM3NHSD.js → chunk-KXYL3CUS.js} +2 -2
  78. package/dist/{chunk-KOVHUAHG.js → chunk-L5O2O67Y.js} +6 -6
  79. package/dist/{chunk-RM5JIUVW.js → chunk-LG33MONJ.js} +2 -2
  80. package/dist/{chunk-YACASX6X.js → chunk-LLYLDZXC.js} +2 -2
  81. package/dist/{chunk-RWUKMJYA.js → chunk-LMV225AS.js} +2 -2
  82. package/dist/{chunk-533R5EKD.js → chunk-LVY7B5PD.js} +5 -5
  83. package/dist/{chunk-OV4GQOLC.js → chunk-M2KNQZUL.js} +2 -2
  84. package/dist/{chunk-7PS5MKVH.js → chunk-MIWFBH5S.js} +5 -5
  85. package/dist/{chunk-XAFRTZQF.js → chunk-MJAIURHO.js} +2 -2
  86. package/dist/{chunk-YL7VBHPZ.js → chunk-NXCOVGDU.js} +3 -3
  87. package/dist/{chunk-6TJVJPNU.js → chunk-O6AIFSTX.js} +46 -1
  88. package/dist/chunk-O6AIFSTX.js.map +1 -0
  89. package/dist/{chunk-WX3LWMVU.js → chunk-O6V65J5J.js} +2 -2
  90. package/dist/{chunk-EJQYE4MY.js → chunk-OFFWEDKY.js} +2 -2
  91. package/dist/{chunk-UXSV6RVS.js → chunk-OKY7ACZK.js} +2 -2
  92. package/dist/{chunk-ITFDGFOT.js → chunk-ONXBRQJT.js} +3 -3
  93. package/dist/{chunk-ULIDYFM7.js → chunk-OPBSVEMX.js} +2 -2
  94. package/dist/{chunk-333EWYWL.js → chunk-PCNQ6NP2.js} +6 -6
  95. package/dist/{chunk-6HGS5Z2Z.js → chunk-PFGQDW3H.js} +4 -4
  96. package/dist/{chunk-K6YRTASS.js → chunk-PGKQZBLZ.js} +2 -2
  97. package/dist/{chunk-57C25JYV.js → chunk-PQZD5W3E.js} +2 -2
  98. package/dist/{chunk-5Z55AFOW.js → chunk-PT5P4AAU.js} +2 -2
  99. package/dist/{chunk-EL3OXVOW.js → chunk-PUACHQRH.js} +2 -2
  100. package/dist/{chunk-HRYH7XQP.js → chunk-QKZX5HDY.js} +2 -2
  101. package/dist/{chunk-KZWC6JCI.js → chunk-QXXHK34V.js} +6 -6
  102. package/dist/{chunk-JGS2IHER.js → chunk-R27VUCWR.js} +4 -4
  103. package/dist/{chunk-QGX37P5L.js → chunk-R6CITZBB.js} +2 -2
  104. package/dist/{chunk-X6J4KKZZ.js → chunk-RFTC5UVB.js} +4 -4
  105. package/dist/{chunk-YXHHUJOZ.js → chunk-RHZSAWAU.js} +3 -3
  106. package/dist/{chunk-LMO3QK7Q.js → chunk-S7YR3FYZ.js} +3 -3
  107. package/dist/{chunk-GRWGNWIJ.js → chunk-SCCBEFVK.js} +6 -6
  108. package/dist/{chunk-R7DDZIE3.js → chunk-SD5MGHIJ.js} +4 -4
  109. package/dist/{chunk-PP7POY7C.js → chunk-SEGTBIR4.js} +2 -2
  110. package/dist/{chunk-D3C3VVCX.js → chunk-SGBCLZQF.js} +2 -2
  111. package/dist/{chunk-E3ES2KR6.js → chunk-SJHDX73F.js} +6 -6
  112. package/dist/{chunk-EKY3A5LO.js → chunk-SLDJYJEG.js} +3 -3
  113. package/dist/{chunk-KWQ6HV5Z.js → chunk-SQLEVIAD.js} +4 -4
  114. package/dist/{chunk-T4JNXV75.js → chunk-SR3SC2Q3.js} +6 -6
  115. package/dist/{chunk-YPLKH5H4.js → chunk-SSQG36MH.js} +6 -6
  116. package/dist/{chunk-NQY3QNLR.js → chunk-U5BZXNHW.js} +4 -4
  117. package/dist/{chunk-TEKBTTP2.js → chunk-U756JCDK.js} +2 -2
  118. package/dist/{chunk-DFYPQ52O.js → chunk-U7CSWQAE.js} +8 -8
  119. package/dist/{chunk-WCCCW4KD.js → chunk-U7FC5J6J.js} +6 -6
  120. package/dist/{chunk-W6HCXQBH.js → chunk-UG2T7LMX.js} +4 -4
  121. package/dist/{chunk-JNWXHPZG.js → chunk-UPGIQXUY.js} +2 -2
  122. package/dist/{chunk-WZTFU6FJ.js → chunk-UUSOIPM2.js} +2 -2
  123. package/dist/{chunk-7P24I5OL.js → chunk-UVVVKPSH.js} +2 -2
  124. package/dist/{chunk-V4DDHF7S.js → chunk-V6U75PIG.js} +3 -3
  125. package/dist/{chunk-BN4CKDFU.js → chunk-VAWYYETZ.js} +23 -23
  126. package/dist/chunk-VFS52GGI.js +2 -0
  127. package/dist/chunk-VFS52GGI.js.map +1 -0
  128. package/dist/{chunk-DT6RNLCP.js → chunk-W26KFY35.js} +2 -2
  129. package/dist/{chunk-OPMMD25Z.js → chunk-WDZ47ZTX.js} +5 -5
  130. package/dist/chunk-WEEVXQIM.js +45 -0
  131. package/dist/chunk-WEEVXQIM.js.map +1 -0
  132. package/dist/{chunk-IZJOZJDL.js → chunk-WEM6XJ7Z.js} +2 -2
  133. package/dist/{chunk-5HBMI2DO.js → chunk-WKNOKJA3.js} +2 -2
  134. package/dist/{chunk-WTB4DDZP.js → chunk-WL2EZDSD.js} +6 -6
  135. package/dist/{chunk-QTIKGWU4.js → chunk-XE6GYGWS.js} +4 -4
  136. package/dist/{chunk-PYPNGKRD.js → chunk-Y3CKZ7SH.js} +5 -5
  137. package/dist/{chunk-VRIAWF3A.js → chunk-YA2CG4YL.js} +2 -2
  138. package/dist/{chunk-AXKZBRZK.js → chunk-YA2QGLUL.js} +2 -2
  139. package/dist/{chunk-35DUHYPC.js → chunk-YFGFNFVW.js} +3 -3
  140. package/dist/{chunk-6NKILKS6.js → chunk-YFKKMDJL.js} +2 -2
  141. package/dist/chunk-YHVXYOL6.js +80 -0
  142. package/dist/chunk-YHVXYOL6.js.map +1 -0
  143. package/dist/{chunk-CQ5CH3SB.js → chunk-YUFDC6RW.js} +2 -2
  144. package/dist/{chunk-H5UA5JW4.js → chunk-ZESSUMCO.js} +3 -3
  145. package/dist/{chunk-N44PNGDS.js → chunk-ZFMM2NLA.js} +2 -2
  146. package/dist/{chunk-3LWAAK3J.js → chunk-ZGNWDYSC.js} +6 -6
  147. package/dist/{chunk-TU24Y4HN.js → chunk-ZSYT5H6U.js} +2 -2
  148. package/dist/components/accordion/accordion.js +2 -2
  149. package/dist/components/accordion/index.js +2 -2
  150. package/dist/components/advanced-group/advanced-group.js +6 -6
  151. package/dist/components/advanced-group/index.js +6 -6
  152. package/dist/components/alert/alert.js +2 -2
  153. package/dist/components/alert/index.js +2 -2
  154. package/dist/components/alert-dialog/alert-dialog.js +3 -3
  155. package/dist/components/alert-dialog/index.js +3 -3
  156. package/dist/components/ambient-field/ambient-field.js +2 -2
  157. package/dist/components/ambient-field/index.js +2 -2
  158. package/dist/components/app-shell/app-shell.js +4 -4
  159. package/dist/components/app-shell/index.js +4 -4
  160. package/dist/components/app-sidebar/app-sidebar.js +12 -12
  161. package/dist/components/app-sidebar/index.js +12 -12
  162. package/dist/components/attribution-panel/attribution-panel.js +7 -7
  163. package/dist/components/attribution-panel/attributions.generated.js +1 -1
  164. package/dist/components/attribution-panel/index.js +7 -7
  165. package/dist/components/avatar/avatar.js +2 -2
  166. package/dist/components/avatar/index.js +2 -2
  167. package/dist/components/badge/badge.js +2 -2
  168. package/dist/components/badge/index.js +2 -2
  169. package/dist/components/bento-grid/bento-grid.js +3 -3
  170. package/dist/components/bento-grid/index.js +3 -3
  171. package/dist/components/bounded-number/bounded-number.js +9 -9
  172. package/dist/components/bounded-number/index.js +9 -9
  173. package/dist/components/breadcrumb/breadcrumb.js +4 -4
  174. package/dist/components/breadcrumb/index.js +4 -4
  175. package/dist/components/button/button.js +2 -2
  176. package/dist/components/button/index.js +2 -2
  177. package/dist/components/button-group/button-group.js +3 -3
  178. package/dist/components/button-group/index.js +3 -3
  179. package/dist/components/calendar/calendar.js +3 -3
  180. package/dist/components/calendar/index.js +3 -3
  181. package/dist/components/card/card.js +2 -2
  182. package/dist/components/card/index.js +2 -2
  183. package/dist/components/carousel/carousel.js +5 -5
  184. package/dist/components/carousel/index.js +5 -5
  185. package/dist/components/change-review/change-review.js +10 -10
  186. package/dist/components/change-review/index.js +10 -10
  187. package/dist/components/checkbox/checkbox.js +2 -2
  188. package/dist/components/checkbox/index.js +2 -2
  189. package/dist/components/collapsible/collapsible.js +2 -2
  190. package/dist/components/collapsible/index.js +2 -2
  191. package/dist/components/collapsible-panel/index.js +2 -2
  192. package/dist/components/collapsible-panel/use-collapsible-panel.js +2 -2
  193. package/dist/components/color-picker/color-picker.js +5 -5
  194. package/dist/components/color-picker/index.js +5 -5
  195. package/dist/components/combobox/combobox.js +10 -10
  196. package/dist/components/combobox/index.js +10 -10
  197. package/dist/components/command/command.js +7 -7
  198. package/dist/components/command/index.js +7 -7
  199. package/dist/components/command-chip/command-chip.js +3 -3
  200. package/dist/components/command-chip/index.js +3 -3
  201. package/dist/components/command-trigger/command-trigger.js +3 -3
  202. package/dist/components/command-trigger/index.js +3 -3
  203. package/dist/components/confirm-dialog/confirm-dialog.js +7 -7
  204. package/dist/components/confirm-dialog/index.js +7 -7
  205. package/dist/components/context-menu/context-menu.js +2 -2
  206. package/dist/components/context-menu/index.js +2 -2
  207. package/dist/components/context-rail/context-rail.js +14 -14
  208. package/dist/components/context-rail/index.js +14 -14
  209. package/dist/components/copyable-value/copyable-value.js +5 -5
  210. package/dist/components/copyable-value/index.js +5 -5
  211. package/dist/components/date-picker/date-picker.js +7 -7
  212. package/dist/components/date-picker/index.js +7 -7
  213. package/dist/components/date-range-picker/date-range-picker.js +7 -7
  214. package/dist/components/date-range-picker/index.js +7 -7
  215. package/dist/components/descriptions/descriptions.js +2 -2
  216. package/dist/components/descriptions/index.js +2 -2
  217. package/dist/components/dialog/dialog.js +6 -6
  218. package/dist/components/dialog/index.js +6 -6
  219. package/dist/components/drafting-marks/drafting-marks.js +14 -0
  220. package/dist/components/drafting-marks/drafting-marks.js.map +1 -0
  221. package/dist/components/drafting-marks/index.js +15 -0
  222. package/dist/components/drafting-marks/index.js.map +1 -0
  223. package/dist/components/drawer/drawer.js +2 -2
  224. package/dist/components/drawer/index.js +2 -2
  225. package/dist/components/dropdown-menu/dropdown-menu.js +2 -2
  226. package/dist/components/dropdown-menu/index.js +2 -2
  227. package/dist/components/empty-state/empty-state.js +6 -6
  228. package/dist/components/empty-state/index.js +6 -6
  229. package/dist/components/error-state/error-state.js +6 -6
  230. package/dist/components/error-state/index.js +6 -6
  231. package/dist/components/expand-dialog/expand-dialog.js +7 -7
  232. package/dist/components/expand-dialog/index.js +7 -7
  233. package/dist/components/field/field.js +4 -4
  234. package/dist/components/field/index.js +4 -4
  235. package/dist/components/field-row/field-row.js +3 -3
  236. package/dist/components/field-row/index.js +3 -3
  237. package/dist/components/file-upload/file-upload.js +6 -6
  238. package/dist/components/file-upload/index.js +6 -6
  239. package/dist/components/form/form.js +3 -3
  240. package/dist/components/hover-card/hover-card.js +2 -2
  241. package/dist/components/hover-card/index.js +2 -2
  242. package/dist/components/icon-button/icon-button.js +4 -4
  243. package/dist/components/icon-button/index.js +4 -4
  244. package/dist/components/input/index.js +2 -2
  245. package/dist/components/input/input.js +2 -2
  246. package/dist/components/input-group/index.js +5 -5
  247. package/dist/components/input-group/input-group.js +5 -5
  248. package/dist/components/input-otp/index.js +2 -2
  249. package/dist/components/input-otp/input-otp.js +2 -2
  250. package/dist/components/install-tabs/index.js +8 -8
  251. package/dist/components/install-tabs/install-tabs.js +8 -8
  252. package/dist/components/integration-matrix/index.js +7 -7
  253. package/dist/components/integration-matrix/integration-matrix.js +7 -7
  254. package/dist/components/kbd/index.js +2 -2
  255. package/dist/components/kbd/kbd.js +2 -2
  256. package/dist/components/key-value-editor/index.js +6 -6
  257. package/dist/components/key-value-editor/key-value-editor.js +6 -6
  258. package/dist/components/keyboard-shortcuts/index.js +10 -10
  259. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +10 -10
  260. package/dist/components/label/index.js +2 -2
  261. package/dist/components/label/label.js +2 -2
  262. package/dist/components/link-preview/index.js +3 -3
  263. package/dist/components/link-preview/link-preview.js +3 -3
  264. package/dist/components/list-editor/index.js +6 -6
  265. package/dist/components/list-editor/list-editor.js +6 -6
  266. package/dist/components/loading-state/index.js +6 -6
  267. package/dist/components/loading-state/loading-state.js +6 -6
  268. package/dist/components/locale-provider/index.js +2 -2
  269. package/dist/components/locale-provider/locale-provider.js +2 -2
  270. package/dist/components/locale-provider/messages.js +1 -1
  271. package/dist/components/match-highlight/index.js +2 -2
  272. package/dist/components/match-highlight/match-highlight.js +2 -2
  273. package/dist/components/mention-input/index.js +6 -6
  274. package/dist/components/mention-input/mention-input.js +6 -6
  275. package/dist/components/menubar/index.js +2 -2
  276. package/dist/components/menubar/menubar.js +2 -2
  277. package/dist/components/meter/index.js +2 -2
  278. package/dist/components/meter/meter.js +2 -2
  279. package/dist/components/metric-card/index.js +8 -8
  280. package/dist/components/metric-card/metric-card.js +8 -8
  281. package/dist/components/model-picker/index.js +11 -11
  282. package/dist/components/model-picker/model-picker.js +11 -11
  283. package/dist/components/nav-main/index.js +13 -13
  284. package/dist/components/nav-main/nav-main.js +13 -13
  285. package/dist/components/nav-notifications/index.js +7 -7
  286. package/dist/components/nav-notifications/nav-notifications.js +7 -7
  287. package/dist/components/nav-user/index.js +14 -14
  288. package/dist/components/nav-user/nav-user.js +14 -14
  289. package/dist/components/navigation-menu/index.js +2 -2
  290. package/dist/components/navigation-menu/navigation-menu.js +2 -2
  291. package/dist/components/number-input/index.js +8 -8
  292. package/dist/components/number-input/number-input.js +8 -8
  293. package/dist/components/page-shell/index.js +2 -2
  294. package/dist/components/page-shell/page-shell.js +2 -2
  295. package/dist/components/pagination/index.js +5 -5
  296. package/dist/components/pagination/pagination.js +5 -5
  297. package/dist/components/popover/index.js +2 -2
  298. package/dist/components/popover/popover.js +2 -2
  299. package/dist/components/progress/index.js +2 -2
  300. package/dist/components/progress/progress.js +2 -2
  301. package/dist/components/radio-group/index.js +2 -2
  302. package/dist/components/radio-group/radio-group.js +2 -2
  303. package/dist/components/rating/index.js +2 -2
  304. package/dist/components/rating/rating.js +2 -2
  305. package/dist/components/resizable/index.js +2 -2
  306. package/dist/components/resizable/resizable.js +2 -2
  307. package/dist/components/reveal/index.js +2 -2
  308. package/dist/components/reveal/reveal.js +2 -2
  309. package/dist/components/revision-timeline/index.js +4 -4
  310. package/dist/components/revision-timeline/revision-timeline.js +4 -4
  311. package/dist/components/schema-form/index.js +29 -29
  312. package/dist/components/schema-form/schema-form.js +25 -25
  313. package/dist/components/scroll-area/index.js +2 -2
  314. package/dist/components/scroll-area/scroll-area.js +2 -2
  315. package/dist/components/section-header/index.js +2 -2
  316. package/dist/components/section-header/section-header.js +2 -2
  317. package/dist/components/segmented-field/index.js +5 -5
  318. package/dist/components/segmented-field/segmented-field.js +5 -5
  319. package/dist/components/select/index.js +2 -2
  320. package/dist/components/select/select.js +2 -2
  321. package/dist/components/separator/index.js +2 -2
  322. package/dist/components/separator/separator.js +2 -2
  323. package/dist/components/sheet/index.js +4 -4
  324. package/dist/components/sheet/sheet.js +4 -4
  325. package/dist/components/side-dock/index.js +6 -6
  326. package/dist/components/side-dock/side-dock.js +6 -6
  327. package/dist/components/sidebar/index.js +11 -11
  328. package/dist/components/sidebar/sidebar.js +11 -11
  329. package/dist/components/skeleton/index.js +2 -2
  330. package/dist/components/skeleton/skeleton.js +2 -2
  331. package/dist/components/skip-link/index.js +2 -2
  332. package/dist/components/skip-link/skip-link.js +2 -2
  333. package/dist/components/slider/index.js +2 -2
  334. package/dist/components/slider/slider.js +2 -2
  335. package/dist/components/slider-number/index.js +10 -10
  336. package/dist/components/slider-number/slider-number.js +10 -10
  337. package/dist/components/sonner/index.js +2 -2
  338. package/dist/components/sonner/sonner.js +2 -2
  339. package/dist/components/spec-playground/index.js +6 -6
  340. package/dist/components/spec-playground/spec-playground.js +6 -6
  341. package/dist/components/spinner/index.js +4 -4
  342. package/dist/components/spinner/spinner.js +4 -4
  343. package/dist/components/split-panel/index.js +2 -2
  344. package/dist/components/split-panel/split-panel.js +2 -2
  345. package/dist/components/state-panel/index.js +5 -5
  346. package/dist/components/state-panel/state-panel.js +5 -5
  347. package/dist/components/status-badge/index.js +3 -3
  348. package/dist/components/status-badge/status-badge.js +3 -3
  349. package/dist/components/surface-tour/index.js +8 -8
  350. package/dist/components/surface-tour/surface-tour.js +8 -8
  351. package/dist/components/switch/index.js +2 -2
  352. package/dist/components/switch/switch.js +2 -2
  353. package/dist/components/table/index.js +4 -4
  354. package/dist/components/table/table.js +4 -4
  355. package/dist/components/tabs/index.js +2 -2
  356. package/dist/components/tabs/tabs.js +2 -2
  357. package/dist/components/tag-input/index.js +7 -7
  358. package/dist/components/tag-input/tag-input.js +7 -7
  359. package/dist/components/team-switcher/index.js +13 -13
  360. package/dist/components/team-switcher/team-switcher.js +13 -13
  361. package/dist/components/textarea/index.js +2 -2
  362. package/dist/components/textarea/textarea.js +2 -2
  363. package/dist/components/theme-family-switch/index.js +5 -5
  364. package/dist/components/theme-family-switch/theme-family-switch.js +5 -5
  365. package/dist/components/theme-switcher/index.js +7 -7
  366. package/dist/components/theme-switcher/theme-switcher.js +7 -7
  367. package/dist/components/timeline/index.js +4 -4
  368. package/dist/components/timeline/timeline.js +4 -4
  369. package/dist/components/toggle/index.js +2 -2
  370. package/dist/components/toggle/toggle.js +2 -2
  371. package/dist/components/toggle-group/index.js +3 -3
  372. package/dist/components/toggle-group/toggle-group.js +3 -3
  373. package/dist/components/token-spotlight/index.js +2 -2
  374. package/dist/components/token-spotlight/token-spotlight.js +2 -2
  375. package/dist/components/toolbar/index.js +4 -4
  376. package/dist/components/toolbar/toolbar.js +4 -4
  377. package/dist/components/tooltip/index.js +2 -2
  378. package/dist/components/tooltip/tooltip.js +2 -2
  379. package/dist/components/top-nav/index.js +2 -2
  380. package/dist/components/top-nav/top-nav.js +2 -2
  381. package/dist/components/transfer/index.js +10 -10
  382. package/dist/components/transfer/transfer.js +10 -10
  383. package/dist/components/tree/index.js +7 -7
  384. package/dist/components/tree/tree.js +7 -7
  385. package/dist/components/tree-select/index.js +11 -11
  386. package/dist/components/tree-select/tree-select.js +11 -11
  387. package/dist/components/typography/index.js +3 -3
  388. package/dist/components/typography/prose.js +3 -3
  389. package/dist/components/typography/typography.js +2 -2
  390. package/dist/components/view-toolbar/index.js +8 -8
  391. package/dist/components/view-toolbar/view-toolbar.js +8 -8
  392. package/dist/components/virtual-select/index.js +8 -8
  393. package/dist/components/virtual-select/virtual-select.js +8 -8
  394. package/dist/components/wizard/index.js +3 -3
  395. package/dist/components/wizard/wizard.js +3 -3
  396. package/dist/components/workspace-picker/index.js +13 -13
  397. package/dist/components/workspace-picker/workspace-picker.js +13 -13
  398. package/dist/form.js +3 -3
  399. package/dist/illustrations/empty-list-illustration.js +3 -3
  400. package/dist/illustrations/error-illustration.js +3 -3
  401. package/dist/illustrations/first-run-illustration.js +3 -3
  402. package/dist/illustrations/illustration-base.js +2 -2
  403. package/dist/illustrations/index.js +11 -11
  404. package/dist/illustrations/no-access-illustration.js +3 -3
  405. package/dist/illustrations/no-results-illustration.js +3 -3
  406. package/dist/illustrations/offline-illustration.js +3 -3
  407. package/dist/illustrations/success-illustration.js +3 -3
  408. package/dist/index.d.ts +60 -5
  409. package/dist/index.js +229 -217
  410. package/dist/lib/cn.js +8 -1
  411. package/dist/lib/cn.js.map +1 -1
  412. package/dist/lib/streamdown-translations.js +3 -3
  413. package/package.json +4 -4
  414. package/src/components/attribution-panel/attributions.generated.ts +25 -1
  415. package/src/components/drafting-marks/drafting-marks.stories.tsx +88 -0
  416. package/src/components/drafting-marks/drafting-marks.test.tsx +55 -0
  417. package/src/components/drafting-marks/drafting-marks.tsx +120 -0
  418. package/src/components/drafting-marks/index.ts +7 -0
  419. package/src/components/locale-provider/messages.ts +47 -0
  420. package/src/components/section-header/section-header.stories.tsx +23 -0
  421. package/src/components/section-header/section-header.tsx +26 -6
  422. package/src/components/sidebar/sidebar.tsx +6 -1
  423. package/src/components/toolbar/toolbar.tsx +4 -2
  424. package/src/components/tree/tree.stories.tsx +28 -0
  425. package/src/components/tree/tree.tsx +17 -2
  426. package/src/decoration.stories.tsx +153 -123
  427. package/src/index.ts +4 -0
  428. package/src/lib/cn.test.ts +29 -0
  429. package/src/lib/cn.ts +7 -0
  430. package/dist/chunk-6TJVJPNU.js.map +0 -1
  431. package/dist/chunk-FINAKMC6.js.map +0 -1
  432. package/dist/chunk-KBNWM27Q.js.map +0 -1
  433. package/dist/chunk-OZTM6PYF.js +0 -30
  434. package/dist/chunk-OZTM6PYF.js.map +0 -1
  435. package/dist/chunk-R3SYH7RG.js.map +0 -1
  436. /package/dist/{chunk-6QU7OVFA.js.map → chunk-2ZMPAD6C.js.map} +0 -0
  437. /package/dist/{chunk-OBEJUAN6.js.map → chunk-2ZWUTZHE.js.map} +0 -0
  438. /package/dist/{chunk-U4LHV5DS.js.map → chunk-36SY7TID.js.map} +0 -0
  439. /package/dist/{chunk-IHMFEPIT.js.map → chunk-3BZBNDRP.js.map} +0 -0
  440. /package/dist/{chunk-5AWXGBSH.js.map → chunk-3DJ4KY3U.js.map} +0 -0
  441. /package/dist/{chunk-LR2CU7HK.js.map → chunk-3ZR5PMKB.js.map} +0 -0
  442. /package/dist/{chunk-QDTGDYMM.js.map → chunk-47YSHR3H.js.map} +0 -0
  443. /package/dist/{chunk-2HXVFC4B.js.map → chunk-4B2E4OCZ.js.map} +0 -0
  444. /package/dist/{chunk-3B7W334A.js.map → chunk-4C4D6T5M.js.map} +0 -0
  445. /package/dist/{chunk-YWB7HLL7.js.map → chunk-4NSCLIES.js.map} +0 -0
  446. /package/dist/{chunk-UPEMEBWH.js.map → chunk-55BM2IU2.js.map} +0 -0
  447. /package/dist/{chunk-XMZ5LXL4.js.map → chunk-5AJQUJ5C.js.map} +0 -0
  448. /package/dist/{chunk-5V5J7APL.js.map → chunk-5C5W52O2.js.map} +0 -0
  449. /package/dist/{chunk-FDPONOOT.js.map → chunk-5MXQ5CP7.js.map} +0 -0
  450. /package/dist/{chunk-XZ23AFOP.js.map → chunk-64BKIIJC.js.map} +0 -0
  451. /package/dist/{chunk-NBMF7SIS.js.map → chunk-6HTZBBTC.js.map} +0 -0
  452. /package/dist/{chunk-5RC32MZH.js.map → chunk-72H7HUTH.js.map} +0 -0
  453. /package/dist/{chunk-URVAZW44.js.map → chunk-7KV7H2TW.js.map} +0 -0
  454. /package/dist/{chunk-VFF3AN4Y.js.map → chunk-7Z2RAGOA.js.map} +0 -0
  455. /package/dist/{chunk-LXW3GNF7.js.map → chunk-7ZJLR6RP.js.map} +0 -0
  456. /package/dist/{chunk-IGP5E4FC.js.map → chunk-A3TT32GE.js.map} +0 -0
  457. /package/dist/{chunk-LVRULYU4.js.map → chunk-A4ZSNEZD.js.map} +0 -0
  458. /package/dist/{chunk-BM6NGS3A.js.map → chunk-AE6LFFME.js.map} +0 -0
  459. /package/dist/{chunk-KTH3GWAL.js.map → chunk-AR5PJ5ZR.js.map} +0 -0
  460. /package/dist/{chunk-RNC4M6SG.js.map → chunk-B3DANITU.js.map} +0 -0
  461. /package/dist/{chunk-MGAXCPT7.js.map → chunk-B7FAQKHH.js.map} +0 -0
  462. /package/dist/{chunk-35ZTVB35.js.map → chunk-BGXBANS2.js.map} +0 -0
  463. /package/dist/{chunk-NJAGSGPF.js.map → chunk-C4FNDXBM.js.map} +0 -0
  464. /package/dist/{chunk-VA2OONPE.js.map → chunk-C5QBV5RE.js.map} +0 -0
  465. /package/dist/{chunk-LOSXINSS.js.map → chunk-C6I5I5LA.js.map} +0 -0
  466. /package/dist/{chunk-7WXDSTNR.js.map → chunk-CDMJSXCB.js.map} +0 -0
  467. /package/dist/{chunk-A47AZPCL.js.map → chunk-CEQ3YKHR.js.map} +0 -0
  468. /package/dist/{chunk-A43B4IT7.js.map → chunk-CGY25FAG.js.map} +0 -0
  469. /package/dist/{chunk-EHGIW7GA.js.map → chunk-CMP4F537.js.map} +0 -0
  470. /package/dist/{chunk-6OFWWIEG.js.map → chunk-D5INX2EF.js.map} +0 -0
  471. /package/dist/{chunk-HDS64Z5L.js.map → chunk-DIL73NE3.js.map} +0 -0
  472. /package/dist/{chunk-3EKVSKGJ.js.map → chunk-DXC3DTCV.js.map} +0 -0
  473. /package/dist/{chunk-ZNFHDBUW.js.map → chunk-EBNPVPR7.js.map} +0 -0
  474. /package/dist/{chunk-ZXBUOHCR.js.map → chunk-EHN5ZAHP.js.map} +0 -0
  475. /package/dist/{chunk-4PITSMJ3.js.map → chunk-EJ3XWNY3.js.map} +0 -0
  476. /package/dist/{chunk-4E73UAFA.js.map → chunk-F6FF4EJN.js.map} +0 -0
  477. /package/dist/{chunk-FYCCNQXQ.js.map → chunk-FC2LHNJG.js.map} +0 -0
  478. /package/dist/{chunk-6OPDRLMU.js.map → chunk-FCVHZDP7.js.map} +0 -0
  479. /package/dist/{chunk-B5QQLMEE.js.map → chunk-FG3PDWE3.js.map} +0 -0
  480. /package/dist/{chunk-EY2PGOG3.js.map → chunk-FKDI2T7X.js.map} +0 -0
  481. /package/dist/{chunk-XONGYCW3.js.map → chunk-FNRVVVXX.js.map} +0 -0
  482. /package/dist/{chunk-BLNXHETI.js.map → chunk-FWAFP76U.js.map} +0 -0
  483. /package/dist/{chunk-KUAVM54Y.js.map → chunk-FZEG2R3E.js.map} +0 -0
  484. /package/dist/{chunk-FKUP7QRJ.js.map → chunk-GTBVTLZJ.js.map} +0 -0
  485. /package/dist/{chunk-NTTSHOOK.js.map → chunk-HF6BGFUV.js.map} +0 -0
  486. /package/dist/{chunk-QNEOO22E.js.map → chunk-HND6FAMX.js.map} +0 -0
  487. /package/dist/{chunk-ECCNRCC4.js.map → chunk-HNLYRHAU.js.map} +0 -0
  488. /package/dist/{chunk-7G63B2B7.js.map → chunk-HUIYDDDL.js.map} +0 -0
  489. /package/dist/{chunk-DCI6IOJX.js.map → chunk-HUXLE3K3.js.map} +0 -0
  490. /package/dist/{chunk-J2P4YZLC.js.map → chunk-I3LBIBVN.js.map} +0 -0
  491. /package/dist/{chunk-XYACSO57.js.map → chunk-I3U52BDH.js.map} +0 -0
  492. /package/dist/{chunk-RRZUMIYG.js.map → chunk-IIY5JRNW.js.map} +0 -0
  493. /package/dist/{chunk-4GQFIJAE.js.map → chunk-IV6OYZTL.js.map} +0 -0
  494. /package/dist/{chunk-UQHWOPUY.js.map → chunk-IVEDMK5U.js.map} +0 -0
  495. /package/dist/{chunk-U26XDHMX.js.map → chunk-JQIXRCLG.js.map} +0 -0
  496. /package/dist/{chunk-WW3CD7AU.js.map → chunk-JU4KW7JN.js.map} +0 -0
  497. /package/dist/{chunk-YIVL6HWS.js.map → chunk-JVCIAEFT.js.map} +0 -0
  498. /package/dist/{chunk-DUF2VZON.js.map → chunk-K4V2ELUZ.js.map} +0 -0
  499. /package/dist/{chunk-BPXLHGWI.js.map → chunk-KK2TIWTF.js.map} +0 -0
  500. /package/dist/{chunk-NRSSSVWB.js.map → chunk-KPZFLTZ2.js.map} +0 -0
  501. /package/dist/{chunk-OYM3NHSD.js.map → chunk-KXYL3CUS.js.map} +0 -0
  502. /package/dist/{chunk-KOVHUAHG.js.map → chunk-L5O2O67Y.js.map} +0 -0
  503. /package/dist/{chunk-RM5JIUVW.js.map → chunk-LG33MONJ.js.map} +0 -0
  504. /package/dist/{chunk-YACASX6X.js.map → chunk-LLYLDZXC.js.map} +0 -0
  505. /package/dist/{chunk-RWUKMJYA.js.map → chunk-LMV225AS.js.map} +0 -0
  506. /package/dist/{chunk-533R5EKD.js.map → chunk-LVY7B5PD.js.map} +0 -0
  507. /package/dist/{chunk-OV4GQOLC.js.map → chunk-M2KNQZUL.js.map} +0 -0
  508. /package/dist/{chunk-7PS5MKVH.js.map → chunk-MIWFBH5S.js.map} +0 -0
  509. /package/dist/{chunk-XAFRTZQF.js.map → chunk-MJAIURHO.js.map} +0 -0
  510. /package/dist/{chunk-YL7VBHPZ.js.map → chunk-NXCOVGDU.js.map} +0 -0
  511. /package/dist/{chunk-WX3LWMVU.js.map → chunk-O6V65J5J.js.map} +0 -0
  512. /package/dist/{chunk-EJQYE4MY.js.map → chunk-OFFWEDKY.js.map} +0 -0
  513. /package/dist/{chunk-UXSV6RVS.js.map → chunk-OKY7ACZK.js.map} +0 -0
  514. /package/dist/{chunk-ITFDGFOT.js.map → chunk-ONXBRQJT.js.map} +0 -0
  515. /package/dist/{chunk-ULIDYFM7.js.map → chunk-OPBSVEMX.js.map} +0 -0
  516. /package/dist/{chunk-333EWYWL.js.map → chunk-PCNQ6NP2.js.map} +0 -0
  517. /package/dist/{chunk-6HGS5Z2Z.js.map → chunk-PFGQDW3H.js.map} +0 -0
  518. /package/dist/{chunk-K6YRTASS.js.map → chunk-PGKQZBLZ.js.map} +0 -0
  519. /package/dist/{chunk-57C25JYV.js.map → chunk-PQZD5W3E.js.map} +0 -0
  520. /package/dist/{chunk-5Z55AFOW.js.map → chunk-PT5P4AAU.js.map} +0 -0
  521. /package/dist/{chunk-EL3OXVOW.js.map → chunk-PUACHQRH.js.map} +0 -0
  522. /package/dist/{chunk-HRYH7XQP.js.map → chunk-QKZX5HDY.js.map} +0 -0
  523. /package/dist/{chunk-KZWC6JCI.js.map → chunk-QXXHK34V.js.map} +0 -0
  524. /package/dist/{chunk-JGS2IHER.js.map → chunk-R27VUCWR.js.map} +0 -0
  525. /package/dist/{chunk-QGX37P5L.js.map → chunk-R6CITZBB.js.map} +0 -0
  526. /package/dist/{chunk-X6J4KKZZ.js.map → chunk-RFTC5UVB.js.map} +0 -0
  527. /package/dist/{chunk-YXHHUJOZ.js.map → chunk-RHZSAWAU.js.map} +0 -0
  528. /package/dist/{chunk-LMO3QK7Q.js.map → chunk-S7YR3FYZ.js.map} +0 -0
  529. /package/dist/{chunk-GRWGNWIJ.js.map → chunk-SCCBEFVK.js.map} +0 -0
  530. /package/dist/{chunk-R7DDZIE3.js.map → chunk-SD5MGHIJ.js.map} +0 -0
  531. /package/dist/{chunk-PP7POY7C.js.map → chunk-SEGTBIR4.js.map} +0 -0
  532. /package/dist/{chunk-D3C3VVCX.js.map → chunk-SGBCLZQF.js.map} +0 -0
  533. /package/dist/{chunk-E3ES2KR6.js.map → chunk-SJHDX73F.js.map} +0 -0
  534. /package/dist/{chunk-EKY3A5LO.js.map → chunk-SLDJYJEG.js.map} +0 -0
  535. /package/dist/{chunk-KWQ6HV5Z.js.map → chunk-SQLEVIAD.js.map} +0 -0
  536. /package/dist/{chunk-T4JNXV75.js.map → chunk-SR3SC2Q3.js.map} +0 -0
  537. /package/dist/{chunk-YPLKH5H4.js.map → chunk-SSQG36MH.js.map} +0 -0
  538. /package/dist/{chunk-NQY3QNLR.js.map → chunk-U5BZXNHW.js.map} +0 -0
  539. /package/dist/{chunk-TEKBTTP2.js.map → chunk-U756JCDK.js.map} +0 -0
  540. /package/dist/{chunk-DFYPQ52O.js.map → chunk-U7CSWQAE.js.map} +0 -0
  541. /package/dist/{chunk-WCCCW4KD.js.map → chunk-U7FC5J6J.js.map} +0 -0
  542. /package/dist/{chunk-W6HCXQBH.js.map → chunk-UG2T7LMX.js.map} +0 -0
  543. /package/dist/{chunk-JNWXHPZG.js.map → chunk-UPGIQXUY.js.map} +0 -0
  544. /package/dist/{chunk-WZTFU6FJ.js.map → chunk-UUSOIPM2.js.map} +0 -0
  545. /package/dist/{chunk-7P24I5OL.js.map → chunk-UVVVKPSH.js.map} +0 -0
  546. /package/dist/{chunk-V4DDHF7S.js.map → chunk-V6U75PIG.js.map} +0 -0
  547. /package/dist/{chunk-BN4CKDFU.js.map → chunk-VAWYYETZ.js.map} +0 -0
  548. /package/dist/{chunk-DT6RNLCP.js.map → chunk-W26KFY35.js.map} +0 -0
  549. /package/dist/{chunk-OPMMD25Z.js.map → chunk-WDZ47ZTX.js.map} +0 -0
  550. /package/dist/{chunk-IZJOZJDL.js.map → chunk-WEM6XJ7Z.js.map} +0 -0
  551. /package/dist/{chunk-5HBMI2DO.js.map → chunk-WKNOKJA3.js.map} +0 -0
  552. /package/dist/{chunk-WTB4DDZP.js.map → chunk-WL2EZDSD.js.map} +0 -0
  553. /package/dist/{chunk-QTIKGWU4.js.map → chunk-XE6GYGWS.js.map} +0 -0
  554. /package/dist/{chunk-PYPNGKRD.js.map → chunk-Y3CKZ7SH.js.map} +0 -0
  555. /package/dist/{chunk-VRIAWF3A.js.map → chunk-YA2CG4YL.js.map} +0 -0
  556. /package/dist/{chunk-AXKZBRZK.js.map → chunk-YA2QGLUL.js.map} +0 -0
  557. /package/dist/{chunk-35DUHYPC.js.map → chunk-YFGFNFVW.js.map} +0 -0
  558. /package/dist/{chunk-6NKILKS6.js.map → chunk-YFKKMDJL.js.map} +0 -0
  559. /package/dist/{chunk-CQ5CH3SB.js.map → chunk-YUFDC6RW.js.map} +0 -0
  560. /package/dist/{chunk-H5UA5JW4.js.map → chunk-ZESSUMCO.js.map} +0 -0
  561. /package/dist/{chunk-N44PNGDS.js.map → chunk-ZFMM2NLA.js.map} +0 -0
  562. /package/dist/{chunk-3LWAAK3J.js.map → chunk-ZGNWDYSC.js.map} +0 -0
  563. /package/dist/{chunk-TU24Y4HN.js.map → chunk-ZSYT5H6U.js.map} +0 -0
@@ -83,6 +83,13 @@ export interface TreeProps<T = unknown> extends Omit<HTMLAttributes<HTMLDivEleme
83
83
  * the same multi-cue approach the Sidebar uses.)
84
84
  */
85
85
  surface?: "default" | "sidebar";
86
+ /**
87
+ * What a click on a row does to an expandable node. `"row"` (default): the click both
88
+ * selects the node and toggles its children. `"chevron"`: the click only selects; only
89
+ * the chevron (and ArrowLeft/ArrowRight) expands or collapses — the filter-pane
90
+ * convention, where clicking a parent value must select it without reflowing the list.
91
+ */
92
+ expandOn?: "row" | "chevron";
86
93
  /**
87
94
  * Enable windowed rendering for large trees (>50 visible rows).
88
95
  * When `true`, only the visible slice of the flattened tree is mounted in
@@ -242,6 +249,7 @@ interface VirtualFlatRowProps<T> {
242
249
  selectionMode: "single" | "multiple" | "none";
243
250
  checkboxes: boolean;
244
251
  surface: "default" | "sidebar";
252
+ expandOn: "row" | "chevron";
245
253
  onToggleExpand: (id: string) => void;
246
254
  onSelect: (id: string) => void;
247
255
  onRetry: (id: string) => void;
@@ -259,6 +267,7 @@ function VirtualFlatRow<T>({
259
267
  selectionMode,
260
268
  checkboxes,
261
269
  surface,
270
+ expandOn,
262
271
  onToggleExpand,
263
272
  onSelect,
264
273
  onRetry,
@@ -281,7 +290,7 @@ function VirtualFlatRow<T>({
281
290
  if (node.disabled) return;
282
291
  setActiveId(node.id);
283
292
  onSelect(node.id);
284
- if (expandable) onToggleExpand(node.id);
293
+ if (expandable && expandOn === "row") onToggleExpand(node.id);
285
294
  };
286
295
 
287
296
  return (
@@ -488,6 +497,7 @@ interface TreeItemProps<T> {
488
497
  onSelectionChange: (ids: Set<string>) => void;
489
498
  checkboxes: boolean;
490
499
  surface: "default" | "sidebar";
500
+ expandOn: "row" | "chevron";
491
501
  activeId: string | null;
492
502
  setActiveId: (id: string | null) => void;
493
503
  registerNodeRef: (id: string, el: HTMLElement | null) => void;
@@ -507,6 +517,7 @@ function TreeItem<T>({
507
517
  onSelectionChange,
508
518
  checkboxes,
509
519
  surface,
520
+ expandOn,
510
521
  activeId,
511
522
  setActiveId,
512
523
  registerNodeRef,
@@ -560,7 +571,7 @@ function TreeItem<T>({
560
571
  const handleRowClick = () => {
561
572
  setActiveId(node.id);
562
573
  handleSelect();
563
- if (expandable) toggleExpanded();
574
+ if (expandable && expandOn === "row") toggleExpanded();
564
575
  };
565
576
 
566
577
  const indentStyle = { paddingLeft: `${(level - 1) * 1}rem` };
@@ -695,6 +706,7 @@ function TreeItem<T>({
695
706
  onSelectionChange={onSelectionChange}
696
707
  checkboxes={checkboxes}
697
708
  surface={surface}
709
+ expandOn={expandOn}
698
710
  activeId={activeId}
699
711
  setActiveId={setActiveId}
700
712
  registerNodeRef={registerNodeRef}
@@ -806,6 +818,7 @@ export const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(
806
818
  scrollSelectionIntoView = false,
807
819
  loadChildren,
808
820
  surface = "default",
821
+ expandOn = "row",
809
822
  className,
810
823
  ...props
811
824
  },
@@ -1113,6 +1126,7 @@ export const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(
1113
1126
  onSelectionChange={setSelectedIds}
1114
1127
  checkboxes={checkboxes}
1115
1128
  surface={surface}
1129
+ expandOn={expandOn}
1116
1130
  activeId={activeId}
1117
1131
  setActiveId={setActiveId}
1118
1132
  // registerAndFlush (not raw registerNodeRef) so nodeRefsForFlush is
@@ -1191,6 +1205,7 @@ export const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(
1191
1205
  selectionMode={selectionMode}
1192
1206
  checkboxes={checkboxes}
1193
1207
  surface={surface}
1208
+ expandOn={expandOn}
1194
1209
  onToggleExpand={handleToggleExpand}
1195
1210
  onSelect={handleSelectVirtual}
1196
1211
  onRetry={() => handleExpandLazy(node)}
@@ -254,10 +254,11 @@ export const ControlsAreUntouched: Story = {
254
254
  * | utility | the gesture |
255
255
  * | --- | --- |
256
256
  * | `bg-hairline-hatch` | a faded diagonal hatch — the recessed WELL behind media (`CardMedia` default) |
257
+ * | `bg-hairline-stripes` | stripes streaming out of one corner, thinning as they fade — a hero / header ground |
257
258
  * | `hairline-stack` | two sheet edges stacked under a card (`<Card stacked>`) |
258
259
  * | `hairline-slot` | a dashed placeholder outline |
259
260
  * | `hairline-frame` | dashed rails that run past a box's corners and fade |
260
- * | `hairline-rails` | the same for a full-bleed section: rails down the content column |
261
+ * | `hairline-rails` | the same for a full-bleed section: rails down the content column, inked only near the corners (`hairline-rails-full` for whole lines) |
261
262
  * | `hairline-corners` | crop marks on the focal item |
262
263
  * | `hairline-ticks-y` / `-x` | a tick ruler along an edge |
263
264
  * | `hairline-rule` / `-y` | a dashed separator |
@@ -269,135 +270,150 @@ export const ControlsAreUntouched: Story = {
269
270
  export const Hairlines: Story = {
270
271
  parameters: { layout: "fullscreen" },
271
272
  render: () => (
272
- <div className="bg-background px-6 py-12 text-foreground">
273
- <div className="mx-auto grid max-w-5xl gap-4 md:grid-cols-3">
274
- <Card>
275
- <CardMedia data-testid="hairline-well">
276
- <div className="flex w-full max-w-56 items-center gap-3 rounded-lg border border-card-border bg-card p-3 shadow-card">
277
- <span className="flex size-9 items-center justify-center rounded-md bg-surface-muted text-muted-foreground">
278
- <FileText aria-hidden="true" className="size-4" />
279
- </span>
280
- <span className="min-w-0 flex-1 space-y-1.5">
281
- <span className="block truncate text-caption font-medium">q3-board-pack.pdf</span>
282
- <span className="block h-1 rounded-full bg-surface-muted">
283
- <span className="block h-1 w-1/3 rounded-full bg-primary" />
273
+ <div className="bg-background text-foreground">
274
+ <header
275
+ data-testid="hairline-stripes"
276
+ className="bg-surface-muted bg-hairline-stripes px-6 py-14 text-center"
277
+ >
278
+ <p className="text-title font-semibold">Corner stripes</p>
279
+ <p className="mx-auto mt-1 max-w-prose text-caption text-muted-foreground">
280
+ <code>bg-hairline-stripes</code> on an offset fill — heavy at the corner, a hairline by
281
+ the middle, then gone, so the headline sits on clean ground.
282
+ </p>
283
+ </header>
284
+ <div
285
+ data-testid="hairline-rails"
286
+ className="hairline-rails px-6 py-12 [--hairline-rail-width:66rem]"
287
+ >
288
+ <div className="mx-auto grid max-w-5xl gap-4 md:grid-cols-3">
289
+ <Card>
290
+ <CardMedia data-testid="hairline-well">
291
+ <div className="flex w-full max-w-56 items-center gap-3 rounded-lg border border-card-border bg-card p-3 shadow-card">
292
+ <span className="flex size-9 items-center justify-center rounded-md bg-surface-muted text-muted-foreground">
293
+ <FileText aria-hidden="true" className="size-4" />
284
294
  </span>
285
- </span>
286
- </div>
287
- </CardMedia>
288
- <CardHeader>
289
- <CardTitle>Hatch well</CardTitle>
290
- <CardDescription>
291
- <code>CardMedia</code> — a faded hairline hatch behind whatever the card shows.
292
- </CardDescription>
293
- </CardHeader>
294
- </Card>
295
-
296
- <Card>
297
- <CardMedia ground="none" className="items-end pb-0">
298
- <Card
299
- stacked
300
- data-testid="hairline-stack"
301
- className="w-full max-w-56 rounded-b-none border-b-0"
302
- >
303
- <CardContent className="space-y-2 p-4">
304
- <p className="text-caption font-medium">Spending limit</p>
305
- <span className="block h-2 rounded-sm bg-surface-muted">
306
- <span className="block h-2 w-2/5 rounded-sm bg-primary" />
295
+ <span className="min-w-0 flex-1 space-y-1.5">
296
+ <span className="block truncate text-caption font-medium">q3-board-pack.pdf</span>
297
+ <span className="block h-1 rounded-full bg-surface-muted">
298
+ <span className="block h-1 w-1/3 rounded-full bg-primary" />
299
+ </span>
307
300
  </span>
308
- <p className="text-meta text-muted-foreground">40% used · 60% free</p>
309
- </CardContent>
310
- </Card>
311
- </CardMedia>
312
- <CardHeader>
313
- <CardTitle>Stacked sheets</CardTitle>
314
- <CardDescription>
315
- <code>{"<Card stacked>"}</code> — two sheet edges rise behind the top edge.
316
- </CardDescription>
317
- </CardHeader>
318
- </Card>
319
-
320
- <Card>
321
- <CardMedia ground="dots">
322
- <div
323
- data-testid="hairline-corners"
324
- className="hairline-corners flex items-center gap-2 rounded-md border border-card-border bg-card px-3 py-2 shadow-card [--hairline-ink-strong:var(--primary-text)]"
325
- >
326
- <ShieldCheck aria-hidden="true" className="size-4 text-success-text" />
327
- <span className="text-caption font-medium">Verified signer</span>
328
- <PenLine aria-hidden="true" className="size-4 text-muted-foreground" />
329
- </div>
330
- </CardMedia>
331
- <CardHeader>
332
- <CardTitle>Crop corners on a dot field</CardTitle>
333
- <CardDescription>
334
- <code>hairline-corners</code> marks the focal item; re-inked here with one variable.
335
- </CardDescription>
336
- </CardHeader>
337
- </Card>
301
+ </div>
302
+ </CardMedia>
303
+ <CardHeader>
304
+ <CardTitle>Hatch well</CardTitle>
305
+ <CardDescription>
306
+ <code>CardMedia</code> — a faded hairline hatch behind whatever the card shows.
307
+ </CardDescription>
308
+ </CardHeader>
309
+ </Card>
338
310
 
339
- <Card className="md:col-span-2">
340
- <CardHeader>
341
- <CardTitle>Dashed slots</CardTitle>
342
- <CardDescription>
343
- <code>hairline-slot</code> — the empty seats next to the filled ones.
344
- </CardDescription>
345
- </CardHeader>
346
- <CardContent>
347
- <div className="grid grid-cols-6 gap-3">
348
- {[
349
- Plug,
350
- null,
351
- Workflow,
352
- null,
353
- null,
354
- ShieldCheck,
355
- null,
356
- FileText,
357
- null,
358
- PenLine,
359
- null,
360
- null,
361
- ].map((Icon, i) =>
362
- Icon ? (
363
- <span
364
- key={i}
365
- className="flex aspect-square items-center justify-center rounded-lg border border-card-border bg-card text-muted-foreground shadow-card"
366
- >
367
- <Icon aria-hidden="true" className="size-5" />
311
+ <Card>
312
+ <CardMedia ground="none" className="items-end pb-0">
313
+ <Card
314
+ stacked
315
+ data-testid="hairline-stack"
316
+ className="w-full max-w-56 rounded-b-none border-b-0"
317
+ >
318
+ <CardContent className="space-y-2 p-4">
319
+ <p className="text-caption font-medium">Spending limit</p>
320
+ <span className="block h-2 rounded-sm bg-surface-muted">
321
+ <span className="block h-2 w-2/5 rounded-sm bg-primary" />
368
322
  </span>
369
- ) : (
370
- <span
371
- key={i}
372
- data-slot-empty
373
- className="hairline-slot aspect-square rounded-lg"
374
- />
375
- ),
376
- )}
377
- </div>
378
- </CardContent>
379
- </Card>
323
+ <p className="text-meta text-muted-foreground">40% used · 60% free</p>
324
+ </CardContent>
325
+ </Card>
326
+ </CardMedia>
327
+ <CardHeader>
328
+ <CardTitle>Stacked sheets</CardTitle>
329
+ <CardDescription>
330
+ <code>{"<Card stacked>"}</code> — two sheet edges rise behind the top edge.
331
+ </CardDescription>
332
+ </CardHeader>
333
+ </Card>
380
334
 
381
- <Card>
382
- <CardHeader>
383
- <CardTitle>Ruler and rule</CardTitle>
384
- <CardDescription>
385
- <code>hairline-ticks-y</code> and <code>hairline-rule</code>.
386
- </CardDescription>
387
- </CardHeader>
388
- <CardContent className="space-y-4">
389
- <div data-testid="hairline-ticks" className="hairline-ticks-y space-y-2 ps-5">
390
- <span className="block h-4 w-11/12 rounded-sm bg-primary" />
391
- <span className="block h-4 w-7/12 rounded-sm bg-surface-muted" />
392
- <span className="block h-4 w-4/12 rounded-sm bg-surface-muted" />
393
- </div>
394
- <hr className="hairline-rule" />
395
- <p className="text-caption text-muted-foreground">Below the dashed rule.</p>
396
- </CardContent>
397
- </Card>
335
+ <Card>
336
+ <CardMedia ground="dots">
337
+ <div
338
+ data-testid="hairline-corners"
339
+ className="hairline-corners flex items-center gap-2 rounded-md border border-card-border bg-card px-3 py-2 shadow-card [--hairline-ink-strong:var(--primary-text)]"
340
+ >
341
+ <ShieldCheck aria-hidden="true" className="size-4 text-success-text" />
342
+ <span className="text-caption font-medium">Verified signer</span>
343
+ <PenLine aria-hidden="true" className="size-4 text-muted-foreground" />
344
+ </div>
345
+ </CardMedia>
346
+ <CardHeader>
347
+ <CardTitle>Crop corners on a dot field</CardTitle>
348
+ <CardDescription>
349
+ <code>hairline-corners</code> marks the focal item; re-inked here with one variable.
350
+ </CardDescription>
351
+ </CardHeader>
352
+ </Card>
353
+
354
+ <Card className="md:col-span-2">
355
+ <CardHeader>
356
+ <CardTitle>Dashed slots</CardTitle>
357
+ <CardDescription>
358
+ <code>hairline-slot</code> — the empty seats next to the filled ones.
359
+ </CardDescription>
360
+ </CardHeader>
361
+ <CardContent>
362
+ <div className="grid grid-cols-6 gap-3">
363
+ {[
364
+ Plug,
365
+ null,
366
+ Workflow,
367
+ null,
368
+ null,
369
+ ShieldCheck,
370
+ null,
371
+ FileText,
372
+ null,
373
+ PenLine,
374
+ null,
375
+ null,
376
+ ].map((Icon, i) =>
377
+ Icon ? (
378
+ <span
379
+ key={i}
380
+ className="flex aspect-square items-center justify-center rounded-lg border border-card-border bg-card text-muted-foreground shadow-card"
381
+ >
382
+ <Icon aria-hidden="true" className="size-5" />
383
+ </span>
384
+ ) : (
385
+ <span
386
+ key={i}
387
+ data-slot-empty
388
+ className="hairline-slot aspect-square rounded-lg"
389
+ />
390
+ ),
391
+ )}
392
+ </div>
393
+ </CardContent>
394
+ </Card>
395
+
396
+ <Card>
397
+ <CardHeader>
398
+ <CardTitle>Ruler and rule</CardTitle>
399
+ <CardDescription>
400
+ <code>hairline-ticks-y</code> and <code>hairline-rule</code>.
401
+ </CardDescription>
402
+ </CardHeader>
403
+ <CardContent className="space-y-4">
404
+ <div data-testid="hairline-ticks" className="hairline-ticks-y space-y-2 ps-5">
405
+ <span className="block h-4 w-11/12 rounded-sm bg-primary" />
406
+ <span className="block h-4 w-7/12 rounded-sm bg-surface-muted" />
407
+ <span className="block h-4 w-4/12 rounded-sm bg-surface-muted" />
408
+ </div>
409
+ <hr className="hairline-rule" />
410
+ <p className="text-caption text-muted-foreground">Below the dashed rule.</p>
411
+ </CardContent>
412
+ </Card>
413
+ </div>
398
414
  </div>
399
415
 
400
- <div className="mx-auto mt-16 max-w-3xl">
416
+ <div className="mx-auto max-w-3xl px-6 py-16">
401
417
  <div data-testid="hairline-frame" className="hairline-frame p-8">
402
418
  <p className="text-subtitle font-medium">Frame rails</p>
403
419
  <p className="mt-1 text-caption text-muted-foreground">
@@ -439,6 +455,20 @@ export const Hairlines: Story = {
439
455
  await expect(getComputedStyle(host).maskImage).toBe("none");
440
456
  }
441
457
 
458
+ // The corner stripes are ONE inert layer: a flat ink fill whose mask draws the stripes.
459
+ const stripes = getComputedStyle(canvas.getByTestId("hairline-stripes"), "::before");
460
+ await expect(stripes.pointerEvents).toBe("none");
461
+ await expect(stripes.backgroundImage).toBe("none");
462
+ await expect(stripes.maskImage).toContain("repeating-linear-gradient");
463
+ await expect(stripes.maskComposite).toContain("intersect");
464
+
465
+ // The section rails are corner marks: both pseudo layers are masked, so the middle of
466
+ // every run is air.
467
+ const rails = canvas.getByTestId("hairline-rails");
468
+ await expect(getComputedStyle(rails, "::before").maskImage).toContain("gradient");
469
+ await expect(getComputedStyle(rails, "::after").maskImage).toContain("gradient");
470
+ await expect(getComputedStyle(rails).maskImage).toBe("none");
471
+
442
472
  // The frame's rails overshoot the box and fade — never a hard stop.
443
473
  const frame = getComputedStyle(canvas.getByTestId("hairline-frame"), "::before");
444
474
  await expect(frame.maskImage).toContain("gradient");
package/src/index.ts CHANGED
@@ -15,6 +15,9 @@
15
15
 
16
16
  // Utilities
17
17
  export { cn } from "./lib/cn";
18
+ // Forwarded ref + a locally owned ref on one node (a measured root that is also
19
+ // the consumer's handle) — exported so siblings don't fork a callback-ref merger.
20
+ export { mergeRefs } from "./lib/merge-refs";
18
21
  // The canonical mobile-breakpoint check (Sidebar / ContextPanel Sheet fallback
19
22
  // pattern, research 09 §B.4) — exported so siblings don't fork a matchMedia hook.
20
23
  export { useIsMobile } from "./lib/use-mobile";
@@ -177,6 +180,7 @@ export * from "./components/date-range-picker";
177
180
  export * from "./components/descriptions";
178
181
  export * from "./components/dialog";
179
182
  export * from "./components/drawer";
183
+ export * from "./components/drafting-marks";
180
184
  export * from "./components/dropdown-menu";
181
185
  export * from "./components/empty-state";
182
186
  export * from "./components/error-state";
@@ -1,6 +1,19 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
1
4
  import { describe, expect, it } from "vitest";
2
5
  import { cn } from "./cn";
3
6
 
7
+ /** Every `--text-<role>` companion-key root declared by the token engine. */
8
+ function typeRolesFromThemesCss(): string[] {
9
+ const here = dirname(fileURLToPath(import.meta.url));
10
+ const css = readFileSync(join(here, "../../../tokens/src/themes.css"), "utf8");
11
+ const roles = new Set<string>();
12
+ for (const m of css.matchAll(/^\s*--text-([a-z][a-z0-9-]*?)(?:--[a-z-]+)?:/gm))
13
+ if (m[1]) roles.add(m[1]);
14
+ return [...roles].sort();
15
+ }
16
+
4
17
  describe("cn", () => {
5
18
  it("later utilities win for a genuine conflict (e.g. padding)", () => {
6
19
  expect(cn("p-2", "p-4")).toBe("p-4");
@@ -46,6 +59,22 @@ describe("cn", () => {
46
59
  }
47
60
  });
48
61
 
62
+ // 2026-09-21 new-user test: the chart roles from RM-019 were never registered,
63
+ // so `cn("text-chart-source", "text-chart-foreground-muted")` returned only the
64
+ // colour and every ChartCard source row rendered at body size. The expected
65
+ // list is read from themes.css so the next `--text-<role>` cannot drift either.
66
+ it("registers every --text-<role> the token engine declares (chart roles included)", () => {
67
+ const roles = typeRolesFromThemesCss();
68
+ expect(roles).toContain("chart-source");
69
+ expect(roles).toContain("chart-value");
70
+ for (const role of roles) {
71
+ expect(cn(`text-${role}`, "text-chart-foreground-muted"), role).toBe(
72
+ `text-${role} text-chart-foreground-muted`,
73
+ );
74
+ expect(cn(`text-${role}`, "text-caption"), role).toBe("text-caption");
75
+ }
76
+ });
77
+
49
78
  it("lets a caller's utility replace a component-seam token default", () => {
50
79
  expect(cn("shadow-card", "shadow-none")).toBe("shadow-none");
51
80
  expect(cn("shadow-popover", "shadow-lg")).toBe("shadow-lg");
package/src/lib/cn.ts CHANGED
@@ -22,6 +22,13 @@ const TEXT_ROLES = [
22
22
  "kpi",
23
23
  "kpi-sm",
24
24
  "code",
25
+ // Chart type roles (RM-019, themes.css § chart type roles). They were missing
26
+ // here from RM-019 until the 2026-09-21 new-user test: `cn("text-chart-source",
27
+ // "text-chart-foreground-muted")` dropped the role and every ChartCard source
28
+ // row rendered at body size. `cn.test.ts` now derives the expected list from
29
+ // themes.css, so a new `--text-<role>` token cannot drift from this list again.
30
+ "chart-value",
31
+ "chart-source",
25
32
  ];
26
33
 
27
34
  /**