@elabs-ai/components-ui 4.2.0 → 5.0.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 +2 -1
- package/dist/chunk-22Z735L6.js +18 -0
- package/dist/chunk-22Z735L6.js.map +1 -0
- package/dist/chunk-23E62DNM.js +2 -0
- package/dist/chunk-23E62DNM.js.map +1 -0
- package/dist/chunk-2AABRSIN.js +2 -0
- package/dist/chunk-2AABRSIN.js.map +1 -0
- package/dist/chunk-2HXVFC4B.js +44 -0
- package/dist/chunk-2HXVFC4B.js.map +1 -0
- package/dist/chunk-2SBYBN45.js +2 -0
- package/dist/chunk-2SBYBN45.js.map +1 -0
- package/dist/chunk-333EWYWL.js +385 -0
- package/dist/chunk-333EWYWL.js.map +1 -0
- package/dist/chunk-35DUHYPC.js +59 -0
- package/dist/chunk-35DUHYPC.js.map +1 -0
- package/dist/chunk-35ZTVB35.js +76 -0
- package/dist/chunk-35ZTVB35.js.map +1 -0
- package/dist/chunk-36VULFFV.js +2 -0
- package/dist/chunk-36VULFFV.js.map +1 -0
- package/dist/chunk-3B7W334A.js +229 -0
- package/dist/chunk-3B7W334A.js.map +1 -0
- package/dist/chunk-3EKVSKGJ.js +256 -0
- package/dist/chunk-3EKVSKGJ.js.map +1 -0
- package/dist/chunk-3JAEQNCB.js +60 -0
- package/dist/chunk-3JAEQNCB.js.map +1 -0
- package/dist/chunk-3LWAAK3J.js +140 -0
- package/dist/chunk-3LWAAK3J.js.map +1 -0
- package/dist/chunk-3OSGTUN2.js +2 -0
- package/dist/chunk-3OSGTUN2.js.map +1 -0
- package/dist/chunk-3P7SRCDB.js +23 -0
- package/dist/chunk-3P7SRCDB.js.map +1 -0
- package/dist/chunk-45ICJ3EV.js +2 -0
- package/dist/chunk-45ICJ3EV.js.map +1 -0
- package/dist/chunk-4ACT7RLU.js +2 -0
- package/dist/chunk-4ACT7RLU.js.map +1 -0
- package/dist/chunk-4E73UAFA.js +296 -0
- package/dist/chunk-4E73UAFA.js.map +1 -0
- package/dist/chunk-4GQFIJAE.js +197 -0
- package/dist/chunk-4GQFIJAE.js.map +1 -0
- package/dist/chunk-4HTVJZVG.js +2 -0
- package/dist/chunk-4HTVJZVG.js.map +1 -0
- package/dist/chunk-4KDA5MDC.js +2 -0
- package/dist/chunk-4KDA5MDC.js.map +1 -0
- package/dist/chunk-4PITSMJ3.js +52 -0
- package/dist/chunk-4PITSMJ3.js.map +1 -0
- package/dist/chunk-4PXDZR2W.js +2 -0
- package/dist/chunk-4PXDZR2W.js.map +1 -0
- package/dist/chunk-4UWOADYM.js +2 -0
- package/dist/chunk-4UWOADYM.js.map +1 -0
- package/dist/chunk-4W3MVVKN.js +66 -0
- package/dist/chunk-4W3MVVKN.js.map +1 -0
- package/dist/chunk-4YOFSGHD.js +2 -0
- package/dist/chunk-4YOFSGHD.js.map +1 -0
- package/dist/chunk-533R5EKD.js +87 -0
- package/dist/chunk-533R5EKD.js.map +1 -0
- package/dist/chunk-545HI223.js +2 -0
- package/dist/chunk-545HI223.js.map +1 -0
- package/dist/chunk-57C25JYV.js +170 -0
- package/dist/chunk-57C25JYV.js.map +1 -0
- package/dist/chunk-5AWXGBSH.js +82 -0
- package/dist/chunk-5AWXGBSH.js.map +1 -0
- package/dist/chunk-5G2DDMHR.js +2 -0
- package/dist/chunk-5G2DDMHR.js.map +1 -0
- package/dist/chunk-5HBMI2DO.js +42 -0
- package/dist/chunk-5HBMI2DO.js.map +1 -0
- package/dist/chunk-5LCN5Q2L.js +23 -0
- package/dist/chunk-5LCN5Q2L.js.map +1 -0
- package/dist/chunk-5P4BSHIG.js +2 -0
- package/dist/chunk-5P4BSHIG.js.map +1 -0
- package/dist/chunk-5RC32MZH.js +161 -0
- package/dist/chunk-5RC32MZH.js.map +1 -0
- package/dist/chunk-5SHHIQVA.js +22 -0
- package/dist/chunk-5SHHIQVA.js.map +1 -0
- package/dist/chunk-5V5J7APL.js +27 -0
- package/dist/chunk-5V5J7APL.js.map +1 -0
- package/dist/chunk-5YZLOAKR.js +2 -0
- package/dist/chunk-5YZLOAKR.js.map +1 -0
- package/dist/chunk-5Z55AFOW.js +128 -0
- package/dist/chunk-5Z55AFOW.js.map +1 -0
- package/dist/chunk-653ZIWX6.js +2 -0
- package/dist/chunk-653ZIWX6.js.map +1 -0
- package/dist/chunk-6DHG7JVP.js +2 -0
- package/dist/chunk-6DHG7JVP.js.map +1 -0
- package/dist/chunk-6HGS5Z2Z.js +110 -0
- package/dist/chunk-6HGS5Z2Z.js.map +1 -0
- package/dist/chunk-6NKILKS6.js +35 -0
- package/dist/chunk-6NKILKS6.js.map +1 -0
- package/dist/chunk-6OFWWIEG.js +50 -0
- package/dist/chunk-6OFWWIEG.js.map +1 -0
- package/dist/chunk-6OPDRLMU.js +158 -0
- package/dist/chunk-6OPDRLMU.js.map +1 -0
- package/dist/chunk-6QU7OVFA.js +357 -0
- package/dist/chunk-6QU7OVFA.js.map +1 -0
- package/dist/chunk-6ROQKB4U.js +2 -0
- package/dist/chunk-6ROQKB4U.js.map +1 -0
- package/dist/chunk-6S43VAN7.js +2 -0
- package/dist/chunk-6S43VAN7.js.map +1 -0
- package/dist/chunk-6TJVJPNU.js +1321 -0
- package/dist/chunk-6TJVJPNU.js.map +1 -0
- package/dist/chunk-6VLJL7Q4.js +2 -0
- package/dist/chunk-6VLJL7Q4.js.map +1 -0
- package/dist/chunk-7G63B2B7.js +189 -0
- package/dist/chunk-7G63B2B7.js.map +1 -0
- package/dist/chunk-7P24I5OL.js +23 -0
- package/dist/chunk-7P24I5OL.js.map +1 -0
- package/dist/chunk-7PS5MKVH.js +97 -0
- package/dist/chunk-7PS5MKVH.js.map +1 -0
- package/dist/chunk-7WIHVGYL.js +2 -0
- package/dist/chunk-7WIHVGYL.js.map +1 -0
- package/dist/chunk-7WXDSTNR.js +62 -0
- package/dist/chunk-7WXDSTNR.js.map +1 -0
- package/dist/chunk-A43B4IT7.js +395 -0
- package/dist/chunk-A43B4IT7.js.map +1 -0
- package/dist/chunk-A47AZPCL.js +35 -0
- package/dist/chunk-A47AZPCL.js.map +1 -0
- package/dist/chunk-AA3SPDJU.js +2 -0
- package/dist/chunk-AA3SPDJU.js.map +1 -0
- package/dist/chunk-AC7X3D2M.js +2 -0
- package/dist/chunk-AC7X3D2M.js.map +1 -0
- package/dist/chunk-AE6UDP36.js +2 -0
- package/dist/chunk-AE6UDP36.js.map +1 -0
- package/dist/chunk-AFEFAGPW.js +2 -0
- package/dist/chunk-AFEFAGPW.js.map +1 -0
- package/dist/chunk-AFJCS2WV.js +95 -0
- package/dist/chunk-AFJCS2WV.js.map +1 -0
- package/dist/chunk-AQNLEP5F.js +2 -0
- package/dist/chunk-AQNLEP5F.js.map +1 -0
- package/dist/chunk-AUQVJ7KO.js +2 -0
- package/dist/chunk-AUQVJ7KO.js.map +1 -0
- package/dist/chunk-AXKZBRZK.js +32 -0
- package/dist/chunk-AXKZBRZK.js.map +1 -0
- package/dist/chunk-AZEABCK4.js +30 -0
- package/dist/chunk-AZEABCK4.js.map +1 -0
- package/dist/chunk-B23VW24W.js +2 -0
- package/dist/chunk-B23VW24W.js.map +1 -0
- package/dist/chunk-B2RSOLLO.js +2 -0
- package/dist/chunk-B2RSOLLO.js.map +1 -0
- package/dist/chunk-B5QQLMEE.js +31 -0
- package/dist/chunk-B5QQLMEE.js.map +1 -0
- package/dist/chunk-BLNXHETI.js +163 -0
- package/dist/chunk-BLNXHETI.js.map +1 -0
- package/dist/chunk-BM6NGS3A.js +201 -0
- package/dist/chunk-BM6NGS3A.js.map +1 -0
- package/dist/chunk-BN4CKDFU.js +989 -0
- package/dist/chunk-BN4CKDFU.js.map +1 -0
- package/dist/chunk-BPXLHGWI.js +54 -0
- package/dist/chunk-BPXLHGWI.js.map +1 -0
- package/dist/chunk-BTBYNKT4.js +2 -0
- package/dist/chunk-BTBYNKT4.js.map +1 -0
- package/dist/chunk-BWL7HWEF.js +325 -0
- package/dist/chunk-BWL7HWEF.js.map +1 -0
- package/dist/chunk-BZQF5QCN.js +18 -0
- package/dist/chunk-BZQF5QCN.js.map +1 -0
- package/dist/chunk-C2AQEEFB.js +2 -0
- package/dist/chunk-C2AQEEFB.js.map +1 -0
- package/dist/chunk-C753P3VJ.js +2 -0
- package/dist/chunk-C753P3VJ.js.map +1 -0
- package/dist/chunk-CDE74W6O.js +2 -0
- package/dist/chunk-CDE74W6O.js.map +1 -0
- package/dist/chunk-CEQER4CV.js +2 -0
- package/dist/chunk-CEQER4CV.js.map +1 -0
- package/dist/chunk-CQ5CH3SB.js +55 -0
- package/dist/chunk-CQ5CH3SB.js.map +1 -0
- package/dist/chunk-CRGGGHAM.js +2 -0
- package/dist/chunk-CRGGGHAM.js.map +1 -0
- package/dist/chunk-CRVB4SLG.js +2 -0
- package/dist/chunk-CRVB4SLG.js.map +1 -0
- package/dist/chunk-CT6XJIPY.js +2 -0
- package/dist/chunk-CT6XJIPY.js.map +1 -0
- package/dist/chunk-CY624JOL.js +2 -0
- package/dist/chunk-CY624JOL.js.map +1 -0
- package/dist/chunk-D3C3VVCX.js +38 -0
- package/dist/chunk-D3C3VVCX.js.map +1 -0
- package/dist/chunk-D53EN4Q6.js +2 -0
- package/dist/chunk-D53EN4Q6.js.map +1 -0
- package/dist/chunk-DCHYNTHI.js +11 -0
- package/dist/chunk-DCHYNTHI.js.map +1 -0
- package/dist/chunk-DCI6IOJX.js +236 -0
- package/dist/chunk-DCI6IOJX.js.map +1 -0
- package/dist/chunk-DFYPQ52O.js +476 -0
- package/dist/chunk-DFYPQ52O.js.map +1 -0
- package/dist/chunk-DIQJODQR.js +2 -0
- package/dist/chunk-DIQJODQR.js.map +1 -0
- package/dist/chunk-DSGTH6JW.js +2 -0
- package/dist/chunk-DSGTH6JW.js.map +1 -0
- package/dist/chunk-DT6RNLCP.js +32 -0
- package/dist/chunk-DT6RNLCP.js.map +1 -0
- package/dist/chunk-DU6ITAJL.js +2 -0
- package/dist/chunk-DU6ITAJL.js.map +1 -0
- package/dist/chunk-DUF2VZON.js +36 -0
- package/dist/chunk-DUF2VZON.js.map +1 -0
- package/dist/chunk-DXDLTYTT.js +2 -0
- package/dist/chunk-DXDLTYTT.js.map +1 -0
- package/dist/chunk-E3ES2KR6.js +55 -0
- package/dist/chunk-E3ES2KR6.js.map +1 -0
- package/dist/chunk-EAFPUZ46.js +2 -0
- package/dist/chunk-EAFPUZ46.js.map +1 -0
- package/dist/chunk-EBDOKU5K.js +2 -0
- package/dist/chunk-EBDOKU5K.js.map +1 -0
- package/dist/chunk-ECCNRCC4.js +74 -0
- package/dist/chunk-ECCNRCC4.js.map +1 -0
- package/dist/chunk-EDE73Q6Z.js +2 -0
- package/dist/chunk-EDE73Q6Z.js.map +1 -0
- package/dist/chunk-EHGIW7GA.js +190 -0
- package/dist/chunk-EHGIW7GA.js.map +1 -0
- package/dist/chunk-EJQYE4MY.js +100 -0
- package/dist/chunk-EJQYE4MY.js.map +1 -0
- package/dist/chunk-EKY3A5LO.js +133 -0
- package/dist/chunk-EKY3A5LO.js.map +1 -0
- package/dist/chunk-EL3OXVOW.js +31 -0
- package/dist/chunk-EL3OXVOW.js.map +1 -0
- package/dist/chunk-EP3U7OQ3.js +18 -0
- package/dist/chunk-EP3U7OQ3.js.map +1 -0
- package/dist/chunk-EY2PGOG3.js +246 -0
- package/dist/chunk-EY2PGOG3.js.map +1 -0
- package/dist/chunk-FAOX6A5D.js +2 -0
- package/dist/chunk-FAOX6A5D.js.map +1 -0
- package/dist/chunk-FBJ2JSRA.js +47 -0
- package/dist/chunk-FBJ2JSRA.js.map +1 -0
- package/dist/chunk-FDJ77DTR.js +2 -0
- package/dist/chunk-FDJ77DTR.js.map +1 -0
- package/dist/chunk-FDPONOOT.js +93 -0
- package/dist/chunk-FDPONOOT.js.map +1 -0
- package/dist/chunk-FHDJKH2A.js +2 -0
- package/dist/chunk-FHDJKH2A.js.map +1 -0
- package/dist/chunk-FINAKMC6.js +796 -0
- package/dist/chunk-FINAKMC6.js.map +1 -0
- package/dist/chunk-FKUP7QRJ.js +54 -0
- package/dist/chunk-FKUP7QRJ.js.map +1 -0
- package/dist/chunk-FPLZ24MK.js +2 -0
- package/dist/chunk-FPLZ24MK.js.map +1 -0
- package/dist/chunk-FRFSDZIN.js +2 -0
- package/dist/chunk-FRFSDZIN.js.map +1 -0
- package/dist/chunk-FYCCNQXQ.js +173 -0
- package/dist/chunk-FYCCNQXQ.js.map +1 -0
- package/dist/chunk-G3OTDYCD.js +53 -0
- package/dist/chunk-G3OTDYCD.js.map +1 -0
- package/dist/chunk-G72UOVKS.js +2 -0
- package/dist/chunk-G72UOVKS.js.map +1 -0
- package/dist/chunk-GAI4NEPU.js +151 -0
- package/dist/chunk-GAI4NEPU.js.map +1 -0
- package/dist/chunk-GRWGNWIJ.js +187 -0
- package/dist/chunk-GRWGNWIJ.js.map +1 -0
- package/dist/chunk-GV6GQXKX.js +176 -0
- package/dist/chunk-GV6GQXKX.js.map +1 -0
- package/dist/chunk-H5UA5JW4.js +140 -0
- package/dist/chunk-H5UA5JW4.js.map +1 -0
- package/dist/chunk-H5XSI63P.js +2 -0
- package/dist/chunk-H5XSI63P.js.map +1 -0
- package/dist/chunk-HANBQNW3.js +1498 -0
- package/dist/chunk-HANBQNW3.js.map +1 -0
- package/dist/chunk-HCU2JHPH.js +169 -0
- package/dist/chunk-HCU2JHPH.js.map +1 -0
- package/dist/chunk-HDDXP2J7.js +2 -0
- package/dist/chunk-HDDXP2J7.js.map +1 -0
- package/dist/chunk-HDS64Z5L.js +54 -0
- package/dist/chunk-HDS64Z5L.js.map +1 -0
- package/dist/chunk-HHVULJGX.js +2 -0
- package/dist/chunk-HHVULJGX.js.map +1 -0
- package/dist/chunk-HLMFRCFE.js +2 -0
- package/dist/chunk-HLMFRCFE.js.map +1 -0
- package/dist/chunk-HPUPDT4Q.js +2 -0
- package/dist/chunk-HPUPDT4Q.js.map +1 -0
- package/dist/chunk-HRYH7XQP.js +209 -0
- package/dist/chunk-HRYH7XQP.js.map +1 -0
- package/dist/chunk-HVFYAQLK.js +101 -0
- package/dist/chunk-HVFYAQLK.js.map +1 -0
- package/dist/chunk-HZPNST7D.js +2 -0
- package/dist/chunk-HZPNST7D.js.map +1 -0
- package/dist/chunk-I6O6ACCH.js +2 -0
- package/dist/chunk-I6O6ACCH.js.map +1 -0
- package/dist/chunk-IGP5E4FC.js +201 -0
- package/dist/chunk-IGP5E4FC.js.map +1 -0
- package/dist/chunk-IHMFEPIT.js +123 -0
- package/dist/chunk-IHMFEPIT.js.map +1 -0
- package/dist/chunk-IM5VJP6T.js +2 -0
- package/dist/chunk-IM5VJP6T.js.map +1 -0
- package/dist/chunk-IRUZDWJ3.js +218 -0
- package/dist/chunk-IRUZDWJ3.js.map +1 -0
- package/dist/chunk-ISWUCXEZ.js +2 -0
- package/dist/chunk-ISWUCXEZ.js.map +1 -0
- package/dist/chunk-ITFDGFOT.js +31 -0
- package/dist/chunk-ITFDGFOT.js.map +1 -0
- package/dist/chunk-IUQ474IC.js +2 -0
- package/dist/chunk-IUQ474IC.js.map +1 -0
- package/dist/chunk-IY23F2Y5.js +2 -0
- package/dist/chunk-IY23F2Y5.js.map +1 -0
- package/dist/chunk-IZJOZJDL.js +75 -0
- package/dist/chunk-IZJOZJDL.js.map +1 -0
- package/dist/chunk-J2P4YZLC.js +85 -0
- package/dist/chunk-J2P4YZLC.js.map +1 -0
- package/dist/chunk-JCRBDA66.js +2 -0
- package/dist/chunk-JCRBDA66.js.map +1 -0
- package/dist/chunk-JGS2IHER.js +140 -0
- package/dist/chunk-JGS2IHER.js.map +1 -0
- package/dist/chunk-JNWXHPZG.js +24 -0
- package/dist/chunk-JNWXHPZG.js.map +1 -0
- package/dist/chunk-JWWJ2Z5C.js +2 -0
- package/dist/chunk-JWWJ2Z5C.js.map +1 -0
- package/dist/chunk-K2GLXCTG.js +2 -0
- package/dist/chunk-K2GLXCTG.js.map +1 -0
- package/dist/chunk-K6YRTASS.js +55 -0
- package/dist/chunk-K6YRTASS.js.map +1 -0
- package/dist/chunk-KAAJL2HA.js +327 -0
- package/dist/chunk-KAAJL2HA.js.map +1 -0
- package/dist/chunk-KBNWM27Q.js +48 -0
- package/dist/chunk-KBNWM27Q.js.map +1 -0
- package/dist/chunk-KOVHUAHG.js +164 -0
- package/dist/chunk-KOVHUAHG.js.map +1 -0
- package/dist/chunk-KRVSD4OK.js +2 -0
- package/dist/chunk-KRVSD4OK.js.map +1 -0
- package/dist/chunk-KTH3GWAL.js +116 -0
- package/dist/chunk-KTH3GWAL.js.map +1 -0
- package/dist/chunk-KUAVM54Y.js +30 -0
- package/dist/chunk-KUAVM54Y.js.map +1 -0
- package/dist/chunk-KWQ6HV5Z.js +97 -0
- package/dist/chunk-KWQ6HV5Z.js.map +1 -0
- package/dist/chunk-KZWC6JCI.js +177 -0
- package/dist/chunk-KZWC6JCI.js.map +1 -0
- package/dist/chunk-L37QZALU.js +17 -0
- package/dist/chunk-L37QZALU.js.map +1 -0
- package/dist/chunk-L3SHPHLK.js +35 -0
- package/dist/chunk-L3SHPHLK.js.map +1 -0
- package/dist/chunk-L66VJIRD.js +2 -0
- package/dist/chunk-L66VJIRD.js.map +1 -0
- package/dist/chunk-LDOCY4SU.js +68 -0
- package/dist/chunk-LDOCY4SU.js.map +1 -0
- package/dist/chunk-LJGWA2XL.js +2 -0
- package/dist/chunk-LJGWA2XL.js.map +1 -0
- package/dist/chunk-LLQWLZ75.js +2 -0
- package/dist/chunk-LLQWLZ75.js.map +1 -0
- package/dist/chunk-LMO3QK7Q.js +137 -0
- package/dist/chunk-LMO3QK7Q.js.map +1 -0
- package/dist/chunk-LOSXINSS.js +100 -0
- package/dist/chunk-LOSXINSS.js.map +1 -0
- package/dist/chunk-LR2CU7HK.js +41 -0
- package/dist/chunk-LR2CU7HK.js.map +1 -0
- package/dist/chunk-LSYVAOSH.js +2 -0
- package/dist/chunk-LSYVAOSH.js.map +1 -0
- package/dist/chunk-LVRULYU4.js +400 -0
- package/dist/chunk-LVRULYU4.js.map +1 -0
- package/dist/chunk-LXW3GNF7.js +201 -0
- package/dist/chunk-LXW3GNF7.js.map +1 -0
- package/dist/chunk-LYVBDMDQ.js +2 -0
- package/dist/chunk-LYVBDMDQ.js.map +1 -0
- package/dist/chunk-M3WSUFD4.js +2 -0
- package/dist/chunk-M3WSUFD4.js.map +1 -0
- package/dist/chunk-MGAXCPT7.js +87 -0
- package/dist/chunk-MGAXCPT7.js.map +1 -0
- package/dist/chunk-MIXCXZWT.js +2 -0
- package/dist/chunk-MIXCXZWT.js.map +1 -0
- package/dist/chunk-MLGBLKUH.js +2 -0
- package/dist/chunk-MLGBLKUH.js.map +1 -0
- package/dist/chunk-MNS2VWHD.js +2 -0
- package/dist/chunk-MNS2VWHD.js.map +1 -0
- package/dist/chunk-MPMMU3QI.js +2 -0
- package/dist/chunk-MPMMU3QI.js.map +1 -0
- package/dist/chunk-MRWOHWEH.js +2 -0
- package/dist/chunk-MRWOHWEH.js.map +1 -0
- package/dist/chunk-MZDL7N52.js +2 -0
- package/dist/chunk-MZDL7N52.js.map +1 -0
- package/dist/chunk-N44PNGDS.js +169 -0
- package/dist/chunk-N44PNGDS.js.map +1 -0
- package/dist/chunk-N7PJTMRL.js +2 -0
- package/dist/chunk-N7PJTMRL.js.map +1 -0
- package/dist/chunk-NBMF7SIS.js +35 -0
- package/dist/chunk-NBMF7SIS.js.map +1 -0
- package/dist/chunk-NJAGSGPF.js +245 -0
- package/dist/chunk-NJAGSGPF.js.map +1 -0
- package/dist/chunk-NMGNXW3J.js +98 -0
- package/dist/chunk-NMGNXW3J.js.map +1 -0
- package/dist/chunk-NQY3QNLR.js +80 -0
- package/dist/chunk-NQY3QNLR.js.map +1 -0
- package/dist/chunk-NRNIUM75.js +2 -0
- package/dist/chunk-NRNIUM75.js.map +1 -0
- package/dist/chunk-NRSSSVWB.js +61 -0
- package/dist/chunk-NRSSSVWB.js.map +1 -0
- package/dist/chunk-NTTSHOOK.js +78 -0
- package/dist/chunk-NTTSHOOK.js.map +1 -0
- package/dist/chunk-O3JWMB6O.js +20 -0
- package/dist/chunk-O3JWMB6O.js.map +1 -0
- package/dist/chunk-OBEJUAN6.js +246 -0
- package/dist/chunk-OBEJUAN6.js.map +1 -0
- package/dist/chunk-OEPN373X.js +2 -0
- package/dist/chunk-OEPN373X.js.map +1 -0
- package/dist/chunk-OITCRC5D.js +2 -0
- package/dist/chunk-OITCRC5D.js.map +1 -0
- package/dist/chunk-OKV3N7QK.js +2 -0
- package/dist/chunk-OKV3N7QK.js.map +1 -0
- package/dist/chunk-ON2E7XHD.js +51 -0
- package/dist/chunk-ON2E7XHD.js.map +1 -0
- package/dist/chunk-OPMMD25Z.js +218 -0
- package/dist/chunk-OPMMD25Z.js.map +1 -0
- package/dist/chunk-OR4NVFPH.js +2 -0
- package/dist/chunk-OR4NVFPH.js.map +1 -0
- package/dist/chunk-OV4GQOLC.js +73 -0
- package/dist/chunk-OV4GQOLC.js.map +1 -0
- package/dist/chunk-OYKS7YHE.js +2 -0
- package/dist/chunk-OYKS7YHE.js.map +1 -0
- package/dist/chunk-OYM3NHSD.js +74 -0
- package/dist/chunk-OYM3NHSD.js.map +1 -0
- package/dist/chunk-OZTM6PYF.js +30 -0
- package/dist/chunk-OZTM6PYF.js.map +1 -0
- package/dist/chunk-PHAENHGL.js +19 -0
- package/dist/chunk-PHAENHGL.js.map +1 -0
- package/dist/chunk-PLCQZBZS.js +63 -0
- package/dist/chunk-PLCQZBZS.js.map +1 -0
- package/dist/chunk-PP7POY7C.js +110 -0
- package/dist/chunk-PP7POY7C.js.map +1 -0
- package/dist/chunk-PSBNQZB4.js +2 -0
- package/dist/chunk-PSBNQZB4.js.map +1 -0
- package/dist/chunk-PYPNGKRD.js +355 -0
- package/dist/chunk-PYPNGKRD.js.map +1 -0
- package/dist/chunk-QDJHUNBQ.js +2 -0
- package/dist/chunk-QDJHUNBQ.js.map +1 -0
- package/dist/chunk-QDTGDYMM.js +77 -0
- package/dist/chunk-QDTGDYMM.js.map +1 -0
- package/dist/chunk-QF6UWWDY.js +125 -0
- package/dist/chunk-QF6UWWDY.js.map +1 -0
- package/dist/chunk-QGX37P5L.js +24 -0
- package/dist/chunk-QGX37P5L.js.map +1 -0
- package/dist/chunk-QNEOO22E.js +75 -0
- package/dist/chunk-QNEOO22E.js.map +1 -0
- package/dist/chunk-QODOFLHL.js +2 -0
- package/dist/chunk-QODOFLHL.js.map +1 -0
- package/dist/chunk-QRGYKV4J.js +2 -0
- package/dist/chunk-QRGYKV4J.js.map +1 -0
- package/dist/chunk-QTIKGWU4.js +91 -0
- package/dist/chunk-QTIKGWU4.js.map +1 -0
- package/dist/chunk-R3SYH7RG.js +782 -0
- package/dist/chunk-R3SYH7RG.js.map +1 -0
- package/dist/chunk-R5JYMCEA.js +2 -0
- package/dist/chunk-R5JYMCEA.js.map +1 -0
- package/dist/chunk-R7DDZIE3.js +232 -0
- package/dist/chunk-R7DDZIE3.js.map +1 -0
- package/dist/chunk-RB5AWLDJ.js +26 -0
- package/dist/chunk-RB5AWLDJ.js.map +1 -0
- package/dist/chunk-RF7JSNXJ.js +2 -0
- package/dist/chunk-RF7JSNXJ.js.map +1 -0
- package/dist/chunk-RHXVQZOW.js +2 -0
- package/dist/chunk-RHXVQZOW.js.map +1 -0
- package/dist/chunk-RM5JIUVW.js +74 -0
- package/dist/chunk-RM5JIUVW.js.map +1 -0
- package/dist/chunk-RMSMTLXH.js +2 -0
- package/dist/chunk-RMSMTLXH.js.map +1 -0
- package/dist/chunk-RNC4M6SG.js +85 -0
- package/dist/chunk-RNC4M6SG.js.map +1 -0
- package/dist/chunk-RRYWMYGI.js +14 -0
- package/dist/chunk-RRYWMYGI.js.map +1 -0
- package/dist/chunk-RRZUMIYG.js +93 -0
- package/dist/chunk-RRZUMIYG.js.map +1 -0
- package/dist/chunk-RTHCX2TG.js +59 -0
- package/dist/chunk-RTHCX2TG.js.map +1 -0
- package/dist/chunk-RWUKMJYA.js +39 -0
- package/dist/chunk-RWUKMJYA.js.map +1 -0
- package/dist/chunk-SMTAPQEQ.js +2 -0
- package/dist/chunk-SMTAPQEQ.js.map +1 -0
- package/dist/chunk-SS6EOZKZ.js +2 -0
- package/dist/chunk-SS6EOZKZ.js.map +1 -0
- package/dist/chunk-T2XEMEN2.js +2 -0
- package/dist/chunk-T2XEMEN2.js.map +1 -0
- package/dist/chunk-T4JNXV75.js +125 -0
- package/dist/chunk-T4JNXV75.js.map +1 -0
- package/dist/chunk-T7JOWG2A.js +10 -0
- package/dist/chunk-T7JOWG2A.js.map +1 -0
- package/dist/chunk-TAQI4JTE.js +12 -0
- package/dist/chunk-TAQI4JTE.js.map +1 -0
- package/dist/chunk-TEKBTTP2.js +27 -0
- package/dist/chunk-TEKBTTP2.js.map +1 -0
- package/dist/chunk-TNOANK34.js +4483 -0
- package/dist/chunk-TNOANK34.js.map +1 -0
- package/dist/chunk-TU24Y4HN.js +178 -0
- package/dist/chunk-TU24Y4HN.js.map +1 -0
- package/dist/chunk-U26XDHMX.js +726 -0
- package/dist/chunk-U26XDHMX.js.map +1 -0
- package/dist/chunk-U4LHV5DS.js +36 -0
- package/dist/chunk-U4LHV5DS.js.map +1 -0
- package/dist/chunk-U7QYCYHC.js +2 -0
- package/dist/chunk-U7QYCYHC.js.map +1 -0
- package/dist/chunk-UANAVLMS.js +2 -0
- package/dist/chunk-UANAVLMS.js.map +1 -0
- package/dist/chunk-UCEVPLR5.js +2 -0
- package/dist/chunk-UCEVPLR5.js.map +1 -0
- package/dist/chunk-UCQDLRHR.js +31 -0
- package/dist/chunk-UCQDLRHR.js.map +1 -0
- package/dist/chunk-UFF7LLGU.js +2 -0
- package/dist/chunk-UFF7LLGU.js.map +1 -0
- package/dist/chunk-UG5TKXTK.js +2 -0
- package/dist/chunk-UG5TKXTK.js.map +1 -0
- package/dist/chunk-ULIDYFM7.js +192 -0
- package/dist/chunk-ULIDYFM7.js.map +1 -0
- package/dist/chunk-UPEMEBWH.js +186 -0
- package/dist/chunk-UPEMEBWH.js.map +1 -0
- package/dist/chunk-UQHWOPUY.js +61 -0
- package/dist/chunk-UQHWOPUY.js.map +1 -0
- package/dist/chunk-UQRYTMR7.js +2 -0
- package/dist/chunk-UQRYTMR7.js.map +1 -0
- package/dist/chunk-URVAZW44.js +323 -0
- package/dist/chunk-URVAZW44.js.map +1 -0
- package/dist/chunk-USI4LB3N.js +2 -0
- package/dist/chunk-USI4LB3N.js.map +1 -0
- package/dist/chunk-UXSV6RVS.js +31 -0
- package/dist/chunk-UXSV6RVS.js.map +1 -0
- package/dist/chunk-V2S5DINS.js +2 -0
- package/dist/chunk-V2S5DINS.js.map +1 -0
- package/dist/chunk-V3EQ6ACC.js +2 -0
- package/dist/chunk-V3EQ6ACC.js.map +1 -0
- package/dist/chunk-V4DDHF7S.js +147 -0
- package/dist/chunk-V4DDHF7S.js.map +1 -0
- package/dist/chunk-VA2OONPE.js +77 -0
- package/dist/chunk-VA2OONPE.js.map +1 -0
- package/dist/chunk-VFF3AN4Y.js +90 -0
- package/dist/chunk-VFF3AN4Y.js.map +1 -0
- package/dist/chunk-VH7GG77B.js +2 -0
- package/dist/chunk-VH7GG77B.js.map +1 -0
- package/dist/chunk-VHLPJ4XW.js +2 -0
- package/dist/chunk-VHLPJ4XW.js.map +1 -0
- package/dist/chunk-VLE5THFD.js +2 -0
- package/dist/chunk-VLE5THFD.js.map +1 -0
- package/dist/chunk-VORFRWM5.js +2 -0
- package/dist/chunk-VORFRWM5.js.map +1 -0
- package/dist/chunk-VQ2T3OEC.js +27 -0
- package/dist/chunk-VQ2T3OEC.js.map +1 -0
- package/dist/chunk-VRIAWF3A.js +25 -0
- package/dist/chunk-VRIAWF3A.js.map +1 -0
- package/dist/chunk-W6HCXQBH.js +198 -0
- package/dist/chunk-W6HCXQBH.js.map +1 -0
- package/dist/chunk-W7I2X6VI.js +2 -0
- package/dist/chunk-W7I2X6VI.js.map +1 -0
- package/dist/chunk-WCCCW4KD.js +140 -0
- package/dist/chunk-WCCCW4KD.js.map +1 -0
- package/dist/chunk-WNIVCHDP.js +2 -0
- package/dist/chunk-WNIVCHDP.js.map +1 -0
- package/dist/chunk-WOMO5CZ7.js +2 -0
- package/dist/chunk-WOMO5CZ7.js.map +1 -0
- package/dist/chunk-WTB4DDZP.js +163 -0
- package/dist/chunk-WTB4DDZP.js.map +1 -0
- package/dist/chunk-WW3CD7AU.js +118 -0
- package/dist/chunk-WW3CD7AU.js.map +1 -0
- package/dist/chunk-WX3LWMVU.js +81 -0
- package/dist/chunk-WX3LWMVU.js.map +1 -0
- package/dist/chunk-WYENWW3Y.js +2 -0
- package/dist/chunk-WYENWW3Y.js.map +1 -0
- package/dist/chunk-WZTFU6FJ.js +69 -0
- package/dist/chunk-WZTFU6FJ.js.map +1 -0
- package/dist/chunk-X4FE7UKP.js +2 -0
- package/dist/chunk-X4FE7UKP.js.map +1 -0
- package/dist/chunk-X6J4KKZZ.js +126 -0
- package/dist/chunk-X6J4KKZZ.js.map +1 -0
- package/dist/chunk-XAFRTZQF.js +56 -0
- package/dist/chunk-XAFRTZQF.js.map +1 -0
- package/dist/chunk-XGX3UFLD.js +2 -0
- package/dist/chunk-XGX3UFLD.js.map +1 -0
- package/dist/chunk-XGXCMA5M.js +2 -0
- package/dist/chunk-XGXCMA5M.js.map +1 -0
- package/dist/chunk-XJQADN6S.js +41 -0
- package/dist/chunk-XJQADN6S.js.map +1 -0
- package/dist/chunk-XMZ5LXL4.js +68 -0
- package/dist/chunk-XMZ5LXL4.js.map +1 -0
- package/dist/chunk-XONGYCW3.js +637 -0
- package/dist/chunk-XONGYCW3.js.map +1 -0
- package/dist/chunk-XYACSO57.js +36 -0
- package/dist/chunk-XYACSO57.js.map +1 -0
- package/dist/chunk-XYFEQHEM.js +2 -0
- package/dist/chunk-XYFEQHEM.js.map +1 -0
- package/dist/chunk-XZ23AFOP.js +26 -0
- package/dist/chunk-XZ23AFOP.js.map +1 -0
- package/dist/chunk-YACASX6X.js +54 -0
- package/dist/chunk-YACASX6X.js.map +1 -0
- package/dist/chunk-YCFOFNQF.js +28 -0
- package/dist/chunk-YCFOFNQF.js.map +1 -0
- package/dist/chunk-YIFB24WW.js +37 -0
- package/dist/chunk-YIFB24WW.js.map +1 -0
- package/dist/chunk-YIVL6HWS.js +68 -0
- package/dist/chunk-YIVL6HWS.js.map +1 -0
- package/dist/chunk-YK4H7VWM.js +2 -0
- package/dist/chunk-YK4H7VWM.js.map +1 -0
- package/dist/chunk-YL7VBHPZ.js +100 -0
- package/dist/chunk-YL7VBHPZ.js.map +1 -0
- package/dist/chunk-YMFEBGTU.js +2 -0
- package/dist/chunk-YMFEBGTU.js.map +1 -0
- package/dist/chunk-YPLKH5H4.js +226 -0
- package/dist/chunk-YPLKH5H4.js.map +1 -0
- package/dist/chunk-YWB7HLL7.js +126 -0
- package/dist/chunk-YWB7HLL7.js.map +1 -0
- package/dist/chunk-YXHHUJOZ.js +235 -0
- package/dist/chunk-YXHHUJOZ.js.map +1 -0
- package/dist/chunk-YZVXIPBC.js +2 -0
- package/dist/chunk-YZVXIPBC.js.map +1 -0
- package/dist/chunk-Z44RRTMX.js +2 -0
- package/dist/chunk-Z44RRTMX.js.map +1 -0
- package/dist/chunk-Z4CYBG3H.js +2 -0
- package/dist/chunk-Z4CYBG3H.js.map +1 -0
- package/dist/chunk-ZE2H4J3P.js +2 -0
- package/dist/chunk-ZE2H4J3P.js.map +1 -0
- package/dist/chunk-ZEMTALKO.js +2 -0
- package/dist/chunk-ZEMTALKO.js.map +1 -0
- package/dist/chunk-ZI2OXD6L.js +244 -0
- package/dist/chunk-ZI2OXD6L.js.map +1 -0
- package/dist/chunk-ZNFHDBUW.js +266 -0
- package/dist/chunk-ZNFHDBUW.js.map +1 -0
- package/dist/chunk-ZXBUOHCR.js +111 -0
- package/dist/chunk-ZXBUOHCR.js.map +1 -0
- package/dist/chunk-ZXVPEQM5.js +2 -0
- package/dist/chunk-ZXVPEQM5.js.map +1 -0
- package/dist/components/accordion/accordion.js +16 -0
- package/dist/components/accordion/accordion.js.map +1 -0
- package/dist/components/accordion/index.js +17 -0
- package/dist/components/accordion/index.js.map +1 -0
- package/dist/components/advanced-group/advanced-group.js +18 -0
- package/dist/components/advanced-group/advanced-group.js.map +1 -0
- package/dist/components/advanced-group/index.js +18 -0
- package/dist/components/advanced-group/index.js.map +1 -0
- package/dist/components/alert/alert.js +16 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/index.js +17 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/alert-dialog/alert-dialog.js +30 -0
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
- package/dist/components/alert-dialog/index.js +31 -0
- package/dist/components/alert-dialog/index.js.map +1 -0
- package/dist/components/ambient-field/ambient-field.css +59 -0
- package/dist/components/ambient-field/ambient-field.css.map +1 -0
- package/dist/components/ambient-field/ambient-field.js +15 -0
- package/dist/components/ambient-field/ambient-field.js.map +1 -0
- package/dist/components/ambient-field/index.css +59 -0
- package/dist/components/ambient-field/index.css.map +1 -0
- package/dist/components/ambient-field/index.js +16 -0
- package/dist/components/ambient-field/index.js.map +1 -0
- package/dist/components/app-shell/app-shell.js +14 -0
- package/dist/components/app-shell/app-shell.js.map +1 -0
- package/dist/components/app-shell/index.js +15 -0
- package/dist/components/app-shell/index.js.map +1 -0
- package/dist/components/app-sidebar/app-sidebar.js +31 -0
- package/dist/components/app-sidebar/app-sidebar.js.map +1 -0
- package/dist/components/app-sidebar/index.js +31 -0
- package/dist/components/app-sidebar/index.js.map +1 -0
- package/dist/components/aspect-ratio/aspect-ratio.js +9 -0
- package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
- package/dist/components/aspect-ratio/index.js +10 -0
- package/dist/components/aspect-ratio/index.js.map +1 -0
- package/dist/components/attribution-panel/attribution-panel.js +24 -0
- package/dist/components/attribution-panel/attribution-panel.js.map +1 -0
- package/dist/components/attribution-panel/attribution-types.js +2 -0
- package/dist/components/attribution-panel/attribution-types.js.map +1 -0
- package/dist/components/attribution-panel/attributions.generated.js +9 -0
- package/dist/components/attribution-panel/attributions.generated.js.map +1 -0
- package/dist/components/attribution-panel/index.js +24 -0
- package/dist/components/attribution-panel/index.js.map +1 -0
- package/dist/components/avatar/avatar.js +14 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/index.js +15 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/badge.js +16 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/index.js +13 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/bento-grid/bento-grid.js +16 -0
- package/dist/components/bento-grid/bento-grid.js.map +1 -0
- package/dist/components/bento-grid/index.js +16 -0
- package/dist/components/bento-grid/index.js.map +1 -0
- package/dist/components/bounded-number/bounded-number.js +24 -0
- package/dist/components/bounded-number/bounded-number.js.map +1 -0
- package/dist/components/bounded-number/index.js +24 -0
- package/dist/components/bounded-number/index.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +28 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/index.js +26 -0
- package/dist/components/breadcrumb/index.js.map +1 -0
- package/dist/components/button/button.js +12 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.js +13 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/button-group/button-group.js +18 -0
- package/dist/components/button-group/button-group.js.map +1 -0
- package/dist/components/button-group/index.js +19 -0
- package/dist/components/button-group/index.js.map +1 -0
- package/dist/components/calendar/calendar.js +12 -0
- package/dist/components/calendar/calendar.js.map +1 -0
- package/dist/components/calendar/index.js +13 -0
- package/dist/components/calendar/index.js.map +1 -0
- package/dist/components/card/card.js +27 -0
- package/dist/components/card/card.js.map +1 -0
- package/dist/components/card/index.js +27 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/carousel/carousel.js +24 -0
- package/dist/components/carousel/carousel.js.map +1 -0
- package/dist/components/carousel/index.js +24 -0
- package/dist/components/carousel/index.js.map +1 -0
- package/dist/components/change-review/change-review.js +34 -0
- package/dist/components/change-review/change-review.js.map +1 -0
- package/dist/components/change-review/index.js +34 -0
- package/dist/components/change-review/index.js.map +1 -0
- package/dist/components/checkbox/checkbox.js +10 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/index.js +11 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/collapsible/collapsible.js +14 -0
- package/dist/components/collapsible/collapsible.js.map +1 -0
- package/dist/components/collapsible/index.js +15 -0
- package/dist/components/collapsible/index.js.map +1 -0
- package/dist/components/collapsible-panel/index.js +11 -0
- package/dist/components/collapsible-panel/index.js.map +1 -0
- package/dist/components/collapsible-panel/use-collapsible-panel.js +11 -0
- package/dist/components/collapsible-panel/use-collapsible-panel.js.map +1 -0
- package/dist/components/color-picker/color-picker.js +18 -0
- package/dist/components/color-picker/color-picker.js.map +1 -0
- package/dist/components/color-picker/index.js +18 -0
- package/dist/components/color-picker/index.js.map +1 -0
- package/dist/components/combobox/combobox.js +28 -0
- package/dist/components/combobox/combobox.js.map +1 -0
- package/dist/components/combobox/index.js +28 -0
- package/dist/components/combobox/index.js.map +1 -0
- package/dist/components/command/command.js +39 -0
- package/dist/components/command/command.js.map +1 -0
- package/dist/components/command/index.js +39 -0
- package/dist/components/command/index.js.map +1 -0
- package/dist/components/command-chip/command-chip.js +17 -0
- package/dist/components/command-chip/command-chip.js.map +1 -0
- package/dist/components/command-chip/index.js +17 -0
- package/dist/components/command-chip/index.js.map +1 -0
- package/dist/components/command-trigger/command-trigger.js +12 -0
- package/dist/components/command-trigger/command-trigger.js.map +1 -0
- package/dist/components/command-trigger/index.js +13 -0
- package/dist/components/command-trigger/index.js.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.js +20 -0
- package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
- package/dist/components/confirm-dialog/index.js +20 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/context-menu/context-menu.js +36 -0
- package/dist/components/context-menu/context-menu.js.map +1 -0
- package/dist/components/context-menu/index.js +37 -0
- package/dist/components/context-menu/index.js.map +1 -0
- package/dist/components/context-rail/context-rail.js +35 -0
- package/dist/components/context-rail/context-rail.js.map +1 -0
- package/dist/components/context-rail/index.js +35 -0
- package/dist/components/context-rail/index.js.map +1 -0
- package/dist/components/copyable-value/copyable-value.js +19 -0
- package/dist/components/copyable-value/copyable-value.js.map +1 -0
- package/dist/components/copyable-value/index.js +17 -0
- package/dist/components/copyable-value/index.js.map +1 -0
- package/dist/components/date-picker/date-picker.js +21 -0
- package/dist/components/date-picker/date-picker.js.map +1 -0
- package/dist/components/date-picker/index.js +21 -0
- package/dist/components/date-picker/index.js.map +1 -0
- package/dist/components/date-range-picker/date-range-picker.js +22 -0
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
- package/dist/components/date-range-picker/index.js +22 -0
- package/dist/components/date-range-picker/index.js.map +1 -0
- package/dist/components/descriptions/descriptions.js +12 -0
- package/dist/components/descriptions/descriptions.js.map +1 -0
- package/dist/components/descriptions/index.js +13 -0
- package/dist/components/descriptions/index.js.map +1 -0
- package/dist/components/dialog/dialog.js +41 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/index.js +45 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/dialog/use-dialog-dismiss-guard.js +10 -0
- package/dist/components/dialog/use-dialog-dismiss-guard.js.map +1 -0
- package/dist/components/drawer/drawer.js +26 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/index.js +27 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown-menu/dropdown-menu.js +38 -0
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/dropdown-menu/index.js +39 -0
- package/dist/components/dropdown-menu/index.js.map +1 -0
- package/dist/components/empty-state/empty-state.js +15 -0
- package/dist/components/empty-state/empty-state.js.map +1 -0
- package/dist/components/empty-state/index.js +16 -0
- package/dist/components/empty-state/index.js.map +1 -0
- package/dist/components/error-state/error-state.js +15 -0
- package/dist/components/error-state/error-state.js.map +1 -0
- package/dist/components/error-state/index.js +16 -0
- package/dist/components/error-state/index.js.map +1 -0
- package/dist/components/expand-dialog/expand-dialog.js +28 -0
- package/dist/components/expand-dialog/expand-dialog.js.map +1 -0
- package/dist/components/expand-dialog/index.js +28 -0
- package/dist/components/expand-dialog/index.js.map +1 -0
- package/dist/components/field/field-context.js +11 -0
- package/dist/components/field/field-context.js.map +1 -0
- package/dist/components/field/field.js +23 -0
- package/dist/components/field/field.js.map +1 -0
- package/dist/components/field/index.js +23 -0
- package/dist/components/field/index.js.map +1 -0
- package/dist/components/field-row/field-row.js +14 -0
- package/dist/components/field-row/field-row.js.map +1 -0
- package/dist/components/field-row/index.js +14 -0
- package/dist/components/field-row/index.js.map +1 -0
- package/dist/components/file-upload/file-upload.js +28 -0
- package/dist/components/file-upload/file-upload.js.map +1 -0
- package/dist/components/file-upload/index.js +26 -0
- package/dist/components/file-upload/index.js.map +1 -0
- package/dist/components/form/form.js +27 -0
- package/dist/components/form/form.js.map +1 -0
- package/dist/components/hover-card/hover-card.js +14 -0
- package/dist/components/hover-card/hover-card.js.map +1 -0
- package/dist/components/hover-card/index.js +15 -0
- package/dist/components/hover-card/index.js.map +1 -0
- package/dist/components/icon-button/icon-button.js +14 -0
- package/dist/components/icon-button/icon-button.js.map +1 -0
- package/dist/components/icon-button/index.js +15 -0
- package/dist/components/icon-button/index.js.map +1 -0
- package/dist/components/input/index.js +11 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.js +10 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input-group/index.js +31 -0
- package/dist/components/input-group/index.js.map +1 -0
- package/dist/components/input-group/input-group.js +30 -0
- package/dist/components/input-group/input-group.js.map +1 -0
- package/dist/components/input-otp/index.js +17 -0
- package/dist/components/input-otp/index.js.map +1 -0
- package/dist/components/input-otp/input-otp.js +17 -0
- package/dist/components/input-otp/input-otp.js.map +1 -0
- package/dist/components/install-tabs/index.js +28 -0
- package/dist/components/install-tabs/index.js.map +1 -0
- package/dist/components/install-tabs/install-tabs.js +28 -0
- package/dist/components/install-tabs/install-tabs.js.map +1 -0
- package/dist/components/integration-matrix/index.js +26 -0
- package/dist/components/integration-matrix/index.js.map +1 -0
- package/dist/components/integration-matrix/integration-matrix.js +26 -0
- package/dist/components/integration-matrix/integration-matrix.js.map +1 -0
- package/dist/components/kbd/index.js +11 -0
- package/dist/components/kbd/index.js.map +1 -0
- package/dist/components/kbd/kbd.js +10 -0
- package/dist/components/kbd/kbd.js.map +1 -0
- package/dist/components/key-value-editor/index.js +18 -0
- package/dist/components/key-value-editor/index.js.map +1 -0
- package/dist/components/key-value-editor/key-value-editor.js +18 -0
- package/dist/components/key-value-editor/key-value-editor.js.map +1 -0
- package/dist/components/keyboard-shortcuts/index.js +25 -0
- package/dist/components/keyboard-shortcuts/index.js.map +1 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +25 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
- package/dist/components/label/index.js +11 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.js +10 -0
- package/dist/components/label/label.js.map +1 -0
- package/dist/components/link-preview/index.js +14 -0
- package/dist/components/link-preview/index.js.map +1 -0
- package/dist/components/link-preview/link-preview.js +14 -0
- package/dist/components/link-preview/link-preview.js.map +1 -0
- package/dist/components/list-editor/index.js +18 -0
- package/dist/components/list-editor/index.js.map +1 -0
- package/dist/components/list-editor/list-editor.js +18 -0
- package/dist/components/list-editor/list-editor.js.map +1 -0
- package/dist/components/loading-state/index.js +16 -0
- package/dist/components/loading-state/index.js.map +1 -0
- package/dist/components/loading-state/loading-state.js +15 -0
- package/dist/components/loading-state/loading-state.js.map +1 -0
- package/dist/components/locale-provider/index.js +16 -0
- package/dist/components/locale-provider/index.js.map +1 -0
- package/dist/components/locale-provider/locale-provider.js +13 -0
- package/dist/components/locale-provider/locale-provider.js.map +1 -0
- package/dist/components/locale-provider/messages.js +10 -0
- package/dist/components/locale-provider/messages.js.map +1 -0
- package/dist/components/match-highlight/index.js +15 -0
- package/dist/components/match-highlight/index.js.map +1 -0
- package/dist/components/match-highlight/match-highlight.js +14 -0
- package/dist/components/match-highlight/match-highlight.js.map +1 -0
- package/dist/components/mention-input/index.js +46 -0
- package/dist/components/mention-input/index.js.map +1 -0
- package/dist/components/mention-input/mention-input.js +33 -0
- package/dist/components/mention-input/mention-input.js.map +1 -0
- package/dist/components/mention-input/mention-value.js +20 -0
- package/dist/components/mention-input/mention-value.js.map +1 -0
- package/dist/components/menubar/index.js +39 -0
- package/dist/components/menubar/index.js.map +1 -0
- package/dist/components/menubar/menubar.js +38 -0
- package/dist/components/menubar/menubar.js.map +1 -0
- package/dist/components/meter/index.js +15 -0
- package/dist/components/meter/index.js.map +1 -0
- package/dist/components/meter/meter.js +15 -0
- package/dist/components/meter/meter.js.map +1 -0
- package/dist/components/metric-card/index.js +24 -0
- package/dist/components/metric-card/index.js.map +1 -0
- package/dist/components/metric-card/metric-card.js +24 -0
- package/dist/components/metric-card/metric-card.js.map +1 -0
- package/dist/components/model-picker/index.js +37 -0
- package/dist/components/model-picker/index.js.map +1 -0
- package/dist/components/model-picker/model-picker-state.js +13 -0
- package/dist/components/model-picker/model-picker-state.js.map +1 -0
- package/dist/components/model-picker/model-picker.js +37 -0
- package/dist/components/model-picker/model-picker.js.map +1 -0
- package/dist/components/nav-main/index.js +33 -0
- package/dist/components/nav-main/index.js.map +1 -0
- package/dist/components/nav-main/nav-main.js +33 -0
- package/dist/components/nav-main/nav-main.js.map +1 -0
- package/dist/components/nav-notifications/index.js +20 -0
- package/dist/components/nav-notifications/index.js.map +1 -0
- package/dist/components/nav-notifications/nav-notifications.js +20 -0
- package/dist/components/nav-notifications/nav-notifications.js.map +1 -0
- package/dist/components/nav-user/index.js +35 -0
- package/dist/components/nav-user/index.js.map +1 -0
- package/dist/components/nav-user/nav-user.js +35 -0
- package/dist/components/nav-user/nav-user.js.map +1 -0
- package/dist/components/navigation-menu/index.js +25 -0
- package/dist/components/navigation-menu/index.js.map +1 -0
- package/dist/components/navigation-menu/navigation-menu.js +25 -0
- package/dist/components/navigation-menu/navigation-menu.js.map +1 -0
- package/dist/components/number-input/index.js +22 -0
- package/dist/components/number-input/index.js.map +1 -0
- package/dist/components/number-input/number-input.js +22 -0
- package/dist/components/number-input/number-input.js.map +1 -0
- package/dist/components/page-shell/index.js +11 -0
- package/dist/components/page-shell/index.js.map +1 -0
- package/dist/components/page-shell/page-shell.js +10 -0
- package/dist/components/page-shell/page-shell.js.map +1 -0
- package/dist/components/pagination/index.js +28 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/pagination/pagination.js +28 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/parallax-plane/index.css +17 -0
- package/dist/components/parallax-plane/index.css.map +1 -0
- package/dist/components/parallax-plane/index.js +18 -0
- package/dist/components/parallax-plane/index.js.map +1 -0
- package/dist/components/parallax-plane/parallax-plane.css +17 -0
- package/dist/components/parallax-plane/parallax-plane.css.map +1 -0
- package/dist/components/parallax-plane/parallax-plane.js +18 -0
- package/dist/components/parallax-plane/parallax-plane.js.map +1 -0
- package/dist/components/popover/index.js +17 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/popover/popover.js +16 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/progress/index.js +13 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/progress/progress.js +12 -0
- package/dist/components/progress/progress.js.map +1 -0
- package/dist/components/radio-group/index.js +13 -0
- package/dist/components/radio-group/index.js.map +1 -0
- package/dist/components/radio-group/radio-group.js +12 -0
- package/dist/components/radio-group/radio-group.js.map +1 -0
- package/dist/components/rating/index.js +11 -0
- package/dist/components/rating/index.js.map +1 -0
- package/dist/components/rating/rating.js +11 -0
- package/dist/components/rating/rating.js.map +1 -0
- package/dist/components/resizable/index.js +15 -0
- package/dist/components/resizable/index.js.map +1 -0
- package/dist/components/resizable/resizable.js +14 -0
- package/dist/components/resizable/resizable.js.map +1 -0
- package/dist/components/reveal/index.js +15 -0
- package/dist/components/reveal/index.js.map +1 -0
- package/dist/components/reveal/reveal.js +14 -0
- package/dist/components/reveal/reveal.js.map +1 -0
- package/dist/components/reveal-on-enter/index.css +21 -0
- package/dist/components/reveal-on-enter/index.css.map +1 -0
- package/dist/components/reveal-on-enter/index.js +12 -0
- package/dist/components/reveal-on-enter/index.js.map +1 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.css +21 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.css.map +1 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.js +12 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.js.map +1 -0
- package/dist/components/revision-timeline/index.js +18 -0
- package/dist/components/revision-timeline/index.js.map +1 -0
- package/dist/components/revision-timeline/revision-timeline.js +18 -0
- package/dist/components/revision-timeline/revision-timeline.js.map +1 -0
- package/dist/components/schema-form/from-json-schema.js +13 -0
- package/dist/components/schema-form/from-json-schema.js.map +1 -0
- package/dist/components/schema-form/index.js +140 -0
- package/dist/components/schema-form/index.js.map +1 -0
- package/dist/components/schema-form/schema-form-spec.js +63 -0
- package/dist/components/schema-form/schema-form-spec.js.map +1 -0
- package/dist/components/schema-form/schema-form-store.js +21 -0
- package/dist/components/schema-form/schema-form-store.js.map +1 -0
- package/dist/components/schema-form/schema-form.js +77 -0
- package/dist/components/schema-form/schema-form.js.map +1 -0
- package/dist/components/scroll-area/index.js +13 -0
- package/dist/components/scroll-area/index.js.map +1 -0
- package/dist/components/scroll-area/scroll-area.js +12 -0
- package/dist/components/scroll-area/scroll-area.js.map +1 -0
- package/dist/components/section-header/index.js +11 -0
- package/dist/components/section-header/index.js.map +1 -0
- package/dist/components/section-header/section-header.js +10 -0
- package/dist/components/section-header/section-header.js.map +1 -0
- package/dist/components/segmented-field/index.js +17 -0
- package/dist/components/segmented-field/index.js.map +1 -0
- package/dist/components/segmented-field/segmented-field.js +17 -0
- package/dist/components/segmented-field/segmented-field.js.map +1 -0
- package/dist/components/select/index.js +26 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/select.js +26 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/separator/index.js +11 -0
- package/dist/components/separator/index.js.map +1 -0
- package/dist/components/separator/separator.js +10 -0
- package/dist/components/separator/separator.js.map +1 -0
- package/dist/components/sheet/index.js +30 -0
- package/dist/components/sheet/index.js.map +1 -0
- package/dist/components/sheet/sheet.js +30 -0
- package/dist/components/sheet/sheet.js.map +1 -0
- package/dist/components/side-dock/index.js +20 -0
- package/dist/components/side-dock/index.js.map +1 -0
- package/dist/components/side-dock/side-dock.js +20 -0
- package/dist/components/side-dock/side-dock.js.map +1 -0
- package/dist/components/sidebar/index.js +77 -0
- package/dist/components/sidebar/index.js.map +1 -0
- package/dist/components/sidebar/sidebar.js +77 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/skeleton/index.js +11 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/skeleton.js +10 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skip-link/index.js +11 -0
- package/dist/components/skip-link/index.js.map +1 -0
- package/dist/components/skip-link/skip-link.js +10 -0
- package/dist/components/skip-link/skip-link.js.map +1 -0
- package/dist/components/slider/index.js +11 -0
- package/dist/components/slider/index.js.map +1 -0
- package/dist/components/slider/slider.js +10 -0
- package/dist/components/slider/slider.js.map +1 -0
- package/dist/components/slider-number/index.js +26 -0
- package/dist/components/slider-number/index.js.map +1 -0
- package/dist/components/slider-number/slider-number.js +26 -0
- package/dist/components/slider-number/slider-number.js.map +1 -0
- package/dist/components/sonner/index.js +13 -0
- package/dist/components/sonner/index.js.map +1 -0
- package/dist/components/sonner/sonner.js +13 -0
- package/dist/components/sonner/sonner.js.map +1 -0
- package/dist/components/spec-playground/index.js +23 -0
- package/dist/components/spec-playground/index.js.map +1 -0
- package/dist/components/spec-playground/locate-json-path.js +17 -0
- package/dist/components/spec-playground/locate-json-path.js.map +1 -0
- package/dist/components/spec-playground/spec-playground.js +23 -0
- package/dist/components/spec-playground/spec-playground.js.map +1 -0
- package/dist/components/spinner/index.js +14 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/spinner/spinner.js +14 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/split-panel/index.js +13 -0
- package/dist/components/split-panel/index.js.map +1 -0
- package/dist/components/split-panel/split-panel.js +12 -0
- package/dist/components/split-panel/split-panel.js.map +1 -0
- package/dist/components/state-panel/index.js +17 -0
- package/dist/components/state-panel/index.js.map +1 -0
- package/dist/components/state-panel/state-panel.js +17 -0
- package/dist/components/state-panel/state-panel.js.map +1 -0
- package/dist/components/status-badge/index.js +30 -0
- package/dist/components/status-badge/index.js.map +1 -0
- package/dist/components/status-badge/status-badge.js +29 -0
- package/dist/components/status-badge/status-badge.js.map +1 -0
- package/dist/components/surface-tour/index.css +21 -0
- package/dist/components/surface-tour/index.css.map +1 -0
- package/dist/components/surface-tour/index.js +36 -0
- package/dist/components/surface-tour/index.js.map +1 -0
- package/dist/components/surface-tour/surface-tour.css +21 -0
- package/dist/components/surface-tour/surface-tour.css.map +1 -0
- package/dist/components/surface-tour/surface-tour.js +36 -0
- package/dist/components/surface-tour/surface-tour.js.map +1 -0
- package/dist/components/switch/index.js +11 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/switch/switch.js +10 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/table/index.js +28 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table.js +28 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/tabs/index.js +22 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.js +22 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tag-input/index.js +21 -0
- package/dist/components/tag-input/index.js.map +1 -0
- package/dist/components/tag-input/tag-input.js +21 -0
- package/dist/components/tag-input/tag-input.js.map +1 -0
- package/dist/components/team-switcher/index.js +33 -0
- package/dist/components/team-switcher/index.js.map +1 -0
- package/dist/components/team-switcher/team-switcher.js +33 -0
- package/dist/components/team-switcher/team-switcher.js.map +1 -0
- package/dist/components/textarea/index.js +11 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/textarea/textarea.js +10 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/theme-family-switch/index.js +19 -0
- package/dist/components/theme-family-switch/index.js.map +1 -0
- package/dist/components/theme-family-switch/theme-family-switch.js +19 -0
- package/dist/components/theme-family-switch/theme-family-switch.js.map +1 -0
- package/dist/components/theme-switcher/index.js +24 -0
- package/dist/components/theme-switcher/index.js.map +1 -0
- package/dist/components/theme-switcher/theme-switcher.js +21 -0
- package/dist/components/theme-switcher/theme-switcher.js.map +1 -0
- package/dist/components/theme-switcher/use-theme-transition.js +10 -0
- package/dist/components/theme-switcher/use-theme-transition.js.map +1 -0
- package/dist/components/timeline/index.js +18 -0
- package/dist/components/timeline/index.js.map +1 -0
- package/dist/components/timeline/timeline.js +19 -0
- package/dist/components/timeline/timeline.js.map +1 -0
- package/dist/components/toggle/index.js +13 -0
- package/dist/components/toggle/index.js.map +1 -0
- package/dist/components/toggle/toggle.js +12 -0
- package/dist/components/toggle/toggle.js.map +1 -0
- package/dist/components/toggle-group/index.js +15 -0
- package/dist/components/toggle-group/index.js.map +1 -0
- package/dist/components/toggle-group/toggle-group.js +15 -0
- package/dist/components/toggle-group/toggle-group.js.map +1 -0
- package/dist/components/token-spotlight/index.css +25 -0
- package/dist/components/token-spotlight/index.css.map +1 -0
- package/dist/components/token-spotlight/index.js +23 -0
- package/dist/components/token-spotlight/index.js.map +1 -0
- package/dist/components/token-spotlight/token-spotlight.css +25 -0
- package/dist/components/token-spotlight/token-spotlight.css.map +1 -0
- package/dist/components/token-spotlight/token-spotlight.js +23 -0
- package/dist/components/token-spotlight/token-spotlight.js.map +1 -0
- package/dist/components/token-spotlight/token-value-format.js +11 -0
- package/dist/components/token-spotlight/token-value-format.js.map +1 -0
- package/dist/components/toolbar/index.js +27 -0
- package/dist/components/toolbar/index.js.map +1 -0
- package/dist/components/toolbar/toolbar.js +27 -0
- package/dist/components/toolbar/toolbar.js.map +1 -0
- package/dist/components/tooltip/index.js +17 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.js +16 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/top-nav/index.js +11 -0
- package/dist/components/top-nav/index.js.map +1 -0
- package/dist/components/top-nav/top-nav.js +10 -0
- package/dist/components/top-nav/top-nav.js.map +1 -0
- package/dist/components/transfer/index.js +26 -0
- package/dist/components/transfer/index.js.map +1 -0
- package/dist/components/transfer/transfer.js +26 -0
- package/dist/components/transfer/transfer.js.map +1 -0
- package/dist/components/tree/index.js +21 -0
- package/dist/components/tree/index.js.map +1 -0
- package/dist/components/tree/tree.js +18 -0
- package/dist/components/tree/tree.js.map +1 -0
- package/dist/components/tree/use-tree-keyboard.js +14 -0
- package/dist/components/tree/use-tree-keyboard.js.map +1 -0
- package/dist/components/tree-select/index.js +26 -0
- package/dist/components/tree-select/index.js.map +1 -0
- package/dist/components/tree-select/tree-select.js +26 -0
- package/dist/components/tree-select/tree-select.js.map +1 -0
- package/dist/components/typography/index.js +41 -0
- package/dist/components/typography/index.js.map +1 -0
- package/dist/components/typography/prose.js +29 -0
- package/dist/components/typography/prose.js.map +1 -0
- package/dist/components/typography/typography.js +18 -0
- package/dist/components/typography/typography.js.map +1 -0
- package/dist/components/view-toolbar/index.js +27 -0
- package/dist/components/view-toolbar/index.js.map +1 -0
- package/dist/components/view-toolbar/view-toolbar.js +27 -0
- package/dist/components/view-toolbar/view-toolbar.js.map +1 -0
- package/dist/components/virtual-select/index.js +26 -0
- package/dist/components/virtual-select/index.js.map +1 -0
- package/dist/components/virtual-select/use-virtual-listbox.js +10 -0
- package/dist/components/virtual-select/use-virtual-listbox.js.map +1 -0
- package/dist/components/virtual-select/virtual-select.js +23 -0
- package/dist/components/virtual-select/virtual-select.js.map +1 -0
- package/dist/components/wizard/index.js +19 -0
- package/dist/components/wizard/index.js.map +1 -0
- package/dist/components/wizard/wizard.js +19 -0
- package/dist/components/wizard/wizard.js.map +1 -0
- package/dist/components/workspace-picker/index.js +38 -0
- package/dist/components/workspace-picker/index.js.map +1 -0
- package/dist/components/workspace-picker/workspace-picker-state.js +9 -0
- package/dist/components/workspace-picker/workspace-picker-state.js.map +1 -0
- package/dist/components/workspace-picker/workspace-picker.js +35 -0
- package/dist/components/workspace-picker/workspace-picker.js.map +1 -0
- package/dist/form.js +13 -110
- package/dist/form.js.map +1 -1
- package/dist/illustrations/empty-list-illustration.js +11 -0
- package/dist/illustrations/empty-list-illustration.js.map +1 -0
- package/dist/illustrations/error-illustration.js +11 -0
- package/dist/illustrations/error-illustration.js.map +1 -0
- package/dist/illustrations/first-run-illustration.js +11 -0
- package/dist/illustrations/first-run-illustration.js.map +1 -0
- package/dist/illustrations/illustration-base.js +16 -0
- package/dist/illustrations/illustration-base.js.map +1 -0
- package/dist/illustrations/index.js +41 -0
- package/dist/illustrations/index.js.map +1 -0
- package/dist/illustrations/no-access-illustration.js +11 -0
- package/dist/illustrations/no-access-illustration.js.map +1 -0
- package/dist/illustrations/no-results-illustration.js +11 -0
- package/dist/illustrations/no-results-illustration.js.map +1 -0
- package/dist/illustrations/offline-illustration.js +11 -0
- package/dist/illustrations/offline-illustration.js.map +1 -0
- package/dist/illustrations/success-illustration.js +11 -0
- package/dist/illustrations/success-illustration.js.map +1 -0
- package/dist/index.css +122 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +1269 -116
- package/dist/index.js +993 -23939
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-event-model.js +9 -0
- package/dist/lib/agent-event-model.js.map +1 -0
- package/dist/lib/approval-option.js +9 -0
- package/dist/lib/approval-option.js.map +1 -0
- package/dist/lib/check-result.js +3 -0
- package/dist/lib/check-result.js.map +1 -0
- package/dist/lib/cn.js +23 -7
- package/dist/lib/cn.js.map +1 -1
- package/dist/lib/color-scale.js +11 -0
- package/dist/lib/color-scale.js.map +1 -0
- package/dist/lib/compact-number.js +21 -0
- package/dist/lib/compact-number.js.map +1 -0
- package/dist/lib/csv.js +11 -0
- package/dist/lib/csv.js.map +1 -0
- package/dist/lib/diff-line.js +11 -0
- package/dist/lib/diff-line.js.map +1 -0
- package/dist/lib/diff-rows.js +12 -0
- package/dist/lib/diff-rows.js.map +1 -0
- package/dist/lib/document-address.js +13 -0
- package/dist/lib/document-address.js.map +1 -0
- package/dist/lib/download.js +11 -0
- package/dist/lib/download.js.map +1 -0
- package/dist/lib/file-icon.js +12 -0
- package/dist/lib/file-icon.js.map +1 -0
- package/dist/lib/file-kind.js +13 -0
- package/dist/lib/file-kind.js.map +1 -0
- package/dist/lib/file-source.js +10 -0
- package/dist/lib/file-source.js.map +1 -0
- package/dist/lib/format-duration.js +9 -0
- package/dist/lib/format-duration.js.map +1 -0
- package/dist/lib/has-renderable-content.js +9 -0
- package/dist/lib/has-renderable-content.js.map +1 -0
- package/dist/lib/merge-refs.js +10 -0
- package/dist/lib/merge-refs.js.map +1 -0
- package/dist/lib/operating-mode.js +9 -0
- package/dist/lib/operating-mode.js.map +1 -0
- package/dist/lib/optional-peer.js +11 -0
- package/dist/lib/optional-peer.js.map +1 -0
- package/dist/lib/session-launch.js +3 -0
- package/dist/lib/session-launch.js.map +1 -0
- package/dist/lib/slash-command.js +11 -0
- package/dist/lib/slash-command.js.map +1 -0
- package/dist/lib/streamdown-translations.js +15 -0
- package/dist/lib/streamdown-translations.js.map +1 -0
- package/dist/lib/trigger-query.js +11 -0
- package/dist/lib/trigger-query.js.map +1 -0
- package/dist/lib/use-controllable-state.js +10 -0
- package/dist/lib/use-controllable-state.js.map +1 -0
- package/dist/lib/use-copy-to-clipboard.js +12 -0
- package/dist/lib/use-copy-to-clipboard.js.map +1 -0
- package/dist/lib/use-mobile.js +10 -0
- package/dist/lib/use-mobile.js.map +1 -0
- package/dist/lib/use-scroll-progress.js +18 -0
- package/dist/lib/use-scroll-progress.js.map +1 -0
- package/package.json +12 -5
- package/src/__contract__/ambient-field.contract.test.tsx +49 -0
- package/src/__contract__/command-chip.contract.test.tsx +49 -0
- package/src/__contract__/install-tabs.contract.test.tsx +49 -0
- package/src/__contract__/integration-matrix.contract.test.tsx +49 -0
- package/src/__contract__/meter.contract.test.tsx +49 -0
- package/src/__contract__/parallax-plane.contract.test.tsx +49 -0
- package/src/__contract__/reveal-on-enter.contract.test.tsx +49 -0
- package/src/__contract__/spec-playground.contract.test.tsx +49 -0
- package/src/__contract__/surface-tour.contract.test.tsx +49 -0
- package/src/__contract__/theme-family-switch.contract.test.tsx +49 -0
- package/src/__contract__/token-spotlight.contract.test.tsx +49 -0
- package/src/blocks-comparison-table.stories.tsx +1 -1
- package/src/components/accordion/accordion.tsx +31 -15
- package/src/components/advanced-group/advanced-group.stories.tsx +2 -0
- package/src/components/alert/alert.tsx +13 -5
- package/src/components/alert-dialog/alert-dialog.tsx +1 -1
- package/src/components/ambient-field/ambient-field.css +98 -0
- package/src/components/ambient-field/ambient-field.stories.tsx +75 -0
- package/src/components/ambient-field/ambient-field.test.tsx +28 -0
- package/src/components/ambient-field/ambient-field.tsx +69 -0
- package/src/components/ambient-field/index.ts +7 -0
- package/src/components/app-shell/app-shell.stories.tsx +344 -1
- package/src/components/app-shell/app-shell.test.tsx +167 -0
- package/src/components/app-shell/app-shell.tsx +119 -5
- package/src/components/app-shell/index.ts +1 -1
- package/src/components/attribution-panel/attributions.generated.ts +77 -4
- package/src/components/badge/badge.stories.tsx +62 -0
- package/src/components/badge/badge.test.tsx +21 -0
- package/src/components/badge/badge.tsx +88 -8
- package/src/components/breadcrumb/breadcrumb.stories.tsx +1 -1
- package/src/components/breadcrumb/breadcrumb.tsx +2 -0
- package/src/components/button/button.stories.tsx +5 -1
- package/src/components/button/button.tsx +19 -8
- package/src/components/calendar/calendar.tsx +6 -1
- package/src/components/card/card.stories.tsx +73 -1
- package/src/components/card/card.test.tsx +29 -2
- package/src/components/card/card.tsx +77 -13
- package/src/components/card/index.ts +2 -0
- package/src/components/change-review/change-review.tsx +1 -1
- package/src/components/collapsible-panel/index.ts +1 -0
- package/src/components/collapsible-panel/use-collapsible-panel.ts +21 -2
- package/src/components/color-picker/color-picker.tsx +3 -3
- package/src/components/command/command.stories.tsx +64 -1
- package/src/components/command/command.test.tsx +73 -0
- package/src/components/command/command.tsx +73 -2
- package/src/components/command-chip/command-chip.stories.tsx +78 -0
- package/src/components/command-chip/command-chip.test.tsx +57 -0
- package/src/components/command-chip/command-chip.tsx +168 -0
- package/src/components/command-chip/index.ts +7 -0
- package/src/components/command-trigger/command-trigger.tsx +1 -1
- package/src/components/confirm-dialog/confirm-dialog.stories.tsx +2 -0
- package/src/components/context-menu/context-menu.stories.tsx +26 -0
- package/src/components/context-menu/context-menu.tsx +6 -6
- package/src/components/context-rail/context-rail.tsx +22 -4
- package/src/components/date-picker/date-picker.tsx +2 -0
- package/src/components/descriptions/descriptions.stories.tsx +6 -0
- package/src/components/descriptions/descriptions.test.tsx +18 -0
- package/src/components/descriptions/descriptions.tsx +33 -5
- package/src/components/descriptions/index.ts +1 -0
- package/src/components/dialog/dialog.stories.tsx +5 -0
- package/src/components/dialog/dialog.tsx +1 -1
- package/src/components/dropdown-menu/dropdown-menu.stories.tsx +37 -0
- package/src/components/dropdown-menu/dropdown-menu.tsx +14 -6
- package/src/components/expand-dialog/expand-dialog.test.tsx +47 -0
- package/src/components/expand-dialog/expand-dialog.tsx +20 -5
- package/src/components/hover-card/hover-card.tsx +1 -1
- package/src/components/input/input.stories.tsx +17 -0
- package/src/components/input/input.tsx +1 -1
- package/src/components/input-group/input-group.stories.tsx +43 -6
- package/src/components/input-group/input-group.tsx +5 -2
- package/src/components/input-otp/input-otp.tsx +4 -2
- package/src/components/install-tabs/index.ts +8 -0
- package/src/components/install-tabs/install-tabs.stories.tsx +147 -0
- package/src/components/install-tabs/install-tabs.test.tsx +120 -0
- package/src/components/install-tabs/install-tabs.tsx +238 -0
- package/src/components/integration-matrix/index.ts +10 -0
- package/src/components/integration-matrix/integration-matrix.stories.tsx +171 -0
- package/src/components/integration-matrix/integration-matrix.test.tsx +89 -0
- package/src/components/integration-matrix/integration-matrix.tsx +237 -0
- package/src/components/locale-provider/messages.ts +252 -0
- package/src/components/mention-input/mention-input.tsx +1 -1
- package/src/components/menubar/menubar.stories.tsx +25 -0
- package/src/components/menubar/menubar.tsx +7 -7
- package/src/components/meter/index.ts +1 -0
- package/src/components/meter/meter.stories.tsx +102 -0
- package/src/components/meter/meter.test.tsx +61 -0
- package/src/components/meter/meter.tsx +173 -0
- package/src/components/metric-card/index.ts +6 -1
- package/src/components/metric-card/metric-card.stories.tsx +63 -0
- package/src/components/metric-card/metric-card.test.tsx +83 -0
- package/src/components/metric-card/metric-card.tsx +97 -14
- package/src/components/nav-user/nav-user.test.tsx +23 -1
- package/src/components/nav-user/nav-user.tsx +68 -53
- package/src/components/navigation-menu/navigation-menu.stories.tsx +42 -0
- package/src/components/navigation-menu/navigation-menu.tsx +1 -1
- package/src/components/page-shell/page-shell.stories.tsx +1 -1
- package/src/components/page-shell/page-shell.tsx +3 -2
- package/src/components/pagination/pagination.tsx +2 -0
- package/src/components/parallax-plane/index.ts +8 -0
- package/src/components/parallax-plane/parallax-plane.css +26 -0
- package/src/components/parallax-plane/parallax-plane.stories.tsx +88 -0
- package/src/components/parallax-plane/parallax-plane.test.tsx +57 -0
- package/src/components/parallax-plane/parallax-plane.tsx +80 -0
- package/src/components/popover/popover.tsx +1 -1
- package/src/components/progress/progress.stories.tsx +85 -0
- package/src/components/progress/progress.test.tsx +47 -0
- package/src/components/progress/progress.tsx +57 -3
- package/src/components/reveal-on-enter/index.ts +5 -0
- package/src/components/reveal-on-enter/reveal-on-enter.css +32 -0
- package/src/components/reveal-on-enter/reveal-on-enter.stories.tsx +100 -0
- package/src/components/reveal-on-enter/reveal-on-enter.test.tsx +87 -0
- package/src/components/reveal-on-enter/reveal-on-enter.tsx +75 -0
- package/src/components/revision-timeline/revision-timeline.tsx +1 -3
- package/src/components/schema-form/index.ts +2 -0
- package/src/components/schema-form/schema-form-spec.ts +36 -0
- package/src/components/schema-form/schema-form.stories.tsx +33 -0
- package/src/components/schema-form/schema-form.test.tsx +43 -0
- package/src/components/schema-form/schema-form.tsx +111 -4
- package/src/components/scroll-area/index.ts +1 -1
- package/src/components/scroll-area/scroll-area.tsx +47 -18
- package/src/components/section-header/section-header.tsx +1 -3
- package/src/components/select/select.stories.tsx +17 -0
- package/src/components/select/select.test.tsx +28 -1
- package/src/components/select/select.tsx +3 -3
- package/src/components/sheet/sheet.tsx +1 -1
- package/src/components/side-dock/side-dock.stories.tsx +83 -0
- package/src/components/side-dock/side-dock.tsx +50 -16
- package/src/components/sidebar/sidebar.stories.tsx +3 -3
- package/src/components/sidebar/sidebar.test.tsx +31 -1
- package/src/components/sidebar/sidebar.tsx +34 -7
- package/src/components/skip-link/skip-link.stories.tsx +1 -0
- package/src/components/slider/slider.stories.tsx +13 -77
- package/src/components/spec-playground/index.ts +10 -0
- package/src/components/spec-playground/locate-json-path.ts +144 -0
- package/src/components/spec-playground/spec-playground.stories.tsx +156 -0
- package/src/components/spec-playground/spec-playground.test.tsx +106 -0
- package/src/components/spec-playground/spec-playground.tsx +351 -0
- package/src/components/state-panel/state-panel.stories.tsx +4 -2
- package/src/components/state-panel/state-panel.tsx +1 -1
- package/src/components/status-badge/status-badge.stories.tsx +53 -0
- package/src/components/status-badge/status-badge.test.tsx +37 -0
- package/src/components/status-badge/status-badge.tsx +75 -13
- package/src/components/surface-tour/index.ts +11 -0
- package/src/components/surface-tour/surface-tour.stories.tsx +150 -0
- package/src/components/surface-tour/surface-tour.test.tsx +117 -0
- package/src/components/surface-tour/surface-tour.tsx +456 -0
- package/src/components/table/table.tsx +5 -2
- package/src/components/tabs/tabs.stories.tsx +47 -1
- package/src/components/tabs/tabs.test.tsx +26 -0
- package/src/components/tabs/tabs.tsx +51 -11
- package/src/components/textarea/textarea.tsx +1 -1
- package/src/components/theme-family-switch/index.ts +10 -0
- package/src/components/theme-family-switch/theme-family-switch.stories.tsx +97 -0
- package/src/components/theme-family-switch/theme-family-switch.test.tsx +85 -0
- package/src/components/theme-family-switch/theme-family-switch.tsx +166 -0
- package/src/components/theme-switcher/theme-switcher.tsx +11 -4
- package/src/components/token-spotlight/index.ts +11 -0
- package/src/components/token-spotlight/token-spotlight.css +32 -0
- package/src/components/token-spotlight/token-spotlight.stories.tsx +161 -0
- package/src/components/token-spotlight/token-spotlight.test.tsx +323 -0
- package/src/components/token-spotlight/token-spotlight.tsx +379 -0
- package/src/components/token-spotlight/token-value-format.ts +205 -0
- package/src/components/top-nav/top-nav.test.tsx +59 -0
- package/src/components/top-nav/top-nav.tsx +36 -6
- package/src/components/tree/tree.stories.tsx +1 -1
- package/src/components/tree/tree.test.tsx +4 -4
- package/src/components/tree/tree.tsx +4 -4
- package/src/components/typography/typography.stories.tsx +7 -2
- package/src/components/typography/typography.tsx +8 -0
- package/src/components/view-toolbar/view-toolbar.stories.tsx +2 -1
- package/src/components/view-toolbar/view-toolbar.tsx +2 -2
- package/src/decoration.stories.tsx +213 -2
- package/src/index.ts +46 -0
- package/src/lib/cn.test.ts +20 -0
- package/src/lib/cn.ts +32 -7
- package/src/lib/color-scale.test.ts +386 -0
- package/src/lib/color-scale.ts +628 -0
- package/src/lib/compact-number.ts +118 -28
- package/src/lib/use-scroll-progress.ts +103 -0
- package/src/motion.stories.tsx +1 -0
- package/src/templates-object-detail-hub.stories.tsx +8 -8
- package/src/templates-screen-states.stories.tsx +1 -1
- package/src/templates-settings.stories.tsx +8 -3
- package/dist/chunk-FCH4ZN6G.js +0 -57
- package/dist/chunk-FCH4ZN6G.js.map +0 -1
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
mergeRefs
|
|
4
|
+
} from "./chunk-L37QZALU.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-KBNWM27Q.js";
|
|
8
|
+
|
|
9
|
+
// src/components/tabs/tabs.tsx
|
|
10
|
+
import {
|
|
11
|
+
createContext,
|
|
12
|
+
forwardRef,
|
|
13
|
+
use,
|
|
14
|
+
useEffect,
|
|
15
|
+
useMemo,
|
|
16
|
+
useRef
|
|
17
|
+
} from "react";
|
|
18
|
+
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
19
|
+
import { cva } from "class-variance-authority";
|
|
20
|
+
import { useReducedMotion } from "@elabs-ai/components-tokens";
|
|
21
|
+
import { jsx } from "react/jsx-runtime";
|
|
22
|
+
var Tabs = TabsPrimitive.Root;
|
|
23
|
+
function scrollTriggerIntoStrip(trigger, behavior) {
|
|
24
|
+
const strip = trigger.closest('[role="tablist"]');
|
|
25
|
+
if (!strip) return;
|
|
26
|
+
if (strip.scrollWidth <= strip.clientWidth) return;
|
|
27
|
+
const { paddingLeft, paddingRight } = getComputedStyle(strip);
|
|
28
|
+
const triggerRect = trigger.getBoundingClientRect();
|
|
29
|
+
const stripRect = strip.getBoundingClientRect();
|
|
30
|
+
const visibleLeft = stripRect.left + (parseFloat(paddingLeft) || 0);
|
|
31
|
+
const visibleRight = stripRect.right - (parseFloat(paddingRight) || 0);
|
|
32
|
+
const delta = triggerRect.left < visibleLeft ? triggerRect.left - visibleLeft : triggerRect.right > visibleRight ? triggerRect.right - visibleRight : 0;
|
|
33
|
+
if (delta === 0) return;
|
|
34
|
+
const left = strip.scrollLeft + delta;
|
|
35
|
+
if (typeof strip.scrollTo === "function") strip.scrollTo({ left, behavior });
|
|
36
|
+
else strip.scrollLeft = left;
|
|
37
|
+
}
|
|
38
|
+
var TABS_UNDERLINE_LIST_OVERRIDE = "tabs-underline:flex tabs-underline:h-auto tabs-underline:w-full tabs-underline:justify-start tabs-underline:rounded-none tabs-underline:bg-transparent tabs-underline:p-0 tabs-underline:border-b tabs-underline:border-rule";
|
|
39
|
+
var TABS_UNDERLINE_TRIGGER_OVERRIDE = "tabs-underline:h-12 tabs-underline:rounded-none tabs-underline:border-b-(length:--tabs-indicator-width) tabs-underline:border-transparent tabs-underline:px-4 tabs-underline:py-0 tabs-underline:hover:text-foreground tabs-underline:focus-ring-inset tabs-underline:focus-visible:ring-offset-0 tabs-underline:data-[state=active]:bg-transparent tabs-underline:data-[state=active]:shadow-none tabs-underline:data-[state=active]:border-primary";
|
|
40
|
+
var tabsListVariants = cva(
|
|
41
|
+
"max-w-full items-center overflow-x-auto text-muted-foreground",
|
|
42
|
+
{
|
|
43
|
+
variants: {
|
|
44
|
+
variant: {
|
|
45
|
+
// Recessed pill track with a raised active segment. Also the
|
|
46
|
+
// TOKEN-DRIVEN DEFAULT's base — see `TABS_UNDERLINE_LIST_OVERRIDE`.
|
|
47
|
+
segmented: cn(
|
|
48
|
+
"inline-flex h-9 justify-center-safe rounded-lg bg-muted p-1",
|
|
49
|
+
TABS_UNDERLINE_LIST_OVERRIDE
|
|
50
|
+
),
|
|
51
|
+
// Line tabs: a transparent start-aligned row over a 1px rule; the active
|
|
52
|
+
// tab's underline sits on top of it (see `tabsTriggerVariants`).
|
|
53
|
+
underline: "flex w-full justify-start border-b border-rule"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
defaultVariants: { variant: "segmented" }
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
var tabsTriggerVariants = cva(
|
|
60
|
+
"inline-flex items-center justify-center whitespace-nowrap text-body font-control transition-colors duration-fast disabled:pointer-events-none disabled:opacity-50",
|
|
61
|
+
{
|
|
62
|
+
variants: {
|
|
63
|
+
variant: {
|
|
64
|
+
// Also the TOKEN-DRIVEN DEFAULT's base — see `TABS_UNDERLINE_TRIGGER_OVERRIDE`.
|
|
65
|
+
segmented: cn(
|
|
66
|
+
"rounded-control px-3 py-1",
|
|
67
|
+
// `ring-offset-1`, not `-2`: the compound indicator's reach is
|
|
68
|
+
// `ring-offset` + 2px ring + 1px contour, and `TabsList` is an
|
|
69
|
+
// `overflow-x-auto` strip with `p-1` (4px). At offset 2 the reach is 5px
|
|
70
|
+
// and the scroll box clips the contour on three sides (#67 fix round 2,
|
|
71
|
+
// measured on `patterns-templates-starters-object-detail-hub--default` tab stop
|
|
72
|
+
// 9); at offset 1 it is exactly 4px and the loop closes.
|
|
73
|
+
"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background",
|
|
74
|
+
"data-[state=active]:bg-surface-elevated data-[state=active]:text-foreground data-[state=active]:shadow-sm",
|
|
75
|
+
"data-[state=active]:font-tabs-active",
|
|
76
|
+
TABS_UNDERLINE_TRIGGER_OVERRIDE
|
|
77
|
+
),
|
|
78
|
+
underline: cn(
|
|
79
|
+
// The underline is a bottom BORDER inside the fixed height, transparent
|
|
80
|
+
// at rest, so activation never shifts layout. No negative margin to
|
|
81
|
+
// overlap the list's rule: the list scrolls (`overflow-x-auto`), which
|
|
82
|
+
// would clip anything hanging past its padding box. The strip has no
|
|
83
|
+
// padding for an outer ring either, so the indicator is drawn inset.
|
|
84
|
+
"h-12 rounded-none border-b-(length:--tabs-indicator-width) border-transparent px-4 hover:text-foreground",
|
|
85
|
+
"focus-ring-inset",
|
|
86
|
+
"data-[state=active]:border-primary data-[state=active]:text-foreground",
|
|
87
|
+
"data-[state=active]:font-tabs-active"
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
defaultVariants: { variant: "segmented" }
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
var TabsVariantContext = createContext(void 0);
|
|
95
|
+
var TabsList = forwardRef(
|
|
96
|
+
function TabsList2({ className, variant, ...props }, ref) {
|
|
97
|
+
const explicitVariant = variant ?? void 0;
|
|
98
|
+
const resolved = explicitVariant ?? "segmented";
|
|
99
|
+
const innerRef = useRef(null);
|
|
100
|
+
const mergedRef = useMemo(() => mergeRefs(ref, innerRef), [ref]);
|
|
101
|
+
const reducedMotion = useReducedMotion();
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
const node = innerRef.current;
|
|
104
|
+
if (!node) return;
|
|
105
|
+
const scrollActiveIntoView = () => {
|
|
106
|
+
const active = node.querySelector(
|
|
107
|
+
'[data-slot="tabs-trigger"][data-state="active"]'
|
|
108
|
+
);
|
|
109
|
+
if (active) scrollTriggerIntoStrip(active, reducedMotion ? "auto" : "smooth");
|
|
110
|
+
};
|
|
111
|
+
const activationObserver = new MutationObserver((mutations) => {
|
|
112
|
+
for (const mutation of mutations) {
|
|
113
|
+
const el = mutation.target;
|
|
114
|
+
if (el.getAttribute("data-state") === "active") {
|
|
115
|
+
scrollTriggerIntoStrip(el, reducedMotion ? "auto" : "smooth");
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
activationObserver.observe(node, {
|
|
121
|
+
subtree: true,
|
|
122
|
+
attributes: true,
|
|
123
|
+
attributeFilter: ["data-state"]
|
|
124
|
+
});
|
|
125
|
+
let resizeObserver;
|
|
126
|
+
if (typeof ResizeObserver === "function") {
|
|
127
|
+
resizeObserver = new ResizeObserver(scrollActiveIntoView);
|
|
128
|
+
resizeObserver.observe(node);
|
|
129
|
+
for (const trigger of node.querySelectorAll('[data-slot="tabs-trigger"]')) {
|
|
130
|
+
resizeObserver.observe(trigger);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const childListObserver = new MutationObserver((mutations) => {
|
|
134
|
+
if (!resizeObserver) return;
|
|
135
|
+
for (const mutation of mutations) {
|
|
136
|
+
mutation.addedNodes.forEach((added) => {
|
|
137
|
+
if (added instanceof HTMLElement && added.matches('[data-slot="tabs-trigger"]')) {
|
|
138
|
+
resizeObserver.observe(added);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
mutation.removedNodes.forEach((removed) => {
|
|
142
|
+
if (removed instanceof HTMLElement && removed.matches('[data-slot="tabs-trigger"]')) {
|
|
143
|
+
resizeObserver.unobserve(removed);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
childListObserver.observe(node, { childList: true, subtree: true });
|
|
149
|
+
return () => {
|
|
150
|
+
activationObserver.disconnect();
|
|
151
|
+
resizeObserver?.disconnect();
|
|
152
|
+
childListObserver.disconnect();
|
|
153
|
+
};
|
|
154
|
+
}, [reducedMotion]);
|
|
155
|
+
return (
|
|
156
|
+
// The normalized `explicitVariant` (undefined when unset), not
|
|
157
|
+
// `resolved` — an undefined Provider value is what lets a
|
|
158
|
+
// variant-less `TabsTrigger` also omit its own `data-variant` below.
|
|
159
|
+
/* @__PURE__ */ jsx(TabsVariantContext.Provider, { value: explicitVariant, children: /* @__PURE__ */ jsx(
|
|
160
|
+
TabsPrimitive.List,
|
|
161
|
+
{
|
|
162
|
+
ref: mergedRef,
|
|
163
|
+
"data-slot": "tabs-list",
|
|
164
|
+
"data-variant": explicitVariant,
|
|
165
|
+
className: cn(tabsListVariants({ variant: resolved }), className),
|
|
166
|
+
...props
|
|
167
|
+
}
|
|
168
|
+
) })
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
var TabsTrigger = forwardRef(function TabsTrigger2({ className, ...props }, ref) {
|
|
173
|
+
const variant = use(TabsVariantContext);
|
|
174
|
+
const resolved = variant ?? "segmented";
|
|
175
|
+
return /* @__PURE__ */ jsx(
|
|
176
|
+
TabsPrimitive.Trigger,
|
|
177
|
+
{
|
|
178
|
+
ref,
|
|
179
|
+
"data-slot": "tabs-trigger",
|
|
180
|
+
"data-variant": variant,
|
|
181
|
+
className: cn(tabsTriggerVariants({ variant: resolved }), className),
|
|
182
|
+
...props
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
});
|
|
186
|
+
var TabsContent = forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
187
|
+
return /* @__PURE__ */ jsx(
|
|
188
|
+
TabsPrimitive.Content,
|
|
189
|
+
{
|
|
190
|
+
ref,
|
|
191
|
+
className: cn(
|
|
192
|
+
"mt-2 focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
193
|
+
"data-[state=active]:animate-in data-[state=active]:fade-in-0 data-[state=active]:slide-in-from-bottom-1 data-[state=active]:[--tw-ease:var(--ease-entrance)]",
|
|
194
|
+
className
|
|
195
|
+
),
|
|
196
|
+
...props
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
export {
|
|
202
|
+
Tabs,
|
|
203
|
+
tabsListVariants,
|
|
204
|
+
tabsTriggerVariants,
|
|
205
|
+
TabsList,
|
|
206
|
+
TabsTrigger,
|
|
207
|
+
TabsContent
|
|
208
|
+
};
|
|
209
|
+
//# sourceMappingURL=chunk-HRYH7XQP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/tabs/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n forwardRef,\n use,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n} from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { useReducedMotion } from \"@elabs-ai/components-tokens\";\nimport { cn } from \"../../lib/cn\";\nimport { mergeRefs } from \"../../lib/merge-refs\";\n\nexport const Tabs = TabsPrimitive.Root;\n\n/**\n * Bring `trigger` inside the visible bounds of ITS OWN tab strip.\n *\n * Deliberately NOT `Element.scrollIntoView()`: that walks every scrollable\n * ancestor up to the document, so a Tabs sitting below the fold yanks the\n * whole PAGE (measured: `window.scrollY` 0 → 900 on a non-overflowing strip\n * under a 3000px spacer). Scrolling the strip itself is the only movement\n * this feature is entitled to make. It is also why nothing here throws under\n * jsdom, where `scrollIntoView` does not exist: the overflow gate below\n * returns first (`scrollWidth === clientWidth === 0`) and the scroll call is\n * feature-detected.\n */\nfunction scrollTriggerIntoStrip(trigger: HTMLElement, behavior: ScrollBehavior) {\n const strip = trigger.closest<HTMLElement>('[role=\"tablist\"]');\n if (!strip) return;\n // A strip that fits has nothing to scroll — keep it byte-for-byte inert.\n if (strip.scrollWidth <= strip.clientWidth) return;\n\n // Keep the strip's own padding as a gutter, so the tab lands inset (with its\n // focus ring / active shadow visible) rather than flush against the edge.\n const { paddingLeft, paddingRight } = getComputedStyle(strip);\n const triggerRect = trigger.getBoundingClientRect();\n const stripRect = strip.getBoundingClientRect();\n const visibleLeft = stripRect.left + (parseFloat(paddingLeft) || 0);\n const visibleRight = stripRect.right - (parseFloat(paddingRight) || 0);\n const delta =\n triggerRect.left < visibleLeft\n ? triggerRect.left - visibleLeft\n : triggerRect.right > visibleRight\n ? triggerRect.right - visibleRight\n : 0;\n // Nothing to do: the tab is already fully visible — typically because the\n // browser's own focus-scroll got there first on a keyboard/pointer\n // activation. That check is what keeps this from fighting the browser.\n if (delta === 0) return;\n\n // An ABSOLUTE target, not `scrollBy(delta)`: a relative scroll issued while\n // an earlier smooth scroll is still in flight accumulates against a moving\n // offset and lands short. `scrollLeft + delta` is read in the same instant\n // as the rects, so it is exact whatever the animation is doing.\n const left = strip.scrollLeft + delta;\n if (typeof strip.scrollTo === \"function\") strip.scrollTo({ left, behavior });\n else strip.scrollLeft = left;\n}\n\n/**\n * `overflow-x-auto` + `max-w-full` turn an overflowing tab strip into a\n * scroll container instead of silently clipping it — a bare `inline-flex`\n * has no bound on this element's own width, so without `max-w-full` it would\n * just grow past its parent instead of scrolling. `justify-center-safe`\n * (not `justify-center`) is required too: plain `justify-center` strands the\n * first tab off the left edge once the set overflows; `safe` falls back to\n * start-alignment on overflow while staying visually identical when the\n * strip fits (see #344).\n *\n * Token-driven default (`--tabs-variant`, default `segmented`): when the\n * caller passes NO `variant`, `TabsList`/`TabsTrigger` render with no\n * `data-variant` attribute at all — the `segmented` cva branch below, plus\n * these `tabs-underline:`-prefixed overrides, which the `tabs-underline`\n * custom variant (`themes.css`) only activates via a container style query\n * on an ancestor's `--tabs-variant`. An explicit `variant` prop always\n * renders `data-variant`, which the same custom variant's `:not([data-variant])`\n * guard excludes — so these overrides are inert on an explicit strip and its\n * own `underline` branch (below) renders unchanged. Literal strings, not\n * built via interpolation — see `badge.tsx`'s note on the same rule.\n */\nconst TABS_UNDERLINE_LIST_OVERRIDE =\n \"tabs-underline:flex tabs-underline:h-auto tabs-underline:w-full tabs-underline:justify-start tabs-underline:rounded-none tabs-underline:bg-transparent tabs-underline:p-0 tabs-underline:border-b tabs-underline:border-rule\";\n\nconst TABS_UNDERLINE_TRIGGER_OVERRIDE =\n \"tabs-underline:h-12 tabs-underline:rounded-none tabs-underline:border-b-(length:--tabs-indicator-width) tabs-underline:border-transparent tabs-underline:px-4 tabs-underline:py-0 tabs-underline:hover:text-foreground tabs-underline:focus-ring-inset tabs-underline:focus-visible:ring-offset-0 tabs-underline:data-[state=active]:bg-transparent tabs-underline:data-[state=active]:shadow-none tabs-underline:data-[state=active]:border-primary\";\n\nexport const tabsListVariants = cva(\n \"max-w-full items-center overflow-x-auto text-muted-foreground\",\n {\n variants: {\n variant: {\n // Recessed pill track with a raised active segment. Also the\n // TOKEN-DRIVEN DEFAULT's base — see `TABS_UNDERLINE_LIST_OVERRIDE`.\n segmented: cn(\n \"inline-flex h-9 justify-center-safe rounded-lg bg-muted p-1\",\n TABS_UNDERLINE_LIST_OVERRIDE,\n ),\n // Line tabs: a transparent start-aligned row over a 1px rule; the active\n // tab's underline sits on top of it (see `tabsTriggerVariants`).\n underline: \"flex w-full justify-start border-b border-rule\",\n },\n },\n defaultVariants: { variant: \"segmented\" },\n },\n);\n\nexport const tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap text-body font-control transition-colors duration-fast disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n // Also the TOKEN-DRIVEN DEFAULT's base — see `TABS_UNDERLINE_TRIGGER_OVERRIDE`.\n segmented: cn(\n \"rounded-control px-3 py-1\",\n // `ring-offset-1`, not `-2`: the compound indicator's reach is\n // `ring-offset` + 2px ring + 1px contour, and `TabsList` is an\n // `overflow-x-auto` strip with `p-1` (4px). At offset 2 the reach is 5px\n // and the scroll box clips the contour on three sides (#67 fix round 2,\n // measured on `patterns-templates-starters-object-detail-hub--default` tab stop\n // 9); at offset 1 it is exactly 4px and the loop closes.\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n \"data-[state=active]:bg-surface-elevated data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n \"data-[state=active]:font-tabs-active\",\n TABS_UNDERLINE_TRIGGER_OVERRIDE,\n ),\n underline: cn(\n // The underline is a bottom BORDER inside the fixed height, transparent\n // at rest, so activation never shifts layout. No negative margin to\n // overlap the list's rule: the list scrolls (`overflow-x-auto`), which\n // would clip anything hanging past its padding box. The strip has no\n // padding for an outer ring either, so the indicator is drawn inset.\n \"h-12 rounded-none border-b-(length:--tabs-indicator-width) border-transparent px-4 hover:text-foreground\",\n \"focus-ring-inset\",\n \"data-[state=active]:border-primary data-[state=active]:text-foreground\",\n \"data-[state=active]:font-tabs-active\",\n ),\n },\n },\n defaultVariants: { variant: \"segmented\" },\n },\n);\n\nexport type TabsVariant = NonNullable<VariantProps<typeof tabsListVariants>[\"variant\"]>;\n\n/**\n * The list owns the variant; its triggers read it, so a strip never mixes\n * two. `undefined` = the caller passed no `variant` on `TabsList` — the\n * token-driven default (`--tabs-variant`): neither the list nor its triggers\n * render a `data-variant` attribute, so the `tabs-underline:` custom\n * variant's container style query decides the look.\n */\nconst TabsVariantContext = createContext<TabsVariant | undefined>(undefined);\n\nexport interface TabsListProps\n extends\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {}\n\nexport const TabsList = forwardRef<ElementRef<typeof TabsPrimitive.List>, TabsListProps>(\n function TabsList({ className, variant, ...props }, ref) {\n // cva's `VariantProps` types `variant` as possibly `null` (an explicit\n // opt-out); normalize it to `undefined` so it matches `TabsVariant |\n // undefined` — same DOM/CSS effect either way (no `data-variant`).\n const explicitVariant = variant ?? undefined;\n const resolved = explicitVariant ?? \"segmented\";\n const innerRef = useRef<HTMLDivElement | null>(null);\n const mergedRef = useMemo(() => mergeRefs(ref, innerRef), [ref]);\n // Honours the in-app tri-state motion preference on `ThemeProvider` as well\n // as the OS setting, and degrades to OS-only outside a provider.\n const reducedMotion = useReducedMotion();\n\n // Keep the tab that BECOMES active inside the strip's visible bounds.\n //\n // ONE set of observers per LIST, not one per trigger (#387 perf finding:\n // N triggers used to mean N independent `MutationObserver`s (each\n // watching only its own node) plus N independent `ResizeObserver`s (each\n // ALSO watching this same shared strip) — a resize of a 20-tab strip fired\n // 20 redundant callbacks. Watching the list's subtree in one callback\n // gets the same behaviour for the cost of one.\n //\n // Watching attributes rather than reacting to a render is still\n // load-bearing: Radix flips `data-state` on the trigger it renders, and\n // only ITS OWN context consumer re-renders — this component does not, so\n // a render-driven effect would never observe an activation at all\n // (measured: 8 effect runs for 8 triggers at mount, zero on any later\n // activation). A MutationObserver fires on a genuine inactive → active\n // TRANSITION and never at mount, which is what stops a freshly-mounted\n // Tabs from scrolling anything (#344 shipped a version that scrolled the\n // page 900px on every mount).\n useEffect(() => {\n const node = innerRef.current;\n if (!node) return;\n\n const scrollActiveIntoView = () => {\n const active = node.querySelector<HTMLElement>(\n '[data-slot=\"tabs-trigger\"][data-state=\"active\"]',\n );\n if (active) scrollTriggerIntoStrip(active, reducedMotion ? \"auto\" : \"smooth\");\n };\n\n const activationObserver = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const el = mutation.target as HTMLElement;\n if (el.getAttribute(\"data-state\") === \"active\") {\n scrollTriggerIntoStrip(el, reducedMotion ? \"auto\" : \"smooth\");\n break;\n }\n }\n });\n activationObserver.observe(node, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"data-state\"],\n });\n\n // A relayout AFTER the scroll invalidates the target it was computed\n // from: a webfont swapping in on a cold load (measured — a\n // mono-everything theme's wider mono face left the last tab 45px\n // outside the strip), or the strip itself being resized. One\n // `ResizeObserver` instance covers both — it watches the strip AND\n // every trigger inside it, not a second instance per trigger.\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver === \"function\") {\n resizeObserver = new ResizeObserver(scrollActiveIntoView);\n resizeObserver.observe(node);\n for (const trigger of node.querySelectorAll<HTMLElement>('[data-slot=\"tabs-trigger\"]')) {\n resizeObserver.observe(trigger);\n }\n }\n\n // A dynamic tab list can add/remove triggers later — keep the single\n // `ResizeObserver`'s target set in sync instead of spinning up a new\n // observer per trigger mount.\n const childListObserver = new MutationObserver((mutations) => {\n if (!resizeObserver) return;\n for (const mutation of mutations) {\n mutation.addedNodes.forEach((added) => {\n if (added instanceof HTMLElement && added.matches('[data-slot=\"tabs-trigger\"]')) {\n resizeObserver!.observe(added);\n }\n });\n mutation.removedNodes.forEach((removed) => {\n if (removed instanceof HTMLElement && removed.matches('[data-slot=\"tabs-trigger\"]')) {\n resizeObserver!.unobserve(removed);\n }\n });\n }\n });\n childListObserver.observe(node, { childList: true, subtree: true });\n\n return () => {\n activationObserver.disconnect();\n resizeObserver?.disconnect();\n childListObserver.disconnect();\n };\n }, [reducedMotion]);\n\n return (\n // The normalized `explicitVariant` (undefined when unset), not\n // `resolved` — an undefined Provider value is what lets a\n // variant-less `TabsTrigger` also omit its own `data-variant` below.\n <TabsVariantContext.Provider value={explicitVariant}>\n <TabsPrimitive.List\n ref={mergedRef}\n data-slot=\"tabs-list\"\n data-variant={explicitVariant}\n className={cn(tabsListVariants({ variant: resolved }), className)}\n {...props}\n />\n </TabsVariantContext.Provider>\n );\n },\n);\n\nexport const TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n const variant = use(TabsVariantContext);\n const resolved = variant ?? \"segmented\";\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n data-slot=\"tabs-trigger\"\n data-variant={variant}\n className={cn(tabsTriggerVariants({ variant: resolved }), className)}\n {...props}\n />\n );\n});\n\nexport const TabsContent = forwardRef<\n ElementRef<typeof TabsPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"data-[state=active]:animate-in data-[state=active]:fade-in-0 data-[state=active]:slide-in-from-bottom-1 data-[state=active]:[--tw-ease:var(--ease-entrance)]\",\n className,\n )}\n {...props}\n />\n );\n});\n"],"mappings":"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","names":["TabsList","TabsTrigger","TabsContent"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
toggleVariants
|
|
4
|
+
} from "./chunk-RM5JIUVW.js";
|
|
5
|
+
import {
|
|
6
|
+
buttonVariants
|
|
7
|
+
} from "./chunk-VA2OONPE.js";
|
|
8
|
+
import {
|
|
9
|
+
cn
|
|
10
|
+
} from "./chunk-KBNWM27Q.js";
|
|
11
|
+
|
|
12
|
+
// src/components/toolbar/toolbar.tsx
|
|
13
|
+
import * as ToolbarPrimitive from "@radix-ui/react-toolbar";
|
|
14
|
+
import { cva } from "class-variance-authority";
|
|
15
|
+
import { forwardRef } from "react";
|
|
16
|
+
import { jsx } from "react/jsx-runtime";
|
|
17
|
+
var toolbarVariants = cva("flex items-center gap-1", {
|
|
18
|
+
variants: {
|
|
19
|
+
orientation: {
|
|
20
|
+
horizontal: "flex-row",
|
|
21
|
+
// Radix already writes `aria-orientation`; this only lays it out.
|
|
22
|
+
vertical: "h-full flex-col"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: { orientation: "horizontal" }
|
|
26
|
+
});
|
|
27
|
+
var Toolbar = forwardRef(
|
|
28
|
+
function Toolbar2({ className, orientation, ...props }, ref) {
|
|
29
|
+
return /* @__PURE__ */ jsx(
|
|
30
|
+
ToolbarPrimitive.Root,
|
|
31
|
+
{
|
|
32
|
+
ref,
|
|
33
|
+
"data-slot": "toolbar",
|
|
34
|
+
orientation: orientation ?? "horizontal",
|
|
35
|
+
className: cn(toolbarVariants({ orientation }), className),
|
|
36
|
+
...props
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
var ToolbarButton = forwardRef(function ToolbarButton2({ className, variant = "ghost", size = "sm", ...props }, ref) {
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
ToolbarPrimitive.Button,
|
|
44
|
+
{
|
|
45
|
+
ref,
|
|
46
|
+
"data-slot": "toolbar-button",
|
|
47
|
+
className: cn(buttonVariants({ variant, size }), className),
|
|
48
|
+
...props
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
var ToolbarSeparator = forwardRef(function ToolbarSeparator2({ className, ...props }, ref) {
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
ToolbarPrimitive.Separator,
|
|
55
|
+
{
|
|
56
|
+
ref,
|
|
57
|
+
"data-slot": "toolbar-separator",
|
|
58
|
+
className: cn(
|
|
59
|
+
"bg-border-strong mx-1 shrink-0",
|
|
60
|
+
"data-[orientation=horizontal]:h-5 data-[orientation=horizontal]:w-px",
|
|
61
|
+
"data-[orientation=vertical]:h-px data-[orientation=vertical]:w-5",
|
|
62
|
+
className
|
|
63
|
+
),
|
|
64
|
+
...props
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
});
|
|
68
|
+
var ToolbarToggleGroup = forwardRef(function ToolbarToggleGroup2({ className, ...props }, ref) {
|
|
69
|
+
return /* @__PURE__ */ jsx(
|
|
70
|
+
ToolbarPrimitive.ToggleGroup,
|
|
71
|
+
{
|
|
72
|
+
ref,
|
|
73
|
+
"data-slot": "toolbar-toggle-group",
|
|
74
|
+
className: cn("flex items-center gap-1", className),
|
|
75
|
+
...props
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
var ToolbarToggleItem = forwardRef(function ToolbarToggleItem2({ className, size = "sm", ...props }, ref) {
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
ToolbarPrimitive.ToggleItem,
|
|
82
|
+
{
|
|
83
|
+
ref,
|
|
84
|
+
"data-slot": "toolbar-toggle-item",
|
|
85
|
+
className: cn(toggleVariants({ size }), className),
|
|
86
|
+
...props
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
});
|
|
90
|
+
var ToolbarSlot = ToolbarPrimitive.Button;
|
|
91
|
+
|
|
92
|
+
export {
|
|
93
|
+
toolbarVariants,
|
|
94
|
+
Toolbar,
|
|
95
|
+
ToolbarButton,
|
|
96
|
+
ToolbarSeparator,
|
|
97
|
+
ToolbarToggleGroup,
|
|
98
|
+
ToolbarToggleItem,
|
|
99
|
+
ToolbarSlot
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=chunk-HVFYAQLK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/toolbar/toolbar.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Toolbar — the ONE row that genuinely claims `role=\"toolbar\"`.\n *\n * The role is a promise: a toolbar is a SINGLE tab stop, and the arrow keys move\n * between its controls (WAI-ARIA APG). Four rows in this repo claim the role\n * without implementing that, which is worse than not claiming it — a screen\n * reader tells the user to press the arrow keys and nothing happens. This\n * component delegates the roving tabindex to `@radix-ui/react-toolbar` so the\n * promise is kept, and exists so no one has to hand-roll it again.\n *\n * When NOT to use it. A row of ordinary controls above a list or table is a\n * `ViewToolbar` — that component deliberately does not claim the role, because\n * every control there is an ordinary tab stop and readers expect Tab, not\n * arrows. Reach for `Toolbar` when the row is DENSE and SECONDARY to the content\n * it acts on (a document's page/zoom controls, a formatting bar): collapsing a\n * dozen controls into one tab stop is what makes the content reachable again.\n *\n * Anatomy — a shell plus three composable parts. There is no `actions` prop and\n * no items array: a toolbar's layout is the caller's, so groups are arranged\n * with ordinary flex utilities and `ToolbarSeparator` between them.\n */\n\nimport * as ToolbarPrimitive from \"@radix-ui/react-toolbar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { buttonVariants } from \"../button\";\nimport { toggleVariants } from \"../toggle\";\n\n/* -------------------------------------------------------------------------- */\n/* Root */\n/* -------------------------------------------------------------------------- */\n\nexport const toolbarVariants = cva(\"flex items-center gap-1\", {\n variants: {\n orientation: {\n horizontal: \"flex-row\",\n // Radix already writes `aria-orientation`; this only lays it out.\n vertical: \"h-full flex-col\",\n },\n },\n defaultVariants: { orientation: \"horizontal\" },\n});\n\nexport interface ToolbarProps\n extends\n Omit<ComponentPropsWithoutRef<typeof ToolbarPrimitive.Root>, \"orientation\">,\n VariantProps<typeof toolbarVariants> {\n /**\n * What this toolbar acts on (\"Document\", \"Formatting\"). A toolbar is one tab\n * stop with several controls inside it, so without a name a screen-reader\n * user lands on an anonymous group — hence required, not optional.\n */\n \"aria-label\": string;\n}\n\n/**\n * The row shell. Renders no surface of its own: a toolbar sits ON something\n * (a card header, a document frame) and inherits that surface, so painting a\n * background here would double the fill wherever it is placed.\n */\nexport const Toolbar = forwardRef<ElementRef<typeof ToolbarPrimitive.Root>, ToolbarProps>(\n function Toolbar({ className, orientation, ...props }, ref) {\n return (\n <ToolbarPrimitive.Root\n ref={ref}\n data-slot=\"toolbar\"\n orientation={orientation ?? \"horizontal\"}\n className={cn(toolbarVariants({ orientation }), className)}\n {...props}\n />\n );\n },\n);\n\n/* -------------------------------------------------------------------------- */\n/* Parts */\n/* -------------------------------------------------------------------------- */\n\nexport interface ToolbarButtonProps\n extends\n ComponentPropsWithoutRef<typeof ToolbarPrimitive.Button>,\n Pick<VariantProps<typeof buttonVariants>, \"variant\" | \"size\"> {}\n\n/**\n * A control inside the toolbar. Styled with `buttonVariants` — the same ink,\n * heights and focus ring as every other button in the system, not a parallel\n * set. Icon-only controls take `size=\"icon-sm\"` and MUST carry an `aria-label`;\n * wrap in a `Tooltip` when the glyph needs a name on screen too.\n */\nexport const ToolbarButton = forwardRef<\n ElementRef<typeof ToolbarPrimitive.Button>,\n ToolbarButtonProps\n>(function ToolbarButton({ className, variant = \"ghost\", size = \"sm\", ...props }, ref) {\n return (\n <ToolbarPrimitive.Button\n ref={ref}\n data-slot=\"toolbar-button\"\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n );\n});\n\nexport type ToolbarSeparatorProps = ComponentPropsWithoutRef<typeof ToolbarPrimitive.Separator>;\n\n/**\n * The divider between two groups of controls. It is the ONLY cue between two\n * same-fill regions of the row, so it takes the strong rung (WCAG 1.4.11,\n * ADR 0010) — `Separator`'s subtle default would be a decorative hairline here.\n */\nexport const ToolbarSeparator = forwardRef<\n ElementRef<typeof ToolbarPrimitive.Separator>,\n ToolbarSeparatorProps\n>(function ToolbarSeparator({ className, ...props }, ref) {\n return (\n <ToolbarPrimitive.Separator\n ref={ref}\n data-slot=\"toolbar-separator\"\n className={cn(\n \"bg-border-strong mx-1 shrink-0\",\n \"data-[orientation=horizontal]:h-5 data-[orientation=horizontal]:w-px\",\n \"data-[orientation=vertical]:h-px data-[orientation=vertical]:w-5\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport type ToolbarToggleGroupProps = ComponentPropsWithoutRef<typeof ToolbarPrimitive.ToggleGroup>;\n\n/** A set of mutually-exclusive or multi-select toggles (a view switcher, bold/italic). */\nexport const ToolbarToggleGroup = forwardRef<\n ElementRef<typeof ToolbarPrimitive.ToggleGroup>,\n ToolbarToggleGroupProps\n>(function ToolbarToggleGroup({ className, ...props }, ref) {\n return (\n <ToolbarPrimitive.ToggleGroup\n ref={ref}\n data-slot=\"toolbar-toggle-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n});\n\nexport interface ToolbarToggleItemProps\n extends\n ComponentPropsWithoutRef<typeof ToolbarPrimitive.ToggleItem>,\n Pick<VariantProps<typeof toggleVariants>, \"size\"> {}\n\n/** One toggle. Shares `Toggle`'s pressed styling, so state reads the same everywhere. */\nexport const ToolbarToggleItem = forwardRef<\n ElementRef<typeof ToolbarPrimitive.ToggleItem>,\n ToolbarToggleItemProps\n>(function ToolbarToggleItem({ className, size = \"sm\", ...props }, ref) {\n return (\n <ToolbarPrimitive.ToggleItem\n ref={ref}\n data-slot=\"toolbar-toggle-item\"\n className={cn(toggleVariants({ size }), className)}\n {...props}\n />\n );\n});\n\n/**\n * An escape hatch for anything the parts above do not cover — a `Select`, an\n * input, a `DropdownMenu` trigger. `asChild` hands the roving-tabindex wiring to\n * whatever you render, so the control stays part of the arrow-key sequence\n * instead of becoming a second tab stop inside a single-tab-stop row.\n */\nexport const ToolbarSlot = ToolbarPrimitive.Button;\n"],"mappings":";;;;;;;;;;;;AAwBA,YAAY,sBAAsB;AAClC,SAAS,WAA8B;AACvC,SAAS,kBAAkE;AAyCrE;AA/BC,IAAM,kBAAkB,IAAI,2BAA2B;AAAA,EAC5D,UAAU;AAAA,IACR,aAAa;AAAA,MACX,YAAY;AAAA;AAAA,MAEZ,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,aAAa,aAAa;AAC/C,CAAC;AAmBM,IAAM,UAAU;AAAA,EACrB,SAASA,SAAQ,EAAE,WAAW,aAAa,GAAG,MAAM,GAAG,KAAK;AAC1D,WACE;AAAA,MAAkB;AAAA,MAAjB;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,aAAa,eAAe;AAAA,QAC5B,WAAW,GAAG,gBAAgB,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,QACxD,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAiBO,IAAM,gBAAgB,WAG3B,SAASC,eAAc,EAAE,WAAW,UAAU,SAAS,OAAO,MAAM,GAAG,MAAM,GAAG,KAAK;AACrF,SACE;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AASM,IAAM,mBAAmB,WAG9B,SAASC,kBAAiB,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACxD,SACE;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAKM,IAAM,qBAAqB,WAGhC,SAASC,oBAAmB,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC1D,SACE;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAQM,IAAM,oBAAoB,WAG/B,SAASC,mBAAkB,EAAE,WAAW,OAAO,MAAM,GAAG,MAAM,GAAG,KAAK;AACtE,SACE;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,MAChD,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAQM,IAAM,cAA+B;","names":["Toolbar","ToolbarButton","ToolbarSeparator","ToolbarToggleGroup","ToolbarToggleItem"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Input
|
|
4
|
+
} from "./chunk-XYACSO57.js";
|
|
5
|
+
import {
|
|
6
|
+
useLocale
|
|
7
|
+
} from "./chunk-EJQYE4MY.js";
|
|
8
|
+
import {
|
|
9
|
+
Button
|
|
10
|
+
} from "./chunk-VA2OONPE.js";
|
|
11
|
+
import {
|
|
12
|
+
cn
|
|
13
|
+
} from "./chunk-KBNWM27Q.js";
|
|
14
|
+
|
|
15
|
+
// src/components/key-value-editor/key-value-editor.tsx
|
|
16
|
+
import {
|
|
17
|
+
forwardRef,
|
|
18
|
+
useCallback,
|
|
19
|
+
useMemo,
|
|
20
|
+
useState
|
|
21
|
+
} from "react";
|
|
22
|
+
import { Eye, EyeOff, Plus, X } from "lucide-react";
|
|
23
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
24
|
+
var KeyValueEditor = forwardRef(
|
|
25
|
+
function KeyValueEditor2({
|
|
26
|
+
value: valueProp,
|
|
27
|
+
defaultValue,
|
|
28
|
+
onValueChange,
|
|
29
|
+
keyPlaceholder,
|
|
30
|
+
valuePlaceholder,
|
|
31
|
+
addLabel,
|
|
32
|
+
disabled,
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}, ref) {
|
|
36
|
+
const { t } = useLocale();
|
|
37
|
+
const isControlled = valueProp !== void 0;
|
|
38
|
+
const [internalRows, setInternalRows] = useState(defaultValue ?? []);
|
|
39
|
+
const rows = useMemo(
|
|
40
|
+
() => isControlled ? valueProp ?? [] : internalRows,
|
|
41
|
+
[isControlled, valueProp, internalRows]
|
|
42
|
+
);
|
|
43
|
+
const [revealed, setRevealed] = useState(() => /* @__PURE__ */ new Map());
|
|
44
|
+
const isRevealed = useCallback(
|
|
45
|
+
(index, row) => revealed.get(index) === row.value,
|
|
46
|
+
[revealed]
|
|
47
|
+
);
|
|
48
|
+
const commit = useCallback(
|
|
49
|
+
(next) => {
|
|
50
|
+
if (!isControlled) setInternalRows(next);
|
|
51
|
+
onValueChange?.(next);
|
|
52
|
+
},
|
|
53
|
+
[isControlled, onValueChange]
|
|
54
|
+
);
|
|
55
|
+
const addRow = useCallback(() => {
|
|
56
|
+
commit([...rows, { key: "", value: "", secret: false }]);
|
|
57
|
+
}, [rows, commit]);
|
|
58
|
+
const updateRow = useCallback(
|
|
59
|
+
(index, patch) => {
|
|
60
|
+
commit(rows.map((row, i) => i === index ? { ...row, ...patch } : row));
|
|
61
|
+
if (patch.value !== void 0) {
|
|
62
|
+
const nextValue = patch.value;
|
|
63
|
+
setRevealed((prev) => {
|
|
64
|
+
if (prev.get(index) !== rows[index]?.value) return prev;
|
|
65
|
+
const next = new Map(prev);
|
|
66
|
+
next.set(index, nextValue);
|
|
67
|
+
return next;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
[rows, commit]
|
|
72
|
+
);
|
|
73
|
+
const removeRow = useCallback(
|
|
74
|
+
(index) => {
|
|
75
|
+
commit(rows.filter((_, i) => i !== index));
|
|
76
|
+
setRevealed((prev) => {
|
|
77
|
+
const next = /* @__PURE__ */ new Map();
|
|
78
|
+
for (const [i, stamp] of prev) {
|
|
79
|
+
if (i === index) continue;
|
|
80
|
+
next.set(i > index ? i - 1 : i, stamp);
|
|
81
|
+
}
|
|
82
|
+
return next;
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
[rows, commit]
|
|
86
|
+
);
|
|
87
|
+
const toggleReveal = useCallback((index, row) => {
|
|
88
|
+
setRevealed((prev) => {
|
|
89
|
+
const next = new Map(prev);
|
|
90
|
+
if (next.get(index) === row.value) next.delete(index);
|
|
91
|
+
else next.set(index, row.value);
|
|
92
|
+
return next;
|
|
93
|
+
});
|
|
94
|
+
}, []);
|
|
95
|
+
return /* @__PURE__ */ jsxs(
|
|
96
|
+
"div",
|
|
97
|
+
{
|
|
98
|
+
ref,
|
|
99
|
+
"data-slot": "key-value-editor",
|
|
100
|
+
className: cn("flex flex-col gap-2", className),
|
|
101
|
+
...props,
|
|
102
|
+
children: [
|
|
103
|
+
rows.length === 0 ? /* @__PURE__ */ jsx("p", { "data-slot": "key-value-editor-empty", className: "text-body text-muted-foreground", children: t("ui.keyValueEditor.empty") }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: rows.map((row, index) => {
|
|
104
|
+
const isSecret = row.secret === true;
|
|
105
|
+
const rowRevealed = isRevealed(index, row);
|
|
106
|
+
const masked = isSecret && !rowRevealed;
|
|
107
|
+
return /* @__PURE__ */ jsxs(
|
|
108
|
+
"div",
|
|
109
|
+
{
|
|
110
|
+
"data-slot": "key-value-editor-row",
|
|
111
|
+
className: "flex items-center gap-1",
|
|
112
|
+
children: [
|
|
113
|
+
/* @__PURE__ */ jsx(
|
|
114
|
+
Input,
|
|
115
|
+
{
|
|
116
|
+
"data-slot": "key-value-editor-key",
|
|
117
|
+
value: row.key,
|
|
118
|
+
placeholder: keyPlaceholder,
|
|
119
|
+
disabled,
|
|
120
|
+
"aria-label": t("ui.keyValueEditor.keyLabel", { n: index + 1 }),
|
|
121
|
+
onChange: (event) => updateRow(index, { key: event.target.value }),
|
|
122
|
+
autoComplete: "off",
|
|
123
|
+
spellCheck: false,
|
|
124
|
+
className: "flex-1"
|
|
125
|
+
}
|
|
126
|
+
),
|
|
127
|
+
/* @__PURE__ */ jsx(
|
|
128
|
+
Input,
|
|
129
|
+
{
|
|
130
|
+
"data-slot": "key-value-editor-value",
|
|
131
|
+
type: masked ? "password" : "text",
|
|
132
|
+
value: row.value,
|
|
133
|
+
placeholder: valuePlaceholder,
|
|
134
|
+
disabled,
|
|
135
|
+
"aria-label": t("ui.keyValueEditor.valueLabel", { n: index + 1 }),
|
|
136
|
+
onChange: (event) => updateRow(index, { value: event.target.value }),
|
|
137
|
+
autoComplete: "off",
|
|
138
|
+
spellCheck: false,
|
|
139
|
+
className: "flex-1"
|
|
140
|
+
}
|
|
141
|
+
),
|
|
142
|
+
isSecret && /* @__PURE__ */ jsx(
|
|
143
|
+
Button,
|
|
144
|
+
{
|
|
145
|
+
"data-slot": "key-value-editor-reveal",
|
|
146
|
+
type: "button",
|
|
147
|
+
variant: "ghost",
|
|
148
|
+
size: "icon-sm",
|
|
149
|
+
disabled,
|
|
150
|
+
"aria-label": t(
|
|
151
|
+
rowRevealed ? "ui.keyValueEditor.hide" : "ui.keyValueEditor.reveal",
|
|
152
|
+
{ n: index + 1 }
|
|
153
|
+
),
|
|
154
|
+
onClick: () => toggleReveal(index, row),
|
|
155
|
+
children: rowRevealed ? /* @__PURE__ */ jsx(EyeOff, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(Eye, { "aria-hidden": "true" })
|
|
156
|
+
}
|
|
157
|
+
),
|
|
158
|
+
/* @__PURE__ */ jsx(
|
|
159
|
+
Button,
|
|
160
|
+
{
|
|
161
|
+
"data-slot": "key-value-editor-remove",
|
|
162
|
+
type: "button",
|
|
163
|
+
variant: "ghost",
|
|
164
|
+
size: "icon-sm",
|
|
165
|
+
disabled,
|
|
166
|
+
"aria-label": t("ui.keyValueEditor.removeRow", { n: index + 1 }),
|
|
167
|
+
onClick: () => removeRow(index),
|
|
168
|
+
children: /* @__PURE__ */ jsx(X, { "aria-hidden": "true" })
|
|
169
|
+
}
|
|
170
|
+
)
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
index
|
|
174
|
+
);
|
|
175
|
+
}) }),
|
|
176
|
+
/* @__PURE__ */ jsxs(
|
|
177
|
+
Button,
|
|
178
|
+
{
|
|
179
|
+
"data-slot": "key-value-editor-add",
|
|
180
|
+
type: "button",
|
|
181
|
+
variant: "outline-subtle",
|
|
182
|
+
size: "sm",
|
|
183
|
+
disabled,
|
|
184
|
+
onClick: addRow,
|
|
185
|
+
className: "self-start",
|
|
186
|
+
children: [
|
|
187
|
+
/* @__PURE__ */ jsx(Plus, { "aria-hidden": "true" }),
|
|
188
|
+
addLabel ?? t("ui.keyValueEditor.addRow")
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
)
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
export {
|
|
199
|
+
KeyValueEditor
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=chunk-IGP5E4FC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/key-value-editor/key-value-editor.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useCallback,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { Eye, EyeOff, Plus, X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../button\";\nimport { Input } from \"../input\";\nimport { useLocale } from \"../locale-provider\";\n\nexport interface KeyValueRow {\n key: string;\n value: string;\n /**\n * Marks this row's value as sensitive: it renders masked (`type=\"password\"`)\n * with a reveal toggle, and is never surfaced in plain text via any\n * `title`/`aria-label`/`aria-valuetext`. Defaults to false (a plain,\n * unmasked key/value pair) — the consumer opts a row in explicitly.\n */\n secret?: boolean;\n}\n\nexport interface KeyValueEditorProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /**\n * Controlled, ORDERED rows. An ordered `{ key, value, secret? }[]` is used\n * instead of `Record<string,string>` because a plain record can't\n * represent an in-progress duplicate key or preserve row order while the\n * user is mid-edit — both happen constantly while typing an env-var map.\n */\n value?: KeyValueRow[];\n /** Uncontrolled initial rows. */\n defaultValue?: KeyValueRow[];\n /** Called when the rows change (add, remove, or edit). */\n onValueChange?: (rows: KeyValueRow[]) => void;\n /** Placeholder for each row's key field. */\n keyPlaceholder?: string;\n /** Placeholder for each row's value field. */\n valuePlaceholder?: string;\n /** Label for the \"add row\" control. */\n addLabel?: ReactNode;\n /** Disables the whole editor. */\n disabled?: boolean;\n}\n\n/**\n * KeyValueEditor — key/value rows with per-row secret masking.\n *\n * Composes the existing `Input` + `Button` (icon vocabulary matches\n * `packages/ai/src/environment-variables.tsx`'s `Eye`/`EyeOff` reveal icons\n * for conceptual consistency, though this component lives in\n * `@elabs-ai/components-ui` — an EDITABLE settings-form primitive\n * is app UI, not the read-only agent tool-output display that\n * `EnvironmentVariables` is).\n *\n * A masked row uses the native `type=\"password\"` input (the correct\n * primitive for an EDITABLE masked field — unlike a read-only display, the\n * value must stay typable, and native masking is what keeps it that way\n * without hand-rolling bullet substitution). The reveal toggle's\n * `aria-label` never contains the secret text itself, and no `title`\n * attribute is ever set from row content.\n *\n * Controlled via `value`/`onValueChange`; uncontrolled via `defaultValue`.\n */\nexport const KeyValueEditor = forwardRef<HTMLDivElement, KeyValueEditorProps>(\n function KeyValueEditor(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n keyPlaceholder,\n valuePlaceholder,\n addLabel,\n disabled,\n className,\n ...props\n },\n ref,\n ) {\n const { t } = useLocale();\n const isControlled = valueProp !== undefined;\n const [internalRows, setInternalRows] = useState<KeyValueRow[]>(defaultValue ?? []);\n const rows = useMemo(\n () => (isControlled ? (valueProp ?? []) : internalRows),\n [isControlled, valueProp, internalRows],\n );\n // Reveal state is keyed by row index AND stamped with the exact value the\n // user chose to reveal. The index alone is NOT safe: the row list can be\n // re-ordered, prepended to, filtered, or left unchanged (a controlled\n // parent that rejects a removal) entirely OUTSIDE this component, and a\n // bare index would then point at a DIFFERENT row — unmasking a secret the\n // user never asked to see. Comparing the stamp against the row's current\n // value makes the check FAIL CLOSED: any row whose value is not exactly\n // the one that was revealed renders masked again.\n const [revealed, setRevealed] = useState<Map<number, string>>(() => new Map());\n\n const isRevealed = useCallback(\n (index: number, row: KeyValueRow) => revealed.get(index) === row.value,\n [revealed],\n );\n\n const commit = useCallback(\n (next: KeyValueRow[]) => {\n if (!isControlled) setInternalRows(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const addRow = useCallback(() => {\n commit([...rows, { key: \"\", value: \"\", secret: false }]);\n }, [rows, commit]);\n\n const updateRow = useCallback(\n (index: number, patch: Partial<KeyValueRow>) => {\n commit(rows.map((row, i) => (i === index ? { ...row, ...patch } : row)));\n // Typing into a row the user deliberately revealed must not re-mask it\n // mid-keystroke — re-stamp the snapshot with the new value, but ONLY\n // when the old stamp still matched (i.e. it really was revealed).\n if (patch.value !== undefined) {\n const nextValue = patch.value;\n setRevealed((prev) => {\n if (prev.get(index) !== rows[index]?.value) return prev;\n const next = new Map(prev);\n next.set(index, nextValue);\n return next;\n });\n }\n },\n [rows, commit],\n );\n\n const removeRow = useCallback(\n (index: number) => {\n commit(rows.filter((_, i) => i !== index));\n // Re-index revealed state so a shifted row never inherits a stale\n // reveal — dropping the removed index and shifting later ones down.\n // The value stamp above is the second line of defence: if the parent\n // rejects or rewrites the removal, the shifted stamps stop matching\n // and every row falls back to masked.\n setRevealed((prev) => {\n const next = new Map<number, string>();\n for (const [i, stamp] of prev) {\n if (i === index) continue;\n next.set(i > index ? i - 1 : i, stamp);\n }\n return next;\n });\n },\n [rows, commit],\n );\n\n const toggleReveal = useCallback((index: number, row: KeyValueRow) => {\n setRevealed((prev) => {\n const next = new Map(prev);\n if (next.get(index) === row.value) next.delete(index);\n else next.set(index, row.value);\n return next;\n });\n }, []);\n\n return (\n <div\n ref={ref}\n data-slot=\"key-value-editor\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n >\n {rows.length === 0 ? (\n <p data-slot=\"key-value-editor-empty\" className=\"text-body text-muted-foreground\">\n {t(\"ui.keyValueEditor.empty\")}\n </p>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {rows.map((row, index) => {\n const isSecret = row.secret === true;\n const rowRevealed = isRevealed(index, row);\n const masked = isSecret && !rowRevealed;\n return (\n <div\n key={index}\n data-slot=\"key-value-editor-row\"\n className=\"flex items-center gap-1\"\n >\n <Input\n data-slot=\"key-value-editor-key\"\n value={row.key}\n placeholder={keyPlaceholder}\n disabled={disabled}\n aria-label={t(\"ui.keyValueEditor.keyLabel\", { n: index + 1 })}\n onChange={(event) => updateRow(index, { key: event.target.value })}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1\"\n />\n <Input\n data-slot=\"key-value-editor-value\"\n type={masked ? \"password\" : \"text\"}\n value={row.value}\n placeholder={valuePlaceholder}\n disabled={disabled}\n aria-label={t(\"ui.keyValueEditor.valueLabel\", { n: index + 1 })}\n onChange={(event) => updateRow(index, { value: event.target.value })}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1\"\n />\n {isSecret && (\n <Button\n data-slot=\"key-value-editor-reveal\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled}\n aria-label={t(\n rowRevealed ? \"ui.keyValueEditor.hide\" : \"ui.keyValueEditor.reveal\",\n { n: index + 1 },\n )}\n onClick={() => toggleReveal(index, row)}\n >\n {rowRevealed ? <EyeOff aria-hidden=\"true\" /> : <Eye aria-hidden=\"true\" />}\n </Button>\n )}\n <Button\n data-slot=\"key-value-editor-remove\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled}\n aria-label={t(\"ui.keyValueEditor.removeRow\", { n: index + 1 })}\n onClick={() => removeRow(index)}\n >\n <X aria-hidden=\"true\" />\n </Button>\n </div>\n );\n })}\n </div>\n )}\n <Button\n data-slot=\"key-value-editor-add\"\n type=\"button\"\n variant=\"outline-subtle\"\n size=\"sm\"\n disabled={disabled}\n onClick={addRow}\n className=\"self-start\"\n >\n <Plus aria-hidden=\"true\" />\n {addLabel ?? t(\"ui.keyValueEditor.addRow\")}\n </Button>\n </div>\n );\n },\n);\n"],"mappings":"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","names":["KeyValueEditor"]}
|