@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,201 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
cardVariants
|
|
4
|
+
} from "./chunk-7KV7H2TW.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-FXWWDMMP.js";
|
|
8
|
+
|
|
9
|
+
// src/components/bento-grid/bento-grid.tsx
|
|
10
|
+
import {
|
|
11
|
+
createContext,
|
|
12
|
+
forwardRef,
|
|
13
|
+
use,
|
|
14
|
+
useEffect,
|
|
15
|
+
useRef,
|
|
16
|
+
useCallback
|
|
17
|
+
} from "react";
|
|
18
|
+
import { cva } from "class-variance-authority";
|
|
19
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
20
|
+
var BentoGridContext = createContext({ spotlight: false });
|
|
21
|
+
var BentoGrid = forwardRef(function BentoGrid2({ className, spotlight = false, children, ...props }, ref) {
|
|
22
|
+
return /* @__PURE__ */ jsx(BentoGridContext, { value: { spotlight }, children: /* @__PURE__ */ jsx(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
ref,
|
|
26
|
+
"data-slot": "bento-grid",
|
|
27
|
+
className: cn(
|
|
28
|
+
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",
|
|
29
|
+
"[grid-auto-flow:dense]",
|
|
30
|
+
"auto-rows-[14rem]",
|
|
31
|
+
"gap-4",
|
|
32
|
+
className
|
|
33
|
+
),
|
|
34
|
+
...props,
|
|
35
|
+
children
|
|
36
|
+
}
|
|
37
|
+
) });
|
|
38
|
+
});
|
|
39
|
+
var SIZE_SPANS = {
|
|
40
|
+
sm: { col: 1, row: 1 },
|
|
41
|
+
md: { col: 2, row: 1 },
|
|
42
|
+
lg: { col: 2, row: 2 },
|
|
43
|
+
hero: { col: 2, row: 2 }
|
|
44
|
+
};
|
|
45
|
+
var bentoGridItemVariants = cva(
|
|
46
|
+
[
|
|
47
|
+
// Base: compose Card surface (bg-card border rounded-lg shadow-sm).
|
|
48
|
+
cardVariants({ interactive: false }),
|
|
49
|
+
// Overflow hidden so content + spotlight overlay stay within rounded corners.
|
|
50
|
+
"relative overflow-hidden",
|
|
51
|
+
// Flex column layout for slot content.
|
|
52
|
+
"flex flex-col",
|
|
53
|
+
// Ensure long unbroken strings can't overflow the tile.
|
|
54
|
+
"min-w-0 break-words",
|
|
55
|
+
// ELEVATION IS THE HOVER GESTURE. The grid rests FLAT — `shadow-none` beats
|
|
56
|
+
// the `shadow-sm` inherited from `cardVariants` (tailwind-merge, later wins)
|
|
57
|
+
// so a bento sheet reads as one plane, not a field of lifted chips. On hover
|
|
58
|
+
// the single tile under the pointer rises to `shadow-lg`, a stacked rung of
|
|
59
|
+
// the ONE elevation ramp (never a hand-rolled box-shadow). The rung is
|
|
60
|
+
// `hover:`-prefixed, so pairing it with the card border is the sanctioned
|
|
61
|
+
// "bordered card, hover lift" shape, not the flagged double edge.
|
|
62
|
+
"shadow-none hover:shadow-xl",
|
|
63
|
+
// Shadow alone is a LIGHT-theme signal: the ramp's ink is black, so on a dark
|
|
64
|
+
// ground even `shadow-xl` is faint (measured on `theme:dark` — the hovered tile
|
|
65
|
+
// was hard to pick out). The hover EDGE carries the lift there. It is
|
|
66
|
+
// `ring/40`, the same tint `Card interactive` uses — NOT `border-strong`, which
|
|
67
|
+
// is a near-charcoal 0.65 L against a 0.88 L resting border and reads as a hard
|
|
68
|
+
// outline snapping on, not as a lift. At 40% the brand hue stays a soft warm
|
|
69
|
+
// edge on white and a clearly brighter one on charcoal.
|
|
70
|
+
"hover:border-ring/40",
|
|
71
|
+
// A lift you can SEE: ~4px of travel. Below ~16px a slide is a flicker, but a
|
|
72
|
+
// hover-lift is the exception the motion guidelines size at ≥4px — and the
|
|
73
|
+
// travel, not the duration, is what makes the elevation legible.
|
|
74
|
+
"hover:-translate-y-1 motion-reduce:hover:translate-y-0",
|
|
75
|
+
// `ease-entrance` (easeOutQuint) — a near-zero arrival velocity is the #1
|
|
76
|
+
// smoothness lever; `ease-standard` snaps at the end. Duration stays at the
|
|
77
|
+
// 260ms `base` rung: lengthening it does NOT fix abruptness. Under OS
|
|
78
|
+
// reduced-motion the travel is neutralized and the transition is dropped, so
|
|
79
|
+
// the shadow + edge still state the hover without any movement.
|
|
80
|
+
"transition-[translate,box-shadow,border-color] duration-base ease-entrance motion-reduce:transition-none"
|
|
81
|
+
].join(" "),
|
|
82
|
+
{
|
|
83
|
+
variants: {
|
|
84
|
+
/** Hero tile gets a subtle gradient wash to distinguish it from supporting tiles. */
|
|
85
|
+
hero: {
|
|
86
|
+
true: "bg-gradient-to-br from-primary/8 to-card",
|
|
87
|
+
false: ""
|
|
88
|
+
},
|
|
89
|
+
/**
|
|
90
|
+
* Interactive tiles (those holding a clickable inner element, e.g. a
|
|
91
|
+
* stretched link) get a pointer cursor and a `focus-within` ring so keyboard
|
|
92
|
+
* focus on the inner control is visible on the whole tile. The hover lift
|
|
93
|
+
* (elevation + edge) is on the base — every tile lifts, clickable or not.
|
|
94
|
+
*/
|
|
95
|
+
interactive: {
|
|
96
|
+
true: "cursor-pointer focus-ring-within",
|
|
97
|
+
false: ""
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
defaultVariants: { hero: false, interactive: false }
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
var BentoGridItem = forwardRef(function BentoGridItem2({ size = "sm", span, spotlight, hero, interactive, className, style, children, ...props }, ref) {
|
|
104
|
+
const tileRef = useRef(null);
|
|
105
|
+
const overlayRef = useRef(null);
|
|
106
|
+
const spotlightOn = spotlight ?? use(BentoGridContext).spotlight;
|
|
107
|
+
const resolvedCol = span?.col ?? SIZE_SPANS[size].col;
|
|
108
|
+
const resolvedRow = span?.row ?? SIZE_SPANS[size].row;
|
|
109
|
+
const isInteractive = interactive ?? false;
|
|
110
|
+
const isHero = hero ?? size === "hero";
|
|
111
|
+
const rafRef = useRef(0);
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
return () => {
|
|
114
|
+
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
115
|
+
};
|
|
116
|
+
}, []);
|
|
117
|
+
const handleMouseMove = useCallback(
|
|
118
|
+
(e) => {
|
|
119
|
+
if (!spotlightOn || !tileRef.current || !overlayRef.current) return;
|
|
120
|
+
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
121
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
122
|
+
if (!tileRef.current || !overlayRef.current) return;
|
|
123
|
+
const rect = tileRef.current.getBoundingClientRect();
|
|
124
|
+
const x = e.clientX - rect.left;
|
|
125
|
+
const y = e.clientY - rect.top;
|
|
126
|
+
tileRef.current.style.setProperty("--bento-x", `${x}px`);
|
|
127
|
+
tileRef.current.style.setProperty("--bento-y", `${y}px`);
|
|
128
|
+
overlayRef.current.style.opacity = "1";
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
[spotlightOn]
|
|
132
|
+
);
|
|
133
|
+
const handleMouseLeave = useCallback(() => {
|
|
134
|
+
if (!overlayRef.current) return;
|
|
135
|
+
overlayRef.current.style.opacity = "0";
|
|
136
|
+
}, []);
|
|
137
|
+
const gridStyle = {
|
|
138
|
+
gridColumn: resolvedCol > 1 ? `span ${resolvedCol} / span ${resolvedCol}` : void 0,
|
|
139
|
+
gridRow: resolvedRow > 1 ? `span ${resolvedRow} / span ${resolvedRow}` : void 0,
|
|
140
|
+
...style
|
|
141
|
+
};
|
|
142
|
+
const mergedRef = useCallback(
|
|
143
|
+
(node) => {
|
|
144
|
+
tileRef.current = node;
|
|
145
|
+
if (typeof ref === "function") {
|
|
146
|
+
ref(node);
|
|
147
|
+
} else if (ref) {
|
|
148
|
+
ref.current = node;
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
[ref]
|
|
152
|
+
);
|
|
153
|
+
return /* @__PURE__ */ jsxs(
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
ref: mergedRef,
|
|
157
|
+
className: cn(
|
|
158
|
+
bentoGridItemVariants({
|
|
159
|
+
hero: isHero,
|
|
160
|
+
interactive: isInteractive
|
|
161
|
+
}),
|
|
162
|
+
className
|
|
163
|
+
),
|
|
164
|
+
style: gridStyle,
|
|
165
|
+
"data-slot": "bento-grid-item",
|
|
166
|
+
onMouseMove: handleMouseMove,
|
|
167
|
+
onMouseLeave: handleMouseLeave,
|
|
168
|
+
...props,
|
|
169
|
+
children: [
|
|
170
|
+
spotlightOn && /* @__PURE__ */ jsx(
|
|
171
|
+
"div",
|
|
172
|
+
{
|
|
173
|
+
ref: overlayRef,
|
|
174
|
+
"aria-hidden": "true",
|
|
175
|
+
"data-testid": "bento-spotlight",
|
|
176
|
+
className: cn(
|
|
177
|
+
"pointer-events-none absolute inset-0 z-10",
|
|
178
|
+
"opacity-0 transition-opacity duration-base ease-standard",
|
|
179
|
+
// Suppress entirely under reduced-motion (cursor tracking = motion).
|
|
180
|
+
"motion-reduce:hidden"
|
|
181
|
+
),
|
|
182
|
+
style: {
|
|
183
|
+
// Spotlight color is a DERIVED tint of the --primary token (not a raw
|
|
184
|
+
// literal), so it stays theme-correct in every theme without a new
|
|
185
|
+
// token. `color-mix` keeps it ~12% primary over transparent.
|
|
186
|
+
background: "radial-gradient(400px circle at var(--bento-x, 50%) var(--bento-y, 50%), color-mix(in oklch, var(--primary) 12%, transparent), transparent 70%)"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
),
|
|
190
|
+
/* @__PURE__ */ jsx("div", { className: "relative z-20 flex min-w-0 flex-1 flex-col", children })
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
export {
|
|
197
|
+
BentoGrid,
|
|
198
|
+
bentoGridItemVariants,
|
|
199
|
+
BentoGridItem
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=chunk-AE6LFFME.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/bento-grid/bento-grid.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * BentoGrid + BentoGridItem — a hover-elevation bento layout.\n *\n * A responsive dense CSS-grid container. **The default separation gesture is\n * ELEVATION, not colour:** the grid rests flat (`shadow-none` — border only) and\n * each tile rises ~4px into `shadow-xl` with a brand-tinted edge on hover, so the\n * tile under the pointer clearly separates from the sheet.\n *\n * The cursor-following **spotlight is OPT-IN** (`spotlight`, default `false`) —\n * set it on the `BentoGrid` to enable it for every tile, or per tile to override\n * the grid. Its colour is a DERIVED tint of the `--primary` token\n * (`color-mix(in oklch, var(--primary) 12%, transparent)`), so it stays\n * theme-correct in every theme with no raw colors and no extra token. Under OS\n * reduced-motion the spotlight is suppressed entirely (`motion-reduce:hidden`);\n * tiles still respond to hover/focus with their normal card states.\n *\n * Key design choices:\n * - `BentoGridItem` composes `Card` (inherits card surface/border/radius) and\n * then overrides the resting `shadow-sm` down to `shadow-none`.\n * - Under reduced motion the travel is neutralized and the transition dropped —\n * the shadow and the edge still state the hover (\"reduced != none\").\n * - Spans are inline `grid-column/grid-row` and collapse to one cell on the\n * 1-column mobile grid (the browser caps a span at the available tracks).\n * - The tile is presentational; for a clickable tile, place an interactive inner\n * element (e.g. a stretched `<a className=\"absolute inset-0\">`) and set\n * `interactive` so the tile shows a `focus-within` ring.\n * - The spotlight overlay is `pointer-events-none` + `aria-hidden` (decorative).\n * - Motion is gated via `duration-base` / `ease-standard` (token-backed).\n */\n\nimport {\n createContext,\n forwardRef,\n use,\n useEffect,\n useRef,\n useCallback,\n type CSSProperties,\n type HTMLAttributes,\n} from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\nimport { cardVariants } from \"../card/card\";\n\n// ---------------------------------------------------------------------------\n// Context — the grid hands its spotlight default down to every tile so a whole\n// bento can opt in with ONE prop instead of repeating it on every child. A tile's\n// own `spotlight` prop always wins.\n// ---------------------------------------------------------------------------\n\nconst BentoGridContext = createContext<{ spotlight: boolean }>({ spotlight: false });\n\n// ---------------------------------------------------------------------------\n// BentoGrid\n// ---------------------------------------------------------------------------\n\nexport interface BentoGridProps extends HTMLAttributes<HTMLDivElement> {\n /** Additional className merged via cn(). */\n className?: string;\n /**\n * Enable the cursor-following spotlight on every tile in this grid. Individual\n * tiles can still opt out (or in) with their own `spotlight` prop. Disabled\n * entirely under OS `prefers-reduced-motion` regardless of this prop.\n * @default false\n */\n spotlight?: boolean;\n}\n\n/**\n * Responsive CSS-grid container.\n * - 1 column on mobile, 2 on sm, 4 on lg.\n * - `grid-auto-flow: dense` fills in gaps left by spanning tiles.\n * - `auto-rows-[14rem]` gives a baseline row height (14rem ≈ 224px); tiles can\n * span multiple rows via the `size` / `span.row` API.\n * - Carries the grid-wide `spotlight` default for its tiles (opt-in).\n */\nexport const BentoGrid = forwardRef<HTMLDivElement, BentoGridProps>(function BentoGrid(\n { className, spotlight = false, children, ...props },\n ref,\n) {\n return (\n <BentoGridContext value={{ spotlight }}>\n <div\n ref={ref}\n data-slot=\"bento-grid\"\n className={cn(\n \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n \"[grid-auto-flow:dense]\",\n \"auto-rows-[14rem]\",\n \"gap-4\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </BentoGridContext>\n );\n});\n\n// ---------------------------------------------------------------------------\n// BentoGridItem — size / span presets\n// ---------------------------------------------------------------------------\n\n/**\n * Size preset → [colSpan, rowSpan].\n *\n * | size | cols | rows | purpose |\n * |-------|------|------|------------------------------------------------------------|\n * | sm | 1 | 1 | Supporting: compact metric or icon tile |\n * | md | 2 | 1 | Supporting: wider but single-row |\n * | lg | 2 | 2 | Featured: 2×2 block |\n * | hero | 2 | 2 | Hero: 2×2 + gradient emphasis wash |\n *\n * On a 1-column layout (mobile) ALL col spans clamp to 1 automatically via\n * CSS `min()` in `gridColumn`. Row spans are always honoured.\n */\nexport type BentoGridSize = \"sm\" | \"md\" | \"lg\" | \"hero\";\n\nconst SIZE_SPANS: Record<BentoGridSize, { col: number; row: number }> = {\n sm: { col: 1, row: 1 },\n md: { col: 2, row: 1 },\n lg: { col: 2, row: 2 },\n hero: { col: 2, row: 2 },\n};\n\n// cva for the item's structural/visual axes (NOT size — span is applied via\n// inline style so it collapses correctly on mobile without media-query gymnastics).\nexport const bentoGridItemVariants = cva(\n [\n // Base: compose Card surface (bg-card border rounded-lg shadow-sm).\n cardVariants({ interactive: false }),\n // Overflow hidden so content + spotlight overlay stay within rounded corners.\n \"relative overflow-hidden\",\n // Flex column layout for slot content.\n \"flex flex-col\",\n // Ensure long unbroken strings can't overflow the tile.\n \"min-w-0 break-words\",\n // ELEVATION IS THE HOVER GESTURE. The grid rests FLAT — `shadow-none` beats\n // the `shadow-sm` inherited from `cardVariants` (tailwind-merge, later wins)\n // so a bento sheet reads as one plane, not a field of lifted chips. On hover\n // the single tile under the pointer rises to `shadow-lg`, a stacked rung of\n // the ONE elevation ramp (never a hand-rolled box-shadow). The rung is\n // `hover:`-prefixed, so pairing it with the card border is the sanctioned\n // \"bordered card, hover lift\" shape, not the flagged double edge.\n \"shadow-none hover:shadow-xl\",\n // Shadow alone is a LIGHT-theme signal: the ramp's ink is black, so on a dark\n // ground even `shadow-xl` is faint (measured on `theme:dark` — the hovered tile\n // was hard to pick out). The hover EDGE carries the lift there. It is\n // `ring/40`, the same tint `Card interactive` uses — NOT `border-strong`, which\n // is a near-charcoal 0.65 L against a 0.88 L resting border and reads as a hard\n // outline snapping on, not as a lift. At 40% the brand hue stays a soft warm\n // edge on white and a clearly brighter one on charcoal.\n \"hover:border-ring/40\",\n // A lift you can SEE: ~4px of travel. Below ~16px a slide is a flicker, but a\n // hover-lift is the exception the motion guidelines size at ≥4px — and the\n // travel, not the duration, is what makes the elevation legible.\n \"hover:-translate-y-1 motion-reduce:hover:translate-y-0\",\n // `ease-entrance` (easeOutQuint) — a near-zero arrival velocity is the #1\n // smoothness lever; `ease-standard` snaps at the end. Duration stays at the\n // 260ms `base` rung: lengthening it does NOT fix abruptness. Under OS\n // reduced-motion the travel is neutralized and the transition is dropped, so\n // the shadow + edge still state the hover without any movement.\n \"transition-[translate,box-shadow,border-color] duration-base ease-entrance motion-reduce:transition-none\",\n ].join(\" \"),\n {\n variants: {\n /** Hero tile gets a subtle gradient wash to distinguish it from supporting tiles. */\n hero: {\n true: \"bg-gradient-to-br from-primary/8 to-card\",\n false: \"\",\n },\n /**\n * Interactive tiles (those holding a clickable inner element, e.g. a\n * stretched link) get a pointer cursor and a `focus-within` ring so keyboard\n * focus on the inner control is visible on the whole tile. The hover lift\n * (elevation + edge) is on the base — every tile lifts, clickable or not.\n */\n interactive: {\n true: \"cursor-pointer focus-ring-within\",\n false: \"\",\n },\n },\n defaultVariants: { hero: false, interactive: false },\n },\n);\n\nexport type BentoGridItemVariants = VariantProps<typeof bentoGridItemVariants>;\n\nexport interface BentoGridItemProps extends HTMLAttributes<HTMLDivElement>, BentoGridItemVariants {\n /**\n * Size preset. Resolves to a col + row span. Overridden by explicit `span`.\n * @default \"sm\"\n */\n size?: BentoGridSize;\n /**\n * Explicit grid span. Wins over `size`. Spans clamp gracefully on narrow\n * layouts — a `col: 4` on a 2-col grid becomes `span min(4, 2)`.\n */\n span?: { col?: number; row?: number };\n /**\n * Enable the cursor-following spotlight gradient on this tile. Omit to inherit\n * the parent `BentoGrid`'s `spotlight` (itself `false` by default) — so the\n * effect is opt-in, per grid or per tile. Disabled entirely under OS\n * `prefers-reduced-motion` regardless of this prop.\n * @default false (inherited from BentoGrid)\n */\n spotlight?: boolean;\n}\n\n/**\n * A single bento tile. Composes `Card`, rests flat, lifts to `shadow-lg` on\n * hover, and adds the OPT-IN spotlight overlay.\n *\n * Spotlight:\n * - Sets `--bento-x` / `--bento-y` CSS custom properties on `onMouseMove`\n * via a direct style set (no layout reads in render — uses\n * `getBoundingClientRect` in the event handler only, never during paint).\n * - An absolutely-positioned `pointer-events-none aria-hidden` overlay paints\n * `radial-gradient(… at var(--bento-x) var(--bento-y), color-mix(--primary), transparent)`.\n * - Revealed on hover via opacity transition gated by `duration-base ease-standard`.\n * - Suppressed with `motion-reduce:hidden` — cursor-following IS motion.\n */\nexport const BentoGridItem = forwardRef<HTMLDivElement, BentoGridItemProps>(function BentoGridItem(\n { size = \"sm\", span, spotlight, hero, interactive, className, style, children, ...props },\n ref,\n) {\n const tileRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n\n // Own prop wins; otherwise inherit the grid's opt-in (default false).\n const spotlightOn = spotlight ?? use(BentoGridContext).spotlight;\n\n // Resolve spans: explicit span wins over size preset.\n const resolvedCol = span?.col ?? SIZE_SPANS[size].col;\n const resolvedRow = span?.row ?? SIZE_SPANS[size].row;\n\n const isInteractive = interactive ?? false;\n\n // isHero: explicit prop or size === \"hero\".\n const isHero = hero ?? size === \"hero\";\n\n // rAF ref so we only schedule one frame at a time.\n const rafRef = useRef<number>(0);\n\n // Cancel a pending frame on unmount — otherwise a mouse move right before\n // the tile unmounts (removed from the grid while hovered) still fires the\n // scheduled callback after teardown.\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!spotlightOn || !tileRef.current || !overlayRef.current) return;\n // Cancel pending rAF to debounce rapid moves.\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(() => {\n if (!tileRef.current || !overlayRef.current) return;\n const rect = tileRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // Direct style mutation — no React render cycle.\n tileRef.current.style.setProperty(\"--bento-x\", `${x}px`);\n tileRef.current.style.setProperty(\"--bento-y\", `${y}px`);\n overlayRef.current.style.opacity = \"1\";\n });\n },\n [spotlightOn],\n );\n\n const handleMouseLeave = useCallback(() => {\n if (!overlayRef.current) return;\n overlayRef.current.style.opacity = \"0\";\n }, []);\n\n // Grid span via inline style. On mobile (grid-cols-1) a col-span of any value\n // is effectively clamped to 1 by the grid itself — a 4-col tile in a 1-col\n // grid still renders in one cell. Row spans are always honoured as-is.\n // We use `gridColumn: \"span N / span N\"` which the browser safely caps at the\n // available track count; no CSS min() with custom-property arithmetic needed.\n const gridStyle: CSSProperties = {\n gridColumn: resolvedCol > 1 ? `span ${resolvedCol} / span ${resolvedCol}` : undefined,\n gridRow: resolvedRow > 1 ? `span ${resolvedRow} / span ${resolvedRow}` : undefined,\n ...style,\n };\n\n // Merge the forwarded ref and the internal tileRef into one callback ref.\n const mergedRef = useCallback(\n (node: HTMLDivElement | null) => {\n (tileRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref],\n );\n\n return (\n <div\n ref={mergedRef as React.Ref<HTMLDivElement>}\n className={cn(\n bentoGridItemVariants({\n hero: isHero,\n interactive: isInteractive,\n }),\n className,\n )}\n style={gridStyle}\n data-slot=\"bento-grid-item\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n {/* Spotlight overlay — OPT-IN, decorative, pointer-events-none, aria-hidden.\n Hidden in full under reduced-motion (the cursor-following IS the motion).\n Color is a color-mix tint of --primary (token-derived, no raw color). */}\n {spotlightOn && (\n <div\n ref={overlayRef}\n aria-hidden=\"true\"\n data-testid=\"bento-spotlight\"\n className={cn(\n \"pointer-events-none absolute inset-0 z-10\",\n \"opacity-0 transition-opacity duration-base ease-standard\",\n // Suppress entirely under reduced-motion (cursor tracking = motion).\n \"motion-reduce:hidden\",\n )}\n style={{\n // Spotlight color is a DERIVED tint of the --primary token (not a raw\n // literal), so it stays theme-correct in every theme without a new\n // token. `color-mix` keeps it ~12% primary over transparent.\n background:\n \"radial-gradient(400px circle at var(--bento-x, 50%) var(--bento-y, 50%), color-mix(in oklch, var(--primary) 12%, transparent), transparent 70%)\",\n }}\n />\n )}\n {/* Tile content — min-w-0 on inner wrapper prevents flex children from\n overflowing on long unbroken strings (the silent truncation culprit). */}\n <div className=\"relative z-20 flex min-w-0 flex-1 flex-col\">{children}</div>\n </div>\n );\n});\n"],"mappings":"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","names":["BentoGrid","BentoGridItem"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/virtual-select/use-virtual-listbox.ts
|
|
4
|
+
import { useCallback, useEffect, useState } from "react";
|
|
5
|
+
function findNext(filtered, from) {
|
|
6
|
+
for (let i = Math.max(0, from); i < filtered.length; i++) {
|
|
7
|
+
if (!filtered[i]?.disabled) return i;
|
|
8
|
+
}
|
|
9
|
+
return -1;
|
|
10
|
+
}
|
|
11
|
+
function findPrev(filtered, from) {
|
|
12
|
+
for (let i = Math.min(from, filtered.length - 1); i >= 0; i--) {
|
|
13
|
+
if (!filtered[i]?.disabled) return i;
|
|
14
|
+
}
|
|
15
|
+
return -1;
|
|
16
|
+
}
|
|
17
|
+
function useVirtualListbox({
|
|
18
|
+
count,
|
|
19
|
+
filtered,
|
|
20
|
+
isOpen,
|
|
21
|
+
onSelect,
|
|
22
|
+
virtualizer
|
|
23
|
+
}) {
|
|
24
|
+
const [activeIndex, setActiveIndexRaw] = useState(0);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const first = findNext(filtered, 0);
|
|
27
|
+
setActiveIndexRaw(first >= 0 ? first : 0);
|
|
28
|
+
}, [filtered]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (!isOpen) setActiveIndexRaw(0);
|
|
31
|
+
}, [isOpen]);
|
|
32
|
+
const setActiveIndex = useCallback(
|
|
33
|
+
(index) => {
|
|
34
|
+
const clamped = Math.max(0, Math.min(index, count - 1));
|
|
35
|
+
setActiveIndexRaw(clamped);
|
|
36
|
+
virtualizer?.scrollToIndex(clamped, { align: "auto" });
|
|
37
|
+
},
|
|
38
|
+
[count, virtualizer]
|
|
39
|
+
);
|
|
40
|
+
const onInputKeyDown = useCallback(
|
|
41
|
+
(e) => {
|
|
42
|
+
if (!isOpen) return;
|
|
43
|
+
switch (e.key) {
|
|
44
|
+
case "ArrowDown": {
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
if (count === 0) return;
|
|
47
|
+
const next = findNext(filtered, activeIndex + 1);
|
|
48
|
+
if (next >= 0) setActiveIndex(next);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case "ArrowUp": {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
if (count === 0) return;
|
|
54
|
+
const prev = findPrev(filtered, activeIndex - 1);
|
|
55
|
+
if (prev >= 0) setActiveIndex(prev);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case "Home": {
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
if (count === 0) return;
|
|
61
|
+
const first = findNext(filtered, 0);
|
|
62
|
+
setActiveIndex(first >= 0 ? first : 0);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case "End": {
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
if (count === 0) return;
|
|
68
|
+
const last = findPrev(filtered, filtered.length - 1);
|
|
69
|
+
setActiveIndex(last >= 0 ? last : 0);
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case "Enter": {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
if (count === 0) return;
|
|
75
|
+
const opt = filtered[activeIndex];
|
|
76
|
+
if (opt && !opt.disabled) {
|
|
77
|
+
onSelect(opt.value);
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
// Escape is handled by Radix Popover (it closes the portal and
|
|
82
|
+
// returns focus to the trigger). No additional handling required here.
|
|
83
|
+
default:
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
[isOpen, count, filtered, activeIndex, setActiveIndex, onSelect]
|
|
88
|
+
);
|
|
89
|
+
return { activeIndex, setActiveIndex, onInputKeyDown };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export {
|
|
93
|
+
useVirtualListbox
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=chunk-AFJCS2WV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/virtual-select/use-virtual-listbox.ts"],"sourcesContent":["// a2ui.exposed: yes\n\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { Virtualizer } from \"@tanstack/react-virtual\";\n\nexport interface VirtualSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface UseVirtualListboxOptions {\n count: number;\n filtered: VirtualSelectOption[];\n /** Reserved for future use (e.g. multi-select keyboard shortcuts). */\n multiple?: boolean;\n isOpen: boolean;\n onSelect: (value: string) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n virtualizer: Virtualizer<any, any> | null;\n}\n\ninterface UseVirtualListboxReturn {\n activeIndex: number;\n setActiveIndex: (index: number) => void;\n onInputKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\n/** First non-disabled option index at or after `from`; -1 if none exists. */\nfunction findNext(filtered: VirtualSelectOption[], from: number): number {\n for (let i = Math.max(0, from); i < filtered.length; i++) {\n if (!filtered[i]?.disabled) return i;\n }\n return -1;\n}\n\n/** Last non-disabled option index at or before `from`; -1 if none exists. */\nfunction findPrev(filtered: VirtualSelectOption[], from: number): number {\n for (let i = Math.min(from, filtered.length - 1); i >= 0; i--) {\n if (!filtered[i]?.disabled) return i;\n }\n return -1;\n}\n\n/**\n * Keyboard navigation logic for the VirtualSelect listbox.\n * Encapsulates ArrowDown/Up/Home/End/Enter/Escape handling.\n * Focus stays on the search input; `aria-activedescendant` tracks the active row.\n */\nexport function useVirtualListbox({\n count,\n filtered,\n isOpen,\n onSelect,\n virtualizer,\n}: UseVirtualListboxOptions): UseVirtualListboxReturn {\n const [activeIndex, setActiveIndexRaw] = useState(0);\n\n // When the filtered list changes, reset to the first enabled option.\n useEffect(() => {\n const first = findNext(filtered, 0);\n setActiveIndexRaw(first >= 0 ? first : 0);\n }, [filtered]);\n\n // When the popover closes, reset to 0.\n useEffect(() => {\n if (!isOpen) setActiveIndexRaw(0);\n }, [isOpen]);\n\n const setActiveIndex = useCallback(\n (index: number) => {\n const clamped = Math.max(0, Math.min(index, count - 1));\n setActiveIndexRaw(clamped);\n virtualizer?.scrollToIndex(clamped, { align: \"auto\" });\n },\n [count, virtualizer],\n );\n\n const onInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!isOpen) return;\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (count === 0) return;\n const next = findNext(filtered, activeIndex + 1);\n if (next >= 0) setActiveIndex(next);\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n if (count === 0) return;\n const prev = findPrev(filtered, activeIndex - 1);\n if (prev >= 0) setActiveIndex(prev);\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (count === 0) return;\n const first = findNext(filtered, 0);\n setActiveIndex(first >= 0 ? first : 0);\n break;\n }\n case \"End\": {\n e.preventDefault();\n if (count === 0) return;\n const last = findPrev(filtered, filtered.length - 1);\n setActiveIndex(last >= 0 ? last : 0);\n break;\n }\n case \"Enter\": {\n e.preventDefault();\n if (count === 0) return;\n const opt = filtered[activeIndex];\n if (opt && !opt.disabled) {\n onSelect(opt.value);\n }\n break;\n }\n // Escape is handled by Radix Popover (it closes the portal and\n // returns focus to the trigger). No additional handling required here.\n default:\n break;\n }\n },\n [isOpen, count, filtered, activeIndex, setActiveIndex, onSelect],\n );\n\n return { activeIndex, setActiveIndex, onInputKeyDown };\n}\n"],"mappings":";;;AAGA,SAAS,aAAa,WAAW,gBAAgB;AA2BjD,SAAS,SAAS,UAAiC,MAAsB;AACvE,WAAS,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxD,QAAI,CAAC,SAAS,CAAC,GAAG,SAAU,QAAO;AAAA,EACrC;AACA,SAAO;AACT;AAGA,SAAS,SAAS,UAAiC,MAAsB;AACvE,WAAS,IAAI,KAAK,IAAI,MAAM,SAAS,SAAS,CAAC,GAAG,KAAK,GAAG,KAAK;AAC7D,QAAI,CAAC,SAAS,CAAC,GAAG,SAAU,QAAO;AAAA,EACrC;AACA,SAAO;AACT;AAOO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsD;AACpD,QAAM,CAAC,aAAa,iBAAiB,IAAI,SAAS,CAAC;AAGnD,YAAU,MAAM;AACd,UAAM,QAAQ,SAAS,UAAU,CAAC;AAClC,sBAAkB,SAAS,IAAI,QAAQ,CAAC;AAAA,EAC1C,GAAG,CAAC,QAAQ,CAAC;AAGb,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ,mBAAkB,CAAC;AAAA,EAClC,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,iBAAiB;AAAA,IACrB,CAAC,UAAkB;AACjB,YAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,QAAQ,CAAC,CAAC;AACtD,wBAAkB,OAAO;AACzB,mBAAa,cAAc,SAAS,EAAE,OAAO,OAAO,CAAC;AAAA,IACvD;AAAA,IACA,CAAC,OAAO,WAAW;AAAA,EACrB;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,MAA6C;AAC5C,UAAI,CAAC,OAAQ;AAEb,cAAQ,EAAE,KAAK;AAAA,QACb,KAAK,aAAa;AAChB,YAAE,eAAe;AACjB,cAAI,UAAU,EAAG;AACjB,gBAAM,OAAO,SAAS,UAAU,cAAc,CAAC;AAC/C,cAAI,QAAQ,EAAG,gBAAe,IAAI;AAClC;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,YAAE,eAAe;AACjB,cAAI,UAAU,EAAG;AACjB,gBAAM,OAAO,SAAS,UAAU,cAAc,CAAC;AAC/C,cAAI,QAAQ,EAAG,gBAAe,IAAI;AAClC;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,YAAE,eAAe;AACjB,cAAI,UAAU,EAAG;AACjB,gBAAM,QAAQ,SAAS,UAAU,CAAC;AAClC,yBAAe,SAAS,IAAI,QAAQ,CAAC;AACrC;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,YAAE,eAAe;AACjB,cAAI,UAAU,EAAG;AACjB,gBAAM,OAAO,SAAS,UAAU,SAAS,SAAS,CAAC;AACnD,yBAAe,QAAQ,IAAI,OAAO,CAAC;AACnC;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,YAAE,eAAe;AACjB,cAAI,UAAU,EAAG;AACjB,gBAAM,MAAM,SAAS,WAAW;AAChC,cAAI,OAAO,CAAC,IAAI,UAAU;AACxB,qBAAS,IAAI,KAAK;AAAA,UACpB;AACA;AAAA,QACF;AAAA;AAAA;AAAA,QAGA;AACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,OAAO,UAAU,aAAa,gBAAgB,QAAQ;AAAA,EACjE;AAEA,SAAO,EAAE,aAAa,gBAAgB,eAAe;AACvD;","names":[]}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Input
|
|
4
|
+
} from "./chunk-I3U52BDH.js";
|
|
5
|
+
import {
|
|
6
|
+
useLocale
|
|
7
|
+
} from "./chunk-EJQYE4MY.js";
|
|
8
|
+
import {
|
|
9
|
+
Button
|
|
10
|
+
} from "./chunk-C5QBV5RE.js";
|
|
11
|
+
import {
|
|
12
|
+
cn
|
|
13
|
+
} from "./chunk-FXWWDMMP.js";
|
|
14
|
+
|
|
15
|
+
// src/components/list-editor/list-editor.tsx
|
|
16
|
+
import {
|
|
17
|
+
forwardRef,
|
|
18
|
+
useCallback,
|
|
19
|
+
useEffect,
|
|
20
|
+
useMemo,
|
|
21
|
+
useRef,
|
|
22
|
+
useState
|
|
23
|
+
} from "react";
|
|
24
|
+
import { ChevronDown, ChevronUp, Plus, X } from "lucide-react";
|
|
25
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
26
|
+
var ListEditor = forwardRef(function ListEditor2({
|
|
27
|
+
value: valueProp,
|
|
28
|
+
defaultValue,
|
|
29
|
+
onValueChange,
|
|
30
|
+
reorderable = true,
|
|
31
|
+
placeholder,
|
|
32
|
+
max,
|
|
33
|
+
disabled,
|
|
34
|
+
addLabel,
|
|
35
|
+
className,
|
|
36
|
+
...props
|
|
37
|
+
}, ref) {
|
|
38
|
+
const { t } = useLocale();
|
|
39
|
+
const isControlled = valueProp !== void 0;
|
|
40
|
+
const [internalValue, setInternalValue] = useState(defaultValue ?? []);
|
|
41
|
+
const rows = useMemo(
|
|
42
|
+
() => isControlled ? valueProp ?? [] : internalValue,
|
|
43
|
+
[isControlled, valueProp, internalValue]
|
|
44
|
+
);
|
|
45
|
+
const commit = useCallback(
|
|
46
|
+
(next) => {
|
|
47
|
+
if (!isControlled) setInternalValue(next);
|
|
48
|
+
onValueChange?.(next);
|
|
49
|
+
},
|
|
50
|
+
[isControlled, onValueChange]
|
|
51
|
+
);
|
|
52
|
+
const idCounterRef = useRef(0);
|
|
53
|
+
const makeId = useCallback(() => `list-editor-row-${idCounterRef.current++}`, []);
|
|
54
|
+
const [rowIds, setRowIds] = useState(() => rows.map(() => makeId()));
|
|
55
|
+
const lastRowsRef = useRef(rows);
|
|
56
|
+
const upButtonRefs = useRef(/* @__PURE__ */ new Map());
|
|
57
|
+
const downButtonRefs = useRef(/* @__PURE__ */ new Map());
|
|
58
|
+
const pendingFocusRef = useRef(null);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (rows === lastRowsRef.current) return;
|
|
61
|
+
lastRowsRef.current = rows;
|
|
62
|
+
setRowIds((prev) => {
|
|
63
|
+
if (prev.length === rows.length) return prev;
|
|
64
|
+
if (rows.length > prev.length) {
|
|
65
|
+
return [...prev, ...Array.from({ length: rows.length - prev.length }, () => makeId())];
|
|
66
|
+
}
|
|
67
|
+
return prev.slice(0, rows.length);
|
|
68
|
+
});
|
|
69
|
+
}, [rows, makeId]);
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
const pending = pendingFocusRef.current;
|
|
72
|
+
if (!pending) return;
|
|
73
|
+
pendingFocusRef.current = null;
|
|
74
|
+
const map = pending.want === "up" ? upButtonRefs.current : downButtonRefs.current;
|
|
75
|
+
map.get(pending.id)?.focus();
|
|
76
|
+
}, [rowIds]);
|
|
77
|
+
const addRow = useCallback(() => {
|
|
78
|
+
if (max !== void 0 && rows.length >= max) return;
|
|
79
|
+
commit([...rows, ""]);
|
|
80
|
+
setRowIds((ids) => [...ids, makeId()]);
|
|
81
|
+
}, [rows, max, commit, makeId]);
|
|
82
|
+
const updateRow = useCallback(
|
|
83
|
+
(index, next) => {
|
|
84
|
+
commit(rows.map((row, i) => i === index ? next : row));
|
|
85
|
+
},
|
|
86
|
+
[rows, commit]
|
|
87
|
+
);
|
|
88
|
+
const removeRow = useCallback(
|
|
89
|
+
(index) => {
|
|
90
|
+
commit(rows.filter((_, i) => i !== index));
|
|
91
|
+
setRowIds((ids) => ids.filter((_, i) => i !== index));
|
|
92
|
+
},
|
|
93
|
+
[rows, commit]
|
|
94
|
+
);
|
|
95
|
+
const moveRow = useCallback(
|
|
96
|
+
(index, direction) => {
|
|
97
|
+
const target = index + direction;
|
|
98
|
+
if (target < 0 || target >= rows.length) return;
|
|
99
|
+
const next = [...rows];
|
|
100
|
+
const [moved] = next.splice(index, 1);
|
|
101
|
+
next.splice(target, 0, moved);
|
|
102
|
+
const movedId = rowIds[index];
|
|
103
|
+
commit(next);
|
|
104
|
+
setRowIds((ids) => {
|
|
105
|
+
const nextIds = [...ids];
|
|
106
|
+
const [id] = nextIds.splice(index, 1);
|
|
107
|
+
nextIds.splice(target, 0, id);
|
|
108
|
+
return nextIds;
|
|
109
|
+
});
|
|
110
|
+
const activated = direction === -1 ? "up" : "down";
|
|
111
|
+
const willDisable = activated === "up" && target === 0 || activated === "down" && target === rows.length - 1;
|
|
112
|
+
pendingFocusRef.current = {
|
|
113
|
+
id: movedId,
|
|
114
|
+
want: willDisable ? activated === "up" ? "down" : "up" : activated
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
[rows, rowIds, commit]
|
|
118
|
+
);
|
|
119
|
+
const atMax = max !== void 0 && rows.length >= max;
|
|
120
|
+
return /* @__PURE__ */ jsxs(
|
|
121
|
+
"div",
|
|
122
|
+
{
|
|
123
|
+
ref,
|
|
124
|
+
"data-slot": "list-editor",
|
|
125
|
+
className: cn("flex flex-col gap-2", className),
|
|
126
|
+
...props,
|
|
127
|
+
children: [
|
|
128
|
+
rows.length === 0 ? /* @__PURE__ */ jsx("p", { "data-slot": "list-editor-empty", className: "text-body text-muted-foreground", children: t("ui.listEditor.empty") }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: rows.map((row, index) => {
|
|
129
|
+
const rowId = rowIds[index] ?? String(index);
|
|
130
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "list-editor-row", className: "flex items-center gap-1", children: [
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
132
|
+
Input,
|
|
133
|
+
{
|
|
134
|
+
"data-slot": "list-editor-item",
|
|
135
|
+
value: row,
|
|
136
|
+
placeholder,
|
|
137
|
+
disabled,
|
|
138
|
+
"aria-label": t("ui.listEditor.itemLabel", { n: index + 1 }),
|
|
139
|
+
onChange: (event) => updateRow(index, event.target.value),
|
|
140
|
+
className: "flex-1"
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
reorderable && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
144
|
+
/* @__PURE__ */ jsx(
|
|
145
|
+
Button,
|
|
146
|
+
{
|
|
147
|
+
ref: (el) => {
|
|
148
|
+
if (el) upButtonRefs.current.set(rowId, el);
|
|
149
|
+
else upButtonRefs.current.delete(rowId);
|
|
150
|
+
},
|
|
151
|
+
"data-slot": "list-editor-move-up",
|
|
152
|
+
type: "button",
|
|
153
|
+
variant: "ghost",
|
|
154
|
+
size: "icon-sm",
|
|
155
|
+
disabled: disabled || index === 0,
|
|
156
|
+
"aria-label": t("ui.listEditor.moveUp", { n: index + 1 }),
|
|
157
|
+
onClick: () => moveRow(index, -1),
|
|
158
|
+
children: /* @__PURE__ */ jsx(ChevronUp, { "aria-hidden": "true" })
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
/* @__PURE__ */ jsx(
|
|
162
|
+
Button,
|
|
163
|
+
{
|
|
164
|
+
ref: (el) => {
|
|
165
|
+
if (el) downButtonRefs.current.set(rowId, el);
|
|
166
|
+
else downButtonRefs.current.delete(rowId);
|
|
167
|
+
},
|
|
168
|
+
"data-slot": "list-editor-move-down",
|
|
169
|
+
type: "button",
|
|
170
|
+
variant: "ghost",
|
|
171
|
+
size: "icon-sm",
|
|
172
|
+
disabled: disabled || index === rows.length - 1,
|
|
173
|
+
"aria-label": t("ui.listEditor.moveDown", { n: index + 1 }),
|
|
174
|
+
onClick: () => moveRow(index, 1),
|
|
175
|
+
children: /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": "true" })
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
] }),
|
|
179
|
+
/* @__PURE__ */ jsx(
|
|
180
|
+
Button,
|
|
181
|
+
{
|
|
182
|
+
"data-slot": "list-editor-remove",
|
|
183
|
+
type: "button",
|
|
184
|
+
variant: "ghost",
|
|
185
|
+
size: "icon-sm",
|
|
186
|
+
disabled,
|
|
187
|
+
"aria-label": t("ui.listEditor.removeItem", { n: index + 1 }),
|
|
188
|
+
onClick: () => removeRow(index),
|
|
189
|
+
children: /* @__PURE__ */ jsx(X, { "aria-hidden": "true" })
|
|
190
|
+
}
|
|
191
|
+
)
|
|
192
|
+
] }, rowId);
|
|
193
|
+
}) }),
|
|
194
|
+
/* @__PURE__ */ jsxs(
|
|
195
|
+
Button,
|
|
196
|
+
{
|
|
197
|
+
"data-slot": "list-editor-add",
|
|
198
|
+
type: "button",
|
|
199
|
+
variant: "outline-subtle",
|
|
200
|
+
size: "sm",
|
|
201
|
+
disabled: disabled || atMax,
|
|
202
|
+
onClick: addRow,
|
|
203
|
+
className: "self-start",
|
|
204
|
+
children: [
|
|
205
|
+
/* @__PURE__ */ jsx(Plus, { "aria-hidden": "true" }),
|
|
206
|
+
addLabel ?? t("ui.listEditor.addItem")
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
]
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
export {
|
|
216
|
+
ListEditor
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=chunk-ALNJV4XB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/list-editor/list-editor.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { ChevronDown, ChevronUp, Plus, X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../button\";\nimport { Input } from \"../input\";\nimport { useLocale } from \"../locale-provider\";\n\nexport interface ListEditorProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** Controlled list of strings. */\n value?: string[];\n /** Uncontrolled initial list of strings. */\n defaultValue?: string[];\n /** Called when the list changes (add, remove, edit, or reorder). */\n onValueChange?: (value: string[]) => void;\n /**\n * Whether rows can be reordered via move-up/move-down buttons. Default\n * true. Reordering is keyboard-operable (real buttons), never drag-only.\n */\n reorderable?: boolean;\n /** Placeholder shown in each row's text field. */\n placeholder?: string;\n /** Maximum number of rows allowed. */\n max?: number;\n /** Whether the editor is disabled. */\n disabled?: boolean;\n /** Label for the \"add item\" control. */\n addLabel?: ReactNode;\n}\n\n/**\n * ListEditor — one `Input` per row over a `string[]`, with add / remove /\n * keyboard-operable reorder (move-up/move-down buttons, not drag-and-drop —\n * no drag library exists in the monorepo and none should be added for this).\n *\n * Controlled via `value`/`onValueChange`; uncontrolled via `defaultValue`.\n */\nexport const ListEditor = forwardRef<HTMLDivElement, ListEditorProps>(function ListEditor(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n reorderable = true,\n placeholder,\n max,\n disabled,\n addLabel,\n className,\n ...props\n },\n ref,\n) {\n const { t } = useLocale();\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue ?? []);\n const rows = useMemo(\n () => (isControlled ? (valueProp ?? []) : internalValue),\n [isControlled, valueProp, internalValue],\n );\n\n const commit = useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n // `rows` is a bare `string[]` with no identity of its own — keying each\n // row's DOM by its ARRAY INDEX means a reorder swaps which row's data a\n // given DOM node (and its focused \"Move up\" button) renders, not which\n // node holds the moved row's data. A stable per-row id, generated once and\n // carried through add/remove/move in lockstep with `rows`, lets React\n // (and thus keyboard focus) follow the actual row instead of the slot.\n const idCounterRef = useRef(0);\n const makeId = useCallback(() => `list-editor-row-${idCounterRef.current++}`, []);\n const [rowIds, setRowIds] = useState<string[]>(() => rows.map(() => makeId()));\n const lastRowsRef = useRef(rows);\n const upButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n const downButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n const pendingFocusRef = useRef<{ id: string; want: \"up\" | \"down\" } | null>(null);\n\n // Safety net for a `rows` change that did NOT come from add/remove/move\n // below (e.g. a controlled `value` reset by the app) — keeps `rowIds` the\n // same length as `rows` without guessing at a diff.\n useEffect(() => {\n if (rows === lastRowsRef.current) return;\n lastRowsRef.current = rows;\n setRowIds((prev) => {\n if (prev.length === rows.length) return prev;\n if (rows.length > prev.length) {\n return [...prev, ...Array.from({ length: rows.length - prev.length }, () => makeId())];\n }\n return prev.slice(0, rows.length);\n });\n }, [rows, makeId]);\n\n useEffect(() => {\n const pending = pendingFocusRef.current;\n if (!pending) return;\n pendingFocusRef.current = null;\n const map = pending.want === \"up\" ? upButtonRefs.current : downButtonRefs.current;\n map.get(pending.id)?.focus();\n }, [rowIds]);\n\n const addRow = useCallback(() => {\n if (max !== undefined && rows.length >= max) return;\n commit([...rows, \"\"]);\n setRowIds((ids) => [...ids, makeId()]);\n }, [rows, max, commit, makeId]);\n\n const updateRow = useCallback(\n (index: number, next: string) => {\n commit(rows.map((row, i) => (i === index ? next : row)));\n },\n [rows, commit],\n );\n\n const removeRow = useCallback(\n (index: number) => {\n commit(rows.filter((_, i) => i !== index));\n setRowIds((ids) => ids.filter((_, i) => i !== index));\n },\n [rows, commit],\n );\n\n const moveRow = useCallback(\n (index: number, direction: -1 | 1) => {\n const target = index + direction;\n if (target < 0 || target >= rows.length) return;\n const next = [...rows];\n const [moved] = next.splice(index, 1);\n next.splice(target, 0, moved!);\n const movedId = rowIds[index]!;\n commit(next);\n setRowIds((ids) => {\n const nextIds = [...ids];\n const [id] = nextIds.splice(index, 1);\n nextIds.splice(target, 0, id!);\n return nextIds;\n });\n\n // The button the user just pressed keeps focus by default (same id ⇒\n // same DOM node, just repositioned). The one case that needs help: the\n // row landed at the top/bottom, so THIS direction's button is now\n // `disabled` — a browser blurs a focused element the instant it goes\n // disabled, dropping focus to <body>. Redirect to the row's other\n // reorder button instead, which stays enabled.\n const activated: \"up\" | \"down\" = direction === -1 ? \"up\" : \"down\";\n const willDisable =\n (activated === \"up\" && target === 0) ||\n (activated === \"down\" && target === rows.length - 1);\n pendingFocusRef.current = {\n id: movedId,\n want: willDisable ? (activated === \"up\" ? \"down\" : \"up\") : activated,\n };\n },\n [rows, rowIds, commit],\n );\n\n const atMax = max !== undefined && rows.length >= max;\n\n return (\n <div\n ref={ref}\n data-slot=\"list-editor\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n >\n {rows.length === 0 ? (\n <p data-slot=\"list-editor-empty\" className=\"text-body text-muted-foreground\">\n {t(\"ui.listEditor.empty\")}\n </p>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {rows.map((row, index) => {\n const rowId = rowIds[index] ?? String(index);\n return (\n <div key={rowId} data-slot=\"list-editor-row\" className=\"flex items-center gap-1\">\n <Input\n data-slot=\"list-editor-item\"\n value={row}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={t(\"ui.listEditor.itemLabel\", { n: index + 1 })}\n onChange={(event) => updateRow(index, event.target.value)}\n className=\"flex-1\"\n />\n {reorderable && (\n <>\n <Button\n ref={(el) => {\n if (el) upButtonRefs.current.set(rowId, el);\n else upButtonRefs.current.delete(rowId);\n }}\n data-slot=\"list-editor-move-up\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled || index === 0}\n aria-label={t(\"ui.listEditor.moveUp\", { n: index + 1 })}\n onClick={() => moveRow(index, -1)}\n >\n <ChevronUp aria-hidden=\"true\" />\n </Button>\n <Button\n ref={(el) => {\n if (el) downButtonRefs.current.set(rowId, el);\n else downButtonRefs.current.delete(rowId);\n }}\n data-slot=\"list-editor-move-down\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled || index === rows.length - 1}\n aria-label={t(\"ui.listEditor.moveDown\", { n: index + 1 })}\n onClick={() => moveRow(index, 1)}\n >\n <ChevronDown aria-hidden=\"true\" />\n </Button>\n </>\n )}\n <Button\n data-slot=\"list-editor-remove\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled}\n aria-label={t(\"ui.listEditor.removeItem\", { n: index + 1 })}\n onClick={() => removeRow(index)}\n >\n <X aria-hidden=\"true\" />\n </Button>\n </div>\n );\n })}\n </div>\n )}\n <Button\n data-slot=\"list-editor-add\"\n type=\"button\"\n variant=\"outline-subtle\"\n size=\"sm\"\n disabled={disabled || atMax}\n onClick={addRow}\n className=\"self-start\"\n >\n <Plus aria-hidden=\"true\" />\n {addLabel ?? t(\"ui.listEditor.addItem\")}\n </Button>\n </div>\n );\n});\n"],"mappings":"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","names":["ListEditor"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|