@elabs-ai/components-ui 4.2.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-2DFB4YTK.js +55 -0
- package/dist/chunk-2DFB4YTK.js.map +1 -0
- package/dist/chunk-2SBYBN45.js +2 -0
- package/dist/chunk-2SBYBN45.js.map +1 -0
- package/dist/chunk-2ZMPAD6C.js +357 -0
- package/dist/chunk-2ZMPAD6C.js.map +1 -0
- package/dist/chunk-36SY7TID.js +36 -0
- package/dist/chunk-36SY7TID.js.map +1 -0
- package/dist/chunk-36VULFFV.js +2 -0
- package/dist/chunk-36VULFFV.js.map +1 -0
- package/dist/chunk-3BZBNDRP.js +123 -0
- package/dist/chunk-3BZBNDRP.js.map +1 -0
- package/dist/chunk-3DJ4KY3U.js +82 -0
- package/dist/chunk-3DJ4KY3U.js.map +1 -0
- package/dist/chunk-3EDNWHWD.js +125 -0
- package/dist/chunk-3EDNWHWD.js.map +1 -0
- package/dist/chunk-3JAEQNCB.js +60 -0
- package/dist/chunk-3JAEQNCB.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-3ZR5PMKB.js +41 -0
- package/dist/chunk-3ZR5PMKB.js.map +1 -0
- package/dist/chunk-45ICJ3EV.js +2 -0
- package/dist/chunk-45ICJ3EV.js.map +1 -0
- package/dist/chunk-47YSHR3H.js +77 -0
- package/dist/chunk-47YSHR3H.js.map +1 -0
- package/dist/chunk-4ACT7RLU.js +2 -0
- package/dist/chunk-4ACT7RLU.js.map +1 -0
- package/dist/chunk-4B2E4OCZ.js +44 -0
- package/dist/chunk-4B2E4OCZ.js.map +1 -0
- package/dist/chunk-4C4D6T5M.js +229 -0
- package/dist/chunk-4C4D6T5M.js.map +1 -0
- package/dist/chunk-4DWIMWR5.js +726 -0
- package/dist/chunk-4DWIMWR5.js.map +1 -0
- package/dist/chunk-4DZGAY6R.js +140 -0
- package/dist/chunk-4DZGAY6R.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-4NSCLIES.js +126 -0
- package/dist/chunk-4NSCLIES.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-4VCU3GFI.js +23 -0
- package/dist/chunk-4VCU3GFI.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-545HI223.js +2 -0
- package/dist/chunk-545HI223.js.map +1 -0
- package/dist/chunk-55BM2IU2.js +186 -0
- package/dist/chunk-55BM2IU2.js.map +1 -0
- package/dist/chunk-5C5W52O2.js +27 -0
- package/dist/chunk-5C5W52O2.js.map +1 -0
- package/dist/chunk-5G2DDMHR.js +2 -0
- package/dist/chunk-5G2DDMHR.js.map +1 -0
- package/dist/chunk-5LCN5Q2L.js +23 -0
- package/dist/chunk-5LCN5Q2L.js.map +1 -0
- package/dist/chunk-5MXQ5CP7.js +93 -0
- package/dist/chunk-5MXQ5CP7.js.map +1 -0
- package/dist/chunk-5P4BSHIG.js +2 -0
- package/dist/chunk-5P4BSHIG.js.map +1 -0
- package/dist/chunk-5SHHIQVA.js +22 -0
- package/dist/chunk-5SHHIQVA.js.map +1 -0
- package/dist/chunk-5YZLOAKR.js +2 -0
- package/dist/chunk-5YZLOAKR.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-6HTZBBTC.js +35 -0
- package/dist/chunk-6HTZBBTC.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-72H7HUTH.js +161 -0
- package/dist/chunk-72H7HUTH.js.map +1 -0
- package/dist/chunk-7KV7H2TW.js +323 -0
- package/dist/chunk-7KV7H2TW.js.map +1 -0
- package/dist/chunk-7WIHVGYL.js +2 -0
- package/dist/chunk-7WIHVGYL.js.map +1 -0
- package/dist/chunk-7Z2RAGOA.js +90 -0
- package/dist/chunk-7Z2RAGOA.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-AE6LFFME.js +201 -0
- package/dist/chunk-AE6LFFME.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-ALNJV4XB.js +218 -0
- package/dist/chunk-ALNJV4XB.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-AXHMQOIZ.js +116 -0
- package/dist/chunk-AXHMQOIZ.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-B3DANITU.js +85 -0
- package/dist/chunk-B3DANITU.js.map +1 -0
- package/dist/chunk-B7FAQKHH.js +87 -0
- package/dist/chunk-B7FAQKHH.js.map +1 -0
- package/dist/chunk-BDOG4YSM.js +989 -0
- package/dist/chunk-BDOG4YSM.js.map +1 -0
- package/dist/chunk-BRL2HMZJ.js +110 -0
- package/dist/chunk-BRL2HMZJ.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-BYFRDLDL.js +246 -0
- package/dist/chunk-BYFRDLDL.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-C2ICCCP5.js +400 -0
- package/dist/chunk-C2ICCCP5.js.map +1 -0
- package/dist/chunk-C5QBV5RE.js +77 -0
- package/dist/chunk-C5QBV5RE.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-CDMJSXCB.js +62 -0
- package/dist/chunk-CDMJSXCB.js.map +1 -0
- package/dist/chunk-CEDK5GM2.js +68 -0
- package/dist/chunk-CEDK5GM2.js.map +1 -0
- package/dist/chunk-CEHCVDYR.js +476 -0
- package/dist/chunk-CEHCVDYR.js.map +1 -0
- package/dist/chunk-CEQ3YKHR.js +35 -0
- package/dist/chunk-CEQ3YKHR.js.map +1 -0
- package/dist/chunk-CEQER4CV.js +2 -0
- package/dist/chunk-CEQER4CV.js.map +1 -0
- package/dist/chunk-CMP4F537.js +190 -0
- package/dist/chunk-CMP4F537.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-CY5ISPFB.js +235 -0
- package/dist/chunk-CY5ISPFB.js.map +1 -0
- package/dist/chunk-CY624JOL.js +2 -0
- package/dist/chunk-CY624JOL.js.map +1 -0
- package/dist/chunk-D53EN4Q6.js +2 -0
- package/dist/chunk-D53EN4Q6.js.map +1 -0
- package/dist/chunk-D5INX2EF.js +50 -0
- package/dist/chunk-D5INX2EF.js.map +1 -0
- package/dist/chunk-DCHYNTHI.js +11 -0
- package/dist/chunk-DCHYNTHI.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-DU6ITAJL.js +2 -0
- package/dist/chunk-DU6ITAJL.js.map +1 -0
- package/dist/chunk-DXC3DTCV.js +256 -0
- package/dist/chunk-DXC3DTCV.js.map +1 -0
- package/dist/chunk-DXDLTYTT.js +2 -0
- package/dist/chunk-DXDLTYTT.js.map +1 -0
- package/dist/chunk-E3GNYOLS.js +26 -0
- package/dist/chunk-E3GNYOLS.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-EBNPVPR7.js +266 -0
- package/dist/chunk-EBNPVPR7.js.map +1 -0
- package/dist/chunk-EDE73Q6Z.js +2 -0
- package/dist/chunk-EDE73Q6Z.js.map +1 -0
- package/dist/chunk-EJ3XWNY3.js +52 -0
- package/dist/chunk-EJ3XWNY3.js.map +1 -0
- package/dist/chunk-EJQYE4MY.js +100 -0
- package/dist/chunk-EJQYE4MY.js.map +1 -0
- package/dist/chunk-ENL3CCZB.js +385 -0
- package/dist/chunk-ENL3CCZB.js.map +1 -0
- package/dist/chunk-EP3U7OQ3.js +18 -0
- package/dist/chunk-EP3U7OQ3.js.map +1 -0
- package/dist/chunk-ERTYAID6.js +101 -0
- package/dist/chunk-ERTYAID6.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-FG3PDWE3.js +31 -0
- package/dist/chunk-FG3PDWE3.js.map +1 -0
- package/dist/chunk-FHDJKH2A.js +2 -0
- package/dist/chunk-FHDJKH2A.js.map +1 -0
- package/dist/chunk-FLCQKC64.js +97 -0
- package/dist/chunk-FLCQKC64.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-FXC64HLD.js +137 -0
- package/dist/chunk-FXC64HLD.js.map +1 -0
- package/dist/chunk-FXWWDMMP.js +55 -0
- package/dist/chunk-FXWWDMMP.js.map +1 -0
- package/dist/chunk-FZEG2R3E.js +30 -0
- package/dist/chunk-FZEG2R3E.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-GMXSCEYN.js +24 -0
- package/dist/chunk-GMXSCEYN.js.map +1 -0
- package/dist/chunk-GTBVTLZJ.js +54 -0
- package/dist/chunk-GTBVTLZJ.js.map +1 -0
- package/dist/chunk-GTDCC4YX.js +197 -0
- package/dist/chunk-GTDCC4YX.js.map +1 -0
- package/dist/chunk-GV6GQXKX.js +176 -0
- package/dist/chunk-GV6GQXKX.js.map +1 -0
- package/dist/chunk-GWHO5ACE.js +637 -0
- package/dist/chunk-GWHO5ACE.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-HF6BGFUV.js +78 -0
- package/dist/chunk-HF6BGFUV.js.map +1 -0
- package/dist/chunk-HHVULJGX.js +2 -0
- package/dist/chunk-HHVULJGX.js.map +1 -0
- package/dist/chunk-HHZJALGA.js +163 -0
- package/dist/chunk-HHZJALGA.js.map +1 -0
- package/dist/chunk-HLMFRCFE.js +2 -0
- package/dist/chunk-HLMFRCFE.js.map +1 -0
- package/dist/chunk-HND6FAMX.js +75 -0
- package/dist/chunk-HND6FAMX.js.map +1 -0
- package/dist/chunk-HNLYRHAU.js +74 -0
- package/dist/chunk-HNLYRHAU.js.map +1 -0
- package/dist/chunk-HPUPDT4Q.js +2 -0
- package/dist/chunk-HPUPDT4Q.js.map +1 -0
- package/dist/chunk-HUIYDDDL.js +189 -0
- package/dist/chunk-HUIYDDDL.js.map +1 -0
- package/dist/chunk-HWVU636Q.js +787 -0
- package/dist/chunk-HWVU636Q.js.map +1 -0
- package/dist/chunk-HXQ4MDCH.js +296 -0
- package/dist/chunk-HXQ4MDCH.js.map +1 -0
- package/dist/chunk-HZPNST7D.js +2 -0
- package/dist/chunk-HZPNST7D.js.map +1 -0
- package/dist/chunk-I3U52BDH.js +36 -0
- package/dist/chunk-I3U52BDH.js.map +1 -0
- package/dist/chunk-I6O6ACCH.js +2 -0
- package/dist/chunk-I6O6ACCH.js.map +1 -0
- package/dist/chunk-IE5GWE72.js +177 -0
- package/dist/chunk-IE5GWE72.js.map +1 -0
- package/dist/chunk-IIY5JRNW.js +93 -0
- package/dist/chunk-IIY5JRNW.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-IUQ474IC.js +2 -0
- package/dist/chunk-IUQ474IC.js.map +1 -0
- package/dist/chunk-IVEDMK5U.js +61 -0
- package/dist/chunk-IVEDMK5U.js.map +1 -0
- package/dist/chunk-IY23F2Y5.js +2 -0
- package/dist/chunk-IY23F2Y5.js.map +1 -0
- package/dist/chunk-JCRBDA66.js +2 -0
- package/dist/chunk-JCRBDA66.js.map +1 -0
- package/dist/chunk-JTY3REOB.js +76 -0
- package/dist/chunk-JTY3REOB.js.map +1 -0
- package/dist/chunk-JVCIAEFT.js +68 -0
- package/dist/chunk-JVCIAEFT.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-K4V2ELUZ.js +36 -0
- package/dist/chunk-K4V2ELUZ.js.map +1 -0
- package/dist/chunk-KAAJL2HA.js +327 -0
- package/dist/chunk-KAAJL2HA.js.map +1 -0
- package/dist/chunk-KBWHHAI3.js +246 -0
- package/dist/chunk-KBWHHAI3.js.map +1 -0
- package/dist/chunk-KK2TIWTF.js +54 -0
- package/dist/chunk-KK2TIWTF.js.map +1 -0
- package/dist/chunk-KPZFLTZ2.js +61 -0
- package/dist/chunk-KPZFLTZ2.js.map +1 -0
- package/dist/chunk-KRVSD4OK.js +2 -0
- package/dist/chunk-KRVSD4OK.js.map +1 -0
- package/dist/chunk-KXYL3CUS.js +74 -0
- package/dist/chunk-KXYL3CUS.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-L5O2O67Y.js +164 -0
- package/dist/chunk-L5O2O67Y.js.map +1 -0
- package/dist/chunk-L66VJIRD.js +2 -0
- package/dist/chunk-L66VJIRD.js.map +1 -0
- package/dist/chunk-L6A3RXCU.js +140 -0
- package/dist/chunk-L6A3RXCU.js.map +1 -0
- package/dist/chunk-LDOCY4SU.js +68 -0
- package/dist/chunk-LDOCY4SU.js.map +1 -0
- package/dist/chunk-LG33MONJ.js +74 -0
- package/dist/chunk-LG33MONJ.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-LLYLDZXC.js +54 -0
- package/dist/chunk-LLYLDZXC.js.map +1 -0
- package/dist/chunk-LMV225AS.js +39 -0
- package/dist/chunk-LMV225AS.js.map +1 -0
- package/dist/chunk-LSYVAOSH.js +2 -0
- package/dist/chunk-LSYVAOSH.js.map +1 -0
- package/dist/chunk-LYVBDMDQ.js +2 -0
- package/dist/chunk-LYVBDMDQ.js.map +1 -0
- package/dist/chunk-M2KNQZUL.js +73 -0
- package/dist/chunk-M2KNQZUL.js.map +1 -0
- package/dist/chunk-M3WSUFD4.js +2 -0
- package/dist/chunk-M3WSUFD4.js.map +1 -0
- package/dist/chunk-M5WPZXBA.js +118 -0
- package/dist/chunk-M5WPZXBA.js.map +1 -0
- package/dist/chunk-MDQYRES4.js +796 -0
- package/dist/chunk-MDQYRES4.js.map +1 -0
- package/dist/chunk-MIXCXZWT.js +2 -0
- package/dist/chunk-MIXCXZWT.js.map +1 -0
- package/dist/chunk-MJAIURHO.js +56 -0
- package/dist/chunk-MJAIURHO.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-MRBDJASL.js +97 -0
- package/dist/chunk-MRBDJASL.js.map +1 -0
- package/dist/chunk-MRWOHWEH.js +2 -0
- package/dist/chunk-MRWOHWEH.js.map +1 -0
- package/dist/chunk-MY5H6D5Y.js +245 -0
- package/dist/chunk-MY5H6D5Y.js.map +1 -0
- package/dist/chunk-MZDL7N52.js +2 -0
- package/dist/chunk-MZDL7N52.js.map +1 -0
- package/dist/chunk-N7PJTMRL.js +2 -0
- package/dist/chunk-N7PJTMRL.js.map +1 -0
- package/dist/chunk-NMGNXW3J.js +98 -0
- package/dist/chunk-NMGNXW3J.js.map +1 -0
- package/dist/chunk-NRNIUM75.js +2 -0
- package/dist/chunk-NRNIUM75.js.map +1 -0
- package/dist/chunk-NRPZ3BH4.js +85 -0
- package/dist/chunk-NRPZ3BH4.js.map +1 -0
- package/dist/chunk-NXCOVGDU.js +100 -0
- package/dist/chunk-NXCOVGDU.js.map +1 -0
- package/dist/chunk-NZUKZRT7.js +201 -0
- package/dist/chunk-NZUKZRT7.js.map +1 -0
- package/dist/chunk-O3JWMB6O.js +20 -0
- package/dist/chunk-O3JWMB6O.js.map +1 -0
- package/dist/chunk-O6V65J5J.js +81 -0
- package/dist/chunk-O6V65J5J.js.map +1 -0
- package/dist/chunk-OEPN373X.js +2 -0
- package/dist/chunk-OEPN373X.js.map +1 -0
- package/dist/chunk-OGTILHKP.js +355 -0
- package/dist/chunk-OGTILHKP.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-OKY7ACZK.js +31 -0
- package/dist/chunk-OKY7ACZK.js.map +1 -0
- package/dist/chunk-ON2E7XHD.js +51 -0
- package/dist/chunk-ON2E7XHD.js.map +1 -0
- package/dist/chunk-OPBSVEMX.js +192 -0
- package/dist/chunk-OPBSVEMX.js.map +1 -0
- package/dist/chunk-OR4NVFPH.js +2 -0
- package/dist/chunk-OR4NVFPH.js.map +1 -0
- package/dist/chunk-OYKS7YHE.js +2 -0
- package/dist/chunk-OYKS7YHE.js.map +1 -0
- package/dist/chunk-PGKQZBLZ.js +55 -0
- package/dist/chunk-PGKQZBLZ.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-PQZD5W3E.js +170 -0
- package/dist/chunk-PQZD5W3E.js.map +1 -0
- package/dist/chunk-PSBNQZB4.js +2 -0
- package/dist/chunk-PSBNQZB4.js.map +1 -0
- package/dist/chunk-PSXUEWUS.js +87 -0
- package/dist/chunk-PSXUEWUS.js.map +1 -0
- package/dist/chunk-PT5P4AAU.js +128 -0
- package/dist/chunk-PT5P4AAU.js.map +1 -0
- package/dist/chunk-PUACHQRH.js +31 -0
- package/dist/chunk-PUACHQRH.js.map +1 -0
- package/dist/chunk-QDJHUNBQ.js +2 -0
- package/dist/chunk-QDJHUNBQ.js.map +1 -0
- package/dist/chunk-QF6UWWDY.js +125 -0
- package/dist/chunk-QF6UWWDY.js.map +1 -0
- package/dist/chunk-QKZX5HDY.js +209 -0
- package/dist/chunk-QKZX5HDY.js.map +1 -0
- package/dist/chunk-QLM3KTAQ.js +100 -0
- package/dist/chunk-QLM3KTAQ.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-R27VUCWR.js +140 -0
- package/dist/chunk-R27VUCWR.js.map +1 -0
- package/dist/chunk-R5JYMCEA.js +2 -0
- package/dist/chunk-R5JYMCEA.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-RFTC5UVB.js +126 -0
- package/dist/chunk-RFTC5UVB.js.map +1 -0
- package/dist/chunk-RHVYRQN4.js +201 -0
- package/dist/chunk-RHVYRQN4.js.map +1 -0
- package/dist/chunk-RHXVQZOW.js +2 -0
- package/dist/chunk-RHXVQZOW.js.map +1 -0
- package/dist/chunk-RIYDAMSQ.js +25 -0
- package/dist/chunk-RIYDAMSQ.js.map +1 -0
- package/dist/chunk-RMSMTLXH.js +2 -0
- package/dist/chunk-RMSMTLXH.js.map +1 -0
- package/dist/chunk-RRYWMYGI.js +14 -0
- package/dist/chunk-RRYWMYGI.js.map +1 -0
- package/dist/chunk-RTHCX2TG.js +59 -0
- package/dist/chunk-RTHCX2TG.js.map +1 -0
- package/dist/chunk-RYPK72YP.js +395 -0
- package/dist/chunk-RYPK72YP.js.map +1 -0
- package/dist/chunk-SCCBEFVK.js +187 -0
- package/dist/chunk-SCCBEFVK.js.map +1 -0
- package/dist/chunk-SEGTBIR4.js +110 -0
- package/dist/chunk-SEGTBIR4.js.map +1 -0
- package/dist/chunk-SGBCLZQF.js +38 -0
- package/dist/chunk-SGBCLZQF.js.map +1 -0
- package/dist/chunk-SLDJYJEG.js +133 -0
- package/dist/chunk-SLDJYJEG.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-SSQG36MH.js +226 -0
- package/dist/chunk-SSQG36MH.js.map +1 -0
- package/dist/chunk-SWQCCR6Q.js +140 -0
- package/dist/chunk-SWQCCR6Q.js.map +1 -0
- package/dist/chunk-T2XEMEN2.js +2 -0
- package/dist/chunk-T2XEMEN2.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-TNOANK34.js +4483 -0
- package/dist/chunk-TNOANK34.js.map +1 -0
- package/dist/chunk-U5BZXNHW.js +80 -0
- package/dist/chunk-U5BZXNHW.js.map +1 -0
- package/dist/chunk-U756JCDK.js +27 -0
- package/dist/chunk-U756JCDK.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-UG2T7LMX.js +198 -0
- package/dist/chunk-UG2T7LMX.js.map +1 -0
- package/dist/chunk-UG5TKXTK.js +2 -0
- package/dist/chunk-UG5TKXTK.js.map +1 -0
- package/dist/chunk-UPGIQXUY.js +24 -0
- package/dist/chunk-UPGIQXUY.js.map +1 -0
- package/dist/chunk-UQPW7INX.js +91 -0
- package/dist/chunk-UQPW7INX.js.map +1 -0
- package/dist/chunk-UQRYTMR7.js +2 -0
- package/dist/chunk-UQRYTMR7.js.map +1 -0
- package/dist/chunk-USI4LB3N.js +2 -0
- package/dist/chunk-USI4LB3N.js.map +1 -0
- package/dist/chunk-UUSOIPM2.js +69 -0
- package/dist/chunk-UUSOIPM2.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-V5QCJHDA.js +173 -0
- package/dist/chunk-V5QCJHDA.js.map +1 -0
- package/dist/chunk-V6U75PIG.js +147 -0
- package/dist/chunk-V6U75PIG.js.map +1 -0
- package/dist/chunk-VC4GKLZL.js +111 -0
- package/dist/chunk-VC4GKLZL.js.map +1 -0
- package/dist/chunk-VFS52GGI.js +2 -0
- package/dist/chunk-VFS52GGI.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-W26KFY35.js +32 -0
- package/dist/chunk-W26KFY35.js.map +1 -0
- package/dist/chunk-W35X6J5P.js +232 -0
- package/dist/chunk-W35X6J5P.js.map +1 -0
- package/dist/chunk-W7I2X6VI.js +2 -0
- package/dist/chunk-W7I2X6VI.js.map +1 -0
- package/dist/chunk-W7OIVERI.js +31 -0
- package/dist/chunk-W7OIVERI.js.map +1 -0
- package/dist/chunk-WEEVXQIM.js +45 -0
- package/dist/chunk-WEEVXQIM.js.map +1 -0
- package/dist/chunk-WEM6XJ7Z.js +75 -0
- package/dist/chunk-WEM6XJ7Z.js.map +1 -0
- package/dist/chunk-WKNOKJA3.js +42 -0
- package/dist/chunk-WKNOKJA3.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-WYENWW3Y.js +2 -0
- package/dist/chunk-WYENWW3Y.js.map +1 -0
- package/dist/chunk-X4FE7UKP.js +2 -0
- package/dist/chunk-X4FE7UKP.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-XYFEQHEM.js +2 -0
- package/dist/chunk-XYFEQHEM.js.map +1 -0
- package/dist/chunk-Y33ZFTMR.js +163 -0
- package/dist/chunk-Y33ZFTMR.js.map +1 -0
- package/dist/chunk-YA2QGLUL.js +32 -0
- package/dist/chunk-YA2QGLUL.js.map +1 -0
- package/dist/chunk-YCFOFNQF.js +28 -0
- package/dist/chunk-YCFOFNQF.js.map +1 -0
- package/dist/chunk-YFGFNFVW.js +59 -0
- package/dist/chunk-YFGFNFVW.js.map +1 -0
- package/dist/chunk-YFKKMDJL.js +35 -0
- package/dist/chunk-YFKKMDJL.js.map +1 -0
- package/dist/chunk-YHVXYOL6.js +80 -0
- package/dist/chunk-YHVXYOL6.js.map +1 -0
- package/dist/chunk-YIFB24WW.js +37 -0
- package/dist/chunk-YIFB24WW.js.map +1 -0
- package/dist/chunk-YK4H7VWM.js +2 -0
- package/dist/chunk-YK4H7VWM.js.map +1 -0
- package/dist/chunk-YMFEBGTU.js +2 -0
- package/dist/chunk-YMFEBGTU.js.map +1 -0
- package/dist/chunk-YUFDC6RW.js +55 -0
- package/dist/chunk-YUFDC6RW.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-ZALGMUSW.js +236 -0
- package/dist/chunk-ZALGMUSW.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-ZFMM2NLA.js +169 -0
- package/dist/chunk-ZFMM2NLA.js.map +1 -0
- package/dist/chunk-ZI2OXD6L.js +244 -0
- package/dist/chunk-ZI2OXD6L.js.map +1 -0
- package/dist/chunk-ZRMF4YAS.js +158 -0
- package/dist/chunk-ZRMF4YAS.js.map +1 -0
- package/dist/chunk-ZSYT5H6U.js +178 -0
- package/dist/chunk-ZSYT5H6U.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/drafting-marks/drafting-marks.js +14 -0
- package/dist/components/drafting-marks/drafting-marks.js.map +1 -0
- package/dist/components/drafting-marks/index.js +15 -0
- package/dist/components/drafting-marks/index.js.map +1 -0
- package/dist/components/drawer/drawer.js +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 +1312 -119
- package/dist/index.js +1002 -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 +30 -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 +13 -6
- 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/drafting-marks/drafting-marks.stories.tsx +88 -0
- package/src/components/drafting-marks/drafting-marks.test.tsx +55 -0
- package/src/components/drafting-marks/drafting-marks.tsx +120 -0
- package/src/components/drafting-marks/index.ts +7 -0
- package/src/components/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.stories.tsx +23 -0
- package/src/components/section-header/section-header.tsx +27 -9
- 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 +40 -8
- 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 +243 -2
- package/src/index.ts +47 -0
- package/src/lib/cn.test.ts +49 -0
- package/src/lib/cn.ts +39 -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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/sidebar/sidebar.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentProps,\n type CSSProperties,\n} from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { useIsMobile } from \"../../lib/use-mobile\";\nimport { Button } from \"../button\";\nimport { useCollapsiblePanel, type CollapsiblePanelContainerPosition } from \"../collapsible-panel\";\nimport { Input } from \"../input\";\nimport { useLocale } from \"../locale-provider\";\nimport { Separator } from \"../separator\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet\";\nimport { Skeleton } from \"../skeleton\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n const context = useContext(SidebarContext);\n if (!context) throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n return context;\n}\n\nexport const SidebarProvider = forwardRef<\n HTMLDivElement,\n ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /**\n * Drives the frame's inset treatment from an ANCESTOR the whole frame can\n * see — `SidebarInset` (#342 fix) reads it as `data-variant` on this\n * wrapper via `group-data-[variant=inset]/sidebar-wrapper:`, which reaches\n * regardless of DOM order (unlike the legacy `peer-*` combinator, which\n * only matches a Sidebar that comes AFTER). Optional and unset by\n * default, so an existing caller that only sets `variant` on `Sidebar`\n * is unaffected.\n */\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n /**\n * Default `\"app\"` — today's behaviour, byte-identical. `\"nested\"` is for\n * a `SidebarProvider` a compound component (e.g. `ContextRail`, ADR 0035\n * §4) mounts internally so `useSidebar()` reports ITS OWN state to its\n * own parts: it still provides `SidebarContext` and the two\n * `--sidebar-width*` custom properties (which survive `display:\n * contents`), but renders no frame box, no `data-slot`/`data-variant`/\n * `data-state`, registers no global `⌘B`/`Ctrl+B` listener, and writes no\n * `sidebar_state` cookie — so a nested rail can never be mistaken for a\n * second app frame. See the emission table in ADR 0035 §4.\n */\n frame?: \"app\" | \"nested\";\n }\n>(function SidebarProvider(\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n variant,\n frame = \"app\",\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const isNested = frame === \"nested\";\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) setOpenProp(openState);\n else _setOpen(openState);\n // A nested provider (ADR 0035 §4) is not the app frame, so it must not\n // persist ITS state as if it were — only `frame=\"app\"` (the default)\n // owns the `sidebar_state` cookie.\n if (!isNested && typeof document !== \"undefined\") {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n }\n },\n [setOpenProp, open, isNested],\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile((o) => !o) : setOpen((o) => !o);\n }, [isMobile, setOpen]);\n\n // `toggleSidebar` is a NEW function on every `open` change (it closes over\n // `setOpen`, which itself closes over `open`) — a `useEffect` depending on\n // it directly would tear down and re-add the global `keydown` listener on\n // every single toggle. A ref holding the latest callback keeps the listener\n // registration stable across toggles; only `isNested` (which never changes\n // after mount) re-runs the effect.\n const toggleSidebarRef = useRef(toggleSidebar);\n useEffect(() => {\n toggleSidebarRef.current = toggleSidebar;\n }, [toggleSidebar]);\n\n useEffect(() => {\n // Same reasoning as the cookie write above: the global keyboard shortcut\n // belongs to the ONE app frame, not to every nested provider a compound\n // component happens to mount.\n if (isNested) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebarRef.current();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isNested]);\n\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n ref={ref}\n // `data-slot`/`data-variant`/`data-state`/`group/sidebar-wrapper`\n // (in the class list below) are ADR 0035 §8 refinement 3's\n // `frame=\"app\"` surface. `frame=\"nested\"` (ADR 0035 §4, Task 9A)\n // omits all four: a nested rail's own state must never drive the\n // outer frame's geometry through the same group name or be mistaken\n // for a second \"sidebar wrapper\" by a selector/test targeting the\n // slot. The literal string \"sidebar-wrapper\" stays below (as a\n // conditional value) so `pnpm data-slot:check` still sees this\n // module's declaration.\n data-slot={isNested ? undefined : \"sidebar-wrapper\"}\n data-variant={isNested ? undefined : variant}\n data-state={isNested ? undefined : state}\n style={\n {\n // These two custom properties are the ONE thing a nested\n // provider still emits (ADR 0035 §4) — they survive `display:\n // contents` because custom properties inherit down the DOM\n // tree regardless of the box an element generates, which is\n // exactly how a nested rail publishes its width to whatever it\n // wraps. Never move them onto a child.\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n className={cn(\n // The wrapper spans the WHOLE app frame — chrome AND content — so its\n // ink is the ordinary page ink, not the chrome's. `Sidebar` (desktop\n // and mobile) sets `text-sidebar-foreground` on itself, so the chrome\n // is covered without painting chrome ink onto the canvas. Putting the\n // chrome ink here was invisible only while a theme happened to give\n // `--sidebar` and `--background` the same polarity: a theme with dark\n // chrome under a light canvas rendered near-white text on the canvas\n // for every element that inherits its colour (outline Buttons, list\n // rows). See the chrome<canvas elevation invariant in\n // .claude/rules/styling-and-tokens.md.\n // Omitted under `frame=\"nested\"` — a nested provider is a pure\n // context + custom-property carrier, not a second frame box.\n !isNested && \"group/sidebar-wrapper flex min-h-svh w-full text-foreground\",\n // The frame's OWN `variant` is authoritative once set (ADR 0035 §8\n // refinement 4): resolved in JS, not by a CSS descendant match, so\n // a nested rail three levels down that happens to render\n // `variant=\"inset\"` can never repaint THIS frame's ground merely\n // because `:has()` is depth-unlimited. `has-data-[variant=inset]`\n // stays as the fallback ONLY while this provider's own `variant`\n // is unset, which is exactly every existing caller (this prop\n // didn't exist before #342) — so they render exactly as today.\n // Also omitted under `frame=\"nested\"`, same reasoning as above.\n !isNested &&\n (variant === undefined\n ? \"has-data-[variant=inset]:bg-sidebar\"\n : variant === \"inset\" && \"bg-sidebar\"),\n // `frame=\"nested\"` renders no box of its own: `display: contents`\n // (the literal Tailwind class, never an inline style or a\n // concatenated name) removes this element from layout while\n // keeping its children — and the custom properties above —\n // reachable.\n isNested && \"contents\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n});\n\nexport const Sidebar = forwardRef<\n HTMLDivElement,\n ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n /**\n * Where the rail's container pins itself. Default `\"viewport\"` (`fixed` to the window\n * edge — today's behaviour, byte-identical). `\"inset\"` pins to the rail's own place in\n * the layout instead (`absolute` against a `relative` wrapper this component provides),\n * for a whole app frame rendered INSIDE a box — a preview pane, a docs page, a\n * dashboard tile — where a `fixed` rail would escape to the window. Same seam as\n * `SideDock`'s `containerPosition`. No effect on the mobile `Sheet` or on\n * `collapsible=\"none\"`.\n */\n containerPosition?: CollapsiblePanelContainerPosition;\n }\n>(function Sidebar(\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n containerPosition = \"viewport\",\n className,\n children,\n ...props\n },\n ref,\n) {\n const { isMobile, openMobile, setOpenMobile, open, setOpen } = useSidebar();\n const { t } = useLocale();\n\n // The collapse mechanism (gap spacer + fixed slide) is the canonical\n // useCollapsiblePanel hook (#190, research 09 §B.2) — Sidebar passes its\n // literal width/collapse/slide utilities (Tailwind scans THIS file for\n // them) and gets back its original class fragments byte-identically.\n const panel = useCollapsiblePanel({\n side,\n open,\n onOpenChange: setOpen,\n containerPosition,\n widthClassName: \"w-(--sidebar-width)\",\n spacerCollapsedClassName: \"group-data-[collapsible=offcanvas]:w-0\",\n containerSlideClassNames: {\n left: \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\",\n right: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n },\n });\n\n if (collapsible === \"none\") {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar\"\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n side={side}\n className=\"w-[var(--sidebar-width)] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={{ \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE } as CSSProperties}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>{t(\"ui.sidebar.title\")}</SheetTitle>\n <SheetDescription>{t(\"ui.sidebar.mobileDescription\")}</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"group peer hidden text-sidebar-foreground md:block\",\n // The `absolute` container needs a positioned ancestor of the rail's own height.\n containerPosition === \"inset\" && \"relative h-full\",\n )}\n data-state={panel.attrs[\"data-state\"]}\n data-collapsible={panel.state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={panel.attrs[\"data-side\"]}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n panel.spacerClassName,\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n panel.containerClassName,\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : // `border-sidebar-border`, not the inherited canvas `--border`:\n // this edge is CHROME, so it takes the chrome edge token — the\n // same one the `floating` variant's inner surface and\n // `SidebarSeparator` already use. Left to the canvas token it was\n // a near-white hairline (light: L 0.88), invisible against the\n // page but a bright line as soon as the rail sits on a\n // `bg-sidebar` ground — which is exactly what an `inset` frame\n // puts behind it, measured at the dashboard shell's right-hand\n // `ContextRail`.\n \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) border-sidebar-border group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n});\n\nexport const SidebarTrigger = forwardRef<HTMLButtonElement, ComponentProps<typeof Button>>(\n function SidebarTrigger({ className, onClick, ...props }, ref) {\n const { t } = useLocale();\n const { isMobile, open, openMobile, toggleSidebar } = useSidebar();\n // `toggleSidebar` flips `openMobile` below the mobile breakpoint and `open`\n // above it, so the state this button EXPOSES has to be read the same way —\n // reporting the desktop `open` on a mobile viewport would announce the\n // opposite of what the button does.\n const expanded = isMobile ? openMobile : open;\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n // A disclosure control must EXPOSE the state it toggles (WCAG 4.1.2).\n // This button's whole accessible name is the static \"Toggle Sidebar\"\n // below, so without this attribute nothing tells a screen-reader user\n // whether the rail is currently open — and no axe rule catches it,\n // because a <button> has no REQUIRED expanded state.\n //\n // `aria-controls` is deliberately omitted, not forgotten: on mobile the\n // sidebar renders into a `Sheet` that is not in the document while\n // closed, so the attribute would point at an absent id — worse than\n // leaving it off. Spread last, so a caller that really does own a\n // stable target can still supply both.\n aria-expanded={expanded}\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">{t(\"ui.sidebar.toggle\")}</span>\n </Button>\n );\n },\n);\n\nexport const SidebarRail = forwardRef<HTMLButtonElement, ComponentProps<\"button\">>(\n function SidebarRail({ className, ...props }, ref) {\n const { t } = useLocale();\n const { toggleSidebar } = useSidebar();\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label={t(\"ui.sidebar.toggle\")}\n tabIndex={-1}\n onClick={toggleSidebar}\n title={t(\"ui.sidebar.toggle\")}\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\n/**\n * Which sides of the floating \"inset\" surface get a gutter, once an ancestor\n * drives the treatment (`SidebarProvider variant=\"inset\"`, or the legacy\n * immediately-preceding `Sidebar variant=\"inset\"`).\n *\n * - `\"auto\"` (default) — today's rule, unchanged: a gutter on every side\n * except the leading edge (`m-2 ms-0`, because the classic layout puts the\n * sidebar there), plus the leading edge's gutter returns (`ms-2`) once that\n * sidebar collapses and its own gap closes.\n * - `\"none\"` — no gutter margin (the unconditional radius/shadow below still\n * apply).\n * - An object — pick sides explicitly. `{ start: true, bottom: true }` is the\n * \"flush rail\" geometry: a leading + bottom gutter only, no top, no\n * trailing, because the trailing edge sits flush against a rail — a tab\n * must touch the page it belongs to.\n *\n * PRECEDENCE (fix round 1, #342): a caller composing BOTH mechanisms at once\n * — `SidebarProvider variant=\"inset\"` AND a LEFT `Sidebar variant=\"inset\"`,\n * the shape a left-hand shell (e.g. the sidebar-02 rebuild) uses — never hits\n * a class-order race, because the ancestor-scoped and legacy peer-scoped\n * margin classes are BOTH derived from this same `gutter` value, so whenever\n * both selectors match they emit identical declarations instead of competing\n * ones; the resolved geometry is always exactly what `gutter` says, decided\n * by this prop, never by the generated stylesheet's rule order.\n */\nexport type SidebarInsetGutter =\n | \"auto\"\n | \"none\"\n | { top?: boolean; bottom?: boolean; start?: boolean; end?: boolean };\n\nexport interface SidebarInsetProps extends ComponentProps<\"main\"> {\n gutter?: SidebarInsetGutter;\n}\n\n// Each side is a COMPLETE literal utility string, one per SELECTOR SCOPE:\n// `ancestor` (`group-data-…/sidebar-wrapper:`, reaches a `SidebarProvider\n// variant=\"inset\"` regardless of DOM order — the #342 fix) and `legacy`\n// (`peer-data-…:`, reaches a `Sidebar variant=\"inset\"` that immediately\n// precedes this element — every caller before #342). Both scopes read the\n// SAME `gutter` value below, which is what keeps them from ever disagreeing.\n// Tailwind's content scanner only recognises literal class text in source —\n// never a name assembled by concatenation/interpolation\n// (.claude/rules/styling-and-tokens.md) — so the object form below picks\n// among these literals, it never builds one.\nconst SIDEBAR_INSET_GUTTER_SIDE_CLASS = {\n top: {\n ancestor: \"md:group-data-[variant=inset]/sidebar-wrapper:mt-2\",\n legacy: \"md:peer-data-[variant=inset]:mt-2\",\n },\n bottom: {\n ancestor: \"md:group-data-[variant=inset]/sidebar-wrapper:mb-2\",\n legacy: \"md:peer-data-[variant=inset]:mb-2\",\n },\n start: {\n ancestor: \"md:group-data-[variant=inset]/sidebar-wrapper:ms-2\",\n legacy: \"md:peer-data-[variant=inset]:ms-2\",\n },\n end: {\n ancestor: \"md:group-data-[variant=inset]/sidebar-wrapper:me-2\",\n legacy: \"md:peer-data-[variant=inset]:me-2\",\n },\n} as const;\n\n// \"auto\" is its own complete literal pair, not composed from the map above,\n// because it also carries the collapsed-state clause: the sidebar's own gap\n// closes on collapse, so the inset's leading margin has to come back.\nconst SIDEBAR_INSET_GUTTER_AUTO_CLASS = {\n ancestor:\n \"md:group-data-[variant=inset]/sidebar-wrapper:m-2 md:group-data-[variant=inset]/sidebar-wrapper:ms-0 md:group-data-[variant=inset]/sidebar-wrapper:group-data-[state=collapsed]/sidebar-wrapper:ms-2\",\n legacy:\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2\",\n} as const;\n\nfunction sidebarInsetGutterClassName(\n gutter: SidebarInsetGutter,\n scope: \"ancestor\" | \"legacy\",\n): string {\n if (gutter === \"auto\") return SIDEBAR_INSET_GUTTER_AUTO_CLASS[scope];\n if (gutter === \"none\") return \"\";\n return cn(\n gutter.top && SIDEBAR_INSET_GUTTER_SIDE_CLASS.top[scope],\n gutter.bottom && SIDEBAR_INSET_GUTTER_SIDE_CLASS.bottom[scope],\n gutter.start && SIDEBAR_INSET_GUTTER_SIDE_CLASS.start[scope],\n gutter.end && SIDEBAR_INSET_GUTTER_SIDE_CLASS.end[scope],\n );\n}\n\nexport const SidebarInset = forwardRef<HTMLDivElement, SidebarInsetProps>(function SidebarInset(\n { className, gutter = \"auto\", ...props },\n ref,\n) {\n return (\n <main\n ref={ref}\n data-slot=\"sidebar-inset\"\n className={cn(\n // `min-w-0`: a flex item defaults to `min-width: auto`, so one wide child\n // (a Table, a chart in a CSS grid) pushed the whole page wider than the\n // viewport instead of scrolling inside its card (2026-09-21 new-user\n // test: 1076 px wide at an 820 px viewport). With it, overflow stays\n // where the child's own `overflow-*` puts it.\n \"relative flex w-full min-w-0 flex-1 flex-col bg-background\",\n // Ancestor-scoped (#342 fix): `group/sidebar-wrapper` spans the whole\n // frame, so this reaches a right-hand or reordered `Sidebar` the old\n // peer-* combinator could not (it only matches a sibling that comes\n // AFTER). Reads `SidebarProvider`'s own `data-variant`/`data-state`.\n // Radius/shadow are unconditional here — not gated by `gutter`.\n \"md:group-data-[variant=inset]/sidebar-wrapper:rounded-xl md:group-data-[variant=inset]/sidebar-wrapper:shadow-sm\",\n sidebarInsetGutterClassName(gutter, \"ancestor\"),\n // Legacy peer rule — reaches a shell that sets `variant` only on\n // `Sidebar` (every caller before #342). Radius/shadow unconditional\n // here too; the margin is driven by the SAME `gutter` value as the\n // ancestor rule above (fix round 1, #342), so a caller composing both\n // mechanisms at once never hits a stylesheet-order race — whichever\n // selector matches emits the identical declaration.\n \"md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm\",\n sidebarInsetGutterClassName(gutter, \"legacy\"),\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const SidebarInput = forwardRef<HTMLInputElement, ComponentProps<typeof Input>>(\n function SidebarInput({ className, ...props }, ref) {\n return (\n <Input\n ref={ref}\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarHeader = forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function SidebarHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarFooter = forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function SidebarFooter({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarSeparator = forwardRef<HTMLDivElement, ComponentProps<typeof Separator>>(\n function SidebarSeparator({ className, ...props }, ref) {\n return (\n <Separator\n ref={ref}\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarContent = forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function SidebarContent({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarGroup = forwardRef<HTMLDivElement, ComponentProps<\"div\">>(function SidebarGroup(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n});\n\nexport const SidebarGroupLabel = forwardRef<\n HTMLDivElement,\n ComponentProps<\"div\"> & { asChild?: boolean }\n>(function SidebarGroupLabel({ className, asChild = false, ...props }, ref) {\n const Comp = asChild ? Slot : \"div\";\n return (\n <Comp\n ref={ref}\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-meta font-medium text-sidebar-muted-foreground focus-ring [--focus-ring-color:var(--sidebar-ring)] transition-[opacity] duration-base ease-linear [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const SidebarGroupAction = forwardRef<\n HTMLButtonElement,\n ComponentProps<\"button\"> & { asChild?: boolean }\n>(function SidebarGroupAction({ className, asChild = false, ...props }, ref) {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute end-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground focus-ring [--focus-ring-color:var(--sidebar-ring)] transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const SidebarGroupContent = forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function SidebarGroupContent({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-body\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarMenu = forwardRef<HTMLUListElement, ComponentProps<\"ul\">>(function SidebarMenu(\n { className, ...props },\n ref,\n) {\n return (\n <ul\n ref={ref}\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n});\n\nexport const SidebarMenuItem = forwardRef<HTMLLIElement, ComponentProps<\"li\">>(\n function SidebarMenuItem({ className, ...props }, ref) {\n return (\n <li\n ref={ref}\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const sidebarMenuButtonVariants = cva(\n \"peer/menu-button relative flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-start text-body text-sidebar-foreground focus-ring [--focus-ring-color:var(--sidebar-ring)] transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pe-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground data-[active=true]:[&>svg]:text-sidebar-primary data-[active=true]:before:pointer-events-none data-[active=true]:before:absolute data-[active=true]:before:inset-y-(--sidebar-indicator-inset) data-[active=true]:before:start-0 data-[active=true]:before:w-(--sidebar-indicator-width) data-[active=true]:before:rounded-(--sidebar-indicator-radius) data-[active=true]:before:bg-sidebar-indicator data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n // A 1px outline drawn as the ring layer, not a `border` — the button sits\n // in a fixed-height menu row, so an edge that took layout space would\n // change its metrics. `shadow-hairline` reads --shadow-ring-color, so the\n // sidebar retints it (chrome has its own edge tokens) instead of\n // hand-rolling `shadow-[0_0_0_1px_…]`.\n outline:\n \"bg-background shadow-hairline [--shadow-ring-color:var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:[--shadow-ring-color:var(--sidebar-accent)]\",\n },\n size: {\n // The icon-rail padding lives PER SIZE, never as a base `p-2!` that `lg`\n // overrides: tailwind-merge keeps both `…:p-2!` and `…:p-0!`, and the\n // stylesheet order then let `p-2` win — an 8px inset inside the 32px\n // collapsed square that clipped every `lg` avatar (NavUser, TeamSwitcher).\n default: \"h-8 text-body group-data-[collapsible=icon]:p-2!\",\n sm: \"h-7 text-meta group-data-[collapsible=icon]:p-2!\",\n lg: \"h-12 text-body group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: { variant: \"default\", size: \"default\" },\n },\n);\n\nexport const SidebarMenuButton = forwardRef<\n HTMLButtonElement,\n ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(function SidebarMenuButton(\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n const tooltipProps = typeof tooltip === \"string\" ? { children: tooltip } : tooltip;\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltipProps}\n />\n </Tooltip>\n );\n});\n\nexport const SidebarMenuAction = forwardRef<\n HTMLButtonElement,\n ComponentProps<\"button\"> & { asChild?: boolean; showOnHover?: boolean }\n>(function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }, ref) {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground focus-ring [--focus-ring-color:var(--sidebar-ring)] transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const SidebarMenuBadge = forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function SidebarMenuBadge({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute end-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-meta font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nexport function SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: ComponentProps<\"div\"> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {/* `bg-sidebar-accent`, overriding `Skeleton`'s own `bg-muted`. `--muted`\n is a CANVAS token: in the light theme it is a near-white\n `oklch(0.968 …)` sitting on this sidebar's dark `oklch(0.3 …)` ground,\n which measures 12.42:1 — the placeholder becomes the loudest thing on\n a screen that has nothing loaded yet. The sidebar's own quiet rung\n measures 1.26:1 on light and 1.29:1 on dark, i.e. a placeholder in\n both themes instead of an inversion in one. */}\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md bg-sidebar-accent\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1 bg-sidebar-accent\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ \"--skeleton-width\": width } as CSSProperties}\n />\n </div>\n );\n}\n\nexport const SidebarMenuSub = forwardRef<HTMLUListElement, ComponentProps<\"ul\">>(\n function SidebarMenuSub({ className, ...props }, ref) {\n return (\n <ul\n ref={ref}\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-s border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarMenuSubItem = forwardRef<HTMLLIElement, ComponentProps<\"li\">>(\n function SidebarMenuSubItem({ className, ...props }, ref) {\n return (\n <li\n ref={ref}\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const SidebarMenuSubButton = forwardRef<\n HTMLAnchorElement,\n ComponentProps<\"a\"> & { asChild?: boolean; size?: \"sm\" | \"md\"; isActive?: boolean }\n>(function SidebarMenuSubButton(\n { asChild = false, size = \"md\", isActive = false, className, ...props },\n ref,\n) {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"relative flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground focus-ring [--focus-ring-color:var(--sidebar-ring)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground data-[active=true]:before:pointer-events-none data-[active=true]:before:absolute data-[active=true]:before:inset-y-(--sidebar-indicator-inset) data-[active=true]:before:start-0 data-[active=true]:before:w-(--sidebar-indicator-width) data-[active=true]:before:rounded-(--sidebar-indicator-radius) data-[active=true]:before:bg-sidebar-indicator\",\n size === \"sm\" && \"text-meta\",\n size === \"md\" && \"text-body\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\n"],"mappings":"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","names":["SidebarProvider","Sidebar","SidebarTrigger","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuButton","SidebarMenuAction","SidebarMenuBadge","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"]}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useVirtualListbox
|
|
4
|
+
} from "./chunk-AFJCS2WV.js";
|
|
5
|
+
import {
|
|
6
|
+
Popover,
|
|
7
|
+
PopoverContent,
|
|
8
|
+
PopoverTrigger
|
|
9
|
+
} from "./chunk-SGBCLZQF.js";
|
|
10
|
+
import {
|
|
11
|
+
Input
|
|
12
|
+
} from "./chunk-I3U52BDH.js";
|
|
13
|
+
import {
|
|
14
|
+
Badge
|
|
15
|
+
} from "./chunk-HNLYRHAU.js";
|
|
16
|
+
import {
|
|
17
|
+
useLocale
|
|
18
|
+
} from "./chunk-EJQYE4MY.js";
|
|
19
|
+
import {
|
|
20
|
+
Button
|
|
21
|
+
} from "./chunk-C5QBV5RE.js";
|
|
22
|
+
import {
|
|
23
|
+
cn
|
|
24
|
+
} from "./chunk-FXWWDMMP.js";
|
|
25
|
+
|
|
26
|
+
// src/components/virtual-select/virtual-select.tsx
|
|
27
|
+
import {
|
|
28
|
+
forwardRef,
|
|
29
|
+
useCallback,
|
|
30
|
+
useEffect,
|
|
31
|
+
useId,
|
|
32
|
+
useMemo,
|
|
33
|
+
useRef,
|
|
34
|
+
useState
|
|
35
|
+
} from "react";
|
|
36
|
+
import { Check, ChevronsUpDown } from "lucide-react";
|
|
37
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
38
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
39
|
+
function toArray(v) {
|
|
40
|
+
if (v === void 0) return [];
|
|
41
|
+
if (Array.isArray(v)) return v;
|
|
42
|
+
return v === "" ? [] : [v];
|
|
43
|
+
}
|
|
44
|
+
var VirtualSelect = forwardRef(
|
|
45
|
+
function VirtualSelect2({
|
|
46
|
+
options,
|
|
47
|
+
multiple = false,
|
|
48
|
+
value,
|
|
49
|
+
defaultValue,
|
|
50
|
+
onValueChange,
|
|
51
|
+
placeholder,
|
|
52
|
+
searchPlaceholder,
|
|
53
|
+
emptyText,
|
|
54
|
+
estimateOptionHeight = 32,
|
|
55
|
+
maxListHeight = "18rem",
|
|
56
|
+
className,
|
|
57
|
+
...props
|
|
58
|
+
}, ref) {
|
|
59
|
+
const { t } = useLocale();
|
|
60
|
+
const resolvedPlaceholder = placeholder ?? t("ui.virtualSelect.placeholder");
|
|
61
|
+
const resolvedSearchPlaceholder = searchPlaceholder ?? t("ui.virtualSelect.searchPlaceholder");
|
|
62
|
+
const resolvedEmptyText = emptyText ?? t("noResults");
|
|
63
|
+
const isControlled = value !== void 0;
|
|
64
|
+
const [internal, setInternal] = useState(() => toArray(defaultValue));
|
|
65
|
+
const selected = isControlled ? toArray(value) : internal;
|
|
66
|
+
const emit = useCallback(
|
|
67
|
+
(next) => {
|
|
68
|
+
if (!isControlled) setInternal(next);
|
|
69
|
+
if (multiple) {
|
|
70
|
+
onValueChange?.(next);
|
|
71
|
+
} else {
|
|
72
|
+
onValueChange?.(next[0] ?? "");
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
[isControlled, multiple, onValueChange]
|
|
76
|
+
);
|
|
77
|
+
const [open, setOpen] = useState(false);
|
|
78
|
+
const [query, setQuery] = useState("");
|
|
79
|
+
const searchRef = useRef(null);
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
setQuery("");
|
|
82
|
+
}, [open]);
|
|
83
|
+
const filtered = useMemo(
|
|
84
|
+
() => options.filter((o) => o.label.toLowerCase().includes(query.toLowerCase())),
|
|
85
|
+
[options, query]
|
|
86
|
+
);
|
|
87
|
+
const optionByValue = useMemo(() => {
|
|
88
|
+
const map = /* @__PURE__ */ new Map();
|
|
89
|
+
for (const o of options) map.set(o.value, o);
|
|
90
|
+
return map;
|
|
91
|
+
}, [options]);
|
|
92
|
+
const [scrollEl, setScrollEl] = useState(null);
|
|
93
|
+
const virtualizer = useVirtualizer({
|
|
94
|
+
count: filtered.length,
|
|
95
|
+
getScrollElement: () => scrollEl,
|
|
96
|
+
estimateSize: () => estimateOptionHeight,
|
|
97
|
+
overscan: 5
|
|
98
|
+
});
|
|
99
|
+
const handleSelect = useCallback(
|
|
100
|
+
(optValue) => {
|
|
101
|
+
if (multiple) {
|
|
102
|
+
const next = selected.includes(optValue) ? selected.filter((v) => v !== optValue) : [...selected, optValue];
|
|
103
|
+
emit(next);
|
|
104
|
+
} else {
|
|
105
|
+
emit(selected[0] === optValue ? [] : [optValue]);
|
|
106
|
+
setOpen(false);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
[multiple, selected, emit]
|
|
110
|
+
);
|
|
111
|
+
const { activeIndex, setActiveIndex, onInputKeyDown } = useVirtualListbox({
|
|
112
|
+
count: filtered.length,
|
|
113
|
+
filtered,
|
|
114
|
+
isOpen: open,
|
|
115
|
+
onSelect: handleSelect,
|
|
116
|
+
virtualizer
|
|
117
|
+
});
|
|
118
|
+
const uid = useId();
|
|
119
|
+
const listboxId = `${uid}-listbox`;
|
|
120
|
+
const optionId = (index) => `${uid}-option-${index}`;
|
|
121
|
+
const focusTimeoutRef = useRef(null);
|
|
122
|
+
useEffect(
|
|
123
|
+
() => () => {
|
|
124
|
+
if (focusTimeoutRef.current != null) clearTimeout(focusTimeoutRef.current);
|
|
125
|
+
},
|
|
126
|
+
[]
|
|
127
|
+
);
|
|
128
|
+
const handleOpenChange = useCallback((next) => {
|
|
129
|
+
setOpen(next);
|
|
130
|
+
if (focusTimeoutRef.current != null) {
|
|
131
|
+
clearTimeout(focusTimeoutRef.current);
|
|
132
|
+
focusTimeoutRef.current = null;
|
|
133
|
+
}
|
|
134
|
+
if (next) {
|
|
135
|
+
focusTimeoutRef.current = setTimeout(() => {
|
|
136
|
+
focusTimeoutRef.current = null;
|
|
137
|
+
searchRef.current?.focus();
|
|
138
|
+
}, 0);
|
|
139
|
+
}
|
|
140
|
+
}, []);
|
|
141
|
+
const selectedLabels = selected.map((v) => ({
|
|
142
|
+
value: v,
|
|
143
|
+
label: optionByValue.get(v)?.label ?? v
|
|
144
|
+
}));
|
|
145
|
+
const triggerContent = selectedLabels.length === 0 ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: resolvedPlaceholder }) : multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
146
|
+
selectedLabels.slice(0, 2).map((l) => /* @__PURE__ */ jsx(
|
|
147
|
+
Badge,
|
|
148
|
+
{
|
|
149
|
+
variant: "secondary",
|
|
150
|
+
className: "max-w-[8rem] truncate border-border",
|
|
151
|
+
children: l.label
|
|
152
|
+
},
|
|
153
|
+
l.value
|
|
154
|
+
)),
|
|
155
|
+
selectedLabels.length > 2 ? /* @__PURE__ */ jsxs(
|
|
156
|
+
Badge,
|
|
157
|
+
{
|
|
158
|
+
variant: "secondary",
|
|
159
|
+
"aria-label": `and ${selectedLabels.length - 2} more selected`,
|
|
160
|
+
children: [
|
|
161
|
+
"+",
|
|
162
|
+
selectedLabels.length - 2
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
) : null
|
|
166
|
+
] }) : /* @__PURE__ */ jsx("span", { className: "truncate", children: selectedLabels[0]?.label });
|
|
167
|
+
const virtualItems = virtualizer.getVirtualItems();
|
|
168
|
+
const activeMounted = virtualItems.some((v) => v.index === activeIndex);
|
|
169
|
+
return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
|
|
170
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
171
|
+
Button,
|
|
172
|
+
{
|
|
173
|
+
ref,
|
|
174
|
+
type: "button",
|
|
175
|
+
variant: "outline",
|
|
176
|
+
role: "combobox",
|
|
177
|
+
"aria-expanded": open,
|
|
178
|
+
"aria-haspopup": "listbox",
|
|
179
|
+
"aria-controls": listboxId,
|
|
180
|
+
className: cn("h-auto min-h-9 w-full justify-between font-normal", className),
|
|
181
|
+
...props,
|
|
182
|
+
children: [
|
|
183
|
+
/* @__PURE__ */ jsx("span", { className: "flex min-w-0 flex-1 flex-wrap items-center gap-1 text-start", children: triggerContent }),
|
|
184
|
+
/* @__PURE__ */ jsx(ChevronsUpDown, { className: "ms-2 size-4 shrink-0 opacity-50", "aria-hidden": "true" })
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
) }),
|
|
188
|
+
/* @__PURE__ */ jsxs(
|
|
189
|
+
PopoverContent,
|
|
190
|
+
{
|
|
191
|
+
className: "w-[var(--radix-popover-trigger-width)] min-w-64 p-0",
|
|
192
|
+
align: "start",
|
|
193
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
194
|
+
children: [
|
|
195
|
+
/* @__PURE__ */ jsx("div", { className: "border-b p-1.5", children: /* @__PURE__ */ jsx(
|
|
196
|
+
Input,
|
|
197
|
+
{
|
|
198
|
+
ref: searchRef,
|
|
199
|
+
type: "text",
|
|
200
|
+
autoComplete: "off",
|
|
201
|
+
spellCheck: false,
|
|
202
|
+
placeholder: resolvedSearchPlaceholder,
|
|
203
|
+
value: query,
|
|
204
|
+
onChange: (e) => setQuery(e.target.value),
|
|
205
|
+
onKeyDown: (e) => onInputKeyDown(e),
|
|
206
|
+
"aria-label": resolvedSearchPlaceholder,
|
|
207
|
+
"aria-autocomplete": "list",
|
|
208
|
+
"aria-controls": listboxId,
|
|
209
|
+
"aria-activedescendant": activeIndex >= 0 && activeMounted ? optionId(activeIndex) : void 0,
|
|
210
|
+
className: "h-8 border-0 shadow-none"
|
|
211
|
+
}
|
|
212
|
+
) }),
|
|
213
|
+
/* @__PURE__ */ jsx(
|
|
214
|
+
"div",
|
|
215
|
+
{
|
|
216
|
+
ref: setScrollEl,
|
|
217
|
+
id: listboxId,
|
|
218
|
+
role: "listbox",
|
|
219
|
+
"aria-multiselectable": multiple || void 0,
|
|
220
|
+
style: { maxHeight: maxListHeight },
|
|
221
|
+
className: "overflow-auto p-1",
|
|
222
|
+
children: filtered.length > 0 ? (
|
|
223
|
+
// Spacer gives the virtualizer its full scroll height
|
|
224
|
+
/* @__PURE__ */ jsx("div", { style: { height: virtualizer.getTotalSize() }, className: "relative", children: virtualItems.map((virtualRow) => {
|
|
225
|
+
const opt = filtered[virtualRow.index];
|
|
226
|
+
if (!opt) return null;
|
|
227
|
+
const isSelected = selected.includes(opt.value);
|
|
228
|
+
const isActive = activeIndex === virtualRow.index;
|
|
229
|
+
return /* @__PURE__ */ jsxs(
|
|
230
|
+
"div",
|
|
231
|
+
{
|
|
232
|
+
id: optionId(virtualRow.index),
|
|
233
|
+
role: "option",
|
|
234
|
+
"aria-selected": isSelected,
|
|
235
|
+
"aria-disabled": opt.disabled || void 0,
|
|
236
|
+
style: {
|
|
237
|
+
position: "absolute",
|
|
238
|
+
top: 0,
|
|
239
|
+
left: 0,
|
|
240
|
+
width: "100%",
|
|
241
|
+
height: `${virtualRow.size}px`,
|
|
242
|
+
transform: `translateY(${virtualRow.start}px)`
|
|
243
|
+
},
|
|
244
|
+
className: cn(
|
|
245
|
+
"flex cursor-pointer select-none items-center rounded-sm px-2 text-body outline-none",
|
|
246
|
+
"transition-colors duration-fast motion-reduce:transition-none",
|
|
247
|
+
isActive && "bg-accent text-accent-foreground",
|
|
248
|
+
!isActive && "hover:bg-accent hover:text-accent-foreground",
|
|
249
|
+
opt.disabled && "pointer-events-none cursor-not-allowed opacity-50"
|
|
250
|
+
),
|
|
251
|
+
onClick: () => {
|
|
252
|
+
if (!opt.disabled) handleSelect(opt.value);
|
|
253
|
+
},
|
|
254
|
+
onMouseEnter: () => {
|
|
255
|
+
if (!opt.disabled) setActiveIndex(virtualRow.index);
|
|
256
|
+
},
|
|
257
|
+
children: [
|
|
258
|
+
/* @__PURE__ */ jsx(
|
|
259
|
+
Check,
|
|
260
|
+
{
|
|
261
|
+
className: cn(
|
|
262
|
+
"me-2 size-4 shrink-0",
|
|
263
|
+
isSelected ? "opacity-100" : "opacity-0"
|
|
264
|
+
),
|
|
265
|
+
"aria-hidden": "true"
|
|
266
|
+
}
|
|
267
|
+
),
|
|
268
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: opt.label })
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
virtualRow.key
|
|
272
|
+
);
|
|
273
|
+
}) })
|
|
274
|
+
) : null
|
|
275
|
+
}
|
|
276
|
+
),
|
|
277
|
+
filtered.length === 0 ? /* @__PURE__ */ jsx(
|
|
278
|
+
"div",
|
|
279
|
+
{
|
|
280
|
+
role: "status",
|
|
281
|
+
"aria-live": "polite",
|
|
282
|
+
className: "px-2 py-6 text-center text-body text-muted-foreground",
|
|
283
|
+
children: resolvedEmptyText
|
|
284
|
+
}
|
|
285
|
+
) : null
|
|
286
|
+
]
|
|
287
|
+
}
|
|
288
|
+
)
|
|
289
|
+
] });
|
|
290
|
+
}
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
export {
|
|
294
|
+
VirtualSelect
|
|
295
|
+
};
|
|
296
|
+
//# sourceMappingURL=chunk-HXQ4MDCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/virtual-select/virtual-select.tsx"],"sourcesContent":["// a2ui.exposed: yes\n\"use client\";\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type KeyboardEvent,\n} from \"react\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/cn\";\nimport { Badge } from \"../badge\";\nimport { Button } from \"../button\";\nimport { Input } from \"../input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { useLocale } from \"../locale-provider\";\nimport { type VirtualSelectOption, useVirtualListbox } from \"./use-virtual-listbox\";\n\nexport type { VirtualSelectOption };\n\nexport interface VirtualSelectProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"value\" | \"onChange\" | \"defaultValue\"\n> {\n /** The full option list. Only visible items are rendered in the DOM. */\n options: VirtualSelectOption[];\n /** Allow selecting multiple values. Default `false`. */\n multiple?: boolean;\n /** Controlled value — `string` in single mode, `string[]` in multiple mode. */\n value?: string | string[];\n /** Uncontrolled initial value. */\n defaultValue?: string | string[];\n /** Called when the selection changes. Emits `string` (single) or `string[]` (multiple). */\n onValueChange?: (value: string | string[]) => void;\n /** Trigger placeholder when nothing is selected. Default \"Select…\" */\n placeholder?: string;\n /** Search-input placeholder. Default \"Search…\" */\n searchPlaceholder?: string;\n /** Empty-state message when no options match the query. Default \"No results.\" */\n emptyText?: string;\n /**\n * Estimated row height used by the virtualizer (px).\n * Increase for taller rows (e.g. with descriptions). Default 32.\n */\n estimateOptionHeight?: number;\n /**\n * CSS max-height for the scrollable listbox. Default \"18rem\".\n */\n maxListHeight?: string;\n className?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toArray(v: string | string[] | undefined): string[] {\n if (v === undefined) return [];\n if (Array.isArray(v)) return v;\n return v === \"\" ? [] : [v];\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * VirtualSelect — a combobox that renders only the visible window of options\n * in the DOM, making it suitable for option lists of 10,000+ items.\n *\n * Uses `@tanstack/react-virtual` for windowed rendering and a purpose-built\n * `aria-activedescendant` keyboard model so focus stays on the search input\n * while navigating the listbox.\n */\nexport const VirtualSelect = forwardRef<HTMLButtonElement, VirtualSelectProps>(\n function VirtualSelect(\n {\n options,\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n placeholder,\n searchPlaceholder,\n emptyText,\n estimateOptionHeight = 32,\n maxListHeight = \"18rem\",\n className,\n ...props\n },\n ref,\n ) {\n const { t } = useLocale();\n const resolvedPlaceholder = placeholder ?? t(\"ui.virtualSelect.placeholder\");\n const resolvedSearchPlaceholder = searchPlaceholder ?? t(\"ui.virtualSelect.searchPlaceholder\");\n const resolvedEmptyText = emptyText ?? t(\"noResults\");\n\n // ------------------------------------------------------------------\n // Controlled / uncontrolled\n // ------------------------------------------------------------------\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string[]>(() => toArray(defaultValue));\n const selected: string[] = isControlled ? toArray(value) : internal;\n\n const emit = useCallback(\n (next: string[]) => {\n if (!isControlled) setInternal(next);\n if (multiple) {\n onValueChange?.(next);\n } else {\n onValueChange?.(next[0] ?? \"\");\n }\n },\n [isControlled, multiple, onValueChange],\n );\n\n // ------------------------------------------------------------------\n // Popover state\n // ------------------------------------------------------------------\n const [open, setOpen] = useState(false);\n\n // ------------------------------------------------------------------\n // Search / filter\n // ------------------------------------------------------------------\n const [query, setQuery] = useState(\"\");\n const searchRef = useRef<HTMLInputElement>(null);\n\n // Reset query when popover toggles\n useEffect(() => {\n setQuery(\"\");\n }, [open]);\n\n const filtered = useMemo(\n () => options.filter((o) => o.label.toLowerCase().includes(query.toLowerCase())),\n [options, query],\n );\n\n // O(1) label lookup for the trigger's selected chips — `selected.map(find)`\n // is O(selected.length * options.length) and options lists here can be\n // large (that's the whole point of virtualizing).\n const optionByValue = useMemo(() => {\n const map = new Map<string, VirtualSelectOption>();\n for (const o of options) map.set(o.value, o);\n return map;\n }, [options]);\n\n // ------------------------------------------------------------------\n // Virtualizer\n // ------------------------------------------------------------------\n // State-backed scroll element (NOT a ref): the listbox mounts only when the\n // Popover opens, so a plain ref would leave the virtualizer with a null\n // scroll element and render zero options. A state callback ref forces the\n // re-render that lets the virtualizer measure once the element appears.\n const [scrollEl, setScrollEl] = useState<HTMLDivElement | null>(null);\n const virtualizer = useVirtualizer({\n count: filtered.length,\n getScrollElement: () => scrollEl,\n estimateSize: () => estimateOptionHeight,\n overscan: 5,\n });\n\n // ------------------------------------------------------------------\n // Keyboard navigation\n // ------------------------------------------------------------------\n const handleSelect = useCallback(\n (optValue: string) => {\n if (multiple) {\n const next = selected.includes(optValue)\n ? selected.filter((v) => v !== optValue)\n : [...selected, optValue];\n emit(next);\n // Keep open in multi mode\n } else {\n emit(selected[0] === optValue ? [] : [optValue]);\n setOpen(false);\n }\n },\n [multiple, selected, emit],\n );\n\n const { activeIndex, setActiveIndex, onInputKeyDown } = useVirtualListbox({\n count: filtered.length,\n filtered,\n isOpen: open,\n onSelect: handleSelect,\n virtualizer,\n });\n\n // ------------------------------------------------------------------\n // IDs for ARIA wiring\n // ------------------------------------------------------------------\n const uid = useId();\n const listboxId = `${uid}-listbox`;\n const optionId = (index: number) => `${uid}-option-${index}`;\n\n // Focus the search input when the popover opens. The timeout id is\n // tracked so it can be cancelled on unmount (or a rapid re-close) —\n // otherwise it fires after the component (and `searchRef`'s DOM node)\n // is gone, or focuses a NEW popover's input on a fast toggle.\n const focusTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (focusTimeoutRef.current != null) clearTimeout(focusTimeoutRef.current);\n },\n [],\n );\n\n const handleOpenChange = useCallback((next: boolean) => {\n setOpen(next);\n if (focusTimeoutRef.current != null) {\n clearTimeout(focusTimeoutRef.current);\n focusTimeoutRef.current = null;\n }\n if (next) {\n // Defer one frame so Radix has mounted the portal\n focusTimeoutRef.current = setTimeout(() => {\n focusTimeoutRef.current = null;\n searchRef.current?.focus();\n }, 0);\n }\n }, []);\n\n // ------------------------------------------------------------------\n // Trigger label\n // ------------------------------------------------------------------\n const selectedLabels = selected.map((v) => ({\n value: v,\n label: optionByValue.get(v)?.label ?? v,\n }));\n\n const triggerContent =\n selectedLabels.length === 0 ? (\n <span className=\"text-muted-foreground\">{resolvedPlaceholder}</span>\n ) : multiple ? (\n <>\n {selectedLabels.slice(0, 2).map((l) => (\n <Badge\n key={l.value}\n variant=\"secondary\"\n className=\"max-w-[8rem] truncate border-border\"\n >\n {l.label}\n </Badge>\n ))}\n {selectedLabels.length > 2 ? (\n <Badge\n variant=\"secondary\"\n aria-label={`and ${selectedLabels.length - 2} more selected`}\n >\n +{selectedLabels.length - 2}\n </Badge>\n ) : null}\n </>\n ) : (\n <span className=\"truncate\">{selectedLabels[0]?.label}</span>\n );\n\n // ------------------------------------------------------------------\n // Render\n // ------------------------------------------------------------------\n const virtualItems = virtualizer.getVirtualItems();\n // Only reference the active option from aria-activedescendant when it is\n // actually mounted in the virtual window (else the id would dangle).\n const activeMounted = virtualItems.some((v) => v.index === activeIndex);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n type=\"button\"\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n className={cn(\"h-auto min-h-9 w-full justify-between font-normal\", className)}\n {...props}\n >\n <span className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1 text-start\">\n {triggerContent}\n </span>\n <ChevronsUpDown className=\"ms-2 size-4 shrink-0 opacity-50\" aria-hidden=\"true\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className=\"w-[var(--radix-popover-trigger-width)] min-w-64 p-0\"\n align=\"start\"\n // Prevent Radix from stealing focus so it can go to the input\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n {/* Search input */}\n <div className=\"border-b p-1.5\">\n <Input\n ref={searchRef}\n type=\"text\"\n autoComplete=\"off\"\n spellCheck={false}\n placeholder={resolvedSearchPlaceholder}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => onInputKeyDown(e)}\n aria-label={resolvedSearchPlaceholder}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-activedescendant={\n activeIndex >= 0 && activeMounted ? optionId(activeIndex) : undefined\n }\n // Border/shadow removed (sits inside the popover's own bordered\n // header strip) but the base `Input` focus-ring is kept — no\n // compound ring lives elsewhere on this control, so silencing it\n // would leave a re-focused search box with no visible indicator.\n className=\"h-8 border-0 shadow-none\"\n />\n </div>\n\n {/* Listbox — always mounted so aria-controls never dangles (even when empty) */}\n <div\n ref={setScrollEl}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n style={{ maxHeight: maxListHeight }}\n className=\"overflow-auto p-1\"\n >\n {filtered.length > 0 ? (\n // Spacer gives the virtualizer its full scroll height\n <div style={{ height: virtualizer.getTotalSize() }} className=\"relative\">\n {virtualItems.map((virtualRow) => {\n const opt = filtered[virtualRow.index];\n if (!opt) return null;\n const isSelected = selected.includes(opt.value);\n const isActive = activeIndex === virtualRow.index;\n\n return (\n <div\n key={virtualRow.key}\n id={optionId(virtualRow.index)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`,\n }}\n className={cn(\n \"flex cursor-pointer select-none items-center rounded-sm px-2 text-body outline-none\",\n \"transition-colors duration-fast motion-reduce:transition-none\",\n isActive && \"bg-accent text-accent-foreground\",\n !isActive && \"hover:bg-accent hover:text-accent-foreground\",\n opt.disabled && \"pointer-events-none cursor-not-allowed opacity-50\",\n )}\n onClick={() => {\n if (!opt.disabled) handleSelect(opt.value);\n }}\n onMouseEnter={() => {\n if (!opt.disabled) setActiveIndex(virtualRow.index);\n }}\n >\n <Check\n className={cn(\n \"me-2 size-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\",\n )}\n aria-hidden=\"true\"\n />\n <span className=\"truncate\">{opt.label}</span>\n </div>\n );\n })}\n </div>\n ) : null}\n </div>\n {filtered.length === 0 ? (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className=\"px-2 py-6 text-center text-body text-muted-foreground\"\n >\n {resolvedEmptyText}\n </div>\n ) : null}\n </PopoverContent>\n </Popover>\n );\n },\n);\n"],"mappings":"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","names":["VirtualSelect"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
cn
|
|
4
|
+
} from "./chunk-FXWWDMMP.js";
|
|
5
|
+
|
|
6
|
+
// src/components/input/input.tsx
|
|
7
|
+
import { forwardRef } from "react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var Input = forwardRef(function Input2({ className, type = "text", ...props }, ref) {
|
|
10
|
+
return /* @__PURE__ */ jsx(
|
|
11
|
+
"input",
|
|
12
|
+
{
|
|
13
|
+
ref,
|
|
14
|
+
type,
|
|
15
|
+
className: cn(
|
|
16
|
+
"flex h-control w-full rounded-control border border-input bg-input-background text-foreground px-3 py-1 text-body shadow-input transition-[color,background-color,border-color,box-shadow] duration-fast ease-standard",
|
|
17
|
+
"placeholder:text-muted-foreground",
|
|
18
|
+
"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus",
|
|
19
|
+
// One disabled mechanism (opacity fade), matching every `Button`
|
|
20
|
+
// variant — `disabled:bg-muted` used to also fire here, stacking a
|
|
21
|
+
// fill swap on top of the fade (#286); `disabled:border-border` stays,
|
|
22
|
+
// it is the separate/subtle "not editable" edge, not a fill.
|
|
23
|
+
"disabled:cursor-not-allowed disabled:opacity-50 disabled:border-border",
|
|
24
|
+
"aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive",
|
|
25
|
+
"file:border-0 file:bg-transparent file:text-body file:font-medium",
|
|
26
|
+
className
|
|
27
|
+
),
|
|
28
|
+
...props
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
Input
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=chunk-I3U52BDH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input/input.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type InputProps = InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, type = \"text\", ...props },\n ref,\n) {\n return (\n <input\n ref={ref}\n type={type}\n className={cn(\n \"flex h-control w-full rounded-control border border-input bg-input-background text-foreground px-3 py-1 text-body shadow-input transition-[color,background-color,border-color,box-shadow] duration-fast ease-standard\",\n \"placeholder:text-muted-foreground\",\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus\",\n // One disabled mechanism (opacity fade), matching every `Button`\n // variant — `disabled:bg-muted` used to also fire here, stacking a\n // fill swap on top of the fade (#286); `disabled:border-border` stays,\n // it is the separate/subtle \"not editable\" edge, not a fill.\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:border-border\",\n \"aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive\",\n \"file:border-0 file:bg-transparent file:text-body file:font-medium\",\n className,\n )}\n {...props}\n />\n );\n});\n"],"mappings":";;;;;;AAAA,SAAS,kBAA4C;AAUjD;AALG,IAAM,QAAQ,WAAyC,SAASA,OACrE,EAAE,WAAW,OAAO,QAAQ,GAAG,MAAM,GACrC,KACA;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;","names":["Input"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|