@elabs-ai/components-ui 4.2.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/chunk-22Z735L6.js +18 -0
- package/dist/chunk-22Z735L6.js.map +1 -0
- package/dist/chunk-23E62DNM.js +2 -0
- package/dist/chunk-23E62DNM.js.map +1 -0
- package/dist/chunk-2AABRSIN.js +2 -0
- package/dist/chunk-2AABRSIN.js.map +1 -0
- package/dist/chunk-2DFB4YTK.js +55 -0
- package/dist/chunk-2DFB4YTK.js.map +1 -0
- package/dist/chunk-2SBYBN45.js +2 -0
- package/dist/chunk-2SBYBN45.js.map +1 -0
- package/dist/chunk-2ZMPAD6C.js +357 -0
- package/dist/chunk-2ZMPAD6C.js.map +1 -0
- package/dist/chunk-36SY7TID.js +36 -0
- package/dist/chunk-36SY7TID.js.map +1 -0
- package/dist/chunk-36VULFFV.js +2 -0
- package/dist/chunk-36VULFFV.js.map +1 -0
- package/dist/chunk-3BZBNDRP.js +123 -0
- package/dist/chunk-3BZBNDRP.js.map +1 -0
- package/dist/chunk-3DJ4KY3U.js +82 -0
- package/dist/chunk-3DJ4KY3U.js.map +1 -0
- package/dist/chunk-3EDNWHWD.js +125 -0
- package/dist/chunk-3EDNWHWD.js.map +1 -0
- package/dist/chunk-3JAEQNCB.js +60 -0
- package/dist/chunk-3JAEQNCB.js.map +1 -0
- package/dist/chunk-3OSGTUN2.js +2 -0
- package/dist/chunk-3OSGTUN2.js.map +1 -0
- package/dist/chunk-3P7SRCDB.js +23 -0
- package/dist/chunk-3P7SRCDB.js.map +1 -0
- package/dist/chunk-3ZR5PMKB.js +41 -0
- package/dist/chunk-3ZR5PMKB.js.map +1 -0
- package/dist/chunk-45ICJ3EV.js +2 -0
- package/dist/chunk-45ICJ3EV.js.map +1 -0
- package/dist/chunk-47YSHR3H.js +77 -0
- package/dist/chunk-47YSHR3H.js.map +1 -0
- package/dist/chunk-4ACT7RLU.js +2 -0
- package/dist/chunk-4ACT7RLU.js.map +1 -0
- package/dist/chunk-4B2E4OCZ.js +44 -0
- package/dist/chunk-4B2E4OCZ.js.map +1 -0
- package/dist/chunk-4C4D6T5M.js +229 -0
- package/dist/chunk-4C4D6T5M.js.map +1 -0
- package/dist/chunk-4DWIMWR5.js +726 -0
- package/dist/chunk-4DWIMWR5.js.map +1 -0
- package/dist/chunk-4DZGAY6R.js +140 -0
- package/dist/chunk-4DZGAY6R.js.map +1 -0
- package/dist/chunk-4HTVJZVG.js +2 -0
- package/dist/chunk-4HTVJZVG.js.map +1 -0
- package/dist/chunk-4KDA5MDC.js +2 -0
- package/dist/chunk-4KDA5MDC.js.map +1 -0
- package/dist/chunk-4NSCLIES.js +126 -0
- package/dist/chunk-4NSCLIES.js.map +1 -0
- package/dist/chunk-4PXDZR2W.js +2 -0
- package/dist/chunk-4PXDZR2W.js.map +1 -0
- package/dist/chunk-4UWOADYM.js +2 -0
- package/dist/chunk-4UWOADYM.js.map +1 -0
- package/dist/chunk-4VCU3GFI.js +23 -0
- package/dist/chunk-4VCU3GFI.js.map +1 -0
- package/dist/chunk-4W3MVVKN.js +66 -0
- package/dist/chunk-4W3MVVKN.js.map +1 -0
- package/dist/chunk-4YOFSGHD.js +2 -0
- package/dist/chunk-4YOFSGHD.js.map +1 -0
- package/dist/chunk-545HI223.js +2 -0
- package/dist/chunk-545HI223.js.map +1 -0
- package/dist/chunk-55BM2IU2.js +186 -0
- package/dist/chunk-55BM2IU2.js.map +1 -0
- package/dist/chunk-5C5W52O2.js +27 -0
- package/dist/chunk-5C5W52O2.js.map +1 -0
- package/dist/chunk-5G2DDMHR.js +2 -0
- package/dist/chunk-5G2DDMHR.js.map +1 -0
- package/dist/chunk-5LCN5Q2L.js +23 -0
- package/dist/chunk-5LCN5Q2L.js.map +1 -0
- package/dist/chunk-5MXQ5CP7.js +93 -0
- package/dist/chunk-5MXQ5CP7.js.map +1 -0
- package/dist/chunk-5P4BSHIG.js +2 -0
- package/dist/chunk-5P4BSHIG.js.map +1 -0
- package/dist/chunk-5SHHIQVA.js +22 -0
- package/dist/chunk-5SHHIQVA.js.map +1 -0
- package/dist/chunk-5YZLOAKR.js +2 -0
- package/dist/chunk-5YZLOAKR.js.map +1 -0
- package/dist/chunk-653ZIWX6.js +2 -0
- package/dist/chunk-653ZIWX6.js.map +1 -0
- package/dist/chunk-6DHG7JVP.js +2 -0
- package/dist/chunk-6DHG7JVP.js.map +1 -0
- package/dist/chunk-6HTZBBTC.js +35 -0
- package/dist/chunk-6HTZBBTC.js.map +1 -0
- package/dist/chunk-6ROQKB4U.js +2 -0
- package/dist/chunk-6ROQKB4U.js.map +1 -0
- package/dist/chunk-6S43VAN7.js +2 -0
- package/dist/chunk-6S43VAN7.js.map +1 -0
- package/dist/chunk-6TJVJPNU.js +1321 -0
- package/dist/chunk-6TJVJPNU.js.map +1 -0
- package/dist/chunk-6VLJL7Q4.js +2 -0
- package/dist/chunk-6VLJL7Q4.js.map +1 -0
- package/dist/chunk-72H7HUTH.js +161 -0
- package/dist/chunk-72H7HUTH.js.map +1 -0
- package/dist/chunk-7KV7H2TW.js +323 -0
- package/dist/chunk-7KV7H2TW.js.map +1 -0
- package/dist/chunk-7WIHVGYL.js +2 -0
- package/dist/chunk-7WIHVGYL.js.map +1 -0
- package/dist/chunk-7Z2RAGOA.js +90 -0
- package/dist/chunk-7Z2RAGOA.js.map +1 -0
- package/dist/chunk-AA3SPDJU.js +2 -0
- package/dist/chunk-AA3SPDJU.js.map +1 -0
- package/dist/chunk-AC7X3D2M.js +2 -0
- package/dist/chunk-AC7X3D2M.js.map +1 -0
- package/dist/chunk-AE6LFFME.js +201 -0
- package/dist/chunk-AE6LFFME.js.map +1 -0
- package/dist/chunk-AE6UDP36.js +2 -0
- package/dist/chunk-AE6UDP36.js.map +1 -0
- package/dist/chunk-AFEFAGPW.js +2 -0
- package/dist/chunk-AFEFAGPW.js.map +1 -0
- package/dist/chunk-AFJCS2WV.js +95 -0
- package/dist/chunk-AFJCS2WV.js.map +1 -0
- package/dist/chunk-ALNJV4XB.js +218 -0
- package/dist/chunk-ALNJV4XB.js.map +1 -0
- package/dist/chunk-AQNLEP5F.js +2 -0
- package/dist/chunk-AQNLEP5F.js.map +1 -0
- package/dist/chunk-AUQVJ7KO.js +2 -0
- package/dist/chunk-AUQVJ7KO.js.map +1 -0
- package/dist/chunk-AXHMQOIZ.js +116 -0
- package/dist/chunk-AXHMQOIZ.js.map +1 -0
- package/dist/chunk-AZEABCK4.js +30 -0
- package/dist/chunk-AZEABCK4.js.map +1 -0
- package/dist/chunk-B23VW24W.js +2 -0
- package/dist/chunk-B23VW24W.js.map +1 -0
- package/dist/chunk-B2RSOLLO.js +2 -0
- package/dist/chunk-B2RSOLLO.js.map +1 -0
- package/dist/chunk-B3DANITU.js +85 -0
- package/dist/chunk-B3DANITU.js.map +1 -0
- package/dist/chunk-B7FAQKHH.js +87 -0
- package/dist/chunk-B7FAQKHH.js.map +1 -0
- package/dist/chunk-BDOG4YSM.js +989 -0
- package/dist/chunk-BDOG4YSM.js.map +1 -0
- package/dist/chunk-BRL2HMZJ.js +110 -0
- package/dist/chunk-BRL2HMZJ.js.map +1 -0
- package/dist/chunk-BTBYNKT4.js +2 -0
- package/dist/chunk-BTBYNKT4.js.map +1 -0
- package/dist/chunk-BWL7HWEF.js +325 -0
- package/dist/chunk-BWL7HWEF.js.map +1 -0
- package/dist/chunk-BYFRDLDL.js +246 -0
- package/dist/chunk-BYFRDLDL.js.map +1 -0
- package/dist/chunk-BZQF5QCN.js +18 -0
- package/dist/chunk-BZQF5QCN.js.map +1 -0
- package/dist/chunk-C2AQEEFB.js +2 -0
- package/dist/chunk-C2AQEEFB.js.map +1 -0
- package/dist/chunk-C2ICCCP5.js +400 -0
- package/dist/chunk-C2ICCCP5.js.map +1 -0
- package/dist/chunk-C5QBV5RE.js +77 -0
- package/dist/chunk-C5QBV5RE.js.map +1 -0
- package/dist/chunk-C753P3VJ.js +2 -0
- package/dist/chunk-C753P3VJ.js.map +1 -0
- package/dist/chunk-CDE74W6O.js +2 -0
- package/dist/chunk-CDE74W6O.js.map +1 -0
- package/dist/chunk-CDMJSXCB.js +62 -0
- package/dist/chunk-CDMJSXCB.js.map +1 -0
- package/dist/chunk-CEDK5GM2.js +68 -0
- package/dist/chunk-CEDK5GM2.js.map +1 -0
- package/dist/chunk-CEHCVDYR.js +476 -0
- package/dist/chunk-CEHCVDYR.js.map +1 -0
- package/dist/chunk-CEQ3YKHR.js +35 -0
- package/dist/chunk-CEQ3YKHR.js.map +1 -0
- package/dist/chunk-CEQER4CV.js +2 -0
- package/dist/chunk-CEQER4CV.js.map +1 -0
- package/dist/chunk-CMP4F537.js +190 -0
- package/dist/chunk-CMP4F537.js.map +1 -0
- package/dist/chunk-CRGGGHAM.js +2 -0
- package/dist/chunk-CRGGGHAM.js.map +1 -0
- package/dist/chunk-CRVB4SLG.js +2 -0
- package/dist/chunk-CRVB4SLG.js.map +1 -0
- package/dist/chunk-CT6XJIPY.js +2 -0
- package/dist/chunk-CT6XJIPY.js.map +1 -0
- package/dist/chunk-CY5ISPFB.js +235 -0
- package/dist/chunk-CY5ISPFB.js.map +1 -0
- package/dist/chunk-CY624JOL.js +2 -0
- package/dist/chunk-CY624JOL.js.map +1 -0
- package/dist/chunk-D53EN4Q6.js +2 -0
- package/dist/chunk-D53EN4Q6.js.map +1 -0
- package/dist/chunk-D5INX2EF.js +50 -0
- package/dist/chunk-D5INX2EF.js.map +1 -0
- package/dist/chunk-DCHYNTHI.js +11 -0
- package/dist/chunk-DCHYNTHI.js.map +1 -0
- package/dist/chunk-DIQJODQR.js +2 -0
- package/dist/chunk-DIQJODQR.js.map +1 -0
- package/dist/chunk-DSGTH6JW.js +2 -0
- package/dist/chunk-DSGTH6JW.js.map +1 -0
- package/dist/chunk-DU6ITAJL.js +2 -0
- package/dist/chunk-DU6ITAJL.js.map +1 -0
- package/dist/chunk-DXC3DTCV.js +256 -0
- package/dist/chunk-DXC3DTCV.js.map +1 -0
- package/dist/chunk-DXDLTYTT.js +2 -0
- package/dist/chunk-DXDLTYTT.js.map +1 -0
- package/dist/chunk-E3GNYOLS.js +26 -0
- package/dist/chunk-E3GNYOLS.js.map +1 -0
- package/dist/chunk-EAFPUZ46.js +2 -0
- package/dist/chunk-EAFPUZ46.js.map +1 -0
- package/dist/chunk-EBDOKU5K.js +2 -0
- package/dist/chunk-EBDOKU5K.js.map +1 -0
- package/dist/chunk-EBNPVPR7.js +266 -0
- package/dist/chunk-EBNPVPR7.js.map +1 -0
- package/dist/chunk-EDE73Q6Z.js +2 -0
- package/dist/chunk-EDE73Q6Z.js.map +1 -0
- package/dist/chunk-EJ3XWNY3.js +52 -0
- package/dist/chunk-EJ3XWNY3.js.map +1 -0
- package/dist/chunk-EJQYE4MY.js +100 -0
- package/dist/chunk-EJQYE4MY.js.map +1 -0
- package/dist/chunk-ENL3CCZB.js +385 -0
- package/dist/chunk-ENL3CCZB.js.map +1 -0
- package/dist/chunk-EP3U7OQ3.js +18 -0
- package/dist/chunk-EP3U7OQ3.js.map +1 -0
- package/dist/chunk-ERTYAID6.js +101 -0
- package/dist/chunk-ERTYAID6.js.map +1 -0
- package/dist/chunk-FAOX6A5D.js +2 -0
- package/dist/chunk-FAOX6A5D.js.map +1 -0
- package/dist/chunk-FBJ2JSRA.js +47 -0
- package/dist/chunk-FBJ2JSRA.js.map +1 -0
- package/dist/chunk-FDJ77DTR.js +2 -0
- package/dist/chunk-FDJ77DTR.js.map +1 -0
- package/dist/chunk-FG3PDWE3.js +31 -0
- package/dist/chunk-FG3PDWE3.js.map +1 -0
- package/dist/chunk-FHDJKH2A.js +2 -0
- package/dist/chunk-FHDJKH2A.js.map +1 -0
- package/dist/chunk-FLCQKC64.js +97 -0
- package/dist/chunk-FLCQKC64.js.map +1 -0
- package/dist/chunk-FPLZ24MK.js +2 -0
- package/dist/chunk-FPLZ24MK.js.map +1 -0
- package/dist/chunk-FRFSDZIN.js +2 -0
- package/dist/chunk-FRFSDZIN.js.map +1 -0
- package/dist/chunk-FXC64HLD.js +137 -0
- package/dist/chunk-FXC64HLD.js.map +1 -0
- package/dist/chunk-FXWWDMMP.js +55 -0
- package/dist/chunk-FXWWDMMP.js.map +1 -0
- package/dist/chunk-FZEG2R3E.js +30 -0
- package/dist/chunk-FZEG2R3E.js.map +1 -0
- package/dist/chunk-G3OTDYCD.js +53 -0
- package/dist/chunk-G3OTDYCD.js.map +1 -0
- package/dist/chunk-G72UOVKS.js +2 -0
- package/dist/chunk-G72UOVKS.js.map +1 -0
- package/dist/chunk-GAI4NEPU.js +151 -0
- package/dist/chunk-GAI4NEPU.js.map +1 -0
- package/dist/chunk-GMXSCEYN.js +24 -0
- package/dist/chunk-GMXSCEYN.js.map +1 -0
- package/dist/chunk-GTBVTLZJ.js +54 -0
- package/dist/chunk-GTBVTLZJ.js.map +1 -0
- package/dist/chunk-GTDCC4YX.js +197 -0
- package/dist/chunk-GTDCC4YX.js.map +1 -0
- package/dist/chunk-GV6GQXKX.js +176 -0
- package/dist/chunk-GV6GQXKX.js.map +1 -0
- package/dist/chunk-GWHO5ACE.js +637 -0
- package/dist/chunk-GWHO5ACE.js.map +1 -0
- package/dist/chunk-H5XSI63P.js +2 -0
- package/dist/chunk-H5XSI63P.js.map +1 -0
- package/dist/chunk-HANBQNW3.js +1498 -0
- package/dist/chunk-HANBQNW3.js.map +1 -0
- package/dist/chunk-HCU2JHPH.js +169 -0
- package/dist/chunk-HCU2JHPH.js.map +1 -0
- package/dist/chunk-HDDXP2J7.js +2 -0
- package/dist/chunk-HDDXP2J7.js.map +1 -0
- package/dist/chunk-HDS64Z5L.js +54 -0
- package/dist/chunk-HDS64Z5L.js.map +1 -0
- package/dist/chunk-HF6BGFUV.js +78 -0
- package/dist/chunk-HF6BGFUV.js.map +1 -0
- package/dist/chunk-HHVULJGX.js +2 -0
- package/dist/chunk-HHVULJGX.js.map +1 -0
- package/dist/chunk-HHZJALGA.js +163 -0
- package/dist/chunk-HHZJALGA.js.map +1 -0
- package/dist/chunk-HLMFRCFE.js +2 -0
- package/dist/chunk-HLMFRCFE.js.map +1 -0
- package/dist/chunk-HND6FAMX.js +75 -0
- package/dist/chunk-HND6FAMX.js.map +1 -0
- package/dist/chunk-HNLYRHAU.js +74 -0
- package/dist/chunk-HNLYRHAU.js.map +1 -0
- package/dist/chunk-HPUPDT4Q.js +2 -0
- package/dist/chunk-HPUPDT4Q.js.map +1 -0
- package/dist/chunk-HUIYDDDL.js +189 -0
- package/dist/chunk-HUIYDDDL.js.map +1 -0
- package/dist/chunk-HWVU636Q.js +787 -0
- package/dist/chunk-HWVU636Q.js.map +1 -0
- package/dist/chunk-HXQ4MDCH.js +296 -0
- package/dist/chunk-HXQ4MDCH.js.map +1 -0
- package/dist/chunk-HZPNST7D.js +2 -0
- package/dist/chunk-HZPNST7D.js.map +1 -0
- package/dist/chunk-I3U52BDH.js +36 -0
- package/dist/chunk-I3U52BDH.js.map +1 -0
- package/dist/chunk-I6O6ACCH.js +2 -0
- package/dist/chunk-I6O6ACCH.js.map +1 -0
- package/dist/chunk-IE5GWE72.js +177 -0
- package/dist/chunk-IE5GWE72.js.map +1 -0
- package/dist/chunk-IIY5JRNW.js +93 -0
- package/dist/chunk-IIY5JRNW.js.map +1 -0
- package/dist/chunk-IM5VJP6T.js +2 -0
- package/dist/chunk-IM5VJP6T.js.map +1 -0
- package/dist/chunk-IRUZDWJ3.js +218 -0
- package/dist/chunk-IRUZDWJ3.js.map +1 -0
- package/dist/chunk-ISWUCXEZ.js +2 -0
- package/dist/chunk-ISWUCXEZ.js.map +1 -0
- package/dist/chunk-IUQ474IC.js +2 -0
- package/dist/chunk-IUQ474IC.js.map +1 -0
- package/dist/chunk-IVEDMK5U.js +61 -0
- package/dist/chunk-IVEDMK5U.js.map +1 -0
- package/dist/chunk-IY23F2Y5.js +2 -0
- package/dist/chunk-IY23F2Y5.js.map +1 -0
- package/dist/chunk-JCRBDA66.js +2 -0
- package/dist/chunk-JCRBDA66.js.map +1 -0
- package/dist/chunk-JTY3REOB.js +76 -0
- package/dist/chunk-JTY3REOB.js.map +1 -0
- package/dist/chunk-JVCIAEFT.js +68 -0
- package/dist/chunk-JVCIAEFT.js.map +1 -0
- package/dist/chunk-JWWJ2Z5C.js +2 -0
- package/dist/chunk-JWWJ2Z5C.js.map +1 -0
- package/dist/chunk-K2GLXCTG.js +2 -0
- package/dist/chunk-K2GLXCTG.js.map +1 -0
- package/dist/chunk-K4V2ELUZ.js +36 -0
- package/dist/chunk-K4V2ELUZ.js.map +1 -0
- package/dist/chunk-KAAJL2HA.js +327 -0
- package/dist/chunk-KAAJL2HA.js.map +1 -0
- package/dist/chunk-KBWHHAI3.js +246 -0
- package/dist/chunk-KBWHHAI3.js.map +1 -0
- package/dist/chunk-KK2TIWTF.js +54 -0
- package/dist/chunk-KK2TIWTF.js.map +1 -0
- package/dist/chunk-KPZFLTZ2.js +61 -0
- package/dist/chunk-KPZFLTZ2.js.map +1 -0
- package/dist/chunk-KRVSD4OK.js +2 -0
- package/dist/chunk-KRVSD4OK.js.map +1 -0
- package/dist/chunk-KXYL3CUS.js +74 -0
- package/dist/chunk-KXYL3CUS.js.map +1 -0
- package/dist/chunk-L37QZALU.js +17 -0
- package/dist/chunk-L37QZALU.js.map +1 -0
- package/dist/chunk-L3SHPHLK.js +35 -0
- package/dist/chunk-L3SHPHLK.js.map +1 -0
- package/dist/chunk-L5O2O67Y.js +164 -0
- package/dist/chunk-L5O2O67Y.js.map +1 -0
- package/dist/chunk-L66VJIRD.js +2 -0
- package/dist/chunk-L66VJIRD.js.map +1 -0
- package/dist/chunk-L6A3RXCU.js +140 -0
- package/dist/chunk-L6A3RXCU.js.map +1 -0
- package/dist/chunk-LDOCY4SU.js +68 -0
- package/dist/chunk-LDOCY4SU.js.map +1 -0
- package/dist/chunk-LG33MONJ.js +74 -0
- package/dist/chunk-LG33MONJ.js.map +1 -0
- package/dist/chunk-LJGWA2XL.js +2 -0
- package/dist/chunk-LJGWA2XL.js.map +1 -0
- package/dist/chunk-LLQWLZ75.js +2 -0
- package/dist/chunk-LLQWLZ75.js.map +1 -0
- package/dist/chunk-LLYLDZXC.js +54 -0
- package/dist/chunk-LLYLDZXC.js.map +1 -0
- package/dist/chunk-LMV225AS.js +39 -0
- package/dist/chunk-LMV225AS.js.map +1 -0
- package/dist/chunk-LSYVAOSH.js +2 -0
- package/dist/chunk-LSYVAOSH.js.map +1 -0
- package/dist/chunk-LYVBDMDQ.js +2 -0
- package/dist/chunk-LYVBDMDQ.js.map +1 -0
- package/dist/chunk-M2KNQZUL.js +73 -0
- package/dist/chunk-M2KNQZUL.js.map +1 -0
- package/dist/chunk-M3WSUFD4.js +2 -0
- package/dist/chunk-M3WSUFD4.js.map +1 -0
- package/dist/chunk-M5WPZXBA.js +118 -0
- package/dist/chunk-M5WPZXBA.js.map +1 -0
- package/dist/chunk-MDQYRES4.js +796 -0
- package/dist/chunk-MDQYRES4.js.map +1 -0
- package/dist/chunk-MIXCXZWT.js +2 -0
- package/dist/chunk-MIXCXZWT.js.map +1 -0
- package/dist/chunk-MJAIURHO.js +56 -0
- package/dist/chunk-MJAIURHO.js.map +1 -0
- package/dist/chunk-MLGBLKUH.js +2 -0
- package/dist/chunk-MLGBLKUH.js.map +1 -0
- package/dist/chunk-MNS2VWHD.js +2 -0
- package/dist/chunk-MNS2VWHD.js.map +1 -0
- package/dist/chunk-MPMMU3QI.js +2 -0
- package/dist/chunk-MPMMU3QI.js.map +1 -0
- package/dist/chunk-MRBDJASL.js +97 -0
- package/dist/chunk-MRBDJASL.js.map +1 -0
- package/dist/chunk-MRWOHWEH.js +2 -0
- package/dist/chunk-MRWOHWEH.js.map +1 -0
- package/dist/chunk-MY5H6D5Y.js +245 -0
- package/dist/chunk-MY5H6D5Y.js.map +1 -0
- package/dist/chunk-MZDL7N52.js +2 -0
- package/dist/chunk-MZDL7N52.js.map +1 -0
- package/dist/chunk-N7PJTMRL.js +2 -0
- package/dist/chunk-N7PJTMRL.js.map +1 -0
- package/dist/chunk-NMGNXW3J.js +98 -0
- package/dist/chunk-NMGNXW3J.js.map +1 -0
- package/dist/chunk-NRNIUM75.js +2 -0
- package/dist/chunk-NRNIUM75.js.map +1 -0
- package/dist/chunk-NRPZ3BH4.js +85 -0
- package/dist/chunk-NRPZ3BH4.js.map +1 -0
- package/dist/chunk-NXCOVGDU.js +100 -0
- package/dist/chunk-NXCOVGDU.js.map +1 -0
- package/dist/chunk-NZUKZRT7.js +201 -0
- package/dist/chunk-NZUKZRT7.js.map +1 -0
- package/dist/chunk-O3JWMB6O.js +20 -0
- package/dist/chunk-O3JWMB6O.js.map +1 -0
- package/dist/chunk-O6V65J5J.js +81 -0
- package/dist/chunk-O6V65J5J.js.map +1 -0
- package/dist/chunk-OEPN373X.js +2 -0
- package/dist/chunk-OEPN373X.js.map +1 -0
- package/dist/chunk-OGTILHKP.js +355 -0
- package/dist/chunk-OGTILHKP.js.map +1 -0
- package/dist/chunk-OITCRC5D.js +2 -0
- package/dist/chunk-OITCRC5D.js.map +1 -0
- package/dist/chunk-OKV3N7QK.js +2 -0
- package/dist/chunk-OKV3N7QK.js.map +1 -0
- package/dist/chunk-OKY7ACZK.js +31 -0
- package/dist/chunk-OKY7ACZK.js.map +1 -0
- package/dist/chunk-ON2E7XHD.js +51 -0
- package/dist/chunk-ON2E7XHD.js.map +1 -0
- package/dist/chunk-OPBSVEMX.js +192 -0
- package/dist/chunk-OPBSVEMX.js.map +1 -0
- package/dist/chunk-OR4NVFPH.js +2 -0
- package/dist/chunk-OR4NVFPH.js.map +1 -0
- package/dist/chunk-OYKS7YHE.js +2 -0
- package/dist/chunk-OYKS7YHE.js.map +1 -0
- package/dist/chunk-PGKQZBLZ.js +55 -0
- package/dist/chunk-PGKQZBLZ.js.map +1 -0
- package/dist/chunk-PHAENHGL.js +19 -0
- package/dist/chunk-PHAENHGL.js.map +1 -0
- package/dist/chunk-PLCQZBZS.js +63 -0
- package/dist/chunk-PLCQZBZS.js.map +1 -0
- package/dist/chunk-PQZD5W3E.js +170 -0
- package/dist/chunk-PQZD5W3E.js.map +1 -0
- package/dist/chunk-PSBNQZB4.js +2 -0
- package/dist/chunk-PSBNQZB4.js.map +1 -0
- package/dist/chunk-PSXUEWUS.js +87 -0
- package/dist/chunk-PSXUEWUS.js.map +1 -0
- package/dist/chunk-PT5P4AAU.js +128 -0
- package/dist/chunk-PT5P4AAU.js.map +1 -0
- package/dist/chunk-PUACHQRH.js +31 -0
- package/dist/chunk-PUACHQRH.js.map +1 -0
- package/dist/chunk-QDJHUNBQ.js +2 -0
- package/dist/chunk-QDJHUNBQ.js.map +1 -0
- package/dist/chunk-QF6UWWDY.js +125 -0
- package/dist/chunk-QF6UWWDY.js.map +1 -0
- package/dist/chunk-QKZX5HDY.js +209 -0
- package/dist/chunk-QKZX5HDY.js.map +1 -0
- package/dist/chunk-QLM3KTAQ.js +100 -0
- package/dist/chunk-QLM3KTAQ.js.map +1 -0
- package/dist/chunk-QODOFLHL.js +2 -0
- package/dist/chunk-QODOFLHL.js.map +1 -0
- package/dist/chunk-QRGYKV4J.js +2 -0
- package/dist/chunk-QRGYKV4J.js.map +1 -0
- package/dist/chunk-R27VUCWR.js +140 -0
- package/dist/chunk-R27VUCWR.js.map +1 -0
- package/dist/chunk-R5JYMCEA.js +2 -0
- package/dist/chunk-R5JYMCEA.js.map +1 -0
- package/dist/chunk-RB5AWLDJ.js +26 -0
- package/dist/chunk-RB5AWLDJ.js.map +1 -0
- package/dist/chunk-RF7JSNXJ.js +2 -0
- package/dist/chunk-RF7JSNXJ.js.map +1 -0
- package/dist/chunk-RFTC5UVB.js +126 -0
- package/dist/chunk-RFTC5UVB.js.map +1 -0
- package/dist/chunk-RHVYRQN4.js +201 -0
- package/dist/chunk-RHVYRQN4.js.map +1 -0
- package/dist/chunk-RHXVQZOW.js +2 -0
- package/dist/chunk-RHXVQZOW.js.map +1 -0
- package/dist/chunk-RIYDAMSQ.js +25 -0
- package/dist/chunk-RIYDAMSQ.js.map +1 -0
- package/dist/chunk-RMSMTLXH.js +2 -0
- package/dist/chunk-RMSMTLXH.js.map +1 -0
- package/dist/chunk-RRYWMYGI.js +14 -0
- package/dist/chunk-RRYWMYGI.js.map +1 -0
- package/dist/chunk-RTHCX2TG.js +59 -0
- package/dist/chunk-RTHCX2TG.js.map +1 -0
- package/dist/chunk-RYPK72YP.js +395 -0
- package/dist/chunk-RYPK72YP.js.map +1 -0
- package/dist/chunk-SCCBEFVK.js +187 -0
- package/dist/chunk-SCCBEFVK.js.map +1 -0
- package/dist/chunk-SEGTBIR4.js +110 -0
- package/dist/chunk-SEGTBIR4.js.map +1 -0
- package/dist/chunk-SGBCLZQF.js +38 -0
- package/dist/chunk-SGBCLZQF.js.map +1 -0
- package/dist/chunk-SLDJYJEG.js +133 -0
- package/dist/chunk-SLDJYJEG.js.map +1 -0
- package/dist/chunk-SMTAPQEQ.js +2 -0
- package/dist/chunk-SMTAPQEQ.js.map +1 -0
- package/dist/chunk-SS6EOZKZ.js +2 -0
- package/dist/chunk-SS6EOZKZ.js.map +1 -0
- package/dist/chunk-SSQG36MH.js +226 -0
- package/dist/chunk-SSQG36MH.js.map +1 -0
- package/dist/chunk-SWQCCR6Q.js +140 -0
- package/dist/chunk-SWQCCR6Q.js.map +1 -0
- package/dist/chunk-T2XEMEN2.js +2 -0
- package/dist/chunk-T2XEMEN2.js.map +1 -0
- package/dist/chunk-T7JOWG2A.js +10 -0
- package/dist/chunk-T7JOWG2A.js.map +1 -0
- package/dist/chunk-TAQI4JTE.js +12 -0
- package/dist/chunk-TAQI4JTE.js.map +1 -0
- package/dist/chunk-TNOANK34.js +4483 -0
- package/dist/chunk-TNOANK34.js.map +1 -0
- package/dist/chunk-U5BZXNHW.js +80 -0
- package/dist/chunk-U5BZXNHW.js.map +1 -0
- package/dist/chunk-U756JCDK.js +27 -0
- package/dist/chunk-U756JCDK.js.map +1 -0
- package/dist/chunk-U7QYCYHC.js +2 -0
- package/dist/chunk-U7QYCYHC.js.map +1 -0
- package/dist/chunk-UANAVLMS.js +2 -0
- package/dist/chunk-UANAVLMS.js.map +1 -0
- package/dist/chunk-UCEVPLR5.js +2 -0
- package/dist/chunk-UCEVPLR5.js.map +1 -0
- package/dist/chunk-UCQDLRHR.js +31 -0
- package/dist/chunk-UCQDLRHR.js.map +1 -0
- package/dist/chunk-UFF7LLGU.js +2 -0
- package/dist/chunk-UFF7LLGU.js.map +1 -0
- package/dist/chunk-UG2T7LMX.js +198 -0
- package/dist/chunk-UG2T7LMX.js.map +1 -0
- package/dist/chunk-UG5TKXTK.js +2 -0
- package/dist/chunk-UG5TKXTK.js.map +1 -0
- package/dist/chunk-UPGIQXUY.js +24 -0
- package/dist/chunk-UPGIQXUY.js.map +1 -0
- package/dist/chunk-UQPW7INX.js +91 -0
- package/dist/chunk-UQPW7INX.js.map +1 -0
- package/dist/chunk-UQRYTMR7.js +2 -0
- package/dist/chunk-UQRYTMR7.js.map +1 -0
- package/dist/chunk-USI4LB3N.js +2 -0
- package/dist/chunk-USI4LB3N.js.map +1 -0
- package/dist/chunk-UUSOIPM2.js +69 -0
- package/dist/chunk-UUSOIPM2.js.map +1 -0
- package/dist/chunk-V2S5DINS.js +2 -0
- package/dist/chunk-V2S5DINS.js.map +1 -0
- package/dist/chunk-V3EQ6ACC.js +2 -0
- package/dist/chunk-V3EQ6ACC.js.map +1 -0
- package/dist/chunk-V5QCJHDA.js +173 -0
- package/dist/chunk-V5QCJHDA.js.map +1 -0
- package/dist/chunk-V6U75PIG.js +147 -0
- package/dist/chunk-V6U75PIG.js.map +1 -0
- package/dist/chunk-VC4GKLZL.js +111 -0
- package/dist/chunk-VC4GKLZL.js.map +1 -0
- package/dist/chunk-VFS52GGI.js +2 -0
- package/dist/chunk-VFS52GGI.js.map +1 -0
- package/dist/chunk-VH7GG77B.js +2 -0
- package/dist/chunk-VH7GG77B.js.map +1 -0
- package/dist/chunk-VHLPJ4XW.js +2 -0
- package/dist/chunk-VHLPJ4XW.js.map +1 -0
- package/dist/chunk-VLE5THFD.js +2 -0
- package/dist/chunk-VLE5THFD.js.map +1 -0
- package/dist/chunk-VORFRWM5.js +2 -0
- package/dist/chunk-VORFRWM5.js.map +1 -0
- package/dist/chunk-VQ2T3OEC.js +27 -0
- package/dist/chunk-VQ2T3OEC.js.map +1 -0
- package/dist/chunk-W26KFY35.js +32 -0
- package/dist/chunk-W26KFY35.js.map +1 -0
- package/dist/chunk-W35X6J5P.js +232 -0
- package/dist/chunk-W35X6J5P.js.map +1 -0
- package/dist/chunk-W7I2X6VI.js +2 -0
- package/dist/chunk-W7I2X6VI.js.map +1 -0
- package/dist/chunk-W7OIVERI.js +31 -0
- package/dist/chunk-W7OIVERI.js.map +1 -0
- package/dist/chunk-WEEVXQIM.js +45 -0
- package/dist/chunk-WEEVXQIM.js.map +1 -0
- package/dist/chunk-WEM6XJ7Z.js +75 -0
- package/dist/chunk-WEM6XJ7Z.js.map +1 -0
- package/dist/chunk-WKNOKJA3.js +42 -0
- package/dist/chunk-WKNOKJA3.js.map +1 -0
- package/dist/chunk-WNIVCHDP.js +2 -0
- package/dist/chunk-WNIVCHDP.js.map +1 -0
- package/dist/chunk-WOMO5CZ7.js +2 -0
- package/dist/chunk-WOMO5CZ7.js.map +1 -0
- package/dist/chunk-WYENWW3Y.js +2 -0
- package/dist/chunk-WYENWW3Y.js.map +1 -0
- package/dist/chunk-X4FE7UKP.js +2 -0
- package/dist/chunk-X4FE7UKP.js.map +1 -0
- package/dist/chunk-XGX3UFLD.js +2 -0
- package/dist/chunk-XGX3UFLD.js.map +1 -0
- package/dist/chunk-XGXCMA5M.js +2 -0
- package/dist/chunk-XGXCMA5M.js.map +1 -0
- package/dist/chunk-XJQADN6S.js +41 -0
- package/dist/chunk-XJQADN6S.js.map +1 -0
- package/dist/chunk-XYFEQHEM.js +2 -0
- package/dist/chunk-XYFEQHEM.js.map +1 -0
- package/dist/chunk-Y33ZFTMR.js +163 -0
- package/dist/chunk-Y33ZFTMR.js.map +1 -0
- package/dist/chunk-YA2QGLUL.js +32 -0
- package/dist/chunk-YA2QGLUL.js.map +1 -0
- package/dist/chunk-YCFOFNQF.js +28 -0
- package/dist/chunk-YCFOFNQF.js.map +1 -0
- package/dist/chunk-YFGFNFVW.js +59 -0
- package/dist/chunk-YFGFNFVW.js.map +1 -0
- package/dist/chunk-YFKKMDJL.js +35 -0
- package/dist/chunk-YFKKMDJL.js.map +1 -0
- package/dist/chunk-YHVXYOL6.js +80 -0
- package/dist/chunk-YHVXYOL6.js.map +1 -0
- package/dist/chunk-YIFB24WW.js +37 -0
- package/dist/chunk-YIFB24WW.js.map +1 -0
- package/dist/chunk-YK4H7VWM.js +2 -0
- package/dist/chunk-YK4H7VWM.js.map +1 -0
- package/dist/chunk-YMFEBGTU.js +2 -0
- package/dist/chunk-YMFEBGTU.js.map +1 -0
- package/dist/chunk-YUFDC6RW.js +55 -0
- package/dist/chunk-YUFDC6RW.js.map +1 -0
- package/dist/chunk-YZVXIPBC.js +2 -0
- package/dist/chunk-YZVXIPBC.js.map +1 -0
- package/dist/chunk-Z44RRTMX.js +2 -0
- package/dist/chunk-Z44RRTMX.js.map +1 -0
- package/dist/chunk-Z4CYBG3H.js +2 -0
- package/dist/chunk-Z4CYBG3H.js.map +1 -0
- package/dist/chunk-ZALGMUSW.js +236 -0
- package/dist/chunk-ZALGMUSW.js.map +1 -0
- package/dist/chunk-ZE2H4J3P.js +2 -0
- package/dist/chunk-ZE2H4J3P.js.map +1 -0
- package/dist/chunk-ZEMTALKO.js +2 -0
- package/dist/chunk-ZEMTALKO.js.map +1 -0
- package/dist/chunk-ZFMM2NLA.js +169 -0
- package/dist/chunk-ZFMM2NLA.js.map +1 -0
- package/dist/chunk-ZI2OXD6L.js +244 -0
- package/dist/chunk-ZI2OXD6L.js.map +1 -0
- package/dist/chunk-ZRMF4YAS.js +158 -0
- package/dist/chunk-ZRMF4YAS.js.map +1 -0
- package/dist/chunk-ZSYT5H6U.js +178 -0
- package/dist/chunk-ZSYT5H6U.js.map +1 -0
- package/dist/chunk-ZXVPEQM5.js +2 -0
- package/dist/chunk-ZXVPEQM5.js.map +1 -0
- package/dist/components/accordion/accordion.js +16 -0
- package/dist/components/accordion/accordion.js.map +1 -0
- package/dist/components/accordion/index.js +17 -0
- package/dist/components/accordion/index.js.map +1 -0
- package/dist/components/advanced-group/advanced-group.js +18 -0
- package/dist/components/advanced-group/advanced-group.js.map +1 -0
- package/dist/components/advanced-group/index.js +18 -0
- package/dist/components/advanced-group/index.js.map +1 -0
- package/dist/components/alert/alert.js +16 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/index.js +17 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/alert-dialog/alert-dialog.js +30 -0
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
- package/dist/components/alert-dialog/index.js +31 -0
- package/dist/components/alert-dialog/index.js.map +1 -0
- package/dist/components/ambient-field/ambient-field.css +59 -0
- package/dist/components/ambient-field/ambient-field.css.map +1 -0
- package/dist/components/ambient-field/ambient-field.js +15 -0
- package/dist/components/ambient-field/ambient-field.js.map +1 -0
- package/dist/components/ambient-field/index.css +59 -0
- package/dist/components/ambient-field/index.css.map +1 -0
- package/dist/components/ambient-field/index.js +16 -0
- package/dist/components/ambient-field/index.js.map +1 -0
- package/dist/components/app-shell/app-shell.js +14 -0
- package/dist/components/app-shell/app-shell.js.map +1 -0
- package/dist/components/app-shell/index.js +15 -0
- package/dist/components/app-shell/index.js.map +1 -0
- package/dist/components/app-sidebar/app-sidebar.js +31 -0
- package/dist/components/app-sidebar/app-sidebar.js.map +1 -0
- package/dist/components/app-sidebar/index.js +31 -0
- package/dist/components/app-sidebar/index.js.map +1 -0
- package/dist/components/aspect-ratio/aspect-ratio.js +9 -0
- package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
- package/dist/components/aspect-ratio/index.js +10 -0
- package/dist/components/aspect-ratio/index.js.map +1 -0
- package/dist/components/attribution-panel/attribution-panel.js +24 -0
- package/dist/components/attribution-panel/attribution-panel.js.map +1 -0
- package/dist/components/attribution-panel/attribution-types.js +2 -0
- package/dist/components/attribution-panel/attribution-types.js.map +1 -0
- package/dist/components/attribution-panel/attributions.generated.js +9 -0
- package/dist/components/attribution-panel/attributions.generated.js.map +1 -0
- package/dist/components/attribution-panel/index.js +24 -0
- package/dist/components/attribution-panel/index.js.map +1 -0
- package/dist/components/avatar/avatar.js +14 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/index.js +15 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/badge.js +16 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/index.js +13 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/bento-grid/bento-grid.js +16 -0
- package/dist/components/bento-grid/bento-grid.js.map +1 -0
- package/dist/components/bento-grid/index.js +16 -0
- package/dist/components/bento-grid/index.js.map +1 -0
- package/dist/components/bounded-number/bounded-number.js +24 -0
- package/dist/components/bounded-number/bounded-number.js.map +1 -0
- package/dist/components/bounded-number/index.js +24 -0
- package/dist/components/bounded-number/index.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +28 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/index.js +26 -0
- package/dist/components/breadcrumb/index.js.map +1 -0
- package/dist/components/button/button.js +12 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.js +13 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/button-group/button-group.js +18 -0
- package/dist/components/button-group/button-group.js.map +1 -0
- package/dist/components/button-group/index.js +19 -0
- package/dist/components/button-group/index.js.map +1 -0
- package/dist/components/calendar/calendar.js +12 -0
- package/dist/components/calendar/calendar.js.map +1 -0
- package/dist/components/calendar/index.js +13 -0
- package/dist/components/calendar/index.js.map +1 -0
- package/dist/components/card/card.js +27 -0
- package/dist/components/card/card.js.map +1 -0
- package/dist/components/card/index.js +27 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/carousel/carousel.js +24 -0
- package/dist/components/carousel/carousel.js.map +1 -0
- package/dist/components/carousel/index.js +24 -0
- package/dist/components/carousel/index.js.map +1 -0
- package/dist/components/change-review/change-review.js +34 -0
- package/dist/components/change-review/change-review.js.map +1 -0
- package/dist/components/change-review/index.js +34 -0
- package/dist/components/change-review/index.js.map +1 -0
- package/dist/components/checkbox/checkbox.js +10 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/index.js +11 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/collapsible/collapsible.js +14 -0
- package/dist/components/collapsible/collapsible.js.map +1 -0
- package/dist/components/collapsible/index.js +15 -0
- package/dist/components/collapsible/index.js.map +1 -0
- package/dist/components/collapsible-panel/index.js +11 -0
- package/dist/components/collapsible-panel/index.js.map +1 -0
- package/dist/components/collapsible-panel/use-collapsible-panel.js +11 -0
- package/dist/components/collapsible-panel/use-collapsible-panel.js.map +1 -0
- package/dist/components/color-picker/color-picker.js +18 -0
- package/dist/components/color-picker/color-picker.js.map +1 -0
- package/dist/components/color-picker/index.js +18 -0
- package/dist/components/color-picker/index.js.map +1 -0
- package/dist/components/combobox/combobox.js +28 -0
- package/dist/components/combobox/combobox.js.map +1 -0
- package/dist/components/combobox/index.js +28 -0
- package/dist/components/combobox/index.js.map +1 -0
- package/dist/components/command/command.js +39 -0
- package/dist/components/command/command.js.map +1 -0
- package/dist/components/command/index.js +39 -0
- package/dist/components/command/index.js.map +1 -0
- package/dist/components/command-chip/command-chip.js +17 -0
- package/dist/components/command-chip/command-chip.js.map +1 -0
- package/dist/components/command-chip/index.js +17 -0
- package/dist/components/command-chip/index.js.map +1 -0
- package/dist/components/command-trigger/command-trigger.js +12 -0
- package/dist/components/command-trigger/command-trigger.js.map +1 -0
- package/dist/components/command-trigger/index.js +13 -0
- package/dist/components/command-trigger/index.js.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.js +20 -0
- package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
- package/dist/components/confirm-dialog/index.js +20 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/context-menu/context-menu.js +36 -0
- package/dist/components/context-menu/context-menu.js.map +1 -0
- package/dist/components/context-menu/index.js +37 -0
- package/dist/components/context-menu/index.js.map +1 -0
- package/dist/components/context-rail/context-rail.js +35 -0
- package/dist/components/context-rail/context-rail.js.map +1 -0
- package/dist/components/context-rail/index.js +35 -0
- package/dist/components/context-rail/index.js.map +1 -0
- package/dist/components/copyable-value/copyable-value.js +19 -0
- package/dist/components/copyable-value/copyable-value.js.map +1 -0
- package/dist/components/copyable-value/index.js +17 -0
- package/dist/components/copyable-value/index.js.map +1 -0
- package/dist/components/date-picker/date-picker.js +21 -0
- package/dist/components/date-picker/date-picker.js.map +1 -0
- package/dist/components/date-picker/index.js +21 -0
- package/dist/components/date-picker/index.js.map +1 -0
- package/dist/components/date-range-picker/date-range-picker.js +22 -0
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
- package/dist/components/date-range-picker/index.js +22 -0
- package/dist/components/date-range-picker/index.js.map +1 -0
- package/dist/components/descriptions/descriptions.js +12 -0
- package/dist/components/descriptions/descriptions.js.map +1 -0
- package/dist/components/descriptions/index.js +13 -0
- package/dist/components/descriptions/index.js.map +1 -0
- package/dist/components/dialog/dialog.js +41 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/index.js +45 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/dialog/use-dialog-dismiss-guard.js +10 -0
- package/dist/components/dialog/use-dialog-dismiss-guard.js.map +1 -0
- package/dist/components/drafting-marks/drafting-marks.js +14 -0
- package/dist/components/drafting-marks/drafting-marks.js.map +1 -0
- package/dist/components/drafting-marks/index.js +15 -0
- package/dist/components/drafting-marks/index.js.map +1 -0
- package/dist/components/drawer/drawer.js +26 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/index.js +27 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown-menu/dropdown-menu.js +38 -0
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/dropdown-menu/index.js +39 -0
- package/dist/components/dropdown-menu/index.js.map +1 -0
- package/dist/components/empty-state/empty-state.js +15 -0
- package/dist/components/empty-state/empty-state.js.map +1 -0
- package/dist/components/empty-state/index.js +16 -0
- package/dist/components/empty-state/index.js.map +1 -0
- package/dist/components/error-state/error-state.js +15 -0
- package/dist/components/error-state/error-state.js.map +1 -0
- package/dist/components/error-state/index.js +16 -0
- package/dist/components/error-state/index.js.map +1 -0
- package/dist/components/expand-dialog/expand-dialog.js +28 -0
- package/dist/components/expand-dialog/expand-dialog.js.map +1 -0
- package/dist/components/expand-dialog/index.js +28 -0
- package/dist/components/expand-dialog/index.js.map +1 -0
- package/dist/components/field/field-context.js +11 -0
- package/dist/components/field/field-context.js.map +1 -0
- package/dist/components/field/field.js +23 -0
- package/dist/components/field/field.js.map +1 -0
- package/dist/components/field/index.js +23 -0
- package/dist/components/field/index.js.map +1 -0
- package/dist/components/field-row/field-row.js +14 -0
- package/dist/components/field-row/field-row.js.map +1 -0
- package/dist/components/field-row/index.js +14 -0
- package/dist/components/field-row/index.js.map +1 -0
- package/dist/components/file-upload/file-upload.js +28 -0
- package/dist/components/file-upload/file-upload.js.map +1 -0
- package/dist/components/file-upload/index.js +26 -0
- package/dist/components/file-upload/index.js.map +1 -0
- package/dist/components/form/form.js +27 -0
- package/dist/components/form/form.js.map +1 -0
- package/dist/components/hover-card/hover-card.js +14 -0
- package/dist/components/hover-card/hover-card.js.map +1 -0
- package/dist/components/hover-card/index.js +15 -0
- package/dist/components/hover-card/index.js.map +1 -0
- package/dist/components/icon-button/icon-button.js +14 -0
- package/dist/components/icon-button/icon-button.js.map +1 -0
- package/dist/components/icon-button/index.js +15 -0
- package/dist/components/icon-button/index.js.map +1 -0
- package/dist/components/input/index.js +11 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.js +10 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input-group/index.js +31 -0
- package/dist/components/input-group/index.js.map +1 -0
- package/dist/components/input-group/input-group.js +30 -0
- package/dist/components/input-group/input-group.js.map +1 -0
- package/dist/components/input-otp/index.js +17 -0
- package/dist/components/input-otp/index.js.map +1 -0
- package/dist/components/input-otp/input-otp.js +17 -0
- package/dist/components/input-otp/input-otp.js.map +1 -0
- package/dist/components/install-tabs/index.js +28 -0
- package/dist/components/install-tabs/index.js.map +1 -0
- package/dist/components/install-tabs/install-tabs.js +28 -0
- package/dist/components/install-tabs/install-tabs.js.map +1 -0
- package/dist/components/integration-matrix/index.js +26 -0
- package/dist/components/integration-matrix/index.js.map +1 -0
- package/dist/components/integration-matrix/integration-matrix.js +26 -0
- package/dist/components/integration-matrix/integration-matrix.js.map +1 -0
- package/dist/components/kbd/index.js +11 -0
- package/dist/components/kbd/index.js.map +1 -0
- package/dist/components/kbd/kbd.js +10 -0
- package/dist/components/kbd/kbd.js.map +1 -0
- package/dist/components/key-value-editor/index.js +18 -0
- package/dist/components/key-value-editor/index.js.map +1 -0
- package/dist/components/key-value-editor/key-value-editor.js +18 -0
- package/dist/components/key-value-editor/key-value-editor.js.map +1 -0
- package/dist/components/keyboard-shortcuts/index.js +25 -0
- package/dist/components/keyboard-shortcuts/index.js.map +1 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +25 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
- package/dist/components/label/index.js +11 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.js +10 -0
- package/dist/components/label/label.js.map +1 -0
- package/dist/components/link-preview/index.js +14 -0
- package/dist/components/link-preview/index.js.map +1 -0
- package/dist/components/link-preview/link-preview.js +14 -0
- package/dist/components/link-preview/link-preview.js.map +1 -0
- package/dist/components/list-editor/index.js +18 -0
- package/dist/components/list-editor/index.js.map +1 -0
- package/dist/components/list-editor/list-editor.js +18 -0
- package/dist/components/list-editor/list-editor.js.map +1 -0
- package/dist/components/loading-state/index.js +16 -0
- package/dist/components/loading-state/index.js.map +1 -0
- package/dist/components/loading-state/loading-state.js +15 -0
- package/dist/components/loading-state/loading-state.js.map +1 -0
- package/dist/components/locale-provider/index.js +16 -0
- package/dist/components/locale-provider/index.js.map +1 -0
- package/dist/components/locale-provider/locale-provider.js +13 -0
- package/dist/components/locale-provider/locale-provider.js.map +1 -0
- package/dist/components/locale-provider/messages.js +10 -0
- package/dist/components/locale-provider/messages.js.map +1 -0
- package/dist/components/match-highlight/index.js +15 -0
- package/dist/components/match-highlight/index.js.map +1 -0
- package/dist/components/match-highlight/match-highlight.js +14 -0
- package/dist/components/match-highlight/match-highlight.js.map +1 -0
- package/dist/components/mention-input/index.js +46 -0
- package/dist/components/mention-input/index.js.map +1 -0
- package/dist/components/mention-input/mention-input.js +33 -0
- package/dist/components/mention-input/mention-input.js.map +1 -0
- package/dist/components/mention-input/mention-value.js +20 -0
- package/dist/components/mention-input/mention-value.js.map +1 -0
- package/dist/components/menubar/index.js +39 -0
- package/dist/components/menubar/index.js.map +1 -0
- package/dist/components/menubar/menubar.js +38 -0
- package/dist/components/menubar/menubar.js.map +1 -0
- package/dist/components/meter/index.js +15 -0
- package/dist/components/meter/index.js.map +1 -0
- package/dist/components/meter/meter.js +15 -0
- package/dist/components/meter/meter.js.map +1 -0
- package/dist/components/metric-card/index.js +24 -0
- package/dist/components/metric-card/index.js.map +1 -0
- package/dist/components/metric-card/metric-card.js +24 -0
- package/dist/components/metric-card/metric-card.js.map +1 -0
- package/dist/components/model-picker/index.js +37 -0
- package/dist/components/model-picker/index.js.map +1 -0
- package/dist/components/model-picker/model-picker-state.js +13 -0
- package/dist/components/model-picker/model-picker-state.js.map +1 -0
- package/dist/components/model-picker/model-picker.js +37 -0
- package/dist/components/model-picker/model-picker.js.map +1 -0
- package/dist/components/nav-main/index.js +33 -0
- package/dist/components/nav-main/index.js.map +1 -0
- package/dist/components/nav-main/nav-main.js +33 -0
- package/dist/components/nav-main/nav-main.js.map +1 -0
- package/dist/components/nav-notifications/index.js +20 -0
- package/dist/components/nav-notifications/index.js.map +1 -0
- package/dist/components/nav-notifications/nav-notifications.js +20 -0
- package/dist/components/nav-notifications/nav-notifications.js.map +1 -0
- package/dist/components/nav-user/index.js +35 -0
- package/dist/components/nav-user/index.js.map +1 -0
- package/dist/components/nav-user/nav-user.js +35 -0
- package/dist/components/nav-user/nav-user.js.map +1 -0
- package/dist/components/navigation-menu/index.js +25 -0
- package/dist/components/navigation-menu/index.js.map +1 -0
- package/dist/components/navigation-menu/navigation-menu.js +25 -0
- package/dist/components/navigation-menu/navigation-menu.js.map +1 -0
- package/dist/components/number-input/index.js +22 -0
- package/dist/components/number-input/index.js.map +1 -0
- package/dist/components/number-input/number-input.js +22 -0
- package/dist/components/number-input/number-input.js.map +1 -0
- package/dist/components/page-shell/index.js +11 -0
- package/dist/components/page-shell/index.js.map +1 -0
- package/dist/components/page-shell/page-shell.js +10 -0
- package/dist/components/page-shell/page-shell.js.map +1 -0
- package/dist/components/pagination/index.js +28 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/pagination/pagination.js +28 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/parallax-plane/index.css +17 -0
- package/dist/components/parallax-plane/index.css.map +1 -0
- package/dist/components/parallax-plane/index.js +18 -0
- package/dist/components/parallax-plane/index.js.map +1 -0
- package/dist/components/parallax-plane/parallax-plane.css +17 -0
- package/dist/components/parallax-plane/parallax-plane.css.map +1 -0
- package/dist/components/parallax-plane/parallax-plane.js +18 -0
- package/dist/components/parallax-plane/parallax-plane.js.map +1 -0
- package/dist/components/popover/index.js +17 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/popover/popover.js +16 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/progress/index.js +13 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/progress/progress.js +12 -0
- package/dist/components/progress/progress.js.map +1 -0
- package/dist/components/radio-group/index.js +13 -0
- package/dist/components/radio-group/index.js.map +1 -0
- package/dist/components/radio-group/radio-group.js +12 -0
- package/dist/components/radio-group/radio-group.js.map +1 -0
- package/dist/components/rating/index.js +11 -0
- package/dist/components/rating/index.js.map +1 -0
- package/dist/components/rating/rating.js +11 -0
- package/dist/components/rating/rating.js.map +1 -0
- package/dist/components/resizable/index.js +15 -0
- package/dist/components/resizable/index.js.map +1 -0
- package/dist/components/resizable/resizable.js +14 -0
- package/dist/components/resizable/resizable.js.map +1 -0
- package/dist/components/reveal/index.js +15 -0
- package/dist/components/reveal/index.js.map +1 -0
- package/dist/components/reveal/reveal.js +14 -0
- package/dist/components/reveal/reveal.js.map +1 -0
- package/dist/components/reveal-on-enter/index.css +21 -0
- package/dist/components/reveal-on-enter/index.css.map +1 -0
- package/dist/components/reveal-on-enter/index.js +12 -0
- package/dist/components/reveal-on-enter/index.js.map +1 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.css +21 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.css.map +1 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.js +12 -0
- package/dist/components/reveal-on-enter/reveal-on-enter.js.map +1 -0
- package/dist/components/revision-timeline/index.js +18 -0
- package/dist/components/revision-timeline/index.js.map +1 -0
- package/dist/components/revision-timeline/revision-timeline.js +18 -0
- package/dist/components/revision-timeline/revision-timeline.js.map +1 -0
- package/dist/components/schema-form/from-json-schema.js +13 -0
- package/dist/components/schema-form/from-json-schema.js.map +1 -0
- package/dist/components/schema-form/index.js +140 -0
- package/dist/components/schema-form/index.js.map +1 -0
- package/dist/components/schema-form/schema-form-spec.js +63 -0
- package/dist/components/schema-form/schema-form-spec.js.map +1 -0
- package/dist/components/schema-form/schema-form-store.js +21 -0
- package/dist/components/schema-form/schema-form-store.js.map +1 -0
- package/dist/components/schema-form/schema-form.js +77 -0
- package/dist/components/schema-form/schema-form.js.map +1 -0
- package/dist/components/scroll-area/index.js +13 -0
- package/dist/components/scroll-area/index.js.map +1 -0
- package/dist/components/scroll-area/scroll-area.js +12 -0
- package/dist/components/scroll-area/scroll-area.js.map +1 -0
- package/dist/components/section-header/index.js +11 -0
- package/dist/components/section-header/index.js.map +1 -0
- package/dist/components/section-header/section-header.js +10 -0
- package/dist/components/section-header/section-header.js.map +1 -0
- package/dist/components/segmented-field/index.js +17 -0
- package/dist/components/segmented-field/index.js.map +1 -0
- package/dist/components/segmented-field/segmented-field.js +17 -0
- package/dist/components/segmented-field/segmented-field.js.map +1 -0
- package/dist/components/select/index.js +26 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/select.js +26 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/separator/index.js +11 -0
- package/dist/components/separator/index.js.map +1 -0
- package/dist/components/separator/separator.js +10 -0
- package/dist/components/separator/separator.js.map +1 -0
- package/dist/components/sheet/index.js +30 -0
- package/dist/components/sheet/index.js.map +1 -0
- package/dist/components/sheet/sheet.js +30 -0
- package/dist/components/sheet/sheet.js.map +1 -0
- package/dist/components/side-dock/index.js +20 -0
- package/dist/components/side-dock/index.js.map +1 -0
- package/dist/components/side-dock/side-dock.js +20 -0
- package/dist/components/side-dock/side-dock.js.map +1 -0
- package/dist/components/sidebar/index.js +77 -0
- package/dist/components/sidebar/index.js.map +1 -0
- package/dist/components/sidebar/sidebar.js +77 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/skeleton/index.js +11 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/skeleton.js +10 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skip-link/index.js +11 -0
- package/dist/components/skip-link/index.js.map +1 -0
- package/dist/components/skip-link/skip-link.js +10 -0
- package/dist/components/skip-link/skip-link.js.map +1 -0
- package/dist/components/slider/index.js +11 -0
- package/dist/components/slider/index.js.map +1 -0
- package/dist/components/slider/slider.js +10 -0
- package/dist/components/slider/slider.js.map +1 -0
- package/dist/components/slider-number/index.js +26 -0
- package/dist/components/slider-number/index.js.map +1 -0
- package/dist/components/slider-number/slider-number.js +26 -0
- package/dist/components/slider-number/slider-number.js.map +1 -0
- package/dist/components/sonner/index.js +13 -0
- package/dist/components/sonner/index.js.map +1 -0
- package/dist/components/sonner/sonner.js +13 -0
- package/dist/components/sonner/sonner.js.map +1 -0
- package/dist/components/spec-playground/index.js +23 -0
- package/dist/components/spec-playground/index.js.map +1 -0
- package/dist/components/spec-playground/locate-json-path.js +17 -0
- package/dist/components/spec-playground/locate-json-path.js.map +1 -0
- package/dist/components/spec-playground/spec-playground.js +23 -0
- package/dist/components/spec-playground/spec-playground.js.map +1 -0
- package/dist/components/spinner/index.js +14 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/spinner/spinner.js +14 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/split-panel/index.js +13 -0
- package/dist/components/split-panel/index.js.map +1 -0
- package/dist/components/split-panel/split-panel.js +12 -0
- package/dist/components/split-panel/split-panel.js.map +1 -0
- package/dist/components/state-panel/index.js +17 -0
- package/dist/components/state-panel/index.js.map +1 -0
- package/dist/components/state-panel/state-panel.js +17 -0
- package/dist/components/state-panel/state-panel.js.map +1 -0
- package/dist/components/status-badge/index.js +30 -0
- package/dist/components/status-badge/index.js.map +1 -0
- package/dist/components/status-badge/status-badge.js +29 -0
- package/dist/components/status-badge/status-badge.js.map +1 -0
- package/dist/components/surface-tour/index.css +21 -0
- package/dist/components/surface-tour/index.css.map +1 -0
- package/dist/components/surface-tour/index.js +36 -0
- package/dist/components/surface-tour/index.js.map +1 -0
- package/dist/components/surface-tour/surface-tour.css +21 -0
- package/dist/components/surface-tour/surface-tour.css.map +1 -0
- package/dist/components/surface-tour/surface-tour.js +36 -0
- package/dist/components/surface-tour/surface-tour.js.map +1 -0
- package/dist/components/switch/index.js +11 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/switch/switch.js +10 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/table/index.js +28 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table.js +28 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/tabs/index.js +22 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.js +22 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tag-input/index.js +21 -0
- package/dist/components/tag-input/index.js.map +1 -0
- package/dist/components/tag-input/tag-input.js +21 -0
- package/dist/components/tag-input/tag-input.js.map +1 -0
- package/dist/components/team-switcher/index.js +33 -0
- package/dist/components/team-switcher/index.js.map +1 -0
- package/dist/components/team-switcher/team-switcher.js +33 -0
- package/dist/components/team-switcher/team-switcher.js.map +1 -0
- package/dist/components/textarea/index.js +11 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/textarea/textarea.js +10 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/theme-family-switch/index.js +19 -0
- package/dist/components/theme-family-switch/index.js.map +1 -0
- package/dist/components/theme-family-switch/theme-family-switch.js +19 -0
- package/dist/components/theme-family-switch/theme-family-switch.js.map +1 -0
- package/dist/components/theme-switcher/index.js +24 -0
- package/dist/components/theme-switcher/index.js.map +1 -0
- package/dist/components/theme-switcher/theme-switcher.js +21 -0
- package/dist/components/theme-switcher/theme-switcher.js.map +1 -0
- package/dist/components/theme-switcher/use-theme-transition.js +10 -0
- package/dist/components/theme-switcher/use-theme-transition.js.map +1 -0
- package/dist/components/timeline/index.js +18 -0
- package/dist/components/timeline/index.js.map +1 -0
- package/dist/components/timeline/timeline.js +19 -0
- package/dist/components/timeline/timeline.js.map +1 -0
- package/dist/components/toggle/index.js +13 -0
- package/dist/components/toggle/index.js.map +1 -0
- package/dist/components/toggle/toggle.js +12 -0
- package/dist/components/toggle/toggle.js.map +1 -0
- package/dist/components/toggle-group/index.js +15 -0
- package/dist/components/toggle-group/index.js.map +1 -0
- package/dist/components/toggle-group/toggle-group.js +15 -0
- package/dist/components/toggle-group/toggle-group.js.map +1 -0
- package/dist/components/token-spotlight/index.css +25 -0
- package/dist/components/token-spotlight/index.css.map +1 -0
- package/dist/components/token-spotlight/index.js +23 -0
- package/dist/components/token-spotlight/index.js.map +1 -0
- package/dist/components/token-spotlight/token-spotlight.css +25 -0
- package/dist/components/token-spotlight/token-spotlight.css.map +1 -0
- package/dist/components/token-spotlight/token-spotlight.js +23 -0
- package/dist/components/token-spotlight/token-spotlight.js.map +1 -0
- package/dist/components/token-spotlight/token-value-format.js +11 -0
- package/dist/components/token-spotlight/token-value-format.js.map +1 -0
- package/dist/components/toolbar/index.js +27 -0
- package/dist/components/toolbar/index.js.map +1 -0
- package/dist/components/toolbar/toolbar.js +27 -0
- package/dist/components/toolbar/toolbar.js.map +1 -0
- package/dist/components/tooltip/index.js +17 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.js +16 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/top-nav/index.js +11 -0
- package/dist/components/top-nav/index.js.map +1 -0
- package/dist/components/top-nav/top-nav.js +10 -0
- package/dist/components/top-nav/top-nav.js.map +1 -0
- package/dist/components/transfer/index.js +26 -0
- package/dist/components/transfer/index.js.map +1 -0
- package/dist/components/transfer/transfer.js +26 -0
- package/dist/components/transfer/transfer.js.map +1 -0
- package/dist/components/tree/index.js +21 -0
- package/dist/components/tree/index.js.map +1 -0
- package/dist/components/tree/tree.js +18 -0
- package/dist/components/tree/tree.js.map +1 -0
- package/dist/components/tree/use-tree-keyboard.js +14 -0
- package/dist/components/tree/use-tree-keyboard.js.map +1 -0
- package/dist/components/tree-select/index.js +26 -0
- package/dist/components/tree-select/index.js.map +1 -0
- package/dist/components/tree-select/tree-select.js +26 -0
- package/dist/components/tree-select/tree-select.js.map +1 -0
- package/dist/components/typography/index.js +41 -0
- package/dist/components/typography/index.js.map +1 -0
- package/dist/components/typography/prose.js +29 -0
- package/dist/components/typography/prose.js.map +1 -0
- package/dist/components/typography/typography.js +18 -0
- package/dist/components/typography/typography.js.map +1 -0
- package/dist/components/view-toolbar/index.js +27 -0
- package/dist/components/view-toolbar/index.js.map +1 -0
- package/dist/components/view-toolbar/view-toolbar.js +27 -0
- package/dist/components/view-toolbar/view-toolbar.js.map +1 -0
- package/dist/components/virtual-select/index.js +26 -0
- package/dist/components/virtual-select/index.js.map +1 -0
- package/dist/components/virtual-select/use-virtual-listbox.js +10 -0
- package/dist/components/virtual-select/use-virtual-listbox.js.map +1 -0
- package/dist/components/virtual-select/virtual-select.js +23 -0
- package/dist/components/virtual-select/virtual-select.js.map +1 -0
- package/dist/components/wizard/index.js +19 -0
- package/dist/components/wizard/index.js.map +1 -0
- package/dist/components/wizard/wizard.js +19 -0
- package/dist/components/wizard/wizard.js.map +1 -0
- package/dist/components/workspace-picker/index.js +38 -0
- package/dist/components/workspace-picker/index.js.map +1 -0
- package/dist/components/workspace-picker/workspace-picker-state.js +9 -0
- package/dist/components/workspace-picker/workspace-picker-state.js.map +1 -0
- package/dist/components/workspace-picker/workspace-picker.js +35 -0
- package/dist/components/workspace-picker/workspace-picker.js.map +1 -0
- package/dist/form.js +13 -110
- package/dist/form.js.map +1 -1
- package/dist/illustrations/empty-list-illustration.js +11 -0
- package/dist/illustrations/empty-list-illustration.js.map +1 -0
- package/dist/illustrations/error-illustration.js +11 -0
- package/dist/illustrations/error-illustration.js.map +1 -0
- package/dist/illustrations/first-run-illustration.js +11 -0
- package/dist/illustrations/first-run-illustration.js.map +1 -0
- package/dist/illustrations/illustration-base.js +16 -0
- package/dist/illustrations/illustration-base.js.map +1 -0
- package/dist/illustrations/index.js +41 -0
- package/dist/illustrations/index.js.map +1 -0
- package/dist/illustrations/no-access-illustration.js +11 -0
- package/dist/illustrations/no-access-illustration.js.map +1 -0
- package/dist/illustrations/no-results-illustration.js +11 -0
- package/dist/illustrations/no-results-illustration.js.map +1 -0
- package/dist/illustrations/offline-illustration.js +11 -0
- package/dist/illustrations/offline-illustration.js.map +1 -0
- package/dist/illustrations/success-illustration.js +11 -0
- package/dist/illustrations/success-illustration.js.map +1 -0
- package/dist/index.css +122 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +1312 -119
- package/dist/index.js +1002 -23939
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-event-model.js +9 -0
- package/dist/lib/agent-event-model.js.map +1 -0
- package/dist/lib/approval-option.js +9 -0
- package/dist/lib/approval-option.js.map +1 -0
- package/dist/lib/check-result.js +3 -0
- package/dist/lib/check-result.js.map +1 -0
- package/dist/lib/cn.js +30 -7
- package/dist/lib/cn.js.map +1 -1
- package/dist/lib/color-scale.js +11 -0
- package/dist/lib/color-scale.js.map +1 -0
- package/dist/lib/compact-number.js +21 -0
- package/dist/lib/compact-number.js.map +1 -0
- package/dist/lib/csv.js +11 -0
- package/dist/lib/csv.js.map +1 -0
- package/dist/lib/diff-line.js +11 -0
- package/dist/lib/diff-line.js.map +1 -0
- package/dist/lib/diff-rows.js +12 -0
- package/dist/lib/diff-rows.js.map +1 -0
- package/dist/lib/document-address.js +13 -0
- package/dist/lib/document-address.js.map +1 -0
- package/dist/lib/download.js +11 -0
- package/dist/lib/download.js.map +1 -0
- package/dist/lib/file-icon.js +12 -0
- package/dist/lib/file-icon.js.map +1 -0
- package/dist/lib/file-kind.js +13 -0
- package/dist/lib/file-kind.js.map +1 -0
- package/dist/lib/file-source.js +10 -0
- package/dist/lib/file-source.js.map +1 -0
- package/dist/lib/format-duration.js +9 -0
- package/dist/lib/format-duration.js.map +1 -0
- package/dist/lib/has-renderable-content.js +9 -0
- package/dist/lib/has-renderable-content.js.map +1 -0
- package/dist/lib/merge-refs.js +10 -0
- package/dist/lib/merge-refs.js.map +1 -0
- package/dist/lib/operating-mode.js +9 -0
- package/dist/lib/operating-mode.js.map +1 -0
- package/dist/lib/optional-peer.js +11 -0
- package/dist/lib/optional-peer.js.map +1 -0
- package/dist/lib/session-launch.js +3 -0
- package/dist/lib/session-launch.js.map +1 -0
- package/dist/lib/slash-command.js +11 -0
- package/dist/lib/slash-command.js.map +1 -0
- package/dist/lib/streamdown-translations.js +15 -0
- package/dist/lib/streamdown-translations.js.map +1 -0
- package/dist/lib/trigger-query.js +11 -0
- package/dist/lib/trigger-query.js.map +1 -0
- package/dist/lib/use-controllable-state.js +10 -0
- package/dist/lib/use-controllable-state.js.map +1 -0
- package/dist/lib/use-copy-to-clipboard.js +12 -0
- package/dist/lib/use-copy-to-clipboard.js.map +1 -0
- package/dist/lib/use-mobile.js +10 -0
- package/dist/lib/use-mobile.js.map +1 -0
- package/dist/lib/use-scroll-progress.js +18 -0
- package/dist/lib/use-scroll-progress.js.map +1 -0
- package/package.json +13 -6
- package/src/__contract__/ambient-field.contract.test.tsx +49 -0
- package/src/__contract__/command-chip.contract.test.tsx +49 -0
- package/src/__contract__/install-tabs.contract.test.tsx +49 -0
- package/src/__contract__/integration-matrix.contract.test.tsx +49 -0
- package/src/__contract__/meter.contract.test.tsx +49 -0
- package/src/__contract__/parallax-plane.contract.test.tsx +49 -0
- package/src/__contract__/reveal-on-enter.contract.test.tsx +49 -0
- package/src/__contract__/spec-playground.contract.test.tsx +49 -0
- package/src/__contract__/surface-tour.contract.test.tsx +49 -0
- package/src/__contract__/theme-family-switch.contract.test.tsx +49 -0
- package/src/__contract__/token-spotlight.contract.test.tsx +49 -0
- package/src/blocks-comparison-table.stories.tsx +1 -1
- package/src/components/accordion/accordion.tsx +31 -15
- package/src/components/advanced-group/advanced-group.stories.tsx +2 -0
- package/src/components/alert/alert.tsx +13 -5
- package/src/components/alert-dialog/alert-dialog.tsx +1 -1
- package/src/components/ambient-field/ambient-field.css +98 -0
- package/src/components/ambient-field/ambient-field.stories.tsx +75 -0
- package/src/components/ambient-field/ambient-field.test.tsx +28 -0
- package/src/components/ambient-field/ambient-field.tsx +69 -0
- package/src/components/ambient-field/index.ts +7 -0
- package/src/components/app-shell/app-shell.stories.tsx +344 -1
- package/src/components/app-shell/app-shell.test.tsx +167 -0
- package/src/components/app-shell/app-shell.tsx +119 -5
- package/src/components/app-shell/index.ts +1 -1
- package/src/components/attribution-panel/attributions.generated.ts +77 -4
- package/src/components/badge/badge.stories.tsx +62 -0
- package/src/components/badge/badge.test.tsx +21 -0
- package/src/components/badge/badge.tsx +88 -8
- package/src/components/breadcrumb/breadcrumb.stories.tsx +1 -1
- package/src/components/breadcrumb/breadcrumb.tsx +2 -0
- package/src/components/button/button.stories.tsx +5 -1
- package/src/components/button/button.tsx +19 -8
- package/src/components/calendar/calendar.tsx +6 -1
- package/src/components/card/card.stories.tsx +73 -1
- package/src/components/card/card.test.tsx +29 -2
- package/src/components/card/card.tsx +77 -13
- package/src/components/card/index.ts +2 -0
- package/src/components/change-review/change-review.tsx +1 -1
- package/src/components/collapsible-panel/index.ts +1 -0
- package/src/components/collapsible-panel/use-collapsible-panel.ts +21 -2
- package/src/components/color-picker/color-picker.tsx +3 -3
- package/src/components/command/command.stories.tsx +64 -1
- package/src/components/command/command.test.tsx +73 -0
- package/src/components/command/command.tsx +73 -2
- package/src/components/command-chip/command-chip.stories.tsx +78 -0
- package/src/components/command-chip/command-chip.test.tsx +57 -0
- package/src/components/command-chip/command-chip.tsx +168 -0
- package/src/components/command-chip/index.ts +7 -0
- package/src/components/command-trigger/command-trigger.tsx +1 -1
- package/src/components/confirm-dialog/confirm-dialog.stories.tsx +2 -0
- package/src/components/context-menu/context-menu.stories.tsx +26 -0
- package/src/components/context-menu/context-menu.tsx +6 -6
- package/src/components/context-rail/context-rail.tsx +22 -4
- package/src/components/date-picker/date-picker.tsx +2 -0
- package/src/components/descriptions/descriptions.stories.tsx +6 -0
- package/src/components/descriptions/descriptions.test.tsx +18 -0
- package/src/components/descriptions/descriptions.tsx +33 -5
- package/src/components/descriptions/index.ts +1 -0
- package/src/components/dialog/dialog.stories.tsx +5 -0
- package/src/components/dialog/dialog.tsx +1 -1
- package/src/components/drafting-marks/drafting-marks.stories.tsx +88 -0
- package/src/components/drafting-marks/drafting-marks.test.tsx +55 -0
- package/src/components/drafting-marks/drafting-marks.tsx +120 -0
- package/src/components/drafting-marks/index.ts +7 -0
- package/src/components/dropdown-menu/dropdown-menu.stories.tsx +37 -0
- package/src/components/dropdown-menu/dropdown-menu.tsx +14 -6
- package/src/components/expand-dialog/expand-dialog.test.tsx +47 -0
- package/src/components/expand-dialog/expand-dialog.tsx +20 -5
- package/src/components/hover-card/hover-card.tsx +1 -1
- package/src/components/input/input.stories.tsx +17 -0
- package/src/components/input/input.tsx +1 -1
- package/src/components/input-group/input-group.stories.tsx +43 -6
- package/src/components/input-group/input-group.tsx +5 -2
- package/src/components/input-otp/input-otp.tsx +4 -2
- package/src/components/install-tabs/index.ts +8 -0
- package/src/components/install-tabs/install-tabs.stories.tsx +147 -0
- package/src/components/install-tabs/install-tabs.test.tsx +120 -0
- package/src/components/install-tabs/install-tabs.tsx +238 -0
- package/src/components/integration-matrix/index.ts +10 -0
- package/src/components/integration-matrix/integration-matrix.stories.tsx +171 -0
- package/src/components/integration-matrix/integration-matrix.test.tsx +89 -0
- package/src/components/integration-matrix/integration-matrix.tsx +237 -0
- package/src/components/locale-provider/messages.ts +252 -0
- package/src/components/mention-input/mention-input.tsx +1 -1
- package/src/components/menubar/menubar.stories.tsx +25 -0
- package/src/components/menubar/menubar.tsx +7 -7
- package/src/components/meter/index.ts +1 -0
- package/src/components/meter/meter.stories.tsx +102 -0
- package/src/components/meter/meter.test.tsx +61 -0
- package/src/components/meter/meter.tsx +173 -0
- package/src/components/metric-card/index.ts +6 -1
- package/src/components/metric-card/metric-card.stories.tsx +63 -0
- package/src/components/metric-card/metric-card.test.tsx +83 -0
- package/src/components/metric-card/metric-card.tsx +97 -14
- package/src/components/nav-user/nav-user.test.tsx +23 -1
- package/src/components/nav-user/nav-user.tsx +68 -53
- package/src/components/navigation-menu/navigation-menu.stories.tsx +42 -0
- package/src/components/navigation-menu/navigation-menu.tsx +1 -1
- package/src/components/page-shell/page-shell.stories.tsx +1 -1
- package/src/components/page-shell/page-shell.tsx +3 -2
- package/src/components/pagination/pagination.tsx +2 -0
- package/src/components/parallax-plane/index.ts +8 -0
- package/src/components/parallax-plane/parallax-plane.css +26 -0
- package/src/components/parallax-plane/parallax-plane.stories.tsx +88 -0
- package/src/components/parallax-plane/parallax-plane.test.tsx +57 -0
- package/src/components/parallax-plane/parallax-plane.tsx +80 -0
- package/src/components/popover/popover.tsx +1 -1
- package/src/components/progress/progress.stories.tsx +85 -0
- package/src/components/progress/progress.test.tsx +47 -0
- package/src/components/progress/progress.tsx +57 -3
- package/src/components/reveal-on-enter/index.ts +5 -0
- package/src/components/reveal-on-enter/reveal-on-enter.css +32 -0
- package/src/components/reveal-on-enter/reveal-on-enter.stories.tsx +100 -0
- package/src/components/reveal-on-enter/reveal-on-enter.test.tsx +87 -0
- package/src/components/reveal-on-enter/reveal-on-enter.tsx +75 -0
- package/src/components/revision-timeline/revision-timeline.tsx +1 -3
- package/src/components/schema-form/index.ts +2 -0
- package/src/components/schema-form/schema-form-spec.ts +36 -0
- package/src/components/schema-form/schema-form.stories.tsx +33 -0
- package/src/components/schema-form/schema-form.test.tsx +43 -0
- package/src/components/schema-form/schema-form.tsx +111 -4
- package/src/components/scroll-area/index.ts +1 -1
- package/src/components/scroll-area/scroll-area.tsx +47 -18
- package/src/components/section-header/section-header.stories.tsx +23 -0
- package/src/components/section-header/section-header.tsx +27 -9
- package/src/components/select/select.stories.tsx +17 -0
- package/src/components/select/select.test.tsx +28 -1
- package/src/components/select/select.tsx +3 -3
- package/src/components/sheet/sheet.tsx +1 -1
- package/src/components/side-dock/side-dock.stories.tsx +83 -0
- package/src/components/side-dock/side-dock.tsx +50 -16
- package/src/components/sidebar/sidebar.stories.tsx +3 -3
- package/src/components/sidebar/sidebar.test.tsx +31 -1
- package/src/components/sidebar/sidebar.tsx +40 -8
- package/src/components/skip-link/skip-link.stories.tsx +1 -0
- package/src/components/slider/slider.stories.tsx +13 -77
- package/src/components/spec-playground/index.ts +10 -0
- package/src/components/spec-playground/locate-json-path.ts +144 -0
- package/src/components/spec-playground/spec-playground.stories.tsx +156 -0
- package/src/components/spec-playground/spec-playground.test.tsx +106 -0
- package/src/components/spec-playground/spec-playground.tsx +351 -0
- package/src/components/state-panel/state-panel.stories.tsx +4 -2
- package/src/components/state-panel/state-panel.tsx +1 -1
- package/src/components/status-badge/status-badge.stories.tsx +53 -0
- package/src/components/status-badge/status-badge.test.tsx +37 -0
- package/src/components/status-badge/status-badge.tsx +75 -13
- package/src/components/surface-tour/index.ts +11 -0
- package/src/components/surface-tour/surface-tour.stories.tsx +150 -0
- package/src/components/surface-tour/surface-tour.test.tsx +117 -0
- package/src/components/surface-tour/surface-tour.tsx +456 -0
- package/src/components/table/table.tsx +5 -2
- package/src/components/tabs/tabs.stories.tsx +47 -1
- package/src/components/tabs/tabs.test.tsx +26 -0
- package/src/components/tabs/tabs.tsx +51 -11
- package/src/components/textarea/textarea.tsx +1 -1
- package/src/components/theme-family-switch/index.ts +10 -0
- package/src/components/theme-family-switch/theme-family-switch.stories.tsx +97 -0
- package/src/components/theme-family-switch/theme-family-switch.test.tsx +85 -0
- package/src/components/theme-family-switch/theme-family-switch.tsx +166 -0
- package/src/components/theme-switcher/theme-switcher.tsx +11 -4
- package/src/components/token-spotlight/index.ts +11 -0
- package/src/components/token-spotlight/token-spotlight.css +32 -0
- package/src/components/token-spotlight/token-spotlight.stories.tsx +161 -0
- package/src/components/token-spotlight/token-spotlight.test.tsx +323 -0
- package/src/components/token-spotlight/token-spotlight.tsx +379 -0
- package/src/components/token-spotlight/token-value-format.ts +205 -0
- package/src/components/top-nav/top-nav.test.tsx +59 -0
- package/src/components/top-nav/top-nav.tsx +36 -6
- package/src/components/tree/tree.stories.tsx +1 -1
- package/src/components/tree/tree.test.tsx +4 -4
- package/src/components/tree/tree.tsx +4 -4
- package/src/components/typography/typography.stories.tsx +7 -2
- package/src/components/typography/typography.tsx +8 -0
- package/src/components/view-toolbar/view-toolbar.stories.tsx +2 -1
- package/src/components/view-toolbar/view-toolbar.tsx +2 -2
- package/src/decoration.stories.tsx +243 -2
- package/src/index.ts +47 -0
- package/src/lib/cn.test.ts +49 -0
- package/src/lib/cn.ts +39 -7
- package/src/lib/color-scale.test.ts +386 -0
- package/src/lib/color-scale.ts +628 -0
- package/src/lib/compact-number.ts +118 -28
- package/src/lib/use-scroll-progress.ts +103 -0
- package/src/motion.stories.tsx +1 -0
- package/src/templates-object-detail-hub.stories.tsx +8 -8
- package/src/templates-screen-states.stories.tsx +1 -1
- package/src/templates-settings.stories.tsx +8 -3
- package/dist/chunk-FCH4ZN6G.js +0 -57
- package/dist/chunk-FCH4ZN6G.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/mention-input/mention-input.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n forwardRef,\n use,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../../lib/cn\";\nimport { mergeRefs } from \"../../lib/merge-refs\";\nimport { findTriggerQuery } from \"../../lib/trigger-query\";\nimport { useLocale } from \"../locale-provider\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"../popover\";\nimport { Textarea } from \"../textarea\";\nimport {\n defaultMentionFilter,\n insertMention,\n mentionAt,\n mentionEnd,\n remapMentions,\n type Mention,\n type MentionOption,\n type MentionValue,\n} from \"./mention-value\";\n\nexport type { Mention, MentionOption, MentionValue };\n\nconst EMPTY_VALUE: MentionValue = { text: \"\", mentions: [] };\n\n// ---------------------------------------------------------------------------\n// Context — state / actions / meta (component-api.md provider-injection shape)\n// ---------------------------------------------------------------------------\n\nexport interface MentionInputContextValue {\n state: {\n value: MentionValue;\n /** The in-progress query WITHOUT the trigger char; `null` when closed. */\n query: string | null;\n open: boolean;\n /** Index into `filtered`; `-1` when nothing is highlighted. */\n activeIndex: number;\n /** DOM id of the highlighted option; `undefined` when nothing is. */\n activeId?: string;\n filtered: MentionOption[];\n };\n actions: {\n insert: (option: MentionOption) => void;\n close: () => void;\n setActiveIndex: (index: number) => void;\n };\n meta: {\n trigger: string;\n listId: string;\n /**\n * The id `MentionInputTextarea` puts on its element. Advisory only — with\n * `asChild`, Radix `Slot` lets a consumer-supplied `id` on the child win\n * (child props are merged OVER slot props), so the component itself never\n * resolves the field through this id; it holds a real ref.\n */\n textareaId: string;\n optionId: (index: number) => string;\n };\n}\n\nconst MentionInputContext = createContext<MentionInputContextValue | null>(null);\n\n/** Read the surrounding `MentionInput`'s state, actions and ids. */\nexport function useMentionInput(): MentionInputContextValue {\n const ctx = use(MentionInputContext);\n if (!ctx) {\n throw new Error(\"useMentionInput must be used inside a <MentionInput>.\");\n }\n return ctx;\n}\n\n// ---------------------------------------------------------------------------\n// Query detection\n// ---------------------------------------------------------------------------\n\n/** Next enabled index in `list`, wrapping; `-1` when none is selectable. */\nfunction step(list: MentionOption[], from: number, direction: 1 | -1): number {\n const count = list.length;\n if (count === 0) return -1;\n for (let i = 1; i <= count; i++) {\n const index = (((from + direction * i) % count) + count) % count;\n if (!list[index]?.disabled) return index;\n }\n return -1;\n}\n\nfunction firstEnabled(list: MentionOption[]): number {\n const index = list.findIndex((o) => !o.disabled);\n return index;\n}\n\nfunction lastEnabled(list: MentionOption[]): number {\n for (let i = list.length - 1; i >= 0; i--) {\n if (!list[i]?.disabled) return i;\n }\n return -1;\n}\n\n// ---------------------------------------------------------------------------\n// Caret / overlay mirror\n// ---------------------------------------------------------------------------\n\n/**\n * Computed properties the mirror has to copy verbatim for its glyph metrics to\n * land on the same pixels as the textarea's. Anything that changes where a\n * character starts belongs here.\n */\nconst MIRRORED_PROPERTIES = [\n \"boxSizing\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"fontStyle\",\n \"fontVariant\",\n \"fontStretch\",\n \"fontFeatureSettings\",\n \"fontVariationSettings\",\n \"letterSpacing\",\n \"lineHeight\",\n \"textTransform\",\n \"textIndent\",\n \"wordSpacing\",\n \"textAlign\",\n \"direction\",\n \"tabSize\",\n // Wrapping, copied rather than assumed: forcing `word-break: break-word` when\n // the field says `normal` breaks long words one line early in the mirror.\n \"whiteSpace\",\n \"overflowWrap\",\n \"wordBreak\",\n] as const satisfies readonly (keyof CSSStyleDeclaration & string)[];\n\n/**\n * Extra keys `readMirrorStyle` writes onto the mirror style object BESIDES\n * `MIRRORED_PROPERTIES` (some of which — `paddingRight`, `whiteSpace` — it\n * overrides rather than adds). Used by `stylesEqual` below so the \"did\n * anything actually change\" check compares every key the object can carry,\n * without re-deriving that list from an object literal on every call.\n */\nconst EXTRA_MIRROR_KEYS = [\n \"position\",\n \"left\",\n \"top\",\n \"width\",\n \"height\",\n \"borderStyle\",\n \"borderColor\",\n \"overflow\",\n \"margin\",\n] as const;\n\n/**\n * Field-by-field comparison of two mirror style snapshots (perf review §3.3:\n * \"two JSON.stringify per callback\"). Both objects always carry the exact\n * same key set (`MIRRORED_PROPERTIES` + `EXTRA_MIRROR_KEYS`), so a plain\n * per-key `!==` walk is both cheaper and exact — `JSON.stringify` also\n * silently drops `undefined`-valued keys and is sensitive to key order in a\n * way this object's construction never guarantees.\n */\nfunction stylesEqual(a: CSSProperties, b: CSSProperties): boolean {\n const record = a as Record<string, unknown>;\n const other = b as Record<string, unknown>;\n for (const key of MIRRORED_PROPERTIES) {\n if (record[key] !== other[key]) return false;\n }\n for (const key of EXTRA_MIRROR_KEYS) {\n if (record[key] !== other[key]) return false;\n }\n return true;\n}\n\nfunction readMirrorStyle(textarea: HTMLTextAreaElement): CSSProperties {\n const computed = getComputedStyle(textarea);\n const style: Record<string, string | number> = {};\n for (const property of MIRRORED_PROPERTIES) {\n style[property] = computed[property] as string;\n }\n\n const borderX =\n Number.parseFloat(computed.borderLeftWidth || \"0\") +\n Number.parseFloat(computed.borderRightWidth || \"0\");\n // Whatever the box is wider than its content area, minus the borders, is the\n // vertical scrollbar. Fold it into the padding or every wrapped line in the\n // mirror breaks a few characters later than it does in the field.\n const scrollbar = Math.max(0, textarea.offsetWidth - textarea.clientWidth - borderX);\n\n return {\n ...(style as CSSProperties),\n position: \"absolute\",\n left: textarea.offsetLeft,\n top: textarea.offsetTop,\n width: textarea.offsetWidth,\n height: textarea.offsetHeight,\n paddingRight: Number.parseFloat(computed.paddingRight || \"0\") + scrollbar,\n borderStyle: \"solid\",\n borderColor: \"transparent\",\n // A textarea already computes `pre-wrap`; the fallback only covers a host\n // that reset it, and an environment (jsdom) that resolves nothing.\n whiteSpace: computed.whiteSpace || \"pre-wrap\",\n overflow: \"hidden\",\n margin: 0,\n };\n}\n\n/** Split the text into plain runs and mention runs, in document order. */\nfunction buildRuns(\n value: MentionValue,\n trigger: string,\n): Array<{ key: string; text: string; mention?: Mention }> {\n const runs: Array<{ key: string; text: string; mention?: Mention }> = [];\n const ordered = [...value.mentions].sort((a, b) => a.start - b.start);\n let cursor = 0;\n for (const mention of ordered) {\n if (mention.start > cursor) {\n runs.push({ key: `t${cursor}`, text: value.text.slice(cursor, mention.start) });\n }\n const end = mentionEnd(mention, trigger);\n runs.push({ key: `m${mention.start}`, text: value.text.slice(mention.start, end), mention });\n cursor = end;\n }\n if (cursor < value.text.length) {\n runs.push({ key: `t${cursor}`, text: value.text.slice(cursor) });\n }\n return runs;\n}\n\n// ---------------------------------------------------------------------------\n// MentionInput (root + provider + Popover)\n// ---------------------------------------------------------------------------\n\nexport interface MentionInputProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** The roster the popup offers. */\n options: MentionOption[];\n /** Controlled value. */\n value?: MentionValue;\n /** Uncontrolled initial value. */\n defaultValue?: MentionValue;\n /** Called with the whole value whenever text or mentions change. */\n onValueChange?: (value: MentionValue) => void;\n /** Trigger character. Default `\"@\"`. */\n trigger?: string;\n /**\n * Which options survive the current query. Defaults to\n * `defaultMentionFilter`; pass `() => true` when the roster is fetched\n * app-side from `onQueryChange`.\n */\n filter?: (option: MentionOption, query: string) => boolean;\n /** The query changed. `null` means the popup closed. */\n onQueryChange?: (query: string | null) => void;\n /** Controlled popup state. */\n open?: boolean;\n /** Called when the popup wants to open or close. */\n onOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}\n\n/**\n * MentionInput — an `@`-mention text field built on a real `<textarea>`.\n *\n * The field stays a native textarea (so IME, paste, undo, spellcheck, mobile\n * keyboards and `FormData` all keep working) and mentions are tracked as\n * offsets beside it. The suggestion popup is this component's own listbox\n * driven by `aria-activedescendant`, so **focus never leaves the textarea** —\n * a popup that took focus would take the caret with it.\n */\nexport const MentionInput = forwardRef<HTMLDivElement, MentionInputProps>(function MentionInput(\n {\n options,\n value: valueProp,\n defaultValue,\n onValueChange,\n trigger = \"@\",\n filter = defaultMentionFilter,\n onQueryChange,\n open: openProp,\n onOpenChange,\n className,\n children,\n ...props\n },\n ref,\n) {\n const uid = useId();\n const listId = `${uid}-listbox`;\n const textareaId = `${uid}-textarea`;\n const optionId = useCallback((index: number) => `${uid}-option-${index}`, [uid]);\n\n const rootRef = useRef<HTMLDivElement>(null);\n const mergedRootRef = useMemo(() => mergeRefs<HTMLDivElement>(ref, rootRef), [ref]);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n // ------------------------------------------------------------------\n // Controlled / uncontrolled value\n // ------------------------------------------------------------------\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState<MentionValue>(defaultValue ?? EMPTY_VALUE);\n const value = isControlled ? valueProp : internalValue;\n\n const commit = useCallback(\n (next: MentionValue) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n // ------------------------------------------------------------------\n // Caret\n // ------------------------------------------------------------------\n const [caret, setCaret] = useState(() => (defaultValue?.text ?? \"\").length);\n const pendingCaretRef = useRef<number | null>(null);\n\n const applyCaret = useCallback((position: number) => {\n pendingCaretRef.current = position;\n setCaret(position);\n // Pure caret moves change no value, so React may skip the re-render that\n // would flush `pendingCaretRef` — set it here as well. Value changes still\n // need the post-commit pass below, because React writes the new `value`\n // into the DOM after this point and that resets the selection.\n textareaRef.current?.setSelectionRange(position, position);\n }, []);\n\n useLayoutEffect(() => {\n const position = pendingCaretRef.current;\n if (position === null) return;\n pendingCaretRef.current = null;\n textareaRef.current?.setSelectionRange(position, position);\n });\n\n // ------------------------------------------------------------------\n // Query / open state\n // ------------------------------------------------------------------\n const queryInfo = useMemo(\n () =>\n findTriggerQuery(value.text, caret, trigger, {\n isTriggerConsumed: (start) => mentionAt(value, start, trigger) !== undefined,\n }),\n [value, caret, trigger],\n );\n\n // Escape (and an outside dismissal) suppress the popup for the run it was\n // dismissed on, without touching the text — the query is still there, the\n // user just said they are done with the roster for now.\n const [dismissedStart, setDismissedStart] = useState<number | null>(null);\n useEffect(() => {\n if (queryInfo === null && dismissedStart !== null) setDismissedStart(null);\n }, [queryInfo, dismissedStart]);\n\n const derivedOpen = queryInfo !== null && dismissedStart !== queryInfo.start;\n const open = openProp ?? derivedOpen;\n const query = open && queryInfo ? queryInfo.query : null;\n\n const setOpen = useCallback(\n (next: boolean) => {\n onOpenChange?.(next);\n if (!next) setDismissedStart(queryInfo?.start ?? null);\n },\n [onOpenChange, queryInfo],\n );\n\n const onQueryChangeRef = useRef(onQueryChange);\n useEffect(() => {\n onQueryChangeRef.current = onQueryChange;\n }, [onQueryChange]);\n useEffect(() => {\n onQueryChangeRef.current?.(query);\n }, [query]);\n\n // ------------------------------------------------------------------\n // Filtering + highlight\n // ------------------------------------------------------------------\n const filtered = useMemo(\n () => (open && query !== null ? options.filter((option) => filter(option, query)) : []),\n [open, query, options, filter],\n );\n\n const [activeIndexState, setActiveIndexState] = useState(0);\n\n /**\n * The highlight is RESOLVED during render, never repaired in an effect.\n *\n * `aria-activedescendant` and the option's `aria-selected` must be written in\n * the same commit, or the attribute names an element that does not exist yet\n * — the generalised form of cmdk's `selectedItemId` hole (see the docblock in\n * `../command/command.tsx`). Clamping here means a stale index from before a\n * filter keystroke can never reach the DOM, not even for one frame.\n */\n const activeIndex = useMemo(() => {\n const candidate = filtered[activeIndexState];\n if (candidate && !candidate.disabled) return activeIndexState;\n return firstEnabled(filtered);\n }, [filtered, activeIndexState]);\n\n // Reset the *stored* index when the query changes so the next arrow press\n // starts from the top. Safe as an effect precisely because the resolved value\n // above is already correct in the intervening commit.\n useEffect(() => {\n setActiveIndexState(0);\n }, [query]);\n\n const activeId = activeIndex >= 0 ? optionId(activeIndex) : undefined;\n\n // ------------------------------------------------------------------\n // Actions\n // ------------------------------------------------------------------\n const insert = useCallback(\n (option: MentionOption) => {\n if (option.disabled || !queryInfo) return;\n const result = insertMention(value, option, trigger, queryInfo.start, caret);\n commit(result.value);\n applyCaret(result.caret);\n },\n [queryInfo, value, trigger, caret, commit, applyCaret],\n );\n\n const close = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const removeMention = useCallback(\n (mention: Mention) => {\n const end = mentionEnd(mention, trigger);\n const nextText = value.text.slice(0, mention.start) + value.text.slice(end);\n commit({ text: nextText, mentions: remapMentions(value, nextText, trigger) });\n applyCaret(mention.start);\n },\n [value, trigger, commit, applyCaret],\n );\n\n // ------------------------------------------------------------------\n // Textarea event handlers (owned here, handed to MentionInputTextarea)\n // ------------------------------------------------------------------\n const syncCaret = useCallback((element: HTMLTextAreaElement) => {\n setCaret(element.selectionStart ?? 0);\n }, []);\n\n const handleChange = useCallback(\n (element: HTMLTextAreaElement) => {\n const nextText = element.value;\n commit({ text: nextText, mentions: remapMentions(value, nextText, trigger) });\n setCaret(element.selectionStart ?? nextText.length);\n },\n [commit, value, trigger],\n );\n\n const handleKeyDownCapture = useCallback(\n (event: ReactKeyboardEvent<HTMLTextAreaElement>) => {\n const element = event.currentTarget;\n const position = element.selectionStart ?? 0;\n const hasRange = element.selectionStart !== element.selectionEnd;\n\n if (open) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n setActiveIndexState(step(filtered, activeIndex, 1));\n return;\n case \"ArrowUp\":\n event.preventDefault();\n setActiveIndexState(step(filtered, activeIndex < 0 ? 0 : activeIndex, -1));\n return;\n case \"Home\":\n event.preventDefault();\n setActiveIndexState(firstEnabled(filtered));\n return;\n case \"End\":\n event.preventDefault();\n setActiveIndexState(lastEnabled(filtered));\n return;\n case \"Enter\":\n case \"Tab\": {\n const option = activeIndex >= 0 ? filtered[activeIndex] : undefined;\n if (option && !option.disabled) {\n // Capture phase, so `defaultPrevented` is already true when a\n // host handler (PromptInput's Enter→submit) runs in the bubble\n // phase on this same element and this same SyntheticEvent.\n event.preventDefault();\n insert(option);\n }\n return;\n }\n case \"Escape\":\n event.preventDefault();\n close();\n return;\n default:\n break;\n }\n }\n\n // Chip atomicity. A range selection is ordinary text editing — the user\n // asked for exactly those characters, mentions included.\n if (hasRange || event.metaKey || event.ctrlKey || event.altKey) return;\n\n if (event.key === \"Backspace\") {\n const mention = mentionAt(value, position - 1, trigger);\n if (mention) {\n event.preventDefault();\n removeMention(mention);\n }\n return;\n }\n if (event.key === \"Delete\") {\n const mention = mentionAt(value, position, trigger);\n if (mention) {\n event.preventDefault();\n removeMention(mention);\n }\n return;\n }\n if (event.key === \"ArrowLeft\" && !event.shiftKey) {\n const mention = mentionAt(value, position - 1, trigger);\n if (mention && position - 1 > mention.start) {\n event.preventDefault();\n applyCaret(mention.start);\n }\n return;\n }\n if (event.key === \"ArrowRight\" && !event.shiftKey) {\n const mention = mentionAt(value, position, trigger);\n if (mention) {\n event.preventDefault();\n applyCaret(mentionEnd(mention, trigger));\n }\n }\n },\n [open, filtered, activeIndex, insert, close, value, trigger, removeMention, applyCaret],\n );\n\n // ------------------------------------------------------------------\n // Mirror geometry (caret anchor + chip overlay)\n // ------------------------------------------------------------------\n const [mirrorStyle, setMirrorStyle] = useState<CSSProperties | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const caretMarkerRef = useRef<HTMLSpanElement>(null);\n const [caretRect, setCaretRect] = useState({ left: 0, top: 0, height: 0 });\n\n /**\n * Re-snapshot the field's metrics whenever anything that MOVES A GLYPH can\n * have changed.\n *\n * A one-shot snapshot is not enough and the failure is visible, not\n * theoretical: the very first layout effect runs before the theme attribute\n * has been applied, so it captures the `:root` fallback font — the chip wash\n * then renders in a different typeface from the text it is supposed to sit\n * behind and runs ~14% wide (measured: 143.3px vs 125.5px for the same\n * string). Exactly the same drift happens at runtime whenever a `ThemeSwitcher`\n * changes `data-theme`, a density dial changes the type scale, or a web font\n * finishes loading. So the snapshot is re-taken on all of them.\n */\n const remeasureMirror = useCallback(() => {\n const element = textareaRef.current;\n if (!element) return;\n const next = readMirrorStyle(element);\n setMirrorStyle((previous) => (previous && stylesEqual(previous, next) ? previous : next));\n }, []);\n\n useLayoutEffect(() => {\n remeasureMirror();\n }, [remeasureMirror, value.text]);\n\n useLayoutEffect(() => {\n const element = textareaRef.current;\n if (!element) return;\n const teardown: Array<() => void> = [];\n\n if (typeof ResizeObserver !== \"undefined\") {\n const observer = new ResizeObserver(remeasureMirror);\n observer.observe(element);\n teardown.push(() => observer.disconnect());\n }\n\n if (typeof MutationObserver !== \"undefined\") {\n // The field's own classes/inline styles.\n const fieldObserver = new MutationObserver(remeasureMirror);\n fieldObserver.observe(element, {\n attributes: true,\n attributeFilter: [\"class\", \"style\"],\n });\n teardown.push(() => fieldObserver.disconnect());\n\n // Theme / density / decoration switches re-resolve the INHERITED font and\n // type scale, and a stale snapshot misaligns every chip on the surface.\n //\n // Scoped to the field's OWN nearest `[data-theme]` ancestor (falling\n // back to `<html>` when the field isn't inside a scoped region), never\n // the whole document — and filtered to only the three attributes a\n // theme/density/decoration switch actually writes, never generic\n // `class`/`style` on `<html>`/`<body>`. The broader, document-wide\n // observer this replaced fired on every Radix `Sheet`/`Dialog`/`Popover`\n // scroll-lock ANYWHERE in the app (it toggles inline `style` —\n // `overflow`, `padding-right` — on `<body>` on every open/close), which\n // has nothing to do with this field's own metrics (perf review §3.3).\n const themeScope =\n element.closest(\"[data-theme]\") ??\n (typeof document !== \"undefined\" ? document.documentElement : null);\n if (themeScope) {\n const themeObserver = new MutationObserver(remeasureMirror);\n themeObserver.observe(themeScope, {\n attributes: true,\n attributeFilter: [\"data-theme\", \"data-density\", \"data-decoration\"],\n });\n teardown.push(() => themeObserver.disconnect());\n }\n }\n\n // A web font landing after first paint changes every advance width. This\n // arm is intentionally kept as unpinned defence-in-depth: five isolation\n // attempts (issue #405) could not construct a scenario where removing it\n // alone turns any test red — it is covered only compositely by the\n // ResizeObserver/MutationObserver arms above. Do not delete it on the\n // strength of \"no test notices\"; see #405 for the full mutation audit and\n // the maintainer's keep decision (ADR 0023 §6).\n let cancelled = false;\n void document.fonts?.ready\n .then(() => {\n if (!cancelled) remeasureMirror();\n })\n .catch(() => undefined);\n teardown.push(() => {\n cancelled = true;\n });\n\n return () => {\n for (const fn of teardown) fn();\n };\n }, [remeasureMirror]);\n\n useLayoutEffect(() => {\n if (!open) return;\n const marker = caretMarkerRef.current;\n const root = rootRef.current;\n if (!marker || !root) return;\n const rect = marker.getClientRects()[0] ?? marker.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n const next = {\n left: rect.left - rootRect.left,\n top: rect.top - rootRect.top,\n height: rect.height,\n };\n setCaretRect((previous) =>\n previous.left === next.left && previous.top === next.top && previous.height === next.height\n ? previous\n : next,\n );\n }, [open, caret, value.text, mirrorStyle, scrollTop]);\n\n const runs = useMemo(() => buildRuns(value, trigger), [value, trigger]);\n\n // ------------------------------------------------------------------\n // Context\n // ------------------------------------------------------------------\n const contextValue = useMemo<MentionInputContextValue>(\n () => ({\n state: { value, query, open, activeIndex, activeId, filtered },\n actions: { insert, close, setActiveIndex: setActiveIndexState },\n meta: { trigger, listId, textareaId, optionId },\n }),\n [\n value,\n query,\n open,\n activeIndex,\n activeId,\n filtered,\n insert,\n close,\n trigger,\n listId,\n textareaId,\n optionId,\n ],\n );\n\n const textareaContextValue = useMemo<TextareaWiring>(\n () => ({\n textareaRef,\n textareaId,\n listId,\n open,\n activeId,\n value: value.text,\n onValueInput: handleChange,\n onCaretSync: syncCaret,\n onKeyDownCapture: handleKeyDownCapture,\n onDismiss: close,\n onScrollSync: setScrollTop,\n }),\n [\n textareaId,\n listId,\n open,\n activeId,\n value.text,\n handleChange,\n syncCaret,\n handleKeyDownCapture,\n close,\n ],\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <MentionInputContext value={contextValue}>\n <TextareaWiringContext value={textareaContextValue}>\n <div\n ref={mergedRootRef}\n data-slot=\"mention-input\"\n className={cn(\"relative\", className)}\n {...props}\n >\n {children}\n\n {/*\n Chip overlay — decorative, painted ON TOP of the field.\n Every run is `text-transparent`; only a mention run paints a\n background, and it is a 10% wash, so the real glyphs in the\n textarea below stay legible and stay the ONLY copy of the text\n (native selection, IME and spellcheck are untouched). It sits on\n top rather than behind because a textarea's own background is\n opaque (`bg-background`), which would hide anything underneath.\n */}\n {mirrorStyle ? (\n <div\n data-slot=\"mention-input-overlay\"\n aria-hidden=\"true\"\n className=\"pointer-events-none select-none text-transparent\"\n style={{ ...mirrorStyle, zIndex: 1 }}\n >\n <div style={{ transform: `translateY(${-scrollTop}px)` }}>\n {runs.map((run) =>\n run.mention ? (\n <span\n key={run.key}\n data-slot=\"mention-input-chip\"\n className=\"box-decoration-clone rounded-sm bg-primary/10\"\n >\n {run.text}\n </span>\n ) : (\n <span key={run.key}>{run.text}</span>\n ),\n )}\n </div>\n </div>\n ) : null}\n\n {/* Caret measurement mirror — laid out, never painted. */}\n {open && mirrorStyle ? (\n <div\n data-slot=\"mention-input-caret-mirror\"\n aria-hidden=\"true\"\n className=\"pointer-events-none select-none\"\n style={{ ...mirrorStyle, visibility: \"hidden\", zIndex: -1 }}\n >\n <div style={{ transform: `translateY(${-scrollTop}px)` }}>\n {value.text.slice(0, caret)}\n <span ref={caretMarkerRef}>{value.text.slice(caret) || \".\"}</span>\n </div>\n </div>\n ) : null}\n\n <PopoverAnchor asChild>\n <span\n data-slot=\"mention-input-anchor\"\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute\"\n style={{\n left: caretRect.left,\n top: caretRect.top,\n width: 0,\n height: caretRect.height,\n }}\n />\n </PopoverAnchor>\n </div>\n </TextareaWiringContext>\n </MentionInputContext>\n </Popover>\n );\n});\n\n// ---------------------------------------------------------------------------\n// MentionInputTextarea\n// ---------------------------------------------------------------------------\n\ninterface TextareaWiring {\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\n textareaId: string;\n listId: string;\n open: boolean;\n activeId?: string;\n value: string;\n onValueInput: (element: HTMLTextAreaElement) => void;\n onCaretSync: (element: HTMLTextAreaElement) => void;\n onKeyDownCapture: (event: ReactKeyboardEvent<HTMLTextAreaElement>) => void;\n onDismiss: () => void;\n onScrollSync: (scrollTop: number) => void;\n}\n\nconst TextareaWiringContext = createContext<TextareaWiring | null>(null);\n\nexport interface MentionInputTextareaProps extends Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"value\" | \"defaultValue\"\n> {\n /**\n * Render the consumer's own textarea-rendering component instead of a\n * `Textarea` — e.g. `PromptInputTextarea`. The child must ultimately render a\n * real `<textarea>`; everything this component needs is spread onto it.\n */\n asChild?: boolean;\n}\n\n/**\n * The field itself — a real `<textarea>` carrying the combobox semantics.\n *\n * The mention interception is bound as **`onKeyDownCapture`**, not `onKeyDown`.\n * Under `asChild`, Radix `Slot` merges CHILD handlers over slot handlers and\n * runs the child's **first**. So when the child binds `onKeyDown` directly on\n * the host element, a bubble-phase handler here would fire *after* it — the\n * child's Enter→submit would win and the popup would never see the key. React\n * dispatches an element's capture pass before its bubble pass and shares one\n * `SyntheticEvent` between them, so `preventDefault()` here is already visible\n * as `event.defaultPrevented` when the child's handler runs.\n *\n * **Scope of the hazard, stated precisely** (an earlier version of this comment\n * overclaimed): it applies to a child that binds `onKeyDown` on a *host\n * element*. It does NOT apply to `PromptInputTextarea`, which is a *component*\n * that destructures `onKeyDown` out of its own props, calls it first and bails\n * on `defaultPrevented` (`packages/ai/src/prompt-input.tsx`) — that composition\n * works with either binding. The capture binding is what makes the raw-host\n * case correct too, and that is the case the locking test exercises: see\n * \"T8 Slot handler-order contract\" in `mention-input.test.tsx`, which fails if\n * this is ever moved to `onKeyDown`.\n */\nexport const MentionInputTextarea = forwardRef<HTMLTextAreaElement, MentionInputTextareaProps>(\n function MentionInputTextarea(\n {\n asChild,\n className,\n // The seven handlers this component owns are destructured OUT of `props`\n // so `{...props}` can be spread BEFORE them without clobbering them.\n // Spreading props last (the obvious reading of \"spread ...props onto the\n // root\") silently replaced the component's own wiring: a consumer passing\n // `onChange` used to knock out `wiring.onValueInput`, and since the value\n // is provider-controlled that left the field completely inert. Consumer\n // handlers still run — each one is invoked from inside its counterpart —\n // and every NON-handler prop (`id`, `name`, `aria-*`, `placeholder`, …)\n // still wins, because the spread sits after those defaults.\n onChange,\n onKeyDownCapture,\n onSelect,\n onKeyUp,\n onClick,\n onScroll,\n onBlur,\n ...props\n },\n ref,\n ) {\n const wiring = use(TextareaWiringContext);\n if (!wiring) {\n throw new Error(\"MentionInputTextarea must be used inside a <MentionInput>.\");\n }\n const mergedRef = useMemo(\n () => mergeRefs<HTMLTextAreaElement>(ref, wiring.textareaRef),\n [ref, wiring.textareaRef],\n );\n\n const Comp = asChild ? Slot : Textarea;\n\n return (\n <Comp\n ref={mergedRef}\n id={wiring.textareaId}\n data-slot=\"mention-input-textarea\"\n // Machine-readable open state. It is a `data-` attribute rather than\n // `aria-expanded` because `aria-expanded` is NOT in `textbox`'s\n // supported-property set — see the ARIA note below.\n data-state={wiring.open ? \"open\" : \"closed\"}\n // The field stays an implicit `textbox`. `role=\"combobox\"` on a\n // `<textarea>` is invalid per ARIA in HTML (`<textarea>` allows no role\n // override) and axe's `aria-allowed-role` — enabled by default — flags\n // it on every story; `aria-expanded` on a textbox is worse still\n // (`aria-allowed-attr`, CRITICAL). All four attributes below ARE in\n // `textbox`'s supported set, so this arrangement is both spec-valid and\n // axe-clean while keeping the announcement that matters: with\n // `aria-activedescendant` on a textbox, AT reads the highlighted option\n // as the user arrows through the roster.\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n // Only while the popup is mounted: the listbox lives in a Radix portal\n // that unmounts on close, and an `aria-controls` pointing at a removed\n // node is a dangling reference.\n aria-controls={wiring.open ? wiring.listId : undefined}\n aria-activedescendant={wiring.activeId}\n autoComplete=\"off\"\n value={wiring.value}\n className={cn(\"relative z-0\", className)}\n {...props}\n onChange={(event) => {\n wiring.onValueInput(event.currentTarget);\n onChange?.(event);\n }}\n onKeyDownCapture={(event) => {\n wiring.onKeyDownCapture(event);\n onKeyDownCapture?.(event);\n }}\n onSelect={(event) => {\n wiring.onCaretSync(event.currentTarget);\n onSelect?.(event);\n }}\n onKeyUp={(event) => {\n wiring.onCaretSync(event.currentTarget);\n onKeyUp?.(event);\n }}\n onClick={(event) => {\n wiring.onCaretSync(event.currentTarget);\n onClick?.(event);\n }}\n onScroll={(event) => {\n wiring.onScrollSync(event.currentTarget.scrollTop);\n onScroll?.(event);\n }}\n onBlur={(event) => {\n wiring.onDismiss();\n onBlur?.(event);\n }}\n />\n );\n },\n);\n\n// ---------------------------------------------------------------------------\n// MentionInputContent / List / Item / Empty\n// ---------------------------------------------------------------------------\n\nexport type MentionInputContentProps = React.ComponentPropsWithoutRef<typeof PopoverContent>;\n\n/** The floating panel. Never takes focus — the caret has to stay in the field. */\nexport const MentionInputContent = forwardRef<\n React.ElementRef<typeof PopoverContent>,\n MentionInputContentProps\n>(function MentionInputContent({ className, align = \"start\", ...props }, ref) {\n const { meta } = useMentionInput();\n const wiring = use(TextareaWiringContext);\n\n return (\n <PopoverContent\n ref={ref}\n data-slot=\"mention-input-content\"\n align={align}\n // Radix `PopoverContent` defaults to `role=\"dialog\"`, which is wrong here\n // twice over: a combobox popup is not a dialog, and an unnamed dialog is\n // an axe `aria-dialog-name` violation (serious). The panel is a plain\n // container — the `role=\"listbox\"` inside carries all the semantics.\n role=\"presentation\"\n // No border, no ring: PopoverContent already carries `shadow-popover`.\n className={cn(\"w-72 p-0\", className)}\n onOpenAutoFocus={(event) => event.preventDefault()}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onPointerDownOutside={(event) => {\n // Clicking the field itself only moves the caret; it must not count as\n // a dismissal, or the popup would fight the caret it depends on.\n const target = event.detail.originalEvent.target as Node | null;\n if (target && wiring?.textareaRef.current?.contains(target)) event.preventDefault();\n props.onPointerDownOutside?.(event);\n }}\n id={`${meta.listId}-content`}\n {...props}\n />\n );\n});\n\nexport interface MentionInputListProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Either static nodes, or a render function called once per filtered option.\n * The function form is the one to reach for — the parent has to hand each\n * option back, which is exactly what `children`-as-a-function is for.\n */\n children?: ReactNode | ((option: MentionOption, index: number) => ReactNode);\n}\n\n/** The listbox. Owns the accessible name and the option mapping. */\nexport const MentionInputList = forwardRef<HTMLDivElement, MentionInputListProps>(\n function MentionInputList({ className, children, ...props }, ref) {\n const { t } = useLocale();\n const { state, meta } = useMentionInput();\n\n return (\n <div\n ref={ref}\n id={meta.listId}\n data-slot=\"mention-input-list\"\n role=\"listbox\"\n aria-label={t(\"ui.mentionInput.listLabel\")}\n className={cn(\"max-h-60 overflow-y-auto p-1\", className)}\n {...props}\n >\n {typeof children === \"function\"\n ? state.filtered.map((option, index) => children(option, index))\n : children}\n </div>\n );\n },\n);\n\nexport interface MentionInputItemProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n option: MentionOption;\n children?: ReactNode;\n}\n\n/**\n * One option row.\n *\n * The row derives its own index from the provider's `filtered` list rather than\n * accepting one, so its `id` and `aria-selected` can never disagree with the\n * `aria-activedescendant` the field is publishing.\n */\nexport const MentionInputItem = forwardRef<HTMLDivElement, MentionInputItemProps>(\n function MentionInputItem({ option, className, children, ...props }, ref) {\n const { state, actions, meta } = useMentionInput();\n const index = state.filtered.findIndex((candidate) => candidate.id === option.id);\n const isActive = index >= 0 && index === state.activeIndex;\n\n return (\n <div\n ref={ref}\n id={index >= 0 ? meta.optionId(index) : undefined}\n data-slot=\"mention-input-item\"\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={option.disabled || undefined}\n data-active={isActive || undefined}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5\",\n \"text-body outline-none transition-colors duration-fast motion-reduce:transition-none\",\n \"data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n \"aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:size-4\",\n className,\n )}\n // Keep the caret where it is: a mousedown inside the portal would\n // otherwise blur the textarea before the click ever lands.\n onMouseDown={(event) => {\n event.preventDefault();\n props.onMouseDown?.(event);\n }}\n onClick={(event) => {\n actions.insert(option);\n props.onClick?.(event);\n }}\n onMouseEnter={(event) => {\n if (!option.disabled && index >= 0) actions.setActiveIndex(index);\n props.onMouseEnter?.(event);\n }}\n {...props}\n >\n {children ?? (\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"truncate\">{option.label}</span>\n {option.description ? (\n <span className=\"truncate text-meta text-muted-foreground\">{option.description}</span>\n ) : null}\n </span>\n )}\n </div>\n );\n },\n);\n\nexport type MentionInputEmptyProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * The \"nothing matches\" line. A **sibling** of the listbox, never a child —\n * a `role=\"listbox\"` may only own `option` and `group` children.\n */\nexport const MentionInputEmpty = forwardRef<HTMLDivElement, MentionInputEmptyProps>(\n function MentionInputEmpty({ className, children, ...props }, ref) {\n const { t } = useLocale();\n const { state } = useMentionInput();\n if (state.filtered.length > 0) return null;\n\n return (\n <div\n ref={ref}\n data-slot=\"mention-input-empty\"\n className={cn(\"py-6 text-center text-body text-muted-foreground\", className)}\n {...props}\n >\n {children ?? t(\"noResults\")}\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AACP,SAAS,YAAY;AAouBC,cAuBN,YAvBM;AAhtBtB,IAAM,cAA4B,EAAE,MAAM,IAAI,UAAU,CAAC,EAAE;AAqC3D,IAAM,sBAAsB,cAA+C,IAAI;AAGxE,SAAS,kBAA4C;AAC1D,QAAM,MAAM,IAAI,mBAAmB;AACnC,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AACA,SAAO;AACT;AAOA,SAAS,KAAK,MAAuB,MAAc,WAA2B;AAC5E,QAAM,QAAQ,KAAK;AACnB,MAAI,UAAU,EAAG,QAAO;AACxB,WAAS,IAAI,GAAG,KAAK,OAAO,KAAK;AAC/B,UAAM,UAAW,OAAO,YAAY,KAAK,QAAS,SAAS;AAC3D,QAAI,CAAC,KAAK,KAAK,GAAG,SAAU,QAAO;AAAA,EACrC;AACA,SAAO;AACT;AAEA,SAAS,aAAa,MAA+B;AACnD,QAAM,QAAQ,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ;AAC/C,SAAO;AACT;AAEA,SAAS,YAAY,MAA+B;AAClD,WAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,QAAI,CAAC,KAAK,CAAC,GAAG,SAAU,QAAO;AAAA,EACjC;AACA,SAAO;AACT;AAWA,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AACF;AASA,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAUA,SAAS,YAAY,GAAkB,GAA2B;AAChE,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,aAAW,OAAO,qBAAqB;AACrC,QAAI,OAAO,GAAG,MAAM,MAAM,GAAG,EAAG,QAAO;AAAA,EACzC;AACA,aAAW,OAAO,mBAAmB;AACnC,QAAI,OAAO,GAAG,MAAM,MAAM,GAAG,EAAG,QAAO;AAAA,EACzC;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,UAA8C;AACrE,QAAM,WAAW,iBAAiB,QAAQ;AAC1C,QAAM,QAAyC,CAAC;AAChD,aAAW,YAAY,qBAAqB;AAC1C,UAAM,QAAQ,IAAI,SAAS,QAAQ;AAAA,EACrC;AAEA,QAAM,UACJ,OAAO,WAAW,SAAS,mBAAmB,GAAG,IACjD,OAAO,WAAW,SAAS,oBAAoB,GAAG;AAIpD,QAAM,YAAY,KAAK,IAAI,GAAG,SAAS,cAAc,SAAS,cAAc,OAAO;AAEnF,SAAO;AAAA,IACL,GAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM,SAAS;AAAA,IACf,KAAK,SAAS;AAAA,IACd,OAAO,SAAS;AAAA,IAChB,QAAQ,SAAS;AAAA,IACjB,cAAc,OAAO,WAAW,SAAS,gBAAgB,GAAG,IAAI;AAAA,IAChE,aAAa;AAAA,IACb,aAAa;AAAA;AAAA;AAAA,IAGb,YAAY,SAAS,cAAc;AAAA,IACnC,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AAGA,SAAS,UACP,OACA,SACyD;AACzD,QAAM,OAAgE,CAAC;AACvE,QAAM,UAAU,CAAC,GAAG,MAAM,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AACpE,MAAI,SAAS;AACb,aAAW,WAAW,SAAS;AAC7B,QAAI,QAAQ,QAAQ,QAAQ;AAC1B,WAAK,KAAK,EAAE,KAAK,IAAI,MAAM,IAAI,MAAM,MAAM,KAAK,MAAM,QAAQ,QAAQ,KAAK,EAAE,CAAC;AAAA,IAChF;AACA,UAAM,MAAM,WAAW,SAAS,OAAO;AACvC,SAAK,KAAK,EAAE,KAAK,IAAI,QAAQ,KAAK,IAAI,MAAM,MAAM,KAAK,MAAM,QAAQ,OAAO,GAAG,GAAG,QAAQ,CAAC;AAC3F,aAAS;AAAA,EACX;AACA,MAAI,SAAS,MAAM,KAAK,QAAQ;AAC9B,SAAK,KAAK,EAAE,KAAK,IAAI,MAAM,IAAI,MAAM,MAAM,KAAK,MAAM,MAAM,EAAE,CAAC;AAAA,EACjE;AACA,SAAO;AACT;AA4CO,IAAM,eAAe,WAA8C,SAASA,cACjF;AAAA,EACE;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,SAAS;AAAA,EACT;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACA,KACA;AACA,QAAM,MAAM,MAAM;AAClB,QAAM,SAAS,GAAG,GAAG;AACrB,QAAM,aAAa,GAAG,GAAG;AACzB,QAAM,WAAW,YAAY,CAAC,UAAkB,GAAG,GAAG,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC;AAE/E,QAAM,UAAU,OAAuB,IAAI;AAC3C,QAAM,gBAAgB,QAAQ,MAAM,UAA0B,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC;AAClF,QAAM,cAAc,OAA4B,IAAI;AAKpD,QAAM,eAAe,cAAc;AACnC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAuB,gBAAgB,WAAW;AAC5F,QAAM,QAAQ,eAAe,YAAY;AAEzC,QAAM,SAAS;AAAA,IACb,CAAC,SAAuB;AACtB,UAAI,CAAC,aAAc,kBAAiB,IAAI;AACxC,sBAAgB,IAAI;AAAA,IACtB;AAAA,IACA,CAAC,cAAc,aAAa;AAAA,EAC9B;AAKA,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,OAAO,cAAc,QAAQ,IAAI,MAAM;AAC1E,QAAM,kBAAkB,OAAsB,IAAI;AAElD,QAAM,aAAa,YAAY,CAAC,aAAqB;AACnD,oBAAgB,UAAU;AAC1B,aAAS,QAAQ;AAKjB,gBAAY,SAAS,kBAAkB,UAAU,QAAQ;AAAA,EAC3D,GAAG,CAAC,CAAC;AAEL,kBAAgB,MAAM;AACpB,UAAM,WAAW,gBAAgB;AACjC,QAAI,aAAa,KAAM;AACvB,oBAAgB,UAAU;AAC1B,gBAAY,SAAS,kBAAkB,UAAU,QAAQ;AAAA,EAC3D,CAAC;AAKD,QAAM,YAAY;AAAA,IAChB,MACE,iBAAiB,MAAM,MAAM,OAAO,SAAS;AAAA,MAC3C,mBAAmB,CAAC,UAAU,UAAU,OAAO,OAAO,OAAO,MAAM;AAAA,IACrE,CAAC;AAAA,IACH,CAAC,OAAO,OAAO,OAAO;AAAA,EACxB;AAKA,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAwB,IAAI;AACxE,YAAU,MAAM;AACd,QAAI,cAAc,QAAQ,mBAAmB,KAAM,mBAAkB,IAAI;AAAA,EAC3E,GAAG,CAAC,WAAW,cAAc,CAAC;AAE9B,QAAM,cAAc,cAAc,QAAQ,mBAAmB,UAAU;AACvE,QAAM,OAAO,YAAY;AACzB,QAAM,QAAQ,QAAQ,YAAY,UAAU,QAAQ;AAEpD,QAAM,UAAU;AAAA,IACd,CAAC,SAAkB;AACjB,qBAAe,IAAI;AACnB,UAAI,CAAC,KAAM,mBAAkB,WAAW,SAAS,IAAI;AAAA,IACvD;AAAA,IACA,CAAC,cAAc,SAAS;AAAA,EAC1B;AAEA,QAAM,mBAAmB,OAAO,aAAa;AAC7C,YAAU,MAAM;AACd,qBAAiB,UAAU;AAAA,EAC7B,GAAG,CAAC,aAAa,CAAC;AAClB,YAAU,MAAM;AACd,qBAAiB,UAAU,KAAK;AAAA,EAClC,GAAG,CAAC,KAAK,CAAC;AAKV,QAAM,WAAW;AAAA,IACf,MAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,CAAC,WAAW,OAAO,QAAQ,KAAK,CAAC,IAAI,CAAC;AAAA,IACrF,CAAC,MAAM,OAAO,SAAS,MAAM;AAAA,EAC/B;AAEA,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,CAAC;AAW1D,QAAM,cAAc,QAAQ,MAAM;AAChC,UAAM,YAAY,SAAS,gBAAgB;AAC3C,QAAI,aAAa,CAAC,UAAU,SAAU,QAAO;AAC7C,WAAO,aAAa,QAAQ;AAAA,EAC9B,GAAG,CAAC,UAAU,gBAAgB,CAAC;AAK/B,YAAU,MAAM;AACd,wBAAoB,CAAC;AAAA,EACvB,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,WAAW,eAAe,IAAI,SAAS,WAAW,IAAI;AAK5D,QAAM,SAAS;AAAA,IACb,CAAC,WAA0B;AACzB,UAAI,OAAO,YAAY,CAAC,UAAW;AACnC,YAAM,SAAS,cAAc,OAAO,QAAQ,SAAS,UAAU,OAAO,KAAK;AAC3E,aAAO,OAAO,KAAK;AACnB,iBAAW,OAAO,KAAK;AAAA,IACzB;AAAA,IACA,CAAC,WAAW,OAAO,SAAS,OAAO,QAAQ,UAAU;AAAA,EACvD;AAEA,QAAM,QAAQ,YAAY,MAAM;AAC9B,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,gBAAgB;AAAA,IACpB,CAAC,YAAqB;AACpB,YAAM,MAAM,WAAW,SAAS,OAAO;AACvC,YAAM,WAAW,MAAM,KAAK,MAAM,GAAG,QAAQ,KAAK,IAAI,MAAM,KAAK,MAAM,GAAG;AAC1E,aAAO,EAAE,MAAM,UAAU,UAAU,cAAc,OAAO,UAAU,OAAO,EAAE,CAAC;AAC5E,iBAAW,QAAQ,KAAK;AAAA,IAC1B;AAAA,IACA,CAAC,OAAO,SAAS,QAAQ,UAAU;AAAA,EACrC;AAKA,QAAM,YAAY,YAAY,CAAC,YAAiC;AAC9D,aAAS,QAAQ,kBAAkB,CAAC;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,QAAM,eAAe;AAAA,IACnB,CAAC,YAAiC;AAChC,YAAM,WAAW,QAAQ;AACzB,aAAO,EAAE,MAAM,UAAU,UAAU,cAAc,OAAO,UAAU,OAAO,EAAE,CAAC;AAC5E,eAAS,QAAQ,kBAAkB,SAAS,MAAM;AAAA,IACpD;AAAA,IACA,CAAC,QAAQ,OAAO,OAAO;AAAA,EACzB;AAEA,QAAM,uBAAuB;AAAA,IAC3B,CAAC,UAAmD;AAClD,YAAM,UAAU,MAAM;AACtB,YAAM,WAAW,QAAQ,kBAAkB;AAC3C,YAAM,WAAW,QAAQ,mBAAmB,QAAQ;AAEpD,UAAI,MAAM;AACR,gBAAQ,MAAM,KAAK;AAAA,UACjB,KAAK;AACH,kBAAM,eAAe;AACrB,gCAAoB,KAAK,UAAU,aAAa,CAAC,CAAC;AAClD;AAAA,UACF,KAAK;AACH,kBAAM,eAAe;AACrB,gCAAoB,KAAK,UAAU,cAAc,IAAI,IAAI,aAAa,EAAE,CAAC;AACzE;AAAA,UACF,KAAK;AACH,kBAAM,eAAe;AACrB,gCAAoB,aAAa,QAAQ,CAAC;AAC1C;AAAA,UACF,KAAK;AACH,kBAAM,eAAe;AACrB,gCAAoB,YAAY,QAAQ,CAAC;AACzC;AAAA,UACF,KAAK;AAAA,UACL,KAAK,OAAO;AACV,kBAAM,SAAS,eAAe,IAAI,SAAS,WAAW,IAAI;AAC1D,gBAAI,UAAU,CAAC,OAAO,UAAU;AAI9B,oBAAM,eAAe;AACrB,qBAAO,MAAM;AAAA,YACf;AACA;AAAA,UACF;AAAA,UACA,KAAK;AACH,kBAAM,eAAe;AACrB,kBAAM;AACN;AAAA,UACF;AACE;AAAA,QACJ;AAAA,MACF;AAIA,UAAI,YAAY,MAAM,WAAW,MAAM,WAAW,MAAM,OAAQ;AAEhE,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,UAAU,UAAU,OAAO,WAAW,GAAG,OAAO;AACtD,YAAI,SAAS;AACX,gBAAM,eAAe;AACrB,wBAAc,OAAO;AAAA,QACvB;AACA;AAAA,MACF;AACA,UAAI,MAAM,QAAQ,UAAU;AAC1B,cAAM,UAAU,UAAU,OAAO,UAAU,OAAO;AAClD,YAAI,SAAS;AACX,gBAAM,eAAe;AACrB,wBAAc,OAAO;AAAA,QACvB;AACA;AAAA,MACF;AACA,UAAI,MAAM,QAAQ,eAAe,CAAC,MAAM,UAAU;AAChD,cAAM,UAAU,UAAU,OAAO,WAAW,GAAG,OAAO;AACtD,YAAI,WAAW,WAAW,IAAI,QAAQ,OAAO;AAC3C,gBAAM,eAAe;AACrB,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AACA;AAAA,MACF;AACA,UAAI,MAAM,QAAQ,gBAAgB,CAAC,MAAM,UAAU;AACjD,cAAM,UAAU,UAAU,OAAO,UAAU,OAAO;AAClD,YAAI,SAAS;AACX,gBAAM,eAAe;AACrB,qBAAW,WAAW,SAAS,OAAO,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,MAAM,UAAU,aAAa,QAAQ,OAAO,OAAO,SAAS,eAAe,UAAU;AAAA,EACxF;AAKA,QAAM,CAAC,aAAa,cAAc,IAAI,SAA+B,IAAI;AACzE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,CAAC;AAC5C,QAAM,iBAAiB,OAAwB,IAAI;AACnD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC;AAezE,QAAM,kBAAkB,YAAY,MAAM;AACxC,UAAM,UAAU,YAAY;AAC5B,QAAI,CAAC,QAAS;AACd,UAAM,OAAO,gBAAgB,OAAO;AACpC,mBAAe,CAAC,aAAc,YAAY,YAAY,UAAU,IAAI,IAAI,WAAW,IAAK;AAAA,EAC1F,GAAG,CAAC,CAAC;AAEL,kBAAgB,MAAM;AACpB,oBAAgB;AAAA,EAClB,GAAG,CAAC,iBAAiB,MAAM,IAAI,CAAC;AAEhC,kBAAgB,MAAM;AACpB,UAAM,UAAU,YAAY;AAC5B,QAAI,CAAC,QAAS;AACd,UAAM,WAA8B,CAAC;AAErC,QAAI,OAAO,mBAAmB,aAAa;AACzC,YAAM,WAAW,IAAI,eAAe,eAAe;AACnD,eAAS,QAAQ,OAAO;AACxB,eAAS,KAAK,MAAM,SAAS,WAAW,CAAC;AAAA,IAC3C;AAEA,QAAI,OAAO,qBAAqB,aAAa;AAE3C,YAAM,gBAAgB,IAAI,iBAAiB,eAAe;AAC1D,oBAAc,QAAQ,SAAS;AAAA,QAC7B,YAAY;AAAA,QACZ,iBAAiB,CAAC,SAAS,OAAO;AAAA,MACpC,CAAC;AACD,eAAS,KAAK,MAAM,cAAc,WAAW,CAAC;AAc9C,YAAM,aACJ,QAAQ,QAAQ,cAAc,MAC7B,OAAO,aAAa,cAAc,SAAS,kBAAkB;AAChE,UAAI,YAAY;AACd,cAAM,gBAAgB,IAAI,iBAAiB,eAAe;AAC1D,sBAAc,QAAQ,YAAY;AAAA,UAChC,YAAY;AAAA,UACZ,iBAAiB,CAAC,cAAc,gBAAgB,iBAAiB;AAAA,QACnE,CAAC;AACD,iBAAS,KAAK,MAAM,cAAc,WAAW,CAAC;AAAA,MAChD;AAAA,IACF;AASA,QAAI,YAAY;AAChB,SAAK,SAAS,OAAO,MAClB,KAAK,MAAM;AACV,UAAI,CAAC,UAAW,iBAAgB;AAAA,IAClC,CAAC,EACA,MAAM,MAAM,MAAS;AACxB,aAAS,KAAK,MAAM;AAClB,kBAAY;AAAA,IACd,CAAC;AAED,WAAO,MAAM;AACX,iBAAW,MAAM,SAAU,IAAG;AAAA,IAChC;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AAEpB,kBAAgB,MAAM;AACpB,QAAI,CAAC,KAAM;AACX,UAAM,SAAS,eAAe;AAC9B,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC,UAAU,CAAC,KAAM;AACtB,UAAM,OAAO,OAAO,eAAe,EAAE,CAAC,KAAK,OAAO,sBAAsB;AACxE,UAAM,WAAW,KAAK,sBAAsB;AAC5C,UAAM,OAAO;AAAA,MACX,MAAM,KAAK,OAAO,SAAS;AAAA,MAC3B,KAAK,KAAK,MAAM,SAAS;AAAA,MACzB,QAAQ,KAAK;AAAA,IACf;AACA;AAAA,MAAa,CAAC,aACZ,SAAS,SAAS,KAAK,QAAQ,SAAS,QAAQ,KAAK,OAAO,SAAS,WAAW,KAAK,SACjF,WACA;AAAA,IACN;AAAA,EACF,GAAG,CAAC,MAAM,OAAO,MAAM,MAAM,aAAa,SAAS,CAAC;AAEpD,QAAM,OAAO,QAAQ,MAAM,UAAU,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC;AAKtE,QAAM,eAAe;AAAA,IACnB,OAAO;AAAA,MACL,OAAO,EAAE,OAAO,OAAO,MAAM,aAAa,UAAU,SAAS;AAAA,MAC7D,SAAS,EAAE,QAAQ,OAAO,gBAAgB,oBAAoB;AAAA,MAC9D,MAAM,EAAE,SAAS,QAAQ,YAAY,SAAS;AAAA,IAChD;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,uBAAuB;AAAA,IAC3B,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,WAAW;AAAA,MACX,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SACE,oBAAC,WAAQ,MAAY,cAAc,SACjC,8BAAC,uBAAoB,OAAO,cAC1B,8BAAC,yBAAsB,OAAO,sBAC5B;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA,MAEH;AAAA;AAAA,QAWA,cACC;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,OAAO,EAAE,GAAG,aAAa,QAAQ,EAAE;AAAA,YAEnC,8BAAC,SAAI,OAAO,EAAE,WAAW,cAAc,CAAC,SAAS,MAAM,GACpD,eAAK;AAAA,cAAI,CAAC,QACT,IAAI,UACF;AAAA,gBAAC;AAAA;AAAA,kBAEC,aAAU;AAAA,kBACV,WAAU;AAAA,kBAET,cAAI;AAAA;AAAA,gBAJA,IAAI;AAAA,cAKX,IAEA,oBAAC,UAAoB,cAAI,QAAd,IAAI,GAAe;AAAA,YAElC,GACF;AAAA;AAAA,QACF,IACE;AAAA,QAGH,QAAQ,cACP;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,OAAO,EAAE,GAAG,aAAa,YAAY,UAAU,QAAQ,GAAG;AAAA,YAE1D,+BAAC,SAAI,OAAO,EAAE,WAAW,cAAc,CAAC,SAAS,MAAM,GACpD;AAAA,oBAAM,KAAK,MAAM,GAAG,KAAK;AAAA,cAC1B,oBAAC,UAAK,KAAK,gBAAiB,gBAAM,KAAK,MAAM,KAAK,KAAK,KAAI;AAAA,eAC7D;AAAA;AAAA,QACF,IACE;AAAA,QAEJ,oBAAC,iBAAc,SAAO,MACpB;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,OAAO;AAAA,cACL,MAAM,UAAU;AAAA,cAChB,KAAK,UAAU;AAAA,cACf,OAAO;AAAA,cACP,QAAQ,UAAU;AAAA,YACpB;AAAA;AAAA,QACF,GACF;AAAA;AAAA;AAAA,EACF,GACF,GACF,GACF;AAEJ,CAAC;AAoBD,IAAM,wBAAwB,cAAqC,IAAI;AAoChE,IAAM,uBAAuB;AAAA,EAClC,SAASC,sBACP;AAAA,IACE;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,KACA;AACA,UAAM,SAAS,IAAI,qBAAqB;AACxC,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,4DAA4D;AAAA,IAC9E;AACA,UAAM,YAAY;AAAA,MAChB,MAAM,UAA+B,KAAK,OAAO,WAAW;AAAA,MAC5D,CAAC,KAAK,OAAO,WAAW;AAAA,IAC1B;AAEA,UAAM,OAAO,UAAU,OAAO;AAE9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,IAAI,OAAO;AAAA,QACX,aAAU;AAAA,QAIV,cAAY,OAAO,OAAO,SAAS;AAAA,QAUnC,qBAAkB;AAAA,QAClB,iBAAc;AAAA,QAId,iBAAe,OAAO,OAAO,OAAO,SAAS;AAAA,QAC7C,yBAAuB,OAAO;AAAA,QAC9B,cAAa;AAAA,QACb,OAAO,OAAO;AAAA,QACd,WAAW,GAAG,gBAAgB,SAAS;AAAA,QACtC,GAAG;AAAA,QACJ,UAAU,CAAC,UAAU;AACnB,iBAAO,aAAa,MAAM,aAAa;AACvC,qBAAW,KAAK;AAAA,QAClB;AAAA,QACA,kBAAkB,CAAC,UAAU;AAC3B,iBAAO,iBAAiB,KAAK;AAC7B,6BAAmB,KAAK;AAAA,QAC1B;AAAA,QACA,UAAU,CAAC,UAAU;AACnB,iBAAO,YAAY,MAAM,aAAa;AACtC,qBAAW,KAAK;AAAA,QAClB;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,iBAAO,YAAY,MAAM,aAAa;AACtC,oBAAU,KAAK;AAAA,QACjB;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,iBAAO,YAAY,MAAM,aAAa;AACtC,oBAAU,KAAK;AAAA,QACjB;AAAA,QACA,UAAU,CAAC,UAAU;AACnB,iBAAO,aAAa,MAAM,cAAc,SAAS;AACjD,qBAAW,KAAK;AAAA,QAClB;AAAA,QACA,QAAQ,CAAC,UAAU;AACjB,iBAAO,UAAU;AACjB,mBAAS,KAAK;AAAA,QAChB;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AASO,IAAM,sBAAsB,WAGjC,SAASC,qBAAoB,EAAE,WAAW,QAAQ,SAAS,GAAG,MAAM,GAAG,KAAK;AAC5E,QAAM,EAAE,KAAK,IAAI,gBAAgB;AACjC,QAAM,SAAS,IAAI,qBAAqB;AAExC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV;AAAA,MAKA,MAAK;AAAA,MAEL,WAAW,GAAG,YAAY,SAAS;AAAA,MACnC,iBAAiB,CAAC,UAAU,MAAM,eAAe;AAAA,MACjD,kBAAkB,CAAC,UAAU,MAAM,eAAe;AAAA,MAClD,sBAAsB,CAAC,UAAU;AAG/B,cAAM,SAAS,MAAM,OAAO,cAAc;AAC1C,YAAI,UAAU,QAAQ,YAAY,SAAS,SAAS,MAAM,EAAG,OAAM,eAAe;AAClF,cAAM,uBAAuB,KAAK;AAAA,MACpC;AAAA,MACA,IAAI,GAAG,KAAK,MAAM;AAAA,MACjB,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAYM,IAAM,mBAAmB;AAAA,EAC9B,SAASC,kBAAiB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AAChE,UAAM,EAAE,EAAE,IAAI,UAAU;AACxB,UAAM,EAAE,OAAO,KAAK,IAAI,gBAAgB;AAExC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI,KAAK;AAAA,QACT,aAAU;AAAA,QACV,MAAK;AAAA,QACL,cAAY,EAAE,2BAA2B;AAAA,QACzC,WAAW,GAAG,gCAAgC,SAAS;AAAA,QACtD,GAAG;AAAA,QAEH,iBAAO,aAAa,aACjB,MAAM,SAAS,IAAI,CAAC,QAAQ,UAAU,SAAS,QAAQ,KAAK,CAAC,IAC7D;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAcO,IAAM,mBAAmB;AAAA,EAC9B,SAASC,kBAAiB,EAAE,QAAQ,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AACxE,UAAM,EAAE,OAAO,SAAS,KAAK,IAAI,gBAAgB;AACjD,UAAM,QAAQ,MAAM,SAAS,UAAU,CAAC,cAAc,UAAU,OAAO,OAAO,EAAE;AAChF,UAAM,WAAW,SAAS,KAAK,UAAU,MAAM;AAE/C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI,SAAS,IAAI,KAAK,SAAS,KAAK,IAAI;AAAA,QACxC,aAAU;AAAA,QACV,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAe,OAAO,YAAY;AAAA,QAClC,eAAa,YAAY;AAAA,QACzB,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAGA,aAAa,CAAC,UAAU;AACtB,gBAAM,eAAe;AACrB,gBAAM,cAAc,KAAK;AAAA,QAC3B;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,kBAAQ,OAAO,MAAM;AACrB,gBAAM,UAAU,KAAK;AAAA,QACvB;AAAA,QACA,cAAc,CAAC,UAAU;AACvB,cAAI,CAAC,OAAO,YAAY,SAAS,EAAG,SAAQ,eAAe,KAAK;AAChE,gBAAM,eAAe,KAAK;AAAA,QAC5B;AAAA,QACC,GAAG;AAAA,QAEH,sBACC,qBAAC,UAAK,WAAU,yBACd;AAAA,8BAAC,UAAK,WAAU,YAAY,iBAAO,OAAM;AAAA,UACxC,OAAO,cACN,oBAAC,UAAK,WAAU,4CAA4C,iBAAO,aAAY,IAC7E;AAAA,WACN;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAQO,IAAM,oBAAoB;AAAA,EAC/B,SAASC,mBAAkB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AACjE,UAAM,EAAE,EAAE,IAAI,UAAU;AACxB,UAAM,EAAE,MAAM,IAAI,gBAAgB;AAClC,QAAI,MAAM,SAAS,SAAS,EAAG,QAAO;AAEtC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,WAAW,GAAG,oDAAoD,SAAS;AAAA,QAC1E,GAAG;AAAA,QAEH,sBAAY,EAAE,WAAW;AAAA;AAAA,IAC5B;AAAA,EAEJ;AACF;","names":["MentionInput","MentionInputTextarea","MentionInputContent","MentionInputList","MentionInputItem","MentionInputEmpty"]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useLocale
|
|
4
|
+
} from "./chunk-EJQYE4MY.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-FXWWDMMP.js";
|
|
8
|
+
|
|
9
|
+
// src/components/table/table.tsx
|
|
10
|
+
import {
|
|
11
|
+
forwardRef,
|
|
12
|
+
useCallback,
|
|
13
|
+
useEffect,
|
|
14
|
+
useRef,
|
|
15
|
+
useState
|
|
16
|
+
} from "react";
|
|
17
|
+
import { jsx } from "react/jsx-runtime";
|
|
18
|
+
var Table = forwardRef(function Table2({ className, ...props }, ref) {
|
|
19
|
+
const { t } = useLocale();
|
|
20
|
+
const scrollRef = useRef(null);
|
|
21
|
+
const [scrollOverflows, setScrollOverflows] = useState(false);
|
|
22
|
+
const updateScrollAffordance = useCallback(() => {
|
|
23
|
+
const el = scrollRef.current;
|
|
24
|
+
if (!el) return;
|
|
25
|
+
setScrollOverflows(
|
|
26
|
+
el.scrollWidth > el.clientWidth + 1 || el.scrollHeight > el.clientHeight + 1
|
|
27
|
+
);
|
|
28
|
+
}, []);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const el = scrollRef.current;
|
|
31
|
+
if (!el) return;
|
|
32
|
+
updateScrollAffordance();
|
|
33
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
34
|
+
const observer = new ResizeObserver(updateScrollAffordance);
|
|
35
|
+
observer.observe(el);
|
|
36
|
+
if (el.firstElementChild) observer.observe(el.firstElementChild);
|
|
37
|
+
return () => observer.disconnect();
|
|
38
|
+
}, [updateScrollAffordance]);
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
ref: scrollRef,
|
|
43
|
+
"data-slot": "table-scroll-region",
|
|
44
|
+
tabIndex: scrollOverflows ? 0 : void 0,
|
|
45
|
+
role: scrollOverflows ? "group" : void 0,
|
|
46
|
+
"aria-label": scrollOverflows ? t("ui.table.scrollRegion") : void 0,
|
|
47
|
+
onScroll: updateScrollAffordance,
|
|
48
|
+
className: "relative w-full overflow-auto focus-ring-inset",
|
|
49
|
+
children: /* @__PURE__ */ jsx("table", { ref, className: cn("w-full caption-bottom text-body", className), ...props })
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
var TableHeader = forwardRef(function TableHeader2({ className, ...props }, ref) {
|
|
54
|
+
return /* @__PURE__ */ jsx(
|
|
55
|
+
"thead",
|
|
56
|
+
{
|
|
57
|
+
ref,
|
|
58
|
+
className: cn("[&_tr]:border-b [&_tr]:border-border-strong", className),
|
|
59
|
+
...props
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
var TableBody = forwardRef(function TableBody2({ className, ...props }, ref) {
|
|
64
|
+
return /* @__PURE__ */ jsx("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props });
|
|
65
|
+
});
|
|
66
|
+
var TableFooter = forwardRef(function TableFooter2({ className, ...props }, ref) {
|
|
67
|
+
return /* @__PURE__ */ jsx(
|
|
68
|
+
"tfoot",
|
|
69
|
+
{
|
|
70
|
+
ref,
|
|
71
|
+
className: cn("border-t bg-surface-muted/50 font-medium", className),
|
|
72
|
+
...props
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
});
|
|
76
|
+
var TableRow = forwardRef(
|
|
77
|
+
function TableRow2({ className, ...props }, ref) {
|
|
78
|
+
return /* @__PURE__ */ jsx(
|
|
79
|
+
"tr",
|
|
80
|
+
{
|
|
81
|
+
ref,
|
|
82
|
+
className: cn(
|
|
83
|
+
// border-border-strong: each row divider is the ONLY structural cue
|
|
84
|
+
// between adjacent rows on a shared card/background surface (no fill
|
|
85
|
+
// alternation on the plain Table primitive). Decision test: "If
|
|
86
|
+
// deleted, could a sighted user still tell the two rows apart?" No
|
|
87
|
+
// (no fill change) → load-bearing → border-strong.
|
|
88
|
+
"border-b border-border-strong transition-colors duration-fast ease-standard hover:bg-surface-muted/50 data-[state=selected]:bg-selection",
|
|
89
|
+
className
|
|
90
|
+
),
|
|
91
|
+
...props
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
var TableHead = forwardRef(
|
|
97
|
+
function TableHead2({ className, ...props }, ref) {
|
|
98
|
+
return /* @__PURE__ */ jsx(
|
|
99
|
+
"th",
|
|
100
|
+
{
|
|
101
|
+
ref,
|
|
102
|
+
className: cn(
|
|
103
|
+
// Table-header seams (fidelity review #4): every default equals
|
|
104
|
+
// today's byte-identical rendering — see the matching comment on
|
|
105
|
+
// `DataTable`'s `<th>` (packages/data/src/data-table/data-table.tsx).
|
|
106
|
+
"h-10 px-3 text-start align-middle font-table-header bg-table-header-background text-table-header-foreground text-table-header tracking-(--table-header-tracking) [text-transform:var(--table-header-transform)]",
|
|
107
|
+
className
|
|
108
|
+
),
|
|
109
|
+
...props
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
var TableCell = forwardRef(
|
|
115
|
+
function TableCell2({ className, ...props }, ref) {
|
|
116
|
+
return /* @__PURE__ */ jsx("td", { ref, className: cn("px-3 py-2 align-middle", className), ...props });
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
var TableCaption = forwardRef(function TableCaption2({ className, ...props }, ref) {
|
|
120
|
+
return /* @__PURE__ */ jsx(
|
|
121
|
+
"caption",
|
|
122
|
+
{
|
|
123
|
+
ref,
|
|
124
|
+
className: cn("mt-4 text-body text-muted-foreground", className),
|
|
125
|
+
...props
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
export {
|
|
131
|
+
Table,
|
|
132
|
+
TableHeader,
|
|
133
|
+
TableBody,
|
|
134
|
+
TableFooter,
|
|
135
|
+
TableRow,
|
|
136
|
+
TableHead,
|
|
137
|
+
TableCell,
|
|
138
|
+
TableCaption
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=chunk-4DZGAY6R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/table/table.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useLocale } from \"../locale-provider\";\n\n/**\n * `Table`'s own scroll wrapper, gated on MEASURED overflow (#366).\n *\n * `className`/`ref`/`...props` all land on the `<table>` — unchanged, no new\n * prop — so this wrapper is internal plumbing, not a new public surface. It\n * follows `DataTable`'s non-virtualized branch verbatim\n * (`packages/data/src/data-table/data-table.tsx:1658-1695`, #330), the\n * closest precedent: a plain `overflow-auto` box with no pinned columns, no\n * loading overlay and no edge fade to carry along, just the keyboard\n * affordance itself.\n *\n * A table that FITS must stay a byte-identical no-op: no `tabIndex`, no\n * `aria-label`, no `role`, no ring — an unconditional stop would announce\n * \"scrollable\" on content that never scrolls. Only a table that measurably\n * overflows gets the tab stop, its accessible name (WCAG 4.1.2) and the\n * compound focus ring (`focus-ring-inset` — the wrapper's own edge is the\n * scroll clip, so an outside ring would be cut, `.claude/rules/theming.md`).\n *\n * A naming-capable role is REQUIRED alongside that `aria-label`: `aria-label`\n * on a plain `<div>` (role `generic`) is prohibited by ARIA 1.2 and not\n * guaranteed to compute into a name, so `tabIndex={0}` alone would make an\n * UNNAMED stop. That role is `group`, NOT `region`: `region` is a landmark,\n * and every overflowing table on a page would add one more landmark with the\n * same name (axe `landmark-unique`) over a real `<table>` that already has\n * its own semantics. `group` names the stop without joining landmark\n * navigation — the no-redundant-landmark call `DataTable` made first (#330).\n */\nexport const Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(function Table(\n { className, ...props },\n ref,\n) {\n const { t } = useLocale();\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollOverflows, setScrollOverflows] = useState(false);\n\n const updateScrollAffordance = useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n // 1px tolerance absorbs sub-pixel layout rounding, which would otherwise\n // report a permanent 0.5px overflow on a table that visually fits.\n setScrollOverflows(\n el.scrollWidth > el.clientWidth + 1 || el.scrollHeight > el.clientHeight + 1,\n );\n }, []);\n\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n updateScrollAffordance();\n if (typeof ResizeObserver === \"undefined\") return;\n // Observe the CONTAINER (viewport changes) and the <table> inside it\n // (content changes its intrinsic size without resizing the container).\n const observer = new ResizeObserver(updateScrollAffordance);\n observer.observe(el);\n if (el.firstElementChild) observer.observe(el.firstElementChild);\n return () => observer.disconnect();\n }, [updateScrollAffordance]);\n\n return (\n <div\n ref={scrollRef}\n data-slot=\"table-scroll-region\"\n tabIndex={scrollOverflows ? 0 : undefined}\n role={scrollOverflows ? \"group\" : undefined}\n aria-label={scrollOverflows ? t(\"ui.table.scrollRegion\") : undefined}\n onScroll={updateScrollAffordance}\n className=\"relative w-full overflow-auto focus-ring-inset\"\n >\n <table ref={ref} className={cn(\"w-full caption-bottom text-body\", className)} {...props} />\n </div>\n );\n});\nexport const TableHeader = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableHeader({ className, ...props }, ref) {\n // border-border-strong: the header-row bottom divider is the ONLY structural\n // cue between the header and the first data row on a shared card/background\n // surface (TableHeader itself carries no fill). Decision test: \"If deleted,\n // could a sighted user still tell header from body?\" No → border-strong.\n return (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:border-b [&_tr]:border-border-strong\", className)}\n {...props}\n />\n );\n});\nexport const TableBody = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableBody({ className, ...props }, ref) {\n return <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />;\n});\nexport const TableFooter = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableFooter({ className, ...props }, ref) {\n // border-t stays on plain `border`: the footer's bg-surface-muted/50 fill is\n // a redundant cue — deleting the border still leaves a visible region change.\n // Decision test: \"If deleted, could a sighted user still tell footer from\n // body?\" Yes (fill differs) → redundant boundary → border.\n return (\n <tfoot\n ref={ref}\n className={cn(\"border-t bg-surface-muted/50 font-medium\", className)}\n {...props}\n />\n );\n});\nexport const TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\n function TableRow({ className, ...props }, ref) {\n return (\n <tr\n ref={ref}\n className={cn(\n // border-border-strong: each row divider is the ONLY structural cue\n // between adjacent rows on a shared card/background surface (no fill\n // alternation on the plain Table primitive). Decision test: \"If\n // deleted, could a sighted user still tell the two rows apart?\" No\n // (no fill change) → load-bearing → border-strong.\n \"border-b border-border-strong transition-colors duration-fast ease-standard hover:bg-surface-muted/50 data-[state=selected]:bg-selection\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nexport const TableHead = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n ref={ref}\n className={cn(\n // Table-header seams (fidelity review #4): every default equals\n // today's byte-identical rendering — see the matching comment on\n // `DataTable`'s `<th>` (packages/data/src/data-table/data-table.tsx).\n \"h-10 px-3 text-start align-middle font-table-header bg-table-header-background text-table-header-foreground text-table-header tracking-(--table-header-tracking) [text-transform:var(--table-header-transform)]\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nexport const TableCell = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, ...props }, ref) {\n return <td ref={ref} className={cn(\"px-3 py-2 align-middle\", className)} {...props} />;\n },\n);\nexport const TableCaption = forwardRef<\n HTMLTableCaptionElement,\n HTMLAttributes<HTMLTableCaptionElement>\n>(function TableCaption({ className, ...props }, ref) {\n return (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-body text-muted-foreground\", className)}\n {...props}\n />\n );\n});\n"],"mappings":"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","names":["Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Label
|
|
4
|
+
} from "./chunk-U756JCDK.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-FXWWDMMP.js";
|
|
8
|
+
|
|
9
|
+
// src/components/form/form.tsx
|
|
10
|
+
import {
|
|
11
|
+
createContext,
|
|
12
|
+
forwardRef,
|
|
13
|
+
useContext,
|
|
14
|
+
useId
|
|
15
|
+
} from "react";
|
|
16
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
17
|
+
import {
|
|
18
|
+
Controller,
|
|
19
|
+
FormProvider,
|
|
20
|
+
useFormContext
|
|
21
|
+
} from "react-hook-form";
|
|
22
|
+
import { jsx } from "react/jsx-runtime";
|
|
23
|
+
var Form = FormProvider;
|
|
24
|
+
var FormFieldContext = createContext({});
|
|
25
|
+
function FormField(props) {
|
|
26
|
+
return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
|
|
27
|
+
}
|
|
28
|
+
var FormItemContext = createContext({});
|
|
29
|
+
function useFormField() {
|
|
30
|
+
const fieldContext = useContext(FormFieldContext);
|
|
31
|
+
const itemContext = useContext(FormItemContext);
|
|
32
|
+
const { getFieldState, formState } = useFormContext();
|
|
33
|
+
const fieldState = getFieldState(fieldContext.name, formState);
|
|
34
|
+
if (!fieldContext) throw new Error("useFormField should be used within <FormField>");
|
|
35
|
+
const { id } = itemContext;
|
|
36
|
+
return {
|
|
37
|
+
id,
|
|
38
|
+
name: fieldContext.name,
|
|
39
|
+
formItemId: `${id}-form-item`,
|
|
40
|
+
formDescriptionId: `${id}-form-item-description`,
|
|
41
|
+
formMessageId: `${id}-form-item-message`,
|
|
42
|
+
...fieldState
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
var FormItem = forwardRef(
|
|
46
|
+
function FormItem2({ className, ...props }, ref) {
|
|
47
|
+
const id = useId();
|
|
48
|
+
return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), ...props }) });
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
var FormLabel = forwardRef(function FormLabel2({ className, ...props }, ref) {
|
|
52
|
+
const { error, formItemId } = useFormField();
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
Label,
|
|
55
|
+
{
|
|
56
|
+
ref,
|
|
57
|
+
htmlFor: formItemId,
|
|
58
|
+
className: cn(
|
|
59
|
+
"transition-colors duration-fast ease-standard",
|
|
60
|
+
// #124: the label's own error-state text, not a mark — ink rung.
|
|
61
|
+
error && "text-destructive-text",
|
|
62
|
+
className
|
|
63
|
+
),
|
|
64
|
+
...props
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
});
|
|
68
|
+
var FormControl = forwardRef(function FormControl2(props, ref) {
|
|
69
|
+
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
Slot,
|
|
72
|
+
{
|
|
73
|
+
ref,
|
|
74
|
+
id: formItemId,
|
|
75
|
+
"aria-describedby": error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId,
|
|
76
|
+
"aria-invalid": !!error,
|
|
77
|
+
...props
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
var FormDescription = forwardRef(function FormDescription2({ className, ...props }, ref) {
|
|
82
|
+
const { formDescriptionId } = useFormField();
|
|
83
|
+
return /* @__PURE__ */ jsx(
|
|
84
|
+
"p",
|
|
85
|
+
{
|
|
86
|
+
ref,
|
|
87
|
+
id: formDescriptionId,
|
|
88
|
+
className: cn("text-body text-muted-foreground", className),
|
|
89
|
+
...props
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
});
|
|
93
|
+
var FormMessage = forwardRef(
|
|
94
|
+
function FormMessage2({ className, children, ...props }, ref) {
|
|
95
|
+
const { error, formMessageId } = useFormField();
|
|
96
|
+
const body = error ? String(error?.message ?? "") : children;
|
|
97
|
+
if (!body) return null;
|
|
98
|
+
return /* @__PURE__ */ jsx(
|
|
99
|
+
"p",
|
|
100
|
+
{
|
|
101
|
+
ref,
|
|
102
|
+
id: formMessageId,
|
|
103
|
+
className: cn(
|
|
104
|
+
// #124: the error message body is running text — ink rung, not the
|
|
105
|
+
// 3:1 mark rung `text-destructive` guarantees.
|
|
106
|
+
"text-body font-medium text-destructive-text animate-in fade-in slide-in-from-top-1 ease-entrance",
|
|
107
|
+
className
|
|
108
|
+
),
|
|
109
|
+
...props,
|
|
110
|
+
children: body
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
export {
|
|
117
|
+
Form,
|
|
118
|
+
FormField,
|
|
119
|
+
useFormField,
|
|
120
|
+
FormItem,
|
|
121
|
+
FormLabel,
|
|
122
|
+
FormControl,
|
|
123
|
+
FormDescription,
|
|
124
|
+
FormMessage
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=chunk-4NSCLIES.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/form/form.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useId,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type HTMLAttributes,\n} from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { cn } from \"../../lib/cn\";\nimport { Label } from \"../label\";\n\nexport const Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = { name: TName };\n\nconst FormFieldContext = createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nexport function FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: ControllerProps<TFieldValues, TName>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n}\n\nconst FormItemContext = createContext<{ id: string }>({} as { id: string });\n\nexport function useFormField() {\n const fieldContext = useContext(FormFieldContext);\n const itemContext = useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n const fieldState = getFieldState(fieldContext.name, formState);\n if (!fieldContext) throw new Error(\"useFormField should be used within <FormField>\");\n const { id } = itemContext;\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n}\n\nexport const FormItem = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n function FormItem({ className, ...props }, ref) {\n const id = useId();\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n },\n);\n\nexport const FormLabel = forwardRef<\n ElementRef<typeof Label>,\n ComponentPropsWithoutRef<typeof Label>\n>(function FormLabel({ className, ...props }, ref) {\n const { error, formItemId } = useFormField();\n return (\n <Label\n ref={ref}\n htmlFor={formItemId}\n className={cn(\n \"transition-colors duration-fast ease-standard\",\n // #124: the label's own error-state text, not a mark — ink rung.\n error && \"text-destructive-text\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const FormControl = forwardRef<\n ElementRef<typeof Slot>,\n ComponentPropsWithoutRef<typeof Slot>\n>(function FormControl(props, ref) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId}\n aria-invalid={!!error}\n {...props}\n />\n );\n});\n\nexport const FormDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(function FormDescription({ className, ...props }, ref) {\n const { formDescriptionId } = useFormField();\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-body text-muted-foreground\", className)}\n {...props}\n />\n );\n});\n\nexport const FormMessage = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n function FormMessage({ className, children, ...props }, ref) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : children;\n if (!body) return null;\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\n // #124: the error message body is running text — ink rung, not the\n // 3:1 mark rung `text-destructive` guarantees.\n \"text-body font-medium text-destructive-text animate-in fade-in slide-in-from-top-1 ease-entrance\",\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n },\n);\n"],"mappings":";;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,YAAY;AACrB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAmBD;AAfC,IAAM,OAAO;AAOpB,IAAM,mBAAmB,cAAqC,CAAC,CAA0B;AAElF,SAAS,UAGd,OAA6C;AAC7C,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,EAAE,MAAM,MAAM,KAAK,GACnD,8BAAC,cAAY,GAAG,OAAO,GACzB;AAEJ;AAEA,IAAM,kBAAkB,cAA8B,CAAC,CAAmB;AAEnE,SAAS,eAAe;AAC7B,QAAM,eAAe,WAAW,gBAAgB;AAChD,QAAM,cAAc,WAAW,eAAe;AAC9C,QAAM,EAAE,eAAe,UAAU,IAAI,eAAe;AACpD,QAAM,aAAa,cAAc,aAAa,MAAM,SAAS;AAC7D,MAAI,CAAC,aAAc,OAAM,IAAI,MAAM,gDAAgD;AACnF,QAAM,EAAE,GAAG,IAAI;AACf,SAAO;AAAA,IACL;AAAA,IACA,MAAM,aAAa;AAAA,IACnB,YAAY,GAAG,EAAE;AAAA,IACjB,mBAAmB,GAAG,EAAE;AAAA,IACxB,eAAe,GAAG,EAAE;AAAA,IACpB,GAAG;AAAA,EACL;AACF;AAEO,IAAM,WAAW;AAAA,EACtB,SAASA,UAAS,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC9C,UAAM,KAAK,MAAM;AACjB,WACE,oBAAC,gBAAgB,UAAhB,EAAyB,OAAO,EAAE,GAAG,GACpC,8BAAC,SAAI,KAAU,WAAW,GAAG,aAAa,SAAS,GAAI,GAAG,OAAO,GACnE;AAAA,EAEJ;AACF;AAEO,IAAM,YAAY,WAGvB,SAASC,WAAU,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACjD,QAAM,EAAE,OAAO,WAAW,IAAI,aAAa;AAC3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAS;AAAA,MACT,WAAW;AAAA,QACT;AAAA;AAAA,QAEA,SAAS;AAAA,QACT;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAEM,IAAM,cAAc,WAGzB,SAASC,aAAY,OAAO,KAAK;AACjC,QAAM,EAAE,OAAO,YAAY,mBAAmB,cAAc,IAAI,aAAa;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,MACJ,oBAAkB,QAAQ,GAAG,iBAAiB,IAAI,aAAa,KAAK;AAAA,MACpE,gBAAc,CAAC,CAAC;AAAA,MACf,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAEM,IAAM,kBAAkB,WAG7B,SAASC,iBAAgB,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACvD,QAAM,EAAE,kBAAkB,IAAI,aAAa;AAC3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,MACJ,WAAW,GAAG,mCAAmC,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAEM,IAAM,cAAc;AAAA,EACzB,SAASC,aAAY,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AAC3D,UAAM,EAAE,OAAO,cAAc,IAAI,aAAa;AAC9C,UAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,EAAE,IAAI;AACpD,QAAI,CAAC,KAAM,QAAO;AAClB,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI;AAAA,QACJ,WAAW;AAAA;AAAA;AAAA,UAGT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;","names":["FormItem","FormLabel","FormControl","FormDescription","FormMessage"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Sidebar,
|
|
4
|
+
SidebarContent,
|
|
5
|
+
SidebarFooter,
|
|
6
|
+
SidebarHeader
|
|
7
|
+
} from "./chunk-HWVU636Q.js";
|
|
8
|
+
|
|
9
|
+
// src/components/app-sidebar/app-sidebar.tsx
|
|
10
|
+
import { forwardRef } from "react";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
var AppSidebar = forwardRef(function AppSidebar2({ header, footer, children, ...props }, ref) {
|
|
13
|
+
return /* @__PURE__ */ jsxs(Sidebar, { ref, ...props, children: [
|
|
14
|
+
header != null && /* @__PURE__ */ jsx(SidebarHeader, { children: header }),
|
|
15
|
+
/* @__PURE__ */ jsx(SidebarContent, { children }),
|
|
16
|
+
footer != null && /* @__PURE__ */ jsx(SidebarFooter, { children: footer })
|
|
17
|
+
] });
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
AppSidebar
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-4VCU3GFI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/app-sidebar/app-sidebar.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type ComponentProps, type ReactNode } from \"react\";\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader } from \"../sidebar\";\n\nexport interface AppSidebarProps extends ComponentProps<typeof Sidebar> {\n /**\n * Content rendered inside `<SidebarHeader>`. Typically a `TeamSwitcher`\n * or a logo + title combination.\n */\n header?: ReactNode;\n /**\n * Content rendered inside `<SidebarFooter>`. Typically a `NavUser` or\n * a `TeamSwitcher` placed at the bottom.\n */\n footer?: ReactNode;\n /**\n * Main navigation content rendered inside `<SidebarContent>`. Pass one or\n * more `<SidebarGroup>` / `<SidebarMenu>` compositions here.\n */\n children?: ReactNode;\n}\n\n/**\n * Parameterized application sidebar shell. Composes `@radix-ui` `Sidebar`\n * primitives with typed `header`, `footer`, and `children` slots.\n *\n * Registry blocks (`sidebar-02`, `sidebar-04`, `sidebar-05`) should import\n * this instead of constructing the `Sidebar` → `SidebarHeader` →\n * `SidebarContent` → `SidebarFooter` skeleton themselves.\n *\n * @example\n * ```tsx\n * <AppSidebar\n * header={<TeamSwitcher teams={teams} />}\n * footer={<NavUser user={currentUser} />}\n * >\n * <SidebarGroup>…</SidebarGroup>\n * </AppSidebar>\n * ```\n */\nexport const AppSidebar = forwardRef<HTMLDivElement, AppSidebarProps>(function AppSidebar(\n { header, footer, children, ...props },\n ref,\n) {\n return (\n <Sidebar ref={ref} {...props}>\n {header != null && <SidebarHeader>{header}</SidebarHeader>}\n <SidebarContent>{children}</SidebarContent>\n {footer != null && <SidebarFooter>{footer}</SidebarFooter>}\n </Sidebar>\n );\n});\n"],"mappings":";;;;;;;;;AAEA,SAAS,kBAAuD;AA4C5D,SACqB,KADrB;AALG,IAAM,aAAa,WAA4C,SAASA,YAC7E,EAAE,QAAQ,QAAQ,UAAU,GAAG,MAAM,GACrC,KACA;AACA,SACE,qBAAC,WAAQ,KAAW,GAAG,OACpB;AAAA,cAAU,QAAQ,oBAAC,iBAAe,kBAAO;AAAA,IAC1C,oBAAC,kBAAgB,UAAS;AAAA,IACzB,UAAU,QAAQ,oBAAC,iBAAe,kBAAO;AAAA,KAC5C;AAEJ,CAAC;","names":["AppSidebar"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/lib/document-address.ts
|
|
4
|
+
var DOCUMENT_ADDRESS_KINDS = ["quote", "range", "rect"];
|
|
5
|
+
var CHARACTER_FOLDS = {
|
|
6
|
+
// Curly quotes and primes. A model quoting a PDF re-types these constantly;
|
|
7
|
+
// the file has the other one.
|
|
8
|
+
"\u2018": "'",
|
|
9
|
+
"\u2019": "'",
|
|
10
|
+
"\u201A": "'",
|
|
11
|
+
"\u201B": "'",
|
|
12
|
+
"\u2032": "'",
|
|
13
|
+
"\u201C": '"',
|
|
14
|
+
"\u201D": '"',
|
|
15
|
+
"\u201E": '"',
|
|
16
|
+
"\u201F": '"',
|
|
17
|
+
"\u2033": '"',
|
|
18
|
+
// Dashes. PDF extraction yields the typographic one, prose yields a hyphen.
|
|
19
|
+
"\u2010": "-",
|
|
20
|
+
"\u2011": "-",
|
|
21
|
+
"\u2012": "-",
|
|
22
|
+
"\u2013": "-",
|
|
23
|
+
"\u2014": "-",
|
|
24
|
+
"\u2015": "-",
|
|
25
|
+
"\u2212": "-"
|
|
26
|
+
};
|
|
27
|
+
var DROPPED = /* @__PURE__ */ new Set(["\xAD", "\u200B", "\u200C", "\u200D", "\u2060"]);
|
|
28
|
+
var WHITESPACE = /\s/u;
|
|
29
|
+
function normalizeQuoteTextWithOffsets(input) {
|
|
30
|
+
const out = [];
|
|
31
|
+
const offsets = [];
|
|
32
|
+
let pendingSpaceAt;
|
|
33
|
+
let end = 0;
|
|
34
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
35
|
+
const character = input[i];
|
|
36
|
+
if (WHITESPACE.test(character)) {
|
|
37
|
+
pendingSpaceAt ??= i;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (DROPPED.has(character)) continue;
|
|
41
|
+
if (pendingSpaceAt !== void 0) {
|
|
42
|
+
if (out.length > 0) {
|
|
43
|
+
out.push(" ");
|
|
44
|
+
offsets.push(pendingSpaceAt);
|
|
45
|
+
}
|
|
46
|
+
pendingSpaceAt = void 0;
|
|
47
|
+
}
|
|
48
|
+
const folded = CHARACTER_FOLDS[character] ?? character;
|
|
49
|
+
const lowered = folded.toLowerCase();
|
|
50
|
+
out.push(lowered.length === folded.length ? lowered : folded);
|
|
51
|
+
offsets.push(i);
|
|
52
|
+
end = i + 1;
|
|
53
|
+
}
|
|
54
|
+
offsets.push(end);
|
|
55
|
+
return { text: out.join(""), offsets };
|
|
56
|
+
}
|
|
57
|
+
function normalizeQuoteText(input) {
|
|
58
|
+
return normalizeQuoteTextWithOffsets(input).text;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export {
|
|
62
|
+
DOCUMENT_ADDRESS_KINDS,
|
|
63
|
+
normalizeQuoteTextWithOffsets,
|
|
64
|
+
normalizeQuoteText
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=chunk-4W3MVVKN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/document-address.ts"],"sourcesContent":["/**\n * How one part of a document is addressed.\n *\n * A viewer that can only open a file answers \"here is the document\". A viewer\n * that can be pointed at a PART of one answers \"here is the sentence that\n * claim came from\" — the RAG-citation case, and the same machinery behind\n * find-in-document.\n *\n * ## Why this lives in `@elabs-ai/components-ui`\n *\n * The producer of an address (a chat answer's citation, in\n * `@elabs-ai/components-ai`) and its consumer (the file viewer, in\n * `@elabs-ai/components-viewer`) are Layer-2 siblings that may not\n * import each other. `ui` is the only layer both reach, which is exactly why\n * `FileSource` and `MatchRange` already live here. This module is a\n * dependency-free leaf: types plus pure string functions, no React.\n *\n * ## Three kinds, one union\n *\n * Real producers disagree about what they can emit, so the union carries all\n * three rather than forcing everyone through the weakest:\n *\n * - **`quote`** — the snippet text. The only kind that survives crossing a tool\n * boundary: an indexing pipeline's character offsets are computed against ITS\n * extraction of the PDF, never against ours, so its numbers are meaningless\n * here while its text still is. Lossy (a repeated phrase is ambiguous) and the\n * most useful.\n * - **`range`** — exact character offsets, and exact only against the SAME text\n * projection: `AdapterDocument.text` as this build's adapter produced it. Use\n * it when both ends are ours (find-in-document, a second pass over a document\n * already open).\n * - **`rect`** — page-relative boxes, `0..1` fractions of the page. Needs no\n * text at all, which is what makes it the answer for a scanned page, a chart,\n * a photo region, or any layout-analysis model whose output is geometry.\n *\n * ## The rule that lets this union grow\n *\n * A consumer matches only the kinds it declared it honours and reports the rest\n * as unsupported — it never writes an exhaustive `switch` with a `never`\n * fallthrough. That is what lets a fourth kind (a spreadsheet `cell` address,\n * say) be added later without breaking every consumer that predates it.\n */\n\n/** The address kinds, as a value — for capability declarations and iteration. */\nexport const DOCUMENT_ADDRESS_KINDS = [\"quote\", \"range\", \"rect\"] as const;\n\n/** Which way a part of a document is addressed. */\nexport type DocumentAddressKind = (typeof DOCUMENT_ADDRESS_KINDS)[number];\n\n/**\n * A box on a page, as fractions of that page's own box.\n *\n * Fractions, not pixels, because the page is not a fixed size: it rescales with\n * zoom, with the pane's width and with the device's pixel ratio. A consumer\n * multiplies by the page element's live measured size at paint time, so the box\n * stays put through every one of those. Origin is top-left (CSS), so `y` grows\n * downward — matching the DOM rather than the PDF's own bottom-left space.\n */\nexport interface DocumentRect {\n /** Distance from the page's left edge, `0..1`. */\n x: number;\n /** Distance from the page's TOP edge, `0..1`. */\n y: number;\n /** Fraction of the page's width. */\n width: number;\n /** Fraction of the page's height. */\n height: number;\n}\n\n/**\n * Address by the text itself — the interoperable kind.\n *\n * Matching is done on the normalized form of both sides\n * ({@link normalizeQuoteText}), so a quote survives the whitespace, quote-glyph\n * and casing differences that every extractor introduces.\n */\nexport interface QuoteAddress {\n kind: \"quote\";\n /** The passage to find. Whitespace and quote glyphs need not match exactly. */\n text: string;\n /**\n * Which occurrence to take when the passage appears more than once, 1-based.\n * Omitted means the first — or the one nearest {@link QuoteAddress.near},\n * when that is given.\n */\n occurrence?: number;\n /**\n * A hint about where to look. It disambiguates repeats rather than restricting\n * the search: the occurrence closest to it wins, and a passage that turns out\n * to be elsewhere is still found.\n */\n near?: {\n /**\n * 1-based page (or slide) the passage is expected on.\n *\n * Advisory, and deliberately NOT used to navigate: the viewer turns to the\n * page the passage was actually located on, so a stale hint cannot send a\n * reader to a blank page. Only {@link QuoteAddress.near.offset} takes part in\n * tie-breaking today; a renderer may read this off the address if it wants\n * more.\n */\n page?: number;\n /** Approximate character offset the passage is expected near. */\n offset?: number;\n };\n}\n\n/**\n * Address by character offsets into `AdapterDocument.text`, half-open\n * `[start, end)` — the same convention as `MatchRange`.\n *\n * Only meaningful against the text projection THIS build produced. An offset\n * from a foreign pipeline is not this kind; it is a {@link QuoteAddress}.\n */\nexport interface RangeAddress {\n kind: \"range\";\n start: number;\n end: number;\n /**\n * 1-based page hint, when the producer knows it. Advisory only — the viewer\n * derives the page from the offsets against its own index, so a hint that\n * disagrees cannot misdirect the pager.\n */\n page?: number;\n}\n\n/** Address by geometry — one or more boxes on one page. */\nexport interface RectAddress {\n kind: \"rect\";\n /** 1-based page (or slide) number. */\n page: number;\n /**\n * The boxes making up this one addressed part. An array, not a single box,\n * because a real passage wraps: a sentence spanning three lines is three\n * boxes, and a two-column paragraph is more. Painting them as one shape each\n * is what avoids stitching DOM ranges together.\n */\n rects: readonly DocumentRect[];\n}\n\n/** Which part of a document something refers to. */\nexport type DocumentAddress = QuoteAddress | RangeAddress | RectAddress;\n\n/* -------------------------------------------------------------------------- */\n/* Quote normalization */\n/* -------------------------------------------------------------------------- */\n\n/** Straightened 1:1 — every one of these is one code unit in and one out. */\nconst CHARACTER_FOLDS: Readonly<Record<string, string>> = {\n // Curly quotes and primes. A model quoting a PDF re-types these constantly;\n // the file has the other one.\n \"‘\": \"'\",\n \"’\": \"'\",\n \"‚\": \"'\",\n \"‛\": \"'\",\n \"′\": \"'\",\n \"“\": '\"',\n \"”\": '\"',\n \"„\": '\"',\n \"‟\": '\"',\n \"″\": '\"',\n // Dashes. PDF extraction yields the typographic one, prose yields a hyphen.\n \"‐\": \"-\",\n \"‑\": \"-\",\n \"‒\": \"-\",\n \"–\": \"-\",\n \"—\": \"-\",\n \"―\": \"-\",\n \"−\": \"-\",\n};\n\n/**\n * Invisible, and typically present in exactly one of the two strings being\n * compared: soft hyphen (a PDF's line-break artefact), zero-width space, ZWNJ,\n * ZWJ, word joiner. Written as escapes because a literal here is unreviewable —\n * it renders as nothing.\n */\nconst DROPPED = new Set([\"\", \"\", \"\", \"\", \"\"]);\n\n/**\n * Anything that collapses into one space. Plain `\\s` is already the full set in\n * JavaScript — it covers NBSP, the `U+2000`–`U+200A` spaces, the line and\n * paragraph separators, narrow NBSP, ideographic space and the BOM.\n */\nconst WHITESPACE = /\\s/u;\n\n/**\n * The result of normalizing, with the way back.\n *\n * `offsets` has one more entry than `text` has characters: `offsets[i]` is the\n * index in the ORIGINAL string where normalized character `i` came from, and\n * the final entry is one past the last character that survived — NOT the\n * original's length, which would drag trailing whitespace into every range that\n * runs to the end. So a normalized range `[a, b)` maps back to\n * `[offsets[a], offsets[b])` with no arithmetic, which is the whole point of\n * building the map rather than searching twice.\n */\nexport interface NormalizedText {\n text: string;\n offsets: readonly number[];\n}\n\n/**\n * Fold a string to its canonical match key, keeping a map back to the original.\n *\n * Every rule is a collapse, a drop or a 1:1 swap — never an expansion — so the\n * map stays monotone and a range maps back exactly. That constraint is why\n * ligatures (`fi`) and the ellipsis character are deliberately left alone: both\n * would be 1:many, and a fuzzier match is not worth an offset map that can no\n * longer be trusted.\n *\n * What it does: collapses every whitespace run to one space and trims; drops\n * zero-width characters and soft hyphens; straightens curly quotes and dashes;\n * folds case — a citation is matched case-insensitively, and that is a property\n * of the match key rather than a flag every caller has to remember.\n */\nexport function normalizeQuoteTextWithOffsets(input: string): NormalizedText {\n const out: string[] = [];\n const offsets: number[] = [];\n let pendingSpaceAt: number | undefined;\n /** One past the last surviving character — the map's terminal entry. */\n let end = 0;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input[i] as string;\n\n if (WHITESPACE.test(character)) {\n // Held rather than emitted, so a trailing run never reaches the output\n // and a leading one is dropped by the `out.length` test below.\n pendingSpaceAt ??= i;\n continue;\n }\n if (DROPPED.has(character)) continue;\n\n if (pendingSpaceAt !== undefined) {\n if (out.length > 0) {\n out.push(\" \");\n // The single space stands for the whole run, so it points at where the\n // run began — not at the character that ended it.\n offsets.push(pendingSpaceAt);\n }\n pendingSpaceAt = undefined;\n }\n\n const folded = CHARACTER_FOLDS[character] ?? character;\n const lowered = folded.toLowerCase();\n // Guard the 1:1 invariant: a few code points grow when lowercased\n // (`İ` → `i̇`). Keeping the original is a worse match and a correct map; the\n // reverse trade would silently corrupt every offset after it.\n out.push(lowered.length === folded.length ? lowered : folded);\n offsets.push(i);\n end = i + 1;\n }\n\n offsets.push(end);\n return { text: out.join(\"\"), offsets };\n}\n\n/**\n * The canonical match key for a quote — {@link normalizeQuoteTextWithOffsets}\n * without the map, for comparing or de-duplicating two quotes.\n */\nexport function normalizeQuoteText(input: string): string {\n return normalizeQuoteTextWithOffsets(input).text;\n}\n"],"mappings":";;;AA4CO,IAAM,yBAAyB,CAAC,SAAS,SAAS,MAAM;AAwG/D,IAAM,kBAAoD;AAAA;AAAA;AAAA,EAGxD,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA;AAAA,EAEL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AACP;AAQA,IAAM,UAAU,oBAAI,IAAI,CAAC,QAAK,UAAK,UAAK,UAAK,QAAG,CAAC;AAOjD,IAAM,aAAa;AAgCZ,SAAS,8BAA8B,OAA+B;AAC3E,QAAM,MAAgB,CAAC;AACvB,QAAM,UAAoB,CAAC;AAC3B,MAAI;AAEJ,MAAI,MAAM;AAEV,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,UAAM,YAAY,MAAM,CAAC;AAEzB,QAAI,WAAW,KAAK,SAAS,GAAG;AAG9B,yBAAmB;AACnB;AAAA,IACF;AACA,QAAI,QAAQ,IAAI,SAAS,EAAG;AAE5B,QAAI,mBAAmB,QAAW;AAChC,UAAI,IAAI,SAAS,GAAG;AAClB,YAAI,KAAK,GAAG;AAGZ,gBAAQ,KAAK,cAAc;AAAA,MAC7B;AACA,uBAAiB;AAAA,IACnB;AAEA,UAAM,SAAS,gBAAgB,SAAS,KAAK;AAC7C,UAAM,UAAU,OAAO,YAAY;AAInC,QAAI,KAAK,QAAQ,WAAW,OAAO,SAAS,UAAU,MAAM;AAC5D,YAAQ,KAAK,CAAC;AACd,UAAM,IAAI;AAAA,EACZ;AAEA,UAAQ,KAAK,GAAG;AAChB,SAAO,EAAE,MAAM,IAAI,KAAK,EAAE,GAAG,QAAQ;AACvC;AAMO,SAAS,mBAAmB,OAAuB;AACxD,SAAO,8BAA8B,KAAK,EAAE;AAC9C;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|