@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.
- package/README.md +1 -1
- package/dist/{chunk-6QU7OVFA.js → chunk-2ZMPAD6C.js} +7 -7
- package/dist/{chunk-OBEJUAN6.js → chunk-2ZWUTZHE.js} +5 -5
- package/dist/{chunk-U4LHV5DS.js → chunk-36SY7TID.js} +2 -2
- package/dist/{chunk-IHMFEPIT.js → chunk-3BZBNDRP.js} +3 -3
- package/dist/{chunk-5AWXGBSH.js → chunk-3DJ4KY3U.js} +3 -3
- package/dist/{chunk-LR2CU7HK.js → chunk-3ZR5PMKB.js} +2 -2
- package/dist/{chunk-QDTGDYMM.js → chunk-47YSHR3H.js} +3 -3
- package/dist/{chunk-2HXVFC4B.js → chunk-4B2E4OCZ.js} +2 -2
- package/dist/{chunk-3B7W334A.js → chunk-4C4D6T5M.js} +3 -3
- package/dist/{chunk-YWB7HLL7.js → chunk-4NSCLIES.js} +3 -3
- package/dist/{chunk-UPEMEBWH.js → chunk-55BM2IU2.js} +5 -5
- package/dist/{chunk-XMZ5LXL4.js → chunk-5AJQUJ5C.js} +4 -4
- package/dist/{chunk-5V5J7APL.js → chunk-5C5W52O2.js} +2 -2
- package/dist/{chunk-FINAKMC6.js → chunk-5KNLME6F.js} +14 -8
- package/dist/chunk-5KNLME6F.js.map +1 -0
- package/dist/{chunk-FDPONOOT.js → chunk-5MXQ5CP7.js} +2 -2
- package/dist/{chunk-HVFYAQLK.js → chunk-5QQFXDUY.js} +8 -6
- package/dist/{chunk-HVFYAQLK.js.map → chunk-5QQFXDUY.js.map} +1 -1
- package/dist/{chunk-XZ23AFOP.js → chunk-64BKIIJC.js} +2 -2
- package/dist/{chunk-NBMF7SIS.js → chunk-6HTZBBTC.js} +2 -2
- package/dist/{chunk-5RC32MZH.js → chunk-72H7HUTH.js} +2 -2
- package/dist/{chunk-URVAZW44.js → chunk-7KV7H2TW.js} +2 -2
- package/dist/{chunk-VFF3AN4Y.js → chunk-7Z2RAGOA.js} +2 -2
- package/dist/{chunk-LXW3GNF7.js → chunk-7ZJLR6RP.js} +7 -7
- package/dist/{chunk-R3SYH7RG.js → chunk-A3JF66ZC.js} +16 -11
- package/dist/chunk-A3JF66ZC.js.map +1 -0
- package/dist/{chunk-IGP5E4FC.js → chunk-A3TT32GE.js} +5 -5
- package/dist/{chunk-LVRULYU4.js → chunk-A4ZSNEZD.js} +9 -9
- package/dist/{chunk-BM6NGS3A.js → chunk-AE6LFFME.js} +3 -3
- package/dist/{chunk-KTH3GWAL.js → chunk-AR5PJ5ZR.js} +6 -6
- package/dist/{chunk-RNC4M6SG.js → chunk-B3DANITU.js} +3 -3
- package/dist/{chunk-MGAXCPT7.js → chunk-B7FAQKHH.js} +2 -2
- package/dist/{chunk-35ZTVB35.js → chunk-BGXBANS2.js} +6 -6
- package/dist/{chunk-NJAGSGPF.js → chunk-C4FNDXBM.js} +4 -4
- package/dist/{chunk-VA2OONPE.js → chunk-C5QBV5RE.js} +2 -2
- package/dist/{chunk-LOSXINSS.js → chunk-C6I5I5LA.js} +5 -5
- package/dist/{chunk-7WXDSTNR.js → chunk-CDMJSXCB.js} +2 -2
- package/dist/{chunk-A47AZPCL.js → chunk-CEQ3YKHR.js} +2 -2
- package/dist/{chunk-A43B4IT7.js → chunk-CGY25FAG.js} +5 -5
- package/dist/{chunk-EHGIW7GA.js → chunk-CMP4F537.js} +2 -2
- package/dist/{chunk-6OFWWIEG.js → chunk-D5INX2EF.js} +3 -3
- package/dist/{chunk-HDS64Z5L.js → chunk-DIL73NE3.js} +2 -2
- package/dist/{chunk-3EKVSKGJ.js → chunk-DXC3DTCV.js} +3 -3
- package/dist/{chunk-ZNFHDBUW.js → chunk-EBNPVPR7.js} +2 -2
- package/dist/{chunk-ZXBUOHCR.js → chunk-EHN5ZAHP.js} +3 -3
- package/dist/{chunk-4PITSMJ3.js → chunk-EJ3XWNY3.js} +2 -2
- package/dist/{chunk-4E73UAFA.js → chunk-F6FF4EJN.js} +7 -7
- package/dist/{chunk-FYCCNQXQ.js → chunk-FC2LHNJG.js} +7 -7
- package/dist/{chunk-6OPDRLMU.js → chunk-FCVHZDP7.js} +8 -8
- package/dist/{chunk-B5QQLMEE.js → chunk-FG3PDWE3.js} +2 -2
- package/dist/{chunk-EY2PGOG3.js → chunk-FKDI2T7X.js} +4 -4
- package/dist/{chunk-XONGYCW3.js → chunk-FNRVVVXX.js} +3 -3
- package/dist/{chunk-BLNXHETI.js → chunk-FWAFP76U.js} +4 -4
- package/dist/{chunk-KBNWM27Q.js → chunk-FXWWDMMP.js} +9 -2
- package/dist/chunk-FXWWDMMP.js.map +1 -0
- package/dist/{chunk-KUAVM54Y.js → chunk-FZEG2R3E.js} +2 -2
- package/dist/{chunk-FKUP7QRJ.js → chunk-GTBVTLZJ.js} +2 -2
- package/dist/{chunk-NTTSHOOK.js → chunk-HF6BGFUV.js} +4 -4
- package/dist/{chunk-QNEOO22E.js → chunk-HND6FAMX.js} +2 -2
- package/dist/{chunk-ECCNRCC4.js → chunk-HNLYRHAU.js} +2 -2
- package/dist/{chunk-7G63B2B7.js → chunk-HUIYDDDL.js} +7 -7
- package/dist/{chunk-DCI6IOJX.js → chunk-HUXLE3K3.js} +4 -4
- package/dist/{chunk-HANBQNW3.js → chunk-I2C5RZ4S.js} +25 -1
- package/dist/{chunk-HANBQNW3.js.map → chunk-I2C5RZ4S.js.map} +1 -1
- package/dist/{chunk-J2P4YZLC.js → chunk-I3LBIBVN.js} +6 -6
- package/dist/{chunk-XYACSO57.js → chunk-I3U52BDH.js} +2 -2
- package/dist/{chunk-RRZUMIYG.js → chunk-IIY5JRNW.js} +3 -3
- package/dist/{chunk-4GQFIJAE.js → chunk-IV6OYZTL.js} +3 -3
- package/dist/{chunk-UQHWOPUY.js → chunk-IVEDMK5U.js} +2 -2
- package/dist/{chunk-U26XDHMX.js → chunk-JQIXRCLG.js} +5 -5
- package/dist/{chunk-WW3CD7AU.js → chunk-JU4KW7JN.js} +7 -7
- package/dist/{chunk-YIVL6HWS.js → chunk-JVCIAEFT.js} +2 -2
- package/dist/{chunk-DUF2VZON.js → chunk-K4V2ELUZ.js} +2 -2
- package/dist/{chunk-BPXLHGWI.js → chunk-KK2TIWTF.js} +2 -2
- package/dist/{chunk-NRSSSVWB.js → chunk-KPZFLTZ2.js} +2 -2
- package/dist/{chunk-OYM3NHSD.js → chunk-KXYL3CUS.js} +2 -2
- package/dist/{chunk-KOVHUAHG.js → chunk-L5O2O67Y.js} +6 -6
- package/dist/{chunk-RM5JIUVW.js → chunk-LG33MONJ.js} +2 -2
- package/dist/{chunk-YACASX6X.js → chunk-LLYLDZXC.js} +2 -2
- package/dist/{chunk-RWUKMJYA.js → chunk-LMV225AS.js} +2 -2
- package/dist/{chunk-533R5EKD.js → chunk-LVY7B5PD.js} +5 -5
- package/dist/{chunk-OV4GQOLC.js → chunk-M2KNQZUL.js} +2 -2
- package/dist/{chunk-7PS5MKVH.js → chunk-MIWFBH5S.js} +5 -5
- package/dist/{chunk-XAFRTZQF.js → chunk-MJAIURHO.js} +2 -2
- package/dist/{chunk-YL7VBHPZ.js → chunk-NXCOVGDU.js} +3 -3
- package/dist/{chunk-6TJVJPNU.js → chunk-O6AIFSTX.js} +46 -1
- package/dist/chunk-O6AIFSTX.js.map +1 -0
- package/dist/{chunk-WX3LWMVU.js → chunk-O6V65J5J.js} +2 -2
- package/dist/{chunk-EJQYE4MY.js → chunk-OFFWEDKY.js} +2 -2
- package/dist/{chunk-UXSV6RVS.js → chunk-OKY7ACZK.js} +2 -2
- package/dist/{chunk-ITFDGFOT.js → chunk-ONXBRQJT.js} +3 -3
- package/dist/{chunk-ULIDYFM7.js → chunk-OPBSVEMX.js} +2 -2
- package/dist/{chunk-333EWYWL.js → chunk-PCNQ6NP2.js} +6 -6
- package/dist/{chunk-6HGS5Z2Z.js → chunk-PFGQDW3H.js} +4 -4
- package/dist/{chunk-K6YRTASS.js → chunk-PGKQZBLZ.js} +2 -2
- package/dist/{chunk-57C25JYV.js → chunk-PQZD5W3E.js} +2 -2
- package/dist/{chunk-5Z55AFOW.js → chunk-PT5P4AAU.js} +2 -2
- package/dist/{chunk-EL3OXVOW.js → chunk-PUACHQRH.js} +2 -2
- package/dist/{chunk-HRYH7XQP.js → chunk-QKZX5HDY.js} +2 -2
- package/dist/{chunk-KZWC6JCI.js → chunk-QXXHK34V.js} +6 -6
- package/dist/{chunk-JGS2IHER.js → chunk-R27VUCWR.js} +4 -4
- package/dist/{chunk-QGX37P5L.js → chunk-R6CITZBB.js} +2 -2
- package/dist/{chunk-X6J4KKZZ.js → chunk-RFTC5UVB.js} +4 -4
- package/dist/{chunk-YXHHUJOZ.js → chunk-RHZSAWAU.js} +3 -3
- package/dist/{chunk-LMO3QK7Q.js → chunk-S7YR3FYZ.js} +3 -3
- package/dist/{chunk-GRWGNWIJ.js → chunk-SCCBEFVK.js} +6 -6
- package/dist/{chunk-R7DDZIE3.js → chunk-SD5MGHIJ.js} +4 -4
- package/dist/{chunk-PP7POY7C.js → chunk-SEGTBIR4.js} +2 -2
- package/dist/{chunk-D3C3VVCX.js → chunk-SGBCLZQF.js} +2 -2
- package/dist/{chunk-E3ES2KR6.js → chunk-SJHDX73F.js} +6 -6
- package/dist/{chunk-EKY3A5LO.js → chunk-SLDJYJEG.js} +3 -3
- package/dist/{chunk-KWQ6HV5Z.js → chunk-SQLEVIAD.js} +4 -4
- package/dist/{chunk-T4JNXV75.js → chunk-SR3SC2Q3.js} +6 -6
- package/dist/{chunk-YPLKH5H4.js → chunk-SSQG36MH.js} +6 -6
- package/dist/{chunk-NQY3QNLR.js → chunk-U5BZXNHW.js} +4 -4
- package/dist/{chunk-TEKBTTP2.js → chunk-U756JCDK.js} +2 -2
- package/dist/{chunk-DFYPQ52O.js → chunk-U7CSWQAE.js} +8 -8
- package/dist/{chunk-WCCCW4KD.js → chunk-U7FC5J6J.js} +6 -6
- package/dist/{chunk-W6HCXQBH.js → chunk-UG2T7LMX.js} +4 -4
- package/dist/{chunk-JNWXHPZG.js → chunk-UPGIQXUY.js} +2 -2
- package/dist/{chunk-WZTFU6FJ.js → chunk-UUSOIPM2.js} +2 -2
- package/dist/{chunk-7P24I5OL.js → chunk-UVVVKPSH.js} +2 -2
- package/dist/{chunk-V4DDHF7S.js → chunk-V6U75PIG.js} +3 -3
- package/dist/{chunk-BN4CKDFU.js → chunk-VAWYYETZ.js} +23 -23
- package/dist/chunk-VFS52GGI.js +2 -0
- package/dist/chunk-VFS52GGI.js.map +1 -0
- package/dist/{chunk-DT6RNLCP.js → chunk-W26KFY35.js} +2 -2
- package/dist/{chunk-OPMMD25Z.js → chunk-WDZ47ZTX.js} +5 -5
- package/dist/chunk-WEEVXQIM.js +45 -0
- package/dist/chunk-WEEVXQIM.js.map +1 -0
- package/dist/{chunk-IZJOZJDL.js → chunk-WEM6XJ7Z.js} +2 -2
- package/dist/{chunk-5HBMI2DO.js → chunk-WKNOKJA3.js} +2 -2
- package/dist/{chunk-WTB4DDZP.js → chunk-WL2EZDSD.js} +6 -6
- package/dist/{chunk-QTIKGWU4.js → chunk-XE6GYGWS.js} +4 -4
- package/dist/{chunk-PYPNGKRD.js → chunk-Y3CKZ7SH.js} +5 -5
- package/dist/{chunk-VRIAWF3A.js → chunk-YA2CG4YL.js} +2 -2
- package/dist/{chunk-AXKZBRZK.js → chunk-YA2QGLUL.js} +2 -2
- package/dist/{chunk-35DUHYPC.js → chunk-YFGFNFVW.js} +3 -3
- package/dist/{chunk-6NKILKS6.js → chunk-YFKKMDJL.js} +2 -2
- package/dist/chunk-YHVXYOL6.js +80 -0
- package/dist/chunk-YHVXYOL6.js.map +1 -0
- package/dist/{chunk-CQ5CH3SB.js → chunk-YUFDC6RW.js} +2 -2
- package/dist/{chunk-H5UA5JW4.js → chunk-ZESSUMCO.js} +3 -3
- package/dist/{chunk-N44PNGDS.js → chunk-ZFMM2NLA.js} +2 -2
- package/dist/{chunk-3LWAAK3J.js → chunk-ZGNWDYSC.js} +6 -6
- package/dist/{chunk-TU24Y4HN.js → chunk-ZSYT5H6U.js} +2 -2
- package/dist/components/accordion/accordion.js +2 -2
- package/dist/components/accordion/index.js +2 -2
- package/dist/components/advanced-group/advanced-group.js +6 -6
- package/dist/components/advanced-group/index.js +6 -6
- package/dist/components/alert/alert.js +2 -2
- package/dist/components/alert/index.js +2 -2
- package/dist/components/alert-dialog/alert-dialog.js +3 -3
- package/dist/components/alert-dialog/index.js +3 -3
- package/dist/components/ambient-field/ambient-field.js +2 -2
- package/dist/components/ambient-field/index.js +2 -2
- package/dist/components/app-shell/app-shell.js +4 -4
- package/dist/components/app-shell/index.js +4 -4
- package/dist/components/app-sidebar/app-sidebar.js +12 -12
- package/dist/components/app-sidebar/index.js +12 -12
- package/dist/components/attribution-panel/attribution-panel.js +7 -7
- package/dist/components/attribution-panel/attributions.generated.js +1 -1
- package/dist/components/attribution-panel/index.js +7 -7
- package/dist/components/avatar/avatar.js +2 -2
- package/dist/components/avatar/index.js +2 -2
- package/dist/components/badge/badge.js +2 -2
- package/dist/components/badge/index.js +2 -2
- package/dist/components/bento-grid/bento-grid.js +3 -3
- package/dist/components/bento-grid/index.js +3 -3
- package/dist/components/bounded-number/bounded-number.js +9 -9
- package/dist/components/bounded-number/index.js +9 -9
- package/dist/components/breadcrumb/breadcrumb.js +4 -4
- package/dist/components/breadcrumb/index.js +4 -4
- package/dist/components/button/button.js +2 -2
- package/dist/components/button/index.js +2 -2
- package/dist/components/button-group/button-group.js +3 -3
- package/dist/components/button-group/index.js +3 -3
- package/dist/components/calendar/calendar.js +3 -3
- package/dist/components/calendar/index.js +3 -3
- package/dist/components/card/card.js +2 -2
- package/dist/components/card/index.js +2 -2
- package/dist/components/carousel/carousel.js +5 -5
- package/dist/components/carousel/index.js +5 -5
- package/dist/components/change-review/change-review.js +10 -10
- package/dist/components/change-review/index.js +10 -10
- package/dist/components/checkbox/checkbox.js +2 -2
- package/dist/components/checkbox/index.js +2 -2
- package/dist/components/collapsible/collapsible.js +2 -2
- package/dist/components/collapsible/index.js +2 -2
- package/dist/components/collapsible-panel/index.js +2 -2
- package/dist/components/collapsible-panel/use-collapsible-panel.js +2 -2
- package/dist/components/color-picker/color-picker.js +5 -5
- package/dist/components/color-picker/index.js +5 -5
- package/dist/components/combobox/combobox.js +10 -10
- package/dist/components/combobox/index.js +10 -10
- package/dist/components/command/command.js +7 -7
- package/dist/components/command/index.js +7 -7
- package/dist/components/command-chip/command-chip.js +3 -3
- package/dist/components/command-chip/index.js +3 -3
- package/dist/components/command-trigger/command-trigger.js +3 -3
- package/dist/components/command-trigger/index.js +3 -3
- package/dist/components/confirm-dialog/confirm-dialog.js +7 -7
- package/dist/components/confirm-dialog/index.js +7 -7
- package/dist/components/context-menu/context-menu.js +2 -2
- package/dist/components/context-menu/index.js +2 -2
- package/dist/components/context-rail/context-rail.js +14 -14
- package/dist/components/context-rail/index.js +14 -14
- package/dist/components/copyable-value/copyable-value.js +5 -5
- package/dist/components/copyable-value/index.js +5 -5
- package/dist/components/date-picker/date-picker.js +7 -7
- package/dist/components/date-picker/index.js +7 -7
- package/dist/components/date-range-picker/date-range-picker.js +7 -7
- package/dist/components/date-range-picker/index.js +7 -7
- package/dist/components/descriptions/descriptions.js +2 -2
- package/dist/components/descriptions/index.js +2 -2
- package/dist/components/dialog/dialog.js +6 -6
- package/dist/components/dialog/index.js +6 -6
- package/dist/components/drafting-marks/drafting-marks.js +14 -0
- package/dist/components/drafting-marks/drafting-marks.js.map +1 -0
- package/dist/components/drafting-marks/index.js +15 -0
- package/dist/components/drafting-marks/index.js.map +1 -0
- package/dist/components/drawer/drawer.js +2 -2
- package/dist/components/drawer/index.js +2 -2
- package/dist/components/dropdown-menu/dropdown-menu.js +2 -2
- package/dist/components/dropdown-menu/index.js +2 -2
- package/dist/components/empty-state/empty-state.js +6 -6
- package/dist/components/empty-state/index.js +6 -6
- package/dist/components/error-state/error-state.js +6 -6
- package/dist/components/error-state/index.js +6 -6
- package/dist/components/expand-dialog/expand-dialog.js +7 -7
- package/dist/components/expand-dialog/index.js +7 -7
- package/dist/components/field/field.js +4 -4
- package/dist/components/field/index.js +4 -4
- package/dist/components/field-row/field-row.js +3 -3
- package/dist/components/field-row/index.js +3 -3
- package/dist/components/file-upload/file-upload.js +6 -6
- package/dist/components/file-upload/index.js +6 -6
- package/dist/components/form/form.js +3 -3
- package/dist/components/hover-card/hover-card.js +2 -2
- package/dist/components/hover-card/index.js +2 -2
- package/dist/components/icon-button/icon-button.js +4 -4
- package/dist/components/icon-button/index.js +4 -4
- package/dist/components/input/index.js +2 -2
- package/dist/components/input/input.js +2 -2
- package/dist/components/input-group/index.js +5 -5
- package/dist/components/input-group/input-group.js +5 -5
- package/dist/components/input-otp/index.js +2 -2
- package/dist/components/input-otp/input-otp.js +2 -2
- package/dist/components/install-tabs/index.js +8 -8
- package/dist/components/install-tabs/install-tabs.js +8 -8
- package/dist/components/integration-matrix/index.js +7 -7
- package/dist/components/integration-matrix/integration-matrix.js +7 -7
- package/dist/components/kbd/index.js +2 -2
- package/dist/components/kbd/kbd.js +2 -2
- package/dist/components/key-value-editor/index.js +6 -6
- package/dist/components/key-value-editor/key-value-editor.js +6 -6
- package/dist/components/keyboard-shortcuts/index.js +10 -10
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +10 -10
- package/dist/components/label/index.js +2 -2
- package/dist/components/label/label.js +2 -2
- package/dist/components/link-preview/index.js +3 -3
- package/dist/components/link-preview/link-preview.js +3 -3
- package/dist/components/list-editor/index.js +6 -6
- package/dist/components/list-editor/list-editor.js +6 -6
- package/dist/components/loading-state/index.js +6 -6
- package/dist/components/loading-state/loading-state.js +6 -6
- package/dist/components/locale-provider/index.js +2 -2
- package/dist/components/locale-provider/locale-provider.js +2 -2
- package/dist/components/locale-provider/messages.js +1 -1
- package/dist/components/match-highlight/index.js +2 -2
- package/dist/components/match-highlight/match-highlight.js +2 -2
- package/dist/components/mention-input/index.js +6 -6
- package/dist/components/mention-input/mention-input.js +6 -6
- package/dist/components/menubar/index.js +2 -2
- package/dist/components/menubar/menubar.js +2 -2
- package/dist/components/meter/index.js +2 -2
- package/dist/components/meter/meter.js +2 -2
- package/dist/components/metric-card/index.js +8 -8
- package/dist/components/metric-card/metric-card.js +8 -8
- package/dist/components/model-picker/index.js +11 -11
- package/dist/components/model-picker/model-picker.js +11 -11
- package/dist/components/nav-main/index.js +13 -13
- package/dist/components/nav-main/nav-main.js +13 -13
- package/dist/components/nav-notifications/index.js +7 -7
- package/dist/components/nav-notifications/nav-notifications.js +7 -7
- package/dist/components/nav-user/index.js +14 -14
- package/dist/components/nav-user/nav-user.js +14 -14
- package/dist/components/navigation-menu/index.js +2 -2
- package/dist/components/navigation-menu/navigation-menu.js +2 -2
- package/dist/components/number-input/index.js +8 -8
- package/dist/components/number-input/number-input.js +8 -8
- package/dist/components/page-shell/index.js +2 -2
- package/dist/components/page-shell/page-shell.js +2 -2
- package/dist/components/pagination/index.js +5 -5
- package/dist/components/pagination/pagination.js +5 -5
- package/dist/components/popover/index.js +2 -2
- package/dist/components/popover/popover.js +2 -2
- package/dist/components/progress/index.js +2 -2
- package/dist/components/progress/progress.js +2 -2
- package/dist/components/radio-group/index.js +2 -2
- package/dist/components/radio-group/radio-group.js +2 -2
- package/dist/components/rating/index.js +2 -2
- package/dist/components/rating/rating.js +2 -2
- package/dist/components/resizable/index.js +2 -2
- package/dist/components/resizable/resizable.js +2 -2
- package/dist/components/reveal/index.js +2 -2
- package/dist/components/reveal/reveal.js +2 -2
- package/dist/components/revision-timeline/index.js +4 -4
- package/dist/components/revision-timeline/revision-timeline.js +4 -4
- package/dist/components/schema-form/index.js +29 -29
- package/dist/components/schema-form/schema-form.js +25 -25
- package/dist/components/scroll-area/index.js +2 -2
- package/dist/components/scroll-area/scroll-area.js +2 -2
- package/dist/components/section-header/index.js +2 -2
- package/dist/components/section-header/section-header.js +2 -2
- package/dist/components/segmented-field/index.js +5 -5
- package/dist/components/segmented-field/segmented-field.js +5 -5
- package/dist/components/select/index.js +2 -2
- package/dist/components/select/select.js +2 -2
- package/dist/components/separator/index.js +2 -2
- package/dist/components/separator/separator.js +2 -2
- package/dist/components/sheet/index.js +4 -4
- package/dist/components/sheet/sheet.js +4 -4
- package/dist/components/side-dock/index.js +6 -6
- package/dist/components/side-dock/side-dock.js +6 -6
- package/dist/components/sidebar/index.js +11 -11
- package/dist/components/sidebar/sidebar.js +11 -11
- package/dist/components/skeleton/index.js +2 -2
- package/dist/components/skeleton/skeleton.js +2 -2
- package/dist/components/skip-link/index.js +2 -2
- package/dist/components/skip-link/skip-link.js +2 -2
- package/dist/components/slider/index.js +2 -2
- package/dist/components/slider/slider.js +2 -2
- package/dist/components/slider-number/index.js +10 -10
- package/dist/components/slider-number/slider-number.js +10 -10
- package/dist/components/sonner/index.js +2 -2
- package/dist/components/sonner/sonner.js +2 -2
- package/dist/components/spec-playground/index.js +6 -6
- package/dist/components/spec-playground/spec-playground.js +6 -6
- package/dist/components/spinner/index.js +4 -4
- package/dist/components/spinner/spinner.js +4 -4
- package/dist/components/split-panel/index.js +2 -2
- package/dist/components/split-panel/split-panel.js +2 -2
- package/dist/components/state-panel/index.js +5 -5
- package/dist/components/state-panel/state-panel.js +5 -5
- package/dist/components/status-badge/index.js +3 -3
- package/dist/components/status-badge/status-badge.js +3 -3
- package/dist/components/surface-tour/index.js +8 -8
- package/dist/components/surface-tour/surface-tour.js +8 -8
- package/dist/components/switch/index.js +2 -2
- package/dist/components/switch/switch.js +2 -2
- package/dist/components/table/index.js +4 -4
- package/dist/components/table/table.js +4 -4
- package/dist/components/tabs/index.js +2 -2
- package/dist/components/tabs/tabs.js +2 -2
- package/dist/components/tag-input/index.js +7 -7
- package/dist/components/tag-input/tag-input.js +7 -7
- package/dist/components/team-switcher/index.js +13 -13
- package/dist/components/team-switcher/team-switcher.js +13 -13
- package/dist/components/textarea/index.js +2 -2
- package/dist/components/textarea/textarea.js +2 -2
- package/dist/components/theme-family-switch/index.js +5 -5
- package/dist/components/theme-family-switch/theme-family-switch.js +5 -5
- package/dist/components/theme-switcher/index.js +7 -7
- package/dist/components/theme-switcher/theme-switcher.js +7 -7
- package/dist/components/timeline/index.js +4 -4
- package/dist/components/timeline/timeline.js +4 -4
- package/dist/components/toggle/index.js +2 -2
- package/dist/components/toggle/toggle.js +2 -2
- package/dist/components/toggle-group/index.js +3 -3
- package/dist/components/toggle-group/toggle-group.js +3 -3
- package/dist/components/token-spotlight/index.js +2 -2
- package/dist/components/token-spotlight/token-spotlight.js +2 -2
- package/dist/components/toolbar/index.js +4 -4
- package/dist/components/toolbar/toolbar.js +4 -4
- package/dist/components/tooltip/index.js +2 -2
- package/dist/components/tooltip/tooltip.js +2 -2
- package/dist/components/top-nav/index.js +2 -2
- package/dist/components/top-nav/top-nav.js +2 -2
- package/dist/components/transfer/index.js +10 -10
- package/dist/components/transfer/transfer.js +10 -10
- package/dist/components/tree/index.js +7 -7
- package/dist/components/tree/tree.js +7 -7
- package/dist/components/tree-select/index.js +11 -11
- package/dist/components/tree-select/tree-select.js +11 -11
- package/dist/components/typography/index.js +3 -3
- package/dist/components/typography/prose.js +3 -3
- package/dist/components/typography/typography.js +2 -2
- package/dist/components/view-toolbar/index.js +8 -8
- package/dist/components/view-toolbar/view-toolbar.js +8 -8
- package/dist/components/virtual-select/index.js +8 -8
- package/dist/components/virtual-select/virtual-select.js +8 -8
- package/dist/components/wizard/index.js +3 -3
- package/dist/components/wizard/wizard.js +3 -3
- package/dist/components/workspace-picker/index.js +13 -13
- package/dist/components/workspace-picker/workspace-picker.js +13 -13
- package/dist/form.js +3 -3
- package/dist/illustrations/empty-list-illustration.js +3 -3
- package/dist/illustrations/error-illustration.js +3 -3
- package/dist/illustrations/first-run-illustration.js +3 -3
- package/dist/illustrations/illustration-base.js +2 -2
- package/dist/illustrations/index.js +11 -11
- package/dist/illustrations/no-access-illustration.js +3 -3
- package/dist/illustrations/no-results-illustration.js +3 -3
- package/dist/illustrations/offline-illustration.js +3 -3
- package/dist/illustrations/success-illustration.js +3 -3
- package/dist/index.d.ts +60 -5
- package/dist/index.js +229 -217
- package/dist/lib/cn.js +8 -1
- package/dist/lib/cn.js.map +1 -1
- package/dist/lib/streamdown-translations.js +3 -3
- package/package.json +4 -4
- package/src/components/attribution-panel/attributions.generated.ts +25 -1
- package/src/components/drafting-marks/drafting-marks.stories.tsx +88 -0
- package/src/components/drafting-marks/drafting-marks.test.tsx +55 -0
- package/src/components/drafting-marks/drafting-marks.tsx +120 -0
- package/src/components/drafting-marks/index.ts +7 -0
- package/src/components/locale-provider/messages.ts +47 -0
- package/src/components/section-header/section-header.stories.tsx +23 -0
- package/src/components/section-header/section-header.tsx +26 -6
- package/src/components/sidebar/sidebar.tsx +6 -1
- package/src/components/toolbar/toolbar.tsx +4 -2
- package/src/components/tree/tree.stories.tsx +28 -0
- package/src/components/tree/tree.tsx +17 -2
- package/src/decoration.stories.tsx +153 -123
- package/src/index.ts +4 -0
- package/src/lib/cn.test.ts +29 -0
- package/src/lib/cn.ts +7 -0
- package/dist/chunk-6TJVJPNU.js.map +0 -1
- package/dist/chunk-FINAKMC6.js.map +0 -1
- package/dist/chunk-KBNWM27Q.js.map +0 -1
- package/dist/chunk-OZTM6PYF.js +0 -30
- package/dist/chunk-OZTM6PYF.js.map +0 -1
- package/dist/chunk-R3SYH7RG.js.map +0 -1
- /package/dist/{chunk-6QU7OVFA.js.map → chunk-2ZMPAD6C.js.map} +0 -0
- /package/dist/{chunk-OBEJUAN6.js.map → chunk-2ZWUTZHE.js.map} +0 -0
- /package/dist/{chunk-U4LHV5DS.js.map → chunk-36SY7TID.js.map} +0 -0
- /package/dist/{chunk-IHMFEPIT.js.map → chunk-3BZBNDRP.js.map} +0 -0
- /package/dist/{chunk-5AWXGBSH.js.map → chunk-3DJ4KY3U.js.map} +0 -0
- /package/dist/{chunk-LR2CU7HK.js.map → chunk-3ZR5PMKB.js.map} +0 -0
- /package/dist/{chunk-QDTGDYMM.js.map → chunk-47YSHR3H.js.map} +0 -0
- /package/dist/{chunk-2HXVFC4B.js.map → chunk-4B2E4OCZ.js.map} +0 -0
- /package/dist/{chunk-3B7W334A.js.map → chunk-4C4D6T5M.js.map} +0 -0
- /package/dist/{chunk-YWB7HLL7.js.map → chunk-4NSCLIES.js.map} +0 -0
- /package/dist/{chunk-UPEMEBWH.js.map → chunk-55BM2IU2.js.map} +0 -0
- /package/dist/{chunk-XMZ5LXL4.js.map → chunk-5AJQUJ5C.js.map} +0 -0
- /package/dist/{chunk-5V5J7APL.js.map → chunk-5C5W52O2.js.map} +0 -0
- /package/dist/{chunk-FDPONOOT.js.map → chunk-5MXQ5CP7.js.map} +0 -0
- /package/dist/{chunk-XZ23AFOP.js.map → chunk-64BKIIJC.js.map} +0 -0
- /package/dist/{chunk-NBMF7SIS.js.map → chunk-6HTZBBTC.js.map} +0 -0
- /package/dist/{chunk-5RC32MZH.js.map → chunk-72H7HUTH.js.map} +0 -0
- /package/dist/{chunk-URVAZW44.js.map → chunk-7KV7H2TW.js.map} +0 -0
- /package/dist/{chunk-VFF3AN4Y.js.map → chunk-7Z2RAGOA.js.map} +0 -0
- /package/dist/{chunk-LXW3GNF7.js.map → chunk-7ZJLR6RP.js.map} +0 -0
- /package/dist/{chunk-IGP5E4FC.js.map → chunk-A3TT32GE.js.map} +0 -0
- /package/dist/{chunk-LVRULYU4.js.map → chunk-A4ZSNEZD.js.map} +0 -0
- /package/dist/{chunk-BM6NGS3A.js.map → chunk-AE6LFFME.js.map} +0 -0
- /package/dist/{chunk-KTH3GWAL.js.map → chunk-AR5PJ5ZR.js.map} +0 -0
- /package/dist/{chunk-RNC4M6SG.js.map → chunk-B3DANITU.js.map} +0 -0
- /package/dist/{chunk-MGAXCPT7.js.map → chunk-B7FAQKHH.js.map} +0 -0
- /package/dist/{chunk-35ZTVB35.js.map → chunk-BGXBANS2.js.map} +0 -0
- /package/dist/{chunk-NJAGSGPF.js.map → chunk-C4FNDXBM.js.map} +0 -0
- /package/dist/{chunk-VA2OONPE.js.map → chunk-C5QBV5RE.js.map} +0 -0
- /package/dist/{chunk-LOSXINSS.js.map → chunk-C6I5I5LA.js.map} +0 -0
- /package/dist/{chunk-7WXDSTNR.js.map → chunk-CDMJSXCB.js.map} +0 -0
- /package/dist/{chunk-A47AZPCL.js.map → chunk-CEQ3YKHR.js.map} +0 -0
- /package/dist/{chunk-A43B4IT7.js.map → chunk-CGY25FAG.js.map} +0 -0
- /package/dist/{chunk-EHGIW7GA.js.map → chunk-CMP4F537.js.map} +0 -0
- /package/dist/{chunk-6OFWWIEG.js.map → chunk-D5INX2EF.js.map} +0 -0
- /package/dist/{chunk-HDS64Z5L.js.map → chunk-DIL73NE3.js.map} +0 -0
- /package/dist/{chunk-3EKVSKGJ.js.map → chunk-DXC3DTCV.js.map} +0 -0
- /package/dist/{chunk-ZNFHDBUW.js.map → chunk-EBNPVPR7.js.map} +0 -0
- /package/dist/{chunk-ZXBUOHCR.js.map → chunk-EHN5ZAHP.js.map} +0 -0
- /package/dist/{chunk-4PITSMJ3.js.map → chunk-EJ3XWNY3.js.map} +0 -0
- /package/dist/{chunk-4E73UAFA.js.map → chunk-F6FF4EJN.js.map} +0 -0
- /package/dist/{chunk-FYCCNQXQ.js.map → chunk-FC2LHNJG.js.map} +0 -0
- /package/dist/{chunk-6OPDRLMU.js.map → chunk-FCVHZDP7.js.map} +0 -0
- /package/dist/{chunk-B5QQLMEE.js.map → chunk-FG3PDWE3.js.map} +0 -0
- /package/dist/{chunk-EY2PGOG3.js.map → chunk-FKDI2T7X.js.map} +0 -0
- /package/dist/{chunk-XONGYCW3.js.map → chunk-FNRVVVXX.js.map} +0 -0
- /package/dist/{chunk-BLNXHETI.js.map → chunk-FWAFP76U.js.map} +0 -0
- /package/dist/{chunk-KUAVM54Y.js.map → chunk-FZEG2R3E.js.map} +0 -0
- /package/dist/{chunk-FKUP7QRJ.js.map → chunk-GTBVTLZJ.js.map} +0 -0
- /package/dist/{chunk-NTTSHOOK.js.map → chunk-HF6BGFUV.js.map} +0 -0
- /package/dist/{chunk-QNEOO22E.js.map → chunk-HND6FAMX.js.map} +0 -0
- /package/dist/{chunk-ECCNRCC4.js.map → chunk-HNLYRHAU.js.map} +0 -0
- /package/dist/{chunk-7G63B2B7.js.map → chunk-HUIYDDDL.js.map} +0 -0
- /package/dist/{chunk-DCI6IOJX.js.map → chunk-HUXLE3K3.js.map} +0 -0
- /package/dist/{chunk-J2P4YZLC.js.map → chunk-I3LBIBVN.js.map} +0 -0
- /package/dist/{chunk-XYACSO57.js.map → chunk-I3U52BDH.js.map} +0 -0
- /package/dist/{chunk-RRZUMIYG.js.map → chunk-IIY5JRNW.js.map} +0 -0
- /package/dist/{chunk-4GQFIJAE.js.map → chunk-IV6OYZTL.js.map} +0 -0
- /package/dist/{chunk-UQHWOPUY.js.map → chunk-IVEDMK5U.js.map} +0 -0
- /package/dist/{chunk-U26XDHMX.js.map → chunk-JQIXRCLG.js.map} +0 -0
- /package/dist/{chunk-WW3CD7AU.js.map → chunk-JU4KW7JN.js.map} +0 -0
- /package/dist/{chunk-YIVL6HWS.js.map → chunk-JVCIAEFT.js.map} +0 -0
- /package/dist/{chunk-DUF2VZON.js.map → chunk-K4V2ELUZ.js.map} +0 -0
- /package/dist/{chunk-BPXLHGWI.js.map → chunk-KK2TIWTF.js.map} +0 -0
- /package/dist/{chunk-NRSSSVWB.js.map → chunk-KPZFLTZ2.js.map} +0 -0
- /package/dist/{chunk-OYM3NHSD.js.map → chunk-KXYL3CUS.js.map} +0 -0
- /package/dist/{chunk-KOVHUAHG.js.map → chunk-L5O2O67Y.js.map} +0 -0
- /package/dist/{chunk-RM5JIUVW.js.map → chunk-LG33MONJ.js.map} +0 -0
- /package/dist/{chunk-YACASX6X.js.map → chunk-LLYLDZXC.js.map} +0 -0
- /package/dist/{chunk-RWUKMJYA.js.map → chunk-LMV225AS.js.map} +0 -0
- /package/dist/{chunk-533R5EKD.js.map → chunk-LVY7B5PD.js.map} +0 -0
- /package/dist/{chunk-OV4GQOLC.js.map → chunk-M2KNQZUL.js.map} +0 -0
- /package/dist/{chunk-7PS5MKVH.js.map → chunk-MIWFBH5S.js.map} +0 -0
- /package/dist/{chunk-XAFRTZQF.js.map → chunk-MJAIURHO.js.map} +0 -0
- /package/dist/{chunk-YL7VBHPZ.js.map → chunk-NXCOVGDU.js.map} +0 -0
- /package/dist/{chunk-WX3LWMVU.js.map → chunk-O6V65J5J.js.map} +0 -0
- /package/dist/{chunk-EJQYE4MY.js.map → chunk-OFFWEDKY.js.map} +0 -0
- /package/dist/{chunk-UXSV6RVS.js.map → chunk-OKY7ACZK.js.map} +0 -0
- /package/dist/{chunk-ITFDGFOT.js.map → chunk-ONXBRQJT.js.map} +0 -0
- /package/dist/{chunk-ULIDYFM7.js.map → chunk-OPBSVEMX.js.map} +0 -0
- /package/dist/{chunk-333EWYWL.js.map → chunk-PCNQ6NP2.js.map} +0 -0
- /package/dist/{chunk-6HGS5Z2Z.js.map → chunk-PFGQDW3H.js.map} +0 -0
- /package/dist/{chunk-K6YRTASS.js.map → chunk-PGKQZBLZ.js.map} +0 -0
- /package/dist/{chunk-57C25JYV.js.map → chunk-PQZD5W3E.js.map} +0 -0
- /package/dist/{chunk-5Z55AFOW.js.map → chunk-PT5P4AAU.js.map} +0 -0
- /package/dist/{chunk-EL3OXVOW.js.map → chunk-PUACHQRH.js.map} +0 -0
- /package/dist/{chunk-HRYH7XQP.js.map → chunk-QKZX5HDY.js.map} +0 -0
- /package/dist/{chunk-KZWC6JCI.js.map → chunk-QXXHK34V.js.map} +0 -0
- /package/dist/{chunk-JGS2IHER.js.map → chunk-R27VUCWR.js.map} +0 -0
- /package/dist/{chunk-QGX37P5L.js.map → chunk-R6CITZBB.js.map} +0 -0
- /package/dist/{chunk-X6J4KKZZ.js.map → chunk-RFTC5UVB.js.map} +0 -0
- /package/dist/{chunk-YXHHUJOZ.js.map → chunk-RHZSAWAU.js.map} +0 -0
- /package/dist/{chunk-LMO3QK7Q.js.map → chunk-S7YR3FYZ.js.map} +0 -0
- /package/dist/{chunk-GRWGNWIJ.js.map → chunk-SCCBEFVK.js.map} +0 -0
- /package/dist/{chunk-R7DDZIE3.js.map → chunk-SD5MGHIJ.js.map} +0 -0
- /package/dist/{chunk-PP7POY7C.js.map → chunk-SEGTBIR4.js.map} +0 -0
- /package/dist/{chunk-D3C3VVCX.js.map → chunk-SGBCLZQF.js.map} +0 -0
- /package/dist/{chunk-E3ES2KR6.js.map → chunk-SJHDX73F.js.map} +0 -0
- /package/dist/{chunk-EKY3A5LO.js.map → chunk-SLDJYJEG.js.map} +0 -0
- /package/dist/{chunk-KWQ6HV5Z.js.map → chunk-SQLEVIAD.js.map} +0 -0
- /package/dist/{chunk-T4JNXV75.js.map → chunk-SR3SC2Q3.js.map} +0 -0
- /package/dist/{chunk-YPLKH5H4.js.map → chunk-SSQG36MH.js.map} +0 -0
- /package/dist/{chunk-NQY3QNLR.js.map → chunk-U5BZXNHW.js.map} +0 -0
- /package/dist/{chunk-TEKBTTP2.js.map → chunk-U756JCDK.js.map} +0 -0
- /package/dist/{chunk-DFYPQ52O.js.map → chunk-U7CSWQAE.js.map} +0 -0
- /package/dist/{chunk-WCCCW4KD.js.map → chunk-U7FC5J6J.js.map} +0 -0
- /package/dist/{chunk-W6HCXQBH.js.map → chunk-UG2T7LMX.js.map} +0 -0
- /package/dist/{chunk-JNWXHPZG.js.map → chunk-UPGIQXUY.js.map} +0 -0
- /package/dist/{chunk-WZTFU6FJ.js.map → chunk-UUSOIPM2.js.map} +0 -0
- /package/dist/{chunk-7P24I5OL.js.map → chunk-UVVVKPSH.js.map} +0 -0
- /package/dist/{chunk-V4DDHF7S.js.map → chunk-V6U75PIG.js.map} +0 -0
- /package/dist/{chunk-BN4CKDFU.js.map → chunk-VAWYYETZ.js.map} +0 -0
- /package/dist/{chunk-DT6RNLCP.js.map → chunk-W26KFY35.js.map} +0 -0
- /package/dist/{chunk-OPMMD25Z.js.map → chunk-WDZ47ZTX.js.map} +0 -0
- /package/dist/{chunk-IZJOZJDL.js.map → chunk-WEM6XJ7Z.js.map} +0 -0
- /package/dist/{chunk-5HBMI2DO.js.map → chunk-WKNOKJA3.js.map} +0 -0
- /package/dist/{chunk-WTB4DDZP.js.map → chunk-WL2EZDSD.js.map} +0 -0
- /package/dist/{chunk-QTIKGWU4.js.map → chunk-XE6GYGWS.js.map} +0 -0
- /package/dist/{chunk-PYPNGKRD.js.map → chunk-Y3CKZ7SH.js.map} +0 -0
- /package/dist/{chunk-VRIAWF3A.js.map → chunk-YA2CG4YL.js.map} +0 -0
- /package/dist/{chunk-AXKZBRZK.js.map → chunk-YA2QGLUL.js.map} +0 -0
- /package/dist/{chunk-35DUHYPC.js.map → chunk-YFGFNFVW.js.map} +0 -0
- /package/dist/{chunk-6NKILKS6.js.map → chunk-YFKKMDJL.js.map} +0 -0
- /package/dist/{chunk-CQ5CH3SB.js.map → chunk-YUFDC6RW.js.map} +0 -0
- /package/dist/{chunk-H5UA5JW4.js.map → chunk-ZESSUMCO.js.map} +0 -0
- /package/dist/{chunk-N44PNGDS.js.map → chunk-ZFMM2NLA.js.map} +0 -0
- /package/dist/{chunk-3LWAAK3J.js.map → chunk-ZGNWDYSC.js.map} +0 -0
- /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
|
|
273
|
-
<
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
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
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
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
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
|
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";
|
package/src/lib/cn.test.ts
CHANGED
|
@@ -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
|
/**
|