@mieweb/ui 0.7.1-dev.1 → 0.7.1-dev.11
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/dist/CsvBlock-LVJARITD.cjs +15 -0
- package/dist/{CsvBlock-2A5VEDD3.cjs.map → CsvBlock-LVJARITD.cjs.map} +1 -1
- package/dist/CsvBlock-VTYNQ75L.js +6 -0
- package/dist/{CsvBlock-D6PWAJ5X.js.map → CsvBlock-VTYNQ75L.js.map} +1 -1
- package/dist/HtmlPreviewBlock-F33P37UD.cjs +15 -0
- package/dist/{HtmlPreviewBlock-SYXCV5RH.cjs.map → HtmlPreviewBlock-F33P37UD.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-N4PPVJLJ.js +6 -0
- package/dist/{HtmlPreviewBlock-PEHTJ6C3.js.map → HtmlPreviewBlock-N4PPVJLJ.js.map} +1 -1
- package/dist/MermaidBlock-G5X4FPUN.cjs +15 -0
- package/dist/{MermaidBlock-AFXNP5NK.cjs.map → MermaidBlock-G5X4FPUN.cjs.map} +1 -1
- package/dist/MermaidBlock-HUT53CRG.js +6 -0
- package/dist/{MermaidBlock-7NK3AVK2.js.map → MermaidBlock-HUT53CRG.js.map} +1 -1
- package/dist/SurveyBlock-ORTPGA5T.cjs +15 -0
- package/dist/{SurveyBlock-6KRNKFH5.cjs.map → SurveyBlock-ORTPGA5T.cjs.map} +1 -1
- package/dist/SurveyBlock-PM3ZMWWR.js +6 -0
- package/dist/{SurveyBlock-NNDGXGG4.js.map → SurveyBlock-PM3ZMWWR.js.map} +1 -1
- package/dist/ag-grid.cjs +8 -8
- package/dist/ag-grid.js +1 -1
- package/dist/brands/index.cjs +7 -7
- package/dist/brands/index.js +2 -2
- package/dist/{chunk-4DMZAVB2.js → chunk-23AYDOCH.js} +3 -3
- package/dist/{chunk-4DMZAVB2.js.map → chunk-23AYDOCH.js.map} +1 -1
- package/dist/{chunk-TRZXK57D.js → chunk-2DW4PUJD.js} +3 -3
- package/dist/{chunk-TRZXK57D.js.map → chunk-2DW4PUJD.js.map} +1 -1
- package/dist/{chunk-J7Z7467B.js → chunk-34LGPMO4.js} +3 -3
- package/dist/{chunk-J7Z7467B.js.map → chunk-34LGPMO4.js.map} +1 -1
- package/dist/{chunk-OX2RIVN7.js → chunk-3D4ITDLO.js} +4 -4
- package/dist/{chunk-OX2RIVN7.js.map → chunk-3D4ITDLO.js.map} +1 -1
- package/dist/{chunk-PJAQDAMZ.cjs → chunk-3IAA3KCE.cjs} +15 -6
- package/dist/chunk-3IAA3KCE.cjs.map +1 -0
- package/dist/{chunk-Q2EWNXIB.cjs → chunk-3SZQRMHM.cjs} +9 -9
- package/dist/{chunk-Q2EWNXIB.cjs.map → chunk-3SZQRMHM.cjs.map} +1 -1
- package/dist/{chunk-JLBT76WH.js → chunk-3YSIZ2CK.js} +14 -5
- package/dist/chunk-3YSIZ2CK.js.map +1 -0
- package/dist/{chunk-NIEIRA5A.cjs → chunk-4AE2L6AO.cjs} +13 -13
- package/dist/{chunk-NIEIRA5A.cjs.map → chunk-4AE2L6AO.cjs.map} +1 -1
- package/dist/{chunk-IHTRKWBG.js → chunk-4G3NJLQA.js} +4 -4
- package/dist/{chunk-IHTRKWBG.js.map → chunk-4G3NJLQA.js.map} +1 -1
- package/dist/{chunk-XP6HELVG.cjs → chunk-5IDYOJHO.cjs} +13 -13
- package/dist/{chunk-XP6HELVG.cjs.map → chunk-5IDYOJHO.cjs.map} +1 -1
- package/dist/{chunk-3CJBUAJ4.js → chunk-5U6GETAW.js} +3 -3
- package/dist/{chunk-3CJBUAJ4.js.map → chunk-5U6GETAW.js.map} +1 -1
- package/dist/{chunk-HEH3QXOQ.js → chunk-5Y5FSR4N.js} +3 -3
- package/dist/{chunk-HEH3QXOQ.js.map → chunk-5Y5FSR4N.js.map} +1 -1
- package/dist/{chunk-TN33E2VN.cjs → chunk-62TFTZWT.cjs} +12 -12
- package/dist/{chunk-TN33E2VN.cjs.map → chunk-62TFTZWT.cjs.map} +1 -1
- package/dist/{chunk-MSRU3XBH.cjs → chunk-6ECKH4DJ.cjs} +7 -7
- package/dist/{chunk-MSRU3XBH.cjs.map → chunk-6ECKH4DJ.cjs.map} +1 -1
- package/dist/{chunk-PFWHWIXS.cjs → chunk-6ED4RUGM.cjs} +100 -3
- package/dist/chunk-6ED4RUGM.cjs.map +1 -0
- package/dist/{chunk-MV3MTHWQ.js → chunk-6EWJGRC3.js} +3 -3
- package/dist/{chunk-MV3MTHWQ.js.map → chunk-6EWJGRC3.js.map} +1 -1
- package/dist/{chunk-PWHK7SWN.cjs → chunk-6K4FCEY4.cjs} +125 -124
- package/dist/chunk-6K4FCEY4.cjs.map +1 -0
- package/dist/{chunk-7WMSUXOQ.js → chunk-6OCYG6J2.js} +4 -4
- package/dist/{chunk-7WMSUXOQ.js.map → chunk-6OCYG6J2.js.map} +1 -1
- package/dist/{chunk-JCNPVK74.cjs → chunk-6OQE4ZMG.cjs} +8 -8
- package/dist/{chunk-JCNPVK74.cjs.map → chunk-6OQE4ZMG.cjs.map} +1 -1
- package/dist/{chunk-KBEKQMVY.cjs → chunk-6QVI6DAO.cjs} +5 -5
- package/dist/{chunk-KBEKQMVY.cjs.map → chunk-6QVI6DAO.cjs.map} +1 -1
- package/dist/{chunk-5BQE6BEL.js → chunk-6XGESZ4S.js} +3 -3
- package/dist/{chunk-5BQE6BEL.js.map → chunk-6XGESZ4S.js.map} +1 -1
- package/dist/{chunk-CVC4NWFA.cjs → chunk-7AMOKHTW.cjs} +4 -4
- package/dist/{chunk-CVC4NWFA.cjs.map → chunk-7AMOKHTW.cjs.map} +1 -1
- package/dist/{chunk-44CK4CT2.cjs → chunk-7EB7665B.cjs} +13 -13
- package/dist/{chunk-44CK4CT2.cjs.map → chunk-7EB7665B.cjs.map} +1 -1
- package/dist/{chunk-BB4WQ4LV.cjs → chunk-ABAOZASX.cjs} +8 -8
- package/dist/{chunk-BB4WQ4LV.cjs.map → chunk-ABAOZASX.cjs.map} +1 -1
- package/dist/{chunk-6LFG4JFF.js → chunk-AFGADE3B.js} +3 -3
- package/dist/{chunk-6LFG4JFF.js.map → chunk-AFGADE3B.js.map} +1 -1
- package/dist/{chunk-UOOH356R.cjs → chunk-AIJAFPGJ.cjs} +5 -5
- package/dist/{chunk-UOOH356R.cjs.map → chunk-AIJAFPGJ.cjs.map} +1 -1
- package/dist/{chunk-43GBCUSQ.js → chunk-AQ564XO7.js} +6 -6
- package/dist/chunk-AQ564XO7.js.map +1 -0
- package/dist/{chunk-CYMZ2QS5.js → chunk-BCJFOSZX.js} +2 -2
- package/dist/{chunk-CYMZ2QS5.js.map → chunk-BCJFOSZX.js.map} +1 -1
- package/dist/{chunk-T3C4RNJ4.js → chunk-BJKAVWED.js} +3 -3
- package/dist/{chunk-T3C4RNJ4.js.map → chunk-BJKAVWED.js.map} +1 -1
- package/dist/{chunk-T42BCIUA.js → chunk-BMSG4NBH.js} +4 -4
- package/dist/{chunk-T42BCIUA.js.map → chunk-BMSG4NBH.js.map} +1 -1
- package/dist/{chunk-C2544GKZ.js → chunk-BX5ZODPF.js} +4 -4
- package/dist/{chunk-C2544GKZ.js.map → chunk-BX5ZODPF.js.map} +1 -1
- package/dist/{chunk-VPNURIAY.cjs → chunk-C2NNNOSU.cjs} +8 -8
- package/dist/{chunk-VPNURIAY.cjs.map → chunk-C2NNNOSU.cjs.map} +1 -1
- package/dist/{chunk-AES2BKEW.cjs → chunk-C7I3ZGMQ.cjs} +8 -8
- package/dist/{chunk-AES2BKEW.cjs.map → chunk-C7I3ZGMQ.cjs.map} +1 -1
- package/dist/{chunk-IYIYL2SQ.js → chunk-CEQJGUAS.js} +3 -3
- package/dist/{chunk-IYIYL2SQ.js.map → chunk-CEQJGUAS.js.map} +1 -1
- package/dist/{chunk-6ZYE6JUK.cjs → chunk-CKRRJO7T.cjs} +11 -11
- package/dist/{chunk-6ZYE6JUK.cjs.map → chunk-CKRRJO7T.cjs.map} +1 -1
- package/dist/{chunk-ZHBANUBI.cjs → chunk-CPUDOVWH.cjs} +21 -21
- package/dist/{chunk-ZHBANUBI.cjs.map → chunk-CPUDOVWH.cjs.map} +1 -1
- package/dist/{chunk-WO5CAOAN.js → chunk-DCBMTFLE.js} +3 -3
- package/dist/{chunk-WO5CAOAN.js.map → chunk-DCBMTFLE.js.map} +1 -1
- package/dist/{chunk-MUYTGWGE.js → chunk-DVOQ3JNO.js} +3 -3
- package/dist/{chunk-MUYTGWGE.js.map → chunk-DVOQ3JNO.js.map} +1 -1
- package/dist/{chunk-QUUFKGDF.cjs → chunk-EDBGSGUK.cjs} +15 -15
- package/dist/{chunk-QUUFKGDF.cjs.map → chunk-EDBGSGUK.cjs.map} +1 -1
- package/dist/{chunk-WGPMTW36.cjs → chunk-EPQPUFS6.cjs} +7 -7
- package/dist/{chunk-WGPMTW36.cjs.map → chunk-EPQPUFS6.cjs.map} +1 -1
- package/dist/{chunk-KL2S36FM.js → chunk-ET5JGGVL.js} +3 -3
- package/dist/{chunk-KL2S36FM.js.map → chunk-ET5JGGVL.js.map} +1 -1
- package/dist/{chunk-J3BU3JBX.js → chunk-FDUA6OGN.js} +3 -3
- package/dist/{chunk-J3BU3JBX.js.map → chunk-FDUA6OGN.js.map} +1 -1
- package/dist/{chunk-KQAXXJ4G.cjs → chunk-FF235PKY.cjs} +7 -7
- package/dist/{chunk-KQAXXJ4G.cjs.map → chunk-FF235PKY.cjs.map} +1 -1
- package/dist/{chunk-FZJBFJJR.js → chunk-FJ7YPVKV.js} +3 -3
- package/dist/{chunk-FZJBFJJR.js.map → chunk-FJ7YPVKV.js.map} +1 -1
- package/dist/{chunk-5MAGWW5X.cjs → chunk-FKLUSYFP.cjs} +11 -11
- package/dist/{chunk-5MAGWW5X.cjs.map → chunk-FKLUSYFP.cjs.map} +1 -1
- package/dist/{chunk-YZT62IMX.js → chunk-GDBPFHNX.js} +4 -4
- package/dist/{chunk-YZT62IMX.js.map → chunk-GDBPFHNX.js.map} +1 -1
- package/dist/{chunk-7VF6WO7H.cjs → chunk-GKWWFJDB.cjs} +310 -99
- package/dist/chunk-GKWWFJDB.cjs.map +1 -0
- package/dist/{chunk-ZGSC2CB2.js → chunk-GTHNWP4P.js} +36 -5
- package/dist/chunk-GTHNWP4P.js.map +1 -0
- package/dist/{chunk-6AHYYWVB.js → chunk-H3HF36ZL.js} +5 -5
- package/dist/{chunk-6AHYYWVB.js.map → chunk-H3HF36ZL.js.map} +1 -1
- package/dist/{chunk-BIT27PPD.js → chunk-HS25RPDW.js} +3 -3
- package/dist/{chunk-BIT27PPD.js.map → chunk-HS25RPDW.js.map} +1 -1
- package/dist/{chunk-MCCO4A23.js → chunk-I2BKK3AQ.js} +256 -45
- package/dist/chunk-I2BKK3AQ.js.map +1 -0
- package/dist/{chunk-BWYYA3LQ.cjs → chunk-I2ECTLON.cjs} +5 -5
- package/dist/{chunk-BWYYA3LQ.cjs.map → chunk-I2ECTLON.cjs.map} +1 -1
- package/dist/{chunk-DUPR6FEL.js → chunk-I3WGZPI6.js} +4 -4
- package/dist/{chunk-DUPR6FEL.js.map → chunk-I3WGZPI6.js.map} +1 -1
- package/dist/{chunk-ZAIEQWRA.js → chunk-IS5PNYR7.js} +4 -4
- package/dist/{chunk-ZAIEQWRA.js.map → chunk-IS5PNYR7.js.map} +1 -1
- package/dist/{chunk-BT3ZQJGT.cjs → chunk-IUDY6S7I.cjs} +6 -6
- package/dist/{chunk-BT3ZQJGT.cjs.map → chunk-IUDY6S7I.cjs.map} +1 -1
- package/dist/{chunk-UM6NA7HL.js → chunk-IXWRD4AP.js} +3 -3
- package/dist/{chunk-UM6NA7HL.js.map → chunk-IXWRD4AP.js.map} +1 -1
- package/dist/{chunk-MKWGKASO.js → chunk-JJNCQMR5.js} +3 -3
- package/dist/{chunk-MKWGKASO.js.map → chunk-JJNCQMR5.js.map} +1 -1
- package/dist/{chunk-TR2OJKQ4.cjs → chunk-JTSKPDPH.cjs} +8 -8
- package/dist/{chunk-TR2OJKQ4.cjs.map → chunk-JTSKPDPH.cjs.map} +1 -1
- package/dist/{chunk-XCLQZ4FV.js → chunk-KFLDXJEE.js} +3 -3
- package/dist/{chunk-XCLQZ4FV.js.map → chunk-KFLDXJEE.js.map} +1 -1
- package/dist/{chunk-A2QVQF54.cjs → chunk-M26KJKZG.cjs} +4 -4
- package/dist/{chunk-A2QVQF54.cjs.map → chunk-M26KJKZG.cjs.map} +1 -1
- package/dist/{chunk-JHYFHEHS.js → chunk-MHD5HZ4X.js} +4 -4
- package/dist/{chunk-JHYFHEHS.js.map → chunk-MHD5HZ4X.js.map} +1 -1
- package/dist/{chunk-UFYXU7KV.js → chunk-MWPPOX6F.js} +4 -4
- package/dist/{chunk-UFYXU7KV.js.map → chunk-MWPPOX6F.js.map} +1 -1
- package/dist/{chunk-KJ5BSGEO.cjs → chunk-NGPEXCC7.cjs} +11 -11
- package/dist/{chunk-KJ5BSGEO.cjs.map → chunk-NGPEXCC7.cjs.map} +1 -1
- package/dist/{chunk-FCBQP2U4.cjs → chunk-NPKPCYAT.cjs} +142 -16
- package/dist/chunk-NPKPCYAT.cjs.map +1 -0
- package/dist/{chunk-T3RWXOCM.js → chunk-NU6QKULE.js} +3 -3
- package/dist/{chunk-T3RWXOCM.js.map → chunk-NU6QKULE.js.map} +1 -1
- package/dist/{chunk-BYUV3IZV.cjs → chunk-OGPJ3LRF.cjs} +4 -4
- package/dist/{chunk-BYUV3IZV.cjs.map → chunk-OGPJ3LRF.cjs.map} +1 -1
- package/dist/{chunk-DAPZPT5N.cjs → chunk-OJEXXH5D.cjs} +11 -11
- package/dist/{chunk-DAPZPT5N.cjs.map → chunk-OJEXXH5D.cjs.map} +1 -1
- package/dist/{chunk-XL7TTKHP.js → chunk-OLFTGCGD.js} +7 -7
- package/dist/{chunk-XL7TTKHP.js.map → chunk-OLFTGCGD.js.map} +1 -1
- package/dist/{chunk-BX6BTDTR.js → chunk-OQWZYKJM.js} +3 -3
- package/dist/{chunk-BX6BTDTR.js.map → chunk-OQWZYKJM.js.map} +1 -1
- package/dist/{chunk-JBB25LFB.js → chunk-OTQ72WX3.js} +3 -3
- package/dist/{chunk-JBB25LFB.js.map → chunk-OTQ72WX3.js.map} +1 -1
- package/dist/{chunk-AFKKJEV5.cjs → chunk-OZOSWBSI.cjs} +4 -4
- package/dist/{chunk-AFKKJEV5.cjs.map → chunk-OZOSWBSI.cjs.map} +1 -1
- package/dist/{chunk-KJPOFUF5.cjs → chunk-P2VTQ5AR.cjs} +10 -10
- package/dist/{chunk-KJPOFUF5.cjs.map → chunk-P2VTQ5AR.cjs.map} +1 -1
- package/dist/{chunk-QASIWBXU.cjs → chunk-P7UMS4E6.cjs} +7 -7
- package/dist/{chunk-QASIWBXU.cjs.map → chunk-P7UMS4E6.cjs.map} +1 -1
- package/dist/{chunk-NVHAQOHH.cjs → chunk-PLMXN23Q.cjs} +10 -10
- package/dist/chunk-PLMXN23Q.cjs.map +1 -0
- package/dist/{chunk-KOCTIB6U.js → chunk-PS5INHGC.js} +3 -3
- package/dist/{chunk-KOCTIB6U.js.map → chunk-PS5INHGC.js.map} +1 -1
- package/dist/{chunk-Y2S6QMKU.js → chunk-PTZB2GKL.js} +3 -3
- package/dist/{chunk-Y2S6QMKU.js.map → chunk-PTZB2GKL.js.map} +1 -1
- package/dist/{chunk-NQME7MCK.js → chunk-QEBVYLI7.js} +188 -204
- package/dist/chunk-QEBVYLI7.js.map +1 -0
- package/dist/{chunk-EZKRAW2X.js → chunk-QUUBTNMH.js} +3 -3
- package/dist/{chunk-EZKRAW2X.js.map → chunk-QUUBTNMH.js.map} +1 -1
- package/dist/{chunk-CKD554XR.cjs → chunk-RUEEDOE3.cjs} +5 -5
- package/dist/{chunk-CKD554XR.cjs.map → chunk-RUEEDOE3.cjs.map} +1 -1
- package/dist/{chunk-RHYIFIT5.js → chunk-RZFSJD67.js} +3 -3
- package/dist/{chunk-RHYIFIT5.js.map → chunk-RZFSJD67.js.map} +1 -1
- package/dist/{chunk-DFCZPVG4.cjs → chunk-S3MKIDYG.cjs} +8 -8
- package/dist/{chunk-DFCZPVG4.cjs.map → chunk-S3MKIDYG.cjs.map} +1 -1
- package/dist/chunk-S5RVSXDV.cjs +45 -0
- package/dist/chunk-S5RVSXDV.cjs.map +1 -0
- package/dist/{chunk-4LVPQ44A.js → chunk-SAJSA4TS.js} +3 -3
- package/dist/{chunk-4LVPQ44A.js.map → chunk-SAJSA4TS.js.map} +1 -1
- package/dist/{chunk-XDFDVF2O.js → chunk-SH6B4MG5.js} +4 -4
- package/dist/{chunk-XDFDVF2O.js.map → chunk-SH6B4MG5.js.map} +1 -1
- package/dist/chunk-SVSHA7XV.js +487 -0
- package/dist/chunk-SVSHA7XV.js.map +1 -0
- package/dist/chunk-TQONQSJO.js +42 -0
- package/dist/chunk-TQONQSJO.js.map +1 -0
- package/dist/{chunk-V25Z5GR6.cjs → chunk-TU36DBH2.cjs} +9 -9
- package/dist/{chunk-V25Z5GR6.cjs.map → chunk-TU36DBH2.cjs.map} +1 -1
- package/dist/{chunk-6D5F7EDM.js → chunk-TWQHAJ7C.js} +17 -16
- package/dist/chunk-TWQHAJ7C.js.map +1 -0
- package/dist/{chunk-FQ3UCZUX.cjs → chunk-U3JU6BI5.cjs} +7 -7
- package/dist/{chunk-FQ3UCZUX.cjs.map → chunk-U3JU6BI5.cjs.map} +1 -1
- package/dist/{chunk-MZPF2QGM.cjs → chunk-U4HA2WHA.cjs} +13 -13
- package/dist/{chunk-MZPF2QGM.cjs.map → chunk-U4HA2WHA.cjs.map} +1 -1
- package/dist/{chunk-VCO2IZOG.js → chunk-UA7E7PDS.js} +3 -3
- package/dist/{chunk-VCO2IZOG.js.map → chunk-UA7E7PDS.js.map} +1 -1
- package/dist/{chunk-BLPCYP4D.cjs → chunk-UTCFBBOD.cjs} +29 -29
- package/dist/{chunk-BLPCYP4D.cjs.map → chunk-UTCFBBOD.cjs.map} +1 -1
- package/dist/{chunk-OOYEHBYJ.js → chunk-UUI7WXI5.js} +142 -16
- package/dist/chunk-UUI7WXI5.js.map +1 -0
- package/dist/{chunk-FJH7P5WG.js → chunk-UXBRRSJ6.js} +6 -6
- package/dist/{chunk-FJH7P5WG.js.map → chunk-UXBRRSJ6.js.map} +1 -1
- package/dist/{chunk-IWDQPSJN.cjs → chunk-V3S7QNFF.cjs} +208 -223
- package/dist/chunk-V3S7QNFF.cjs.map +1 -0
- package/dist/{chunk-SNEQXSC5.cjs → chunk-VA7QN4DX.cjs} +2 -2
- package/dist/{chunk-SNEQXSC5.cjs.map → chunk-VA7QN4DX.cjs.map} +1 -1
- package/dist/{chunk-I2W24RHW.js → chunk-VE6OUO7X.js} +3 -3
- package/dist/{chunk-I2W24RHW.js.map → chunk-VE6OUO7X.js.map} +1 -1
- package/dist/{chunk-STPK44AU.js → chunk-VNWJTCBQ.js} +3 -3
- package/dist/{chunk-STPK44AU.js.map → chunk-VNWJTCBQ.js.map} +1 -1
- package/dist/{chunk-ZNZZCB2M.cjs → chunk-VPIYTQCV.cjs} +9 -9
- package/dist/{chunk-ZNZZCB2M.cjs.map → chunk-VPIYTQCV.cjs.map} +1 -1
- package/dist/{chunk-DLNJLCNO.cjs → chunk-VTKXM7IE.cjs} +4 -4
- package/dist/{chunk-DLNJLCNO.cjs.map → chunk-VTKXM7IE.cjs.map} +1 -1
- package/dist/{chunk-EUUQVDXX.cjs → chunk-W4Q4UEXA.cjs} +14 -14
- package/dist/{chunk-EUUQVDXX.cjs.map → chunk-W4Q4UEXA.cjs.map} +1 -1
- package/dist/{chunk-ZVSW2KS6.js → chunk-WRYZ2752.js} +3 -3
- package/dist/{chunk-ZVSW2KS6.js.map → chunk-WRYZ2752.js.map} +1 -1
- package/dist/{chunk-U3ABLVYH.cjs → chunk-WUNWHOLA.cjs} +6 -6
- package/dist/{chunk-U3ABLVYH.cjs.map → chunk-WUNWHOLA.cjs.map} +1 -1
- package/dist/{chunk-RH43XBNV.cjs → chunk-WWJIW2IH.cjs} +4 -4
- package/dist/{chunk-RH43XBNV.cjs.map → chunk-WWJIW2IH.cjs.map} +1 -1
- package/dist/chunk-X4LBUPJO.cjs +511 -0
- package/dist/chunk-X4LBUPJO.cjs.map +1 -0
- package/dist/{chunk-4GXECTPS.cjs → chunk-XB54G7WS.cjs} +37 -3
- package/dist/chunk-XB54G7WS.cjs.map +1 -0
- package/dist/{chunk-MAMY5HTT.cjs → chunk-XCVBCY7L.cjs} +20 -20
- package/dist/{chunk-MAMY5HTT.cjs.map → chunk-XCVBCY7L.cjs.map} +1 -1
- package/dist/{chunk-IUFDGB5O.js → chunk-XMCIXHGH.js} +3 -3
- package/dist/{chunk-IUFDGB5O.js.map → chunk-XMCIXHGH.js.map} +1 -1
- package/dist/{chunk-KAKH2UZA.js → chunk-XO3WLK65.js} +3 -3
- package/dist/{chunk-KAKH2UZA.js.map → chunk-XO3WLK65.js.map} +1 -1
- package/dist/{chunk-DEZ7XSTG.cjs → chunk-XXVUHLQN.cjs} +7 -7
- package/dist/{chunk-DEZ7XSTG.cjs.map → chunk-XXVUHLQN.cjs.map} +1 -1
- package/dist/{chunk-3GGET5LK.cjs → chunk-YGA35Z2P.cjs} +7 -7
- package/dist/{chunk-3GGET5LK.cjs.map → chunk-YGA35Z2P.cjs.map} +1 -1
- package/dist/{chunk-GOKC4CCZ.cjs → chunk-YMHOF6WA.cjs} +8 -8
- package/dist/{chunk-GOKC4CCZ.cjs.map → chunk-YMHOF6WA.cjs.map} +1 -1
- package/dist/{chunk-OXYFTCRW.cjs → chunk-YP5T6NZD.cjs} +4 -4
- package/dist/{chunk-OXYFTCRW.cjs.map → chunk-YP5T6NZD.cjs.map} +1 -1
- package/dist/{chunk-EL2RSQTJ.cjs → chunk-YVL3XATO.cjs} +5 -5
- package/dist/{chunk-EL2RSQTJ.cjs.map → chunk-YVL3XATO.cjs.map} +1 -1
- package/dist/{chunk-LJ2ZWIX6.js → chunk-YVO5VAGX.js} +100 -3
- package/dist/chunk-YVO5VAGX.js.map +1 -0
- package/dist/{chunk-PVUDXJAI.js → chunk-YXCE2HSK.js} +4 -4
- package/dist/{chunk-PVUDXJAI.js.map → chunk-YXCE2HSK.js.map} +1 -1
- package/dist/{chunk-372IIHUA.cjs → chunk-YXHX2DAK.cjs} +53 -53
- package/dist/{chunk-372IIHUA.cjs.map → chunk-YXHX2DAK.cjs.map} +1 -1
- package/dist/{chunk-ST2RE5UB.cjs → chunk-Z5KFXHDP.cjs} +6 -6
- package/dist/{chunk-ST2RE5UB.cjs.map → chunk-Z5KFXHDP.cjs.map} +1 -1
- package/dist/{chunk-4Z6ZZKIY.js → chunk-ZIUADGAR.js} +3 -3
- package/dist/{chunk-4Z6ZZKIY.js.map → chunk-ZIUADGAR.js.map} +1 -1
- package/dist/{chunk-LOTMAKUG.cjs → chunk-ZZJ4ZVYR.cjs} +11 -11
- package/dist/{chunk-LOTMAKUG.cjs.map → chunk-ZZJ4ZVYR.cjs.map} +1 -1
- package/dist/components/Alert/index.cjs +6 -6
- package/dist/components/Alert/index.js +2 -2
- package/dist/components/AlertDialog/index.cjs +5 -5
- package/dist/components/AlertDialog/index.js +4 -4
- package/dist/components/AudioPlayer/index.cjs +7 -7
- package/dist/components/AudioPlayer/index.js +2 -2
- package/dist/components/AudioRecorder/index.cjs +7 -7
- package/dist/components/AudioRecorder/index.js +2 -2
- package/dist/components/Autocomplete/index.cjs +4 -4
- package/dist/components/Autocomplete/index.js +3 -3
- package/dist/components/Avatar/index.cjs +6 -6
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/index.cjs +4 -4
- package/dist/components/Badge/index.js +2 -2
- package/dist/components/Breadcrumb/index.cjs +4 -4
- package/dist/components/Breadcrumb/index.js +2 -2
- package/dist/components/Button/index.cjs +4 -4
- package/dist/components/Button/index.js +2 -2
- package/dist/components/Card/index.cjs +16 -16
- package/dist/components/Card/index.js +2 -2
- package/dist/components/Checkbox/index.cjs +5 -5
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/CollabStatus/index.cjs +21 -0
- package/dist/components/CollabStatus/index.cjs.map +1 -0
- package/dist/components/CollabStatus/index.d.cts +222 -0
- package/dist/components/CollabStatus/index.d.ts +222 -0
- package/dist/components/CollabStatus/index.js +4 -0
- package/dist/components/CollabStatus/index.js.map +1 -0
- package/dist/components/Collapsible/index.cjs +5 -5
- package/dist/components/Collapsible/index.js +2 -2
- package/dist/components/CountryCodeDropdown/index.cjs +5 -5
- package/dist/components/CountryCodeDropdown/index.js +2 -2
- package/dist/components/DateInput/index.cjs +4 -4
- package/dist/components/DateInput/index.js +3 -3
- package/dist/components/Dropdown/index.cjs +9 -9
- package/dist/components/Dropdown/index.js +3 -3
- package/dist/components/FloatingWindow/index.cjs +5 -5
- package/dist/components/FloatingWindow/index.js +3 -3
- package/dist/components/Input/index.cjs +4 -4
- package/dist/components/Input/index.js +2 -2
- package/dist/components/Label/index.cjs +4 -4
- package/dist/components/Label/index.js +2 -2
- package/dist/components/Markdown/index.cjs +17 -17
- package/dist/components/Markdown/index.js +8 -8
- package/dist/components/MediaEditor/index.cjs +15 -15
- package/dist/components/MediaEditor/index.d.cts +34 -1
- package/dist/components/MediaEditor/index.d.ts +34 -1
- package/dist/components/MediaEditor/index.js +10 -10
- package/dist/components/MediaPlayer/index.cjs +6 -6
- package/dist/components/MediaPlayer/index.js +3 -3
- package/dist/components/Modal/index.cjs +10 -10
- package/dist/components/Modal/index.js +2 -2
- package/dist/components/Pagination/index.cjs +5 -5
- package/dist/components/Pagination/index.js +2 -2
- package/dist/components/PhoneInput/index.cjs +5 -5
- package/dist/components/PhoneInput/index.js +3 -3
- package/dist/components/Progress/index.cjs +7 -7
- package/dist/components/Progress/index.js +2 -2
- package/dist/components/QuickAction/index.cjs +7 -7
- package/dist/components/QuickAction/index.js +2 -2
- package/dist/components/Radio/index.cjs +5 -5
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/RecordButton/index.cjs +5 -5
- package/dist/components/RecordButton/index.js +2 -2
- package/dist/components/RichTextEditor/index.cjs +9 -9
- package/dist/components/RichTextEditor/index.js +6 -6
- package/dist/components/SchedulePicker/index.cjs +11 -11
- package/dist/components/SchedulePicker/index.js +2 -2
- package/dist/components/ScrollArea/index.cjs +4 -4
- package/dist/components/ScrollArea/index.js +2 -2
- package/dist/components/Select/index.cjs +4 -4
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Separator/index.cjs +4 -4
- package/dist/components/Separator/index.js +2 -2
- package/dist/components/Sheet/index.cjs +11 -11
- package/dist/components/Sheet/index.d.cts +1 -1
- package/dist/components/Sheet/index.d.ts +1 -1
- package/dist/components/Sheet/index.js +2 -2
- package/dist/components/Skeleton/index.cjs +7 -7
- package/dist/components/Skeleton/index.js +2 -2
- package/dist/components/Slider/index.cjs +6 -6
- package/dist/components/Slider/index.js +2 -2
- package/dist/components/Spinner/index.cjs +6 -6
- package/dist/components/Spinner/index.js +2 -2
- package/dist/components/SuperChat/index.cjs +45 -45
- package/dist/components/SuperChat/index.js +8 -8
- package/dist/components/SuperChat/plugins/index.cjs +9 -9
- package/dist/components/SuperChat/plugins/index.js +3 -3
- package/dist/components/Switch/index.cjs +5 -5
- package/dist/components/Switch/index.js +2 -2
- package/dist/components/Table/index.cjs +10 -10
- package/dist/components/Table/index.js +2 -2
- package/dist/components/Tabs/index.cjs +8 -8
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Text/index.cjs +5 -5
- package/dist/components/Text/index.d.cts +1 -1
- package/dist/components/Text/index.d.ts +1 -1
- package/dist/components/Text/index.js +2 -2
- package/dist/components/Textarea/index.cjs +4 -4
- package/dist/components/Textarea/index.js +2 -2
- package/dist/components/ThemeProvider/index.cjs +9 -9
- package/dist/components/ThemeProvider/index.js +3 -3
- package/dist/components/Toggle/index.cjs +4 -4
- package/dist/components/Toggle/index.js +2 -2
- package/dist/components/Tooltip/index.cjs +3 -3
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/datavis.cjs +7 -7
- package/dist/datavis.js +3 -3
- package/dist/esheet.cjs +16 -16
- package/dist/esheet.js +13 -13
- package/dist/hooks/index.cjs +32 -20
- package/dist/hooks/index.d.cts +30 -2
- package/dist/hooks/index.d.ts +30 -2
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +1910 -1726
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +147 -15
- package/dist/index.d.ts +147 -15
- package/dist/index.js +244 -93
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/{useTranscriptEdits-Hy0Vm-H8.d.cts → useTranscriptEdits-CGzlemHT.d.cts} +16 -3
- package/dist/{useTranscriptEdits-C2BbMU37.d.ts → useTranscriptEdits-D32bLs0l.d.ts} +16 -3
- package/dist/utils/index.cjs +15 -11
- package/dist/utils/index.d.cts +6 -1
- package/dist/utils/index.d.ts +6 -1
- package/dist/utils/index.js +2 -2
- package/package.json +4 -1
- package/dist/CsvBlock-2A5VEDD3.cjs +0 -15
- package/dist/CsvBlock-D6PWAJ5X.js +0 -6
- package/dist/HtmlPreviewBlock-PEHTJ6C3.js +0 -6
- package/dist/HtmlPreviewBlock-SYXCV5RH.cjs +0 -15
- package/dist/MermaidBlock-7NK3AVK2.js +0 -6
- package/dist/MermaidBlock-AFXNP5NK.cjs +0 -15
- package/dist/SurveyBlock-6KRNKFH5.cjs +0 -15
- package/dist/SurveyBlock-NNDGXGG4.js +0 -6
- package/dist/chunk-43GBCUSQ.js.map +0 -1
- package/dist/chunk-4GXECTPS.cjs.map +0 -1
- package/dist/chunk-6D5F7EDM.js.map +0 -1
- package/dist/chunk-7VF6WO7H.cjs.map +0 -1
- package/dist/chunk-F3SOEIN2.js +0 -11
- package/dist/chunk-F3SOEIN2.js.map +0 -1
- package/dist/chunk-FCBQP2U4.cjs.map +0 -1
- package/dist/chunk-IWDQPSJN.cjs.map +0 -1
- package/dist/chunk-JLBT76WH.js.map +0 -1
- package/dist/chunk-LJ2ZWIX6.js.map +0 -1
- package/dist/chunk-MCCO4A23.js.map +0 -1
- package/dist/chunk-NQME7MCK.js.map +0 -1
- package/dist/chunk-NVHAQOHH.cjs.map +0 -1
- package/dist/chunk-OOYEHBYJ.js.map +0 -1
- package/dist/chunk-OR5DRJCW.cjs +0 -13
- package/dist/chunk-OR5DRJCW.cjs.map +0 -1
- package/dist/chunk-PFWHWIXS.cjs.map +0 -1
- package/dist/chunk-PJAQDAMZ.cjs.map +0 -1
- package/dist/chunk-PWHK7SWN.cjs.map +0 -1
- package/dist/chunk-ZGSC2CB2.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-WRYZ2752.js';
|
|
2
2
|
import { useMediaTransport } from './chunk-SQHMGT4W.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -139,5 +139,5 @@ var MediaPlayer = React.forwardRef(
|
|
|
139
139
|
MediaPlayer.displayName = "MediaPlayer";
|
|
140
140
|
|
|
141
141
|
export { MediaPlayer, inferMediaKind, mediaPlayerVariants };
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
142
|
+
//# sourceMappingURL=chunk-PS5INHGC.js.map
|
|
143
|
+
//# sourceMappingURL=chunk-PS5INHGC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MediaPlayer/MediaPlayer.tsx"],"names":[],"mappings":";;;;;;AA2EA,IAAM,mBAAA,GAAsB,GAAA;AAAA,EAC1B,gDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,EAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAMA,IAAM,gBAAA,GAAmB,gCAAA;AAGlB,SAAS,eAAe,GAAA,EAAwB;AAIrD,EAAA,MAAM,OAAO,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,CAAC,EAAE,CAAC,CAAA;AACnC,EAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA,GAAI,OAAA,GAAU,OAAA;AACjD;AAeO,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA;AAAA,EAC/B,CACE;AAAA,IACE,GAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,OAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA,EAAc,SAAA;AAAA,IACd;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,eAAwB,IAAI,CAAA;AAK5D,IAAM,gBAAU,MAAM;AACpB,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AACR,IAAA,MAAM,YAAA,GAAe,IAAA,IAAQ,cAAA,CAAe,GAAG,CAAA;AAE/C,IAAA,MAAM,YAAY,iBAAA,CAAkB;AAAA,MAClC,YAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,QAAA,QAAA,CAAS,sDAAsD,CAAA;AAC/D,QAAA,OAAA,GAAU,GAAG,CAAA;AAAA,MACf,CAAA;AAAA,MACA,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY,UAAU,GAAG,CAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,EAAE,eAAA,EAAiB,YAAA,EAAa,GAAI,SAAA;AAE1C,IAAA,MAAM,UAAA,GAAmB,KAAA,CAAA,WAAA;AAAA,MACvB,CAAC,EAAA,KAAmD;AAClD,QAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAC,gBAAsD,OAAA,GAAU,EAAA;AAAA,QACnE;AAAA,MACF,CAAA;AAAA,MACA,CAAC,iBAAiB,eAAe;AAAA,KACnC;AAEA,IAAM,KAAA,CAAA,mBAAA;AAAA,MACJ,GAAA;AAAA,MACA,OAAuB;AAAA,QACrB,UAAU,SAAA,CAAU,QAAA;AAAA,QACpB,MAAM,SAAA,CAAU,IAAA;AAAA,QAChB,OAAO,SAAA,CAAU,KAAA;AAAA,QACjB,kBAAkB,SAAA,CAAU,gBAAA;AAAA,QAC5B,eAAe,SAAA,CAAU,aAAA;AAAA,QACzB,UAAU,SAAA,CAAU,QAAA;AAAA,QACpB,iBAAiB,SAAA,CAAU,eAAA;AAAA,QAC3B,IAAI,YAAA,GAAe;AACjB,UAAA,OAAO,YAAA;AAAA,QACT;AAAA,OACF,CAAA;AAAA,MACA,CAAC,WAAW,YAAY;AAAA,KAC1B;AAEA,IAAA,MAAM,WAAA,GAAoB,kBAAY,MAAM;AAC1C,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,YAAA,EAAc,IAAA,EAAK;AAAA,IACrB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,IAAA,MAAM,gBAAA,GAAmB;AAAA,MACvB,GAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA,EAAc;AAAA,KAChB;AAEA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAW,mBAAA,CAAoB,EAAE,OAAA,EAAS,SAAA,EAAW,CAAA,EACxD,QAAA,kBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,SAAA,EAAU,oIAAA;AAAA,UAIV,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4DAAA,EACV,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,4BAGA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAU,eAAA;AAAA,gBACV,OAAA,EAAS,WAAA;AAAA,gBACV,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,OACF,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAW,mBAAA,CAAoB,EAAE,OAAA,EAAS,SAAA,EAAW,CAAA,EACvD,QAAA,EAAA,YAAA,KAAiB,OAAA;AAAA;AAAA;AAAA;AAAA,sBAIhB,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,UAAA;AAAA,UACL,WAAA,EAAW,IAAA;AAAA,UACX,SAAA,EAAU,oDAAA;AAAA,UACT,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,sBAGA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,UAAA;AAAA,UACL,SAAA,EAAU,uBAAA;AAAA,UACT,GAAG;AAAA;AAAA;AACN,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-KOCTIB6U.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Button } from '../Button';\nimport { useMediaTransport } from '../../hooks/useMediaTransport';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\nexport type MediaPlayerState =\n | 'idle'\n | 'loading'\n | 'playing'\n | 'paused'\n | 'error';\n\nexport type MediaKind = 'video' | 'audio';\n\n/** Ref handle for controlling {@link MediaPlayer} programmatically. */\nexport interface MediaPlayerRef {\n /** Seek to a specific time in milliseconds. */\n seekToMs: (timeMs: number) => void;\n /** Start playback. */\n play: () => void;\n /** Pause playback. */\n pause: () => void;\n /** Get current playback time in milliseconds. */\n getCurrentTimeMs: () => number;\n /** Get total duration in milliseconds. */\n getDurationMs: () => number;\n /** Whether playback is currently paused. */\n isPaused: () => boolean;\n /** Set playback speed multiplier. */\n setPlaybackRate: (rate: number) => void;\n /**\n * The underlying media element.\n * Escape hatch for host integrations (e.g. thumbnail capture); prefer the\n * typed methods above for playback control.\n */\n mediaElement: HTMLVideoElement | HTMLAudioElement | null;\n}\n\nexport interface MediaPlayerProps extends VariantProps<\n typeof mediaPlayerVariants\n> {\n /** Media source URL. */\n src: string;\n /** Force the media kind; when omitted it is inferred from the src extension. */\n kind?: MediaKind;\n /** Whether to show native controls (default `true`). */\n controls?: boolean;\n /** Callback when playback state changes. */\n onStateChange?: (state: MediaPlayerState) => void;\n /** Callback when playback ends. */\n onEnded?: () => void;\n /** Callback when an error occurs. */\n onError?: (error: Error) => void;\n /** Callback on time updates (milliseconds). */\n onTimeUpdate?: (currentTimeMs: number, durationMs: number) => void;\n /** Additional class name. */\n className?: string;\n /** Accessible label for the media element. */\n 'aria-label'?: string;\n /**\n * Transitional: exposes the raw media element to legacy consumers.\n * Prefer {@link MediaPlayerRef} for playback control.\n */\n mediaElementRef?: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>;\n}\n\n// ============================================================================\n// Variants\n// ============================================================================\n\nconst mediaPlayerVariants = cva(\n 'flex h-full w-full items-center justify-center',\n {\n variants: {\n variant: {\n plain: '',\n card: 'rounded-xl border border-border bg-card text-card-foreground p-2',\n },\n },\n defaultVariants: {\n variant: 'plain',\n },\n }\n);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst VIDEO_EXTENSIONS = /\\.(mp4|mov|avi|webm|mkv|m4v)$/i;\n\n/** Infer media kind from a URL's file extension; defaults to audio. */\nexport function inferMediaKind(src: string): MediaKind {\n // Strip any query string / fragment before matching. Testing the extension\n // against the full URL required a trailing `.*`, which backtracks\n // polynomially on crafted inputs (ReDoS); splitting first is linear.\n const path = src.split(/[?#]/, 1)[0];\n return VIDEO_EXTENSIONS.test(path) ? 'video' : 'audio';\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Media playback surface for audio and video with a shared imperative handle.\n *\n * Renders a native `<video>` or `<audio>` element (kind inferred from the src\n * extension unless forced) with themed error/retry handling. Playback state and\n * controls come from the shared {@link useMediaTransport} hook and are exposed\n * through {@link MediaPlayerRef} (all times in milliseconds) — consumers should\n * not reach into the DOM element directly.\n */\nexport const MediaPlayer = React.forwardRef<MediaPlayerRef, MediaPlayerProps>(\n (\n {\n src,\n kind,\n controls = true,\n variant,\n onStateChange,\n onEnded,\n onError,\n onTimeUpdate,\n className,\n 'aria-label': ariaLabel,\n mediaElementRef,\n },\n ref\n ) => {\n const [error, setError] = React.useState<string | null>(null);\n\n // A failed load must not outlive its src: clearing on change lets a host\n // swap in a corrected URL without being trapped on the error surface\n // (which unmounts the media element, so the new src would never load).\n React.useEffect(() => {\n setError(null);\n }, [src]);\n const resolvedKind = kind ?? inferMediaKind(src);\n\n const transport = useMediaTransport({\n onTimeUpdate,\n onStateChange,\n onEnded,\n onError: (err) => {\n setError('Unable to load media. The server may be unavailable.');\n onError?.(err);\n },\n endedState: 'paused',\n errorLabel: `media: ${src}`,\n });\n\n const { setMediaElement, mediaElement } = transport;\n\n const setElement = React.useCallback(\n (el: HTMLVideoElement | HTMLAudioElement | null) => {\n setMediaElement(el);\n if (mediaElementRef) {\n (mediaElementRef as React.MutableRefObject<typeof el>).current = el;\n }\n },\n [setMediaElement, mediaElementRef]\n );\n\n React.useImperativeHandle(\n ref,\n (): MediaPlayerRef => ({\n seekToMs: transport.seekToMs,\n play: transport.play,\n pause: transport.pause,\n getCurrentTimeMs: transport.getCurrentTimeMs,\n getDurationMs: transport.getDurationMs,\n isPaused: transport.isPaused,\n setPlaybackRate: transport.setPlaybackRate,\n get mediaElement() {\n return mediaElement;\n },\n }),\n [transport, mediaElement]\n );\n\n const handleRetry = React.useCallback(() => {\n setError(null);\n mediaElement?.load();\n }, [mediaElement]);\n\n const sharedMediaProps = {\n src,\n controls,\n 'aria-label': ariaLabel,\n };\n\n if (error) {\n return (\n <div className={mediaPlayerVariants({ variant, className })}>\n <div\n role=\"alert\"\n className=\"border-destructive/30 bg-destructive/10 flex min-h-36 flex-col items-center justify-center gap-3 rounded-lg border p-8 text-center\"\n >\n {/* destructive-700/300 instead of the base token: #dc2626 on the\n destructive/10 tint is 4.14:1 — below WCAG AA (axe: color-contrast). */}\n <p className=\"text-destructive-700 dark:text-destructive-300 m-0 text-sm\">\n {error}\n </p>\n {/* bg-background: the outline button is transparent, and its text on\n the destructive/10 tint sits exactly at the 4.5:1 AA boundary. */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"bg-background\"\n onClick={handleRetry}\n >\n Retry\n </Button>\n </div>\n </div>\n );\n }\n\n return (\n <div className={mediaPlayerVariants({ variant, className })}>\n {resolvedKind === 'video' ? (\n // Generic media surface: caption tracks belong to the consumer's media\n // resource and are supplied via children, not this transport component.\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n ref={setElement as React.Ref<HTMLVideoElement>}\n playsInline\n className=\"h-auto max-h-full w-auto max-w-full object-contain\"\n {...sharedMediaProps}\n />\n ) : (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <audio\n ref={setElement as React.Ref<HTMLAudioElement>}\n className=\"my-4 w-[90%] max-w-lg\"\n {...sharedMediaProps}\n />\n )}\n </div>\n );\n }\n);\n\nMediaPlayer.displayName = 'MediaPlayer';\n\nexport { mediaPlayerVariants };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/MediaPlayer/MediaPlayer.tsx"],"names":[],"mappings":"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","file":"chunk-PS5INHGC.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Button } from '../Button';\nimport { useMediaTransport } from '../../hooks/useMediaTransport';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\nexport type MediaPlayerState =\n | 'idle'\n | 'loading'\n | 'playing'\n | 'paused'\n | 'error';\n\nexport type MediaKind = 'video' | 'audio';\n\n/** Ref handle for controlling {@link MediaPlayer} programmatically. */\nexport interface MediaPlayerRef {\n /** Seek to a specific time in milliseconds. */\n seekToMs: (timeMs: number) => void;\n /** Start playback. */\n play: () => void;\n /** Pause playback. */\n pause: () => void;\n /** Get current playback time in milliseconds. */\n getCurrentTimeMs: () => number;\n /** Get total duration in milliseconds. */\n getDurationMs: () => number;\n /** Whether playback is currently paused. */\n isPaused: () => boolean;\n /** Set playback speed multiplier. */\n setPlaybackRate: (rate: number) => void;\n /**\n * The underlying media element.\n * Escape hatch for host integrations (e.g. thumbnail capture); prefer the\n * typed methods above for playback control.\n */\n mediaElement: HTMLVideoElement | HTMLAudioElement | null;\n}\n\nexport interface MediaPlayerProps extends VariantProps<\n typeof mediaPlayerVariants\n> {\n /** Media source URL. */\n src: string;\n /** Force the media kind; when omitted it is inferred from the src extension. */\n kind?: MediaKind;\n /** Whether to show native controls (default `true`). */\n controls?: boolean;\n /** Callback when playback state changes. */\n onStateChange?: (state: MediaPlayerState) => void;\n /** Callback when playback ends. */\n onEnded?: () => void;\n /** Callback when an error occurs. */\n onError?: (error: Error) => void;\n /** Callback on time updates (milliseconds). */\n onTimeUpdate?: (currentTimeMs: number, durationMs: number) => void;\n /** Additional class name. */\n className?: string;\n /** Accessible label for the media element. */\n 'aria-label'?: string;\n /**\n * Transitional: exposes the raw media element to legacy consumers.\n * Prefer {@link MediaPlayerRef} for playback control.\n */\n mediaElementRef?: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>;\n}\n\n// ============================================================================\n// Variants\n// ============================================================================\n\nconst mediaPlayerVariants = cva(\n 'flex h-full w-full items-center justify-center',\n {\n variants: {\n variant: {\n plain: '',\n card: 'rounded-xl border border-border bg-card text-card-foreground p-2',\n },\n },\n defaultVariants: {\n variant: 'plain',\n },\n }\n);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst VIDEO_EXTENSIONS = /\\.(mp4|mov|avi|webm|mkv|m4v)$/i;\n\n/** Infer media kind from a URL's file extension; defaults to audio. */\nexport function inferMediaKind(src: string): MediaKind {\n // Strip any query string / fragment before matching. Testing the extension\n // against the full URL required a trailing `.*`, which backtracks\n // polynomially on crafted inputs (ReDoS); splitting first is linear.\n const path = src.split(/[?#]/, 1)[0];\n return VIDEO_EXTENSIONS.test(path) ? 'video' : 'audio';\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Media playback surface for audio and video with a shared imperative handle.\n *\n * Renders a native `<video>` or `<audio>` element (kind inferred from the src\n * extension unless forced) with themed error/retry handling. Playback state and\n * controls come from the shared {@link useMediaTransport} hook and are exposed\n * through {@link MediaPlayerRef} (all times in milliseconds) — consumers should\n * not reach into the DOM element directly.\n */\nexport const MediaPlayer = React.forwardRef<MediaPlayerRef, MediaPlayerProps>(\n (\n {\n src,\n kind,\n controls = true,\n variant,\n onStateChange,\n onEnded,\n onError,\n onTimeUpdate,\n className,\n 'aria-label': ariaLabel,\n mediaElementRef,\n },\n ref\n ) => {\n const [error, setError] = React.useState<string | null>(null);\n\n // A failed load must not outlive its src: clearing on change lets a host\n // swap in a corrected URL without being trapped on the error surface\n // (which unmounts the media element, so the new src would never load).\n React.useEffect(() => {\n setError(null);\n }, [src]);\n const resolvedKind = kind ?? inferMediaKind(src);\n\n const transport = useMediaTransport({\n onTimeUpdate,\n onStateChange,\n onEnded,\n onError: (err) => {\n setError('Unable to load media. The server may be unavailable.');\n onError?.(err);\n },\n endedState: 'paused',\n errorLabel: `media: ${src}`,\n });\n\n const { setMediaElement, mediaElement } = transport;\n\n const setElement = React.useCallback(\n (el: HTMLVideoElement | HTMLAudioElement | null) => {\n setMediaElement(el);\n if (mediaElementRef) {\n (mediaElementRef as React.MutableRefObject<typeof el>).current = el;\n }\n },\n [setMediaElement, mediaElementRef]\n );\n\n React.useImperativeHandle(\n ref,\n (): MediaPlayerRef => ({\n seekToMs: transport.seekToMs,\n play: transport.play,\n pause: transport.pause,\n getCurrentTimeMs: transport.getCurrentTimeMs,\n getDurationMs: transport.getDurationMs,\n isPaused: transport.isPaused,\n setPlaybackRate: transport.setPlaybackRate,\n get mediaElement() {\n return mediaElement;\n },\n }),\n [transport, mediaElement]\n );\n\n const handleRetry = React.useCallback(() => {\n setError(null);\n mediaElement?.load();\n }, [mediaElement]);\n\n const sharedMediaProps = {\n src,\n controls,\n 'aria-label': ariaLabel,\n };\n\n if (error) {\n return (\n <div className={mediaPlayerVariants({ variant, className })}>\n <div\n role=\"alert\"\n className=\"border-destructive/30 bg-destructive/10 flex min-h-36 flex-col items-center justify-center gap-3 rounded-lg border p-8 text-center\"\n >\n {/* destructive-700/300 instead of the base token: #dc2626 on the\n destructive/10 tint is 4.14:1 — below WCAG AA (axe: color-contrast). */}\n <p className=\"text-destructive-700 dark:text-destructive-300 m-0 text-sm\">\n {error}\n </p>\n {/* bg-background: the outline button is transparent, and its text on\n the destructive/10 tint sits exactly at the 4.5:1 AA boundary. */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"bg-background\"\n onClick={handleRetry}\n >\n Retry\n </Button>\n </div>\n </div>\n );\n }\n\n return (\n <div className={mediaPlayerVariants({ variant, className })}>\n {resolvedKind === 'video' ? (\n // Generic media surface: caption tracks belong to the consumer's media\n // resource and are supplied via children, not this transport component.\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n ref={setElement as React.Ref<HTMLVideoElement>}\n playsInline\n className=\"h-auto max-h-full w-auto max-w-full object-contain\"\n {...sharedMediaProps}\n />\n ) : (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <audio\n ref={setElement as React.Ref<HTMLAudioElement>}\n className=\"my-4 w-[90%] max-w-lg\"\n {...sharedMediaProps}\n />\n )}\n </div>\n );\n }\n);\n\nMediaPlayer.displayName = 'MediaPlayer';\n\nexport { mediaPlayerVariants };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-TQONQSJO.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -74,5 +74,5 @@ var Toggle = React.forwardRef(
|
|
|
74
74
|
Toggle.displayName = "Toggle";
|
|
75
75
|
|
|
76
76
|
export { Toggle, toggleVariants };
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-PTZB2GKL.js.map
|
|
78
|
+
//# sourceMappingURL=chunk-PTZB2GKL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Toggle/Toggle.tsx"],"names":[],"mappings":";;;;;AAIA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB;AAAA,IACE,+CAAA;AAAA,IACA,gCAAA;AAAA,IACA,mBAAA;AAAA,IACA,4CAAA;AAAA,IACA,qGAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAuBA,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA;AAAA,EACnB,CACE;AAAA,IACE,SAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,EAAS,iBAAA;AAAA,IACT,cAAA,GAAiB,KAAA;AAAA,IACjB,eAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAC1C,eAAS,cAAc,CAAA;AAE/B,IAAA,MAAM,eAAe,iBAAA,KAAsB,MAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,eAAe,iBAAA,GAAoB,mBAAA;AAErD,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,OAAO,CAAC,SAAA;AACd,MAAA,IAAI,CAAC,YAAA,EAAc,sBAAA,CAAuB,IAAI,CAAA;AAC9C,MAAA,eAAA,GAAkB,IAAI,CAAA;AACtB,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,WAAA,EAAU,QAAA;AAAA,QACV,cAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAY,YAAY,IAAA,GAAO,KAAA;AAAA,QAC/B,QAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACzD,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Toggle/Toggle.tsx"],"names":[],"mappings":";;;;;AAIA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB;AAAA,IACE,+CAAA;AAAA,IACA,gCAAA;AAAA,IACA,mBAAA;AAAA,IACA,4CAAA;AAAA,IACA,qGAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAuBA,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA;AAAA,EACnB,CACE;AAAA,IACE,SAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,EAAS,iBAAA;AAAA,IACT,cAAA,GAAiB,KAAA;AAAA,IACjB,eAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAC1C,eAAS,cAAc,CAAA;AAE/B,IAAA,MAAM,eAAe,iBAAA,KAAsB,MAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,eAAe,iBAAA,GAAoB,mBAAA;AAErD,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,OAAO,CAAC,SAAA;AACd,MAAA,IAAI,CAAC,YAAA,EAAc,sBAAA,CAAuB,IAAI,CAAA;AAC9C,MAAA,eAAA,GAAkB,IAAI,CAAA;AACtB,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,WAAA,EAAU,QAAA;AAAA,QACV,cAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAY,YAAY,IAAA,GAAO,KAAA;AAAA,QAC/B,QAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACzD,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-PTZB2GKL.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst toggleVariants = cva(\n [\n 'inline-flex items-center justify-center gap-2',\n 'rounded-md text-sm font-medium',\n 'transition-colors',\n 'hover:bg-muted hover:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=on]:bg-primary-800 data-[state=on]:text-primary-foreground',\n ],\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline:\n 'border border-input bg-transparent data-[state=on]:border-transparent',\n },\n size: {\n sm: 'h-8 min-w-8 px-2',\n md: 'h-9 min-w-9 px-2.5',\n lg: 'h-10 min-w-10 px-3',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\nexport interface ToggleProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>,\n VariantProps<typeof toggleVariants> {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Default pressed state (uncontrolled) */\n defaultPressed?: boolean;\n /** Callback fired when the pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n}\n\n/**\n * A two-state toggle button.\n *\n * @example\n * ```tsx\n * <Toggle aria-label=\"Bold\"><BoldIcon /></Toggle>\n * <Toggle pressed={italic} onPressedChange={setItalic}>Italic</Toggle>\n * ```\n */\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n className,\n variant,\n size,\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n disabled,\n onClick,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledPressed, setUncontrolledPressed] =\n React.useState(defaultPressed);\n\n const isControlled = controlledPressed !== undefined;\n const isPressed = isControlled ? controlledPressed : uncontrolledPressed;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n const next = !isPressed;\n if (!isControlled) setUncontrolledPressed(next);\n onPressedChange?.(next);\n onClick?.(e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"toggle\"\n aria-pressed={isPressed}\n data-state={isPressed ? 'on' : 'off'}\n disabled={disabled}\n onClick={handleClick}\n className={cn(toggleVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nToggle.displayName = 'Toggle';\n\nexport { Toggle, toggleVariants };\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AudioPlayer } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { AudioPlayer } from './chunk-XO3WLK65.js';
|
|
2
|
+
import { cn } from './chunk-TQONQSJO.js';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
import * as
|
|
4
|
+
import * as React2 from 'react';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
6
|
|
|
7
7
|
var sizeClasses = {
|
|
@@ -204,6 +204,68 @@ function SpinnerIcon({ className }) {
|
|
|
204
204
|
}
|
|
205
205
|
);
|
|
206
206
|
}
|
|
207
|
+
function CollapsiblePill({
|
|
208
|
+
label,
|
|
209
|
+
leadingIcon,
|
|
210
|
+
density = "standard",
|
|
211
|
+
defaultOpen = false,
|
|
212
|
+
pillClassName,
|
|
213
|
+
className,
|
|
214
|
+
title,
|
|
215
|
+
children
|
|
216
|
+
}) {
|
|
217
|
+
const hasContent = Boolean(children);
|
|
218
|
+
const [isOpen, setIsOpen] = React2.useState(defaultOpen);
|
|
219
|
+
const contentId = React2.useId();
|
|
220
|
+
React2.useEffect(() => {
|
|
221
|
+
setIsOpen(defaultOpen);
|
|
222
|
+
}, [defaultOpen]);
|
|
223
|
+
const toggle = () => {
|
|
224
|
+
setIsOpen((open) => !open);
|
|
225
|
+
};
|
|
226
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "collapsible-pill", className, children: [
|
|
227
|
+
/* @__PURE__ */ jsxs(
|
|
228
|
+
"button",
|
|
229
|
+
{
|
|
230
|
+
type: "button",
|
|
231
|
+
onClick: hasContent ? toggle : void 0,
|
|
232
|
+
"aria-expanded": hasContent ? isOpen : void 0,
|
|
233
|
+
"aria-controls": hasContent ? contentId : void 0,
|
|
234
|
+
title,
|
|
235
|
+
disabled: !hasContent,
|
|
236
|
+
className: cn(
|
|
237
|
+
"focus-visible:ring-ring inline-flex items-center gap-1.5 border font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1",
|
|
238
|
+
density === "condensed" ? "rounded-[8px] px-2 py-0.5 text-[10px]" : "rounded-[10px] px-[11px] py-1 text-[11px]",
|
|
239
|
+
pillClassName
|
|
240
|
+
),
|
|
241
|
+
children: [
|
|
242
|
+
leadingIcon,
|
|
243
|
+
/* @__PURE__ */ jsx("span", { children: label }),
|
|
244
|
+
hasContent && /* @__PURE__ */ jsx(
|
|
245
|
+
ChevronIcon,
|
|
246
|
+
{
|
|
247
|
+
direction: isOpen ? "down" : "right",
|
|
248
|
+
className: density === "condensed" ? "h-2.5 w-2.5 opacity-60" : "h-3 w-3 opacity-60"
|
|
249
|
+
}
|
|
250
|
+
)
|
|
251
|
+
]
|
|
252
|
+
}
|
|
253
|
+
),
|
|
254
|
+
hasContent && /* @__PURE__ */ jsx(
|
|
255
|
+
"div",
|
|
256
|
+
{
|
|
257
|
+
id: contentId,
|
|
258
|
+
"aria-hidden": !isOpen,
|
|
259
|
+
inert: !isOpen || void 0,
|
|
260
|
+
className: cn(
|
|
261
|
+
"overflow-hidden transition-[max-height,opacity] duration-300 ease-in-out",
|
|
262
|
+
isOpen ? "max-h-[500px] overflow-y-auto opacity-100" : "max-h-0 opacity-0"
|
|
263
|
+
),
|
|
264
|
+
children: /* @__PURE__ */ jsx("div", { className: "mt-1.5", children })
|
|
265
|
+
}
|
|
266
|
+
)
|
|
267
|
+
] });
|
|
268
|
+
}
|
|
207
269
|
var statusIconVariants = cva(
|
|
208
270
|
"flex h-5 w-5 items-center justify-center rounded-full",
|
|
209
271
|
{
|
|
@@ -671,10 +733,8 @@ function ResourceLink({ link, onClick, className }) {
|
|
|
671
733
|
function ToolResultDisplay({
|
|
672
734
|
result,
|
|
673
735
|
onLinkClick,
|
|
674
|
-
showRawData = false,
|
|
675
736
|
className
|
|
676
737
|
}) {
|
|
677
|
-
const [showJson, setShowJson] = React.useState(false);
|
|
678
738
|
if (result.type === "error") {
|
|
679
739
|
return /* @__PURE__ */ jsx(
|
|
680
740
|
"div",
|
|
@@ -687,7 +747,6 @@ function ToolResultDisplay({
|
|
|
687
747
|
}
|
|
688
748
|
);
|
|
689
749
|
}
|
|
690
|
-
const hasRawData = result.type === "json" && result.data !== void 0 && result.data !== null;
|
|
691
750
|
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-2", className), children: [
|
|
692
751
|
result.summary && /* @__PURE__ */ jsx("p", { className: "text-sm text-neutral-700 dark:text-neutral-300", children: result.summary }),
|
|
693
752
|
result.link && /* @__PURE__ */ jsx(ResourceLink, { link: result.link, onClick: onLinkClick }),
|
|
@@ -702,67 +761,9 @@ function ToolResultDisplay({
|
|
|
702
761
|
onClick: onLinkClick
|
|
703
762
|
},
|
|
704
763
|
resource.id
|
|
705
|
-
)) })
|
|
706
|
-
hasRawData && showRawData && /* @__PURE__ */ jsxs("div", { className: "mt-2", children: [
|
|
707
|
-
/* @__PURE__ */ jsxs(
|
|
708
|
-
"button",
|
|
709
|
-
{
|
|
710
|
-
onClick: () => setShowJson(!showJson),
|
|
711
|
-
className: "flex items-center gap-1 text-xs text-neutral-600 hover:text-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300",
|
|
712
|
-
children: [
|
|
713
|
-
/* @__PURE__ */ jsx(
|
|
714
|
-
"svg",
|
|
715
|
-
{
|
|
716
|
-
"aria-hidden": "true",
|
|
717
|
-
className: cn(
|
|
718
|
-
"h-3 w-3 transition-transform",
|
|
719
|
-
showJson && "rotate-90"
|
|
720
|
-
),
|
|
721
|
-
fill: "none",
|
|
722
|
-
viewBox: "0 0 24 24",
|
|
723
|
-
stroke: "currentColor",
|
|
724
|
-
strokeWidth: "2",
|
|
725
|
-
children: /* @__PURE__ */ jsx(
|
|
726
|
-
"path",
|
|
727
|
-
{
|
|
728
|
-
strokeLinecap: "round",
|
|
729
|
-
strokeLinejoin: "round",
|
|
730
|
-
d: "M9 5l7 7-7 7"
|
|
731
|
-
}
|
|
732
|
-
)
|
|
733
|
-
}
|
|
734
|
-
),
|
|
735
|
-
showJson ? "Hide" : "Show",
|
|
736
|
-
" raw data"
|
|
737
|
-
]
|
|
738
|
-
}
|
|
739
|
-
),
|
|
740
|
-
showJson && /* @__PURE__ */ jsx("pre", { className: "mt-2 max-h-40 overflow-auto rounded-md bg-neutral-100 p-2 text-xs dark:bg-neutral-800", children: JSON.stringify(result.data, null, 2) })
|
|
741
|
-
] })
|
|
764
|
+
)) })
|
|
742
765
|
] });
|
|
743
766
|
}
|
|
744
|
-
var toolCallVariants = cva(
|
|
745
|
-
["rounded-lg border", "overflow-hidden", "transition-all duration-200"],
|
|
746
|
-
{
|
|
747
|
-
variants: {
|
|
748
|
-
status: {
|
|
749
|
-
pending: "border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-neutral-800/50",
|
|
750
|
-
running: "border-primary-200 bg-primary-50/50 dark:border-primary-800 dark:bg-primary-900/20",
|
|
751
|
-
success: "border-green-200 bg-green-50/50 dark:border-green-800 dark:bg-green-900/20",
|
|
752
|
-
error: "border-red-200 bg-red-50/50 dark:border-red-800 dark:bg-red-900/20",
|
|
753
|
-
cancelled: "border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-neutral-800/50 opacity-60"
|
|
754
|
-
},
|
|
755
|
-
compact: {
|
|
756
|
-
true: "p-2",
|
|
757
|
-
false: "p-3"
|
|
758
|
-
}
|
|
759
|
-
},
|
|
760
|
-
defaultVariants: {
|
|
761
|
-
status: "pending",
|
|
762
|
-
compact: false
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
);
|
|
766
767
|
var TOOL_FRIENDLY_NAMES = {
|
|
767
768
|
create_patient: "Creating patient",
|
|
768
769
|
get_patient: "Looking up patient",
|
|
@@ -827,120 +828,113 @@ function getParameterSummary(toolName, params) {
|
|
|
827
828
|
}
|
|
828
829
|
return null;
|
|
829
830
|
}
|
|
831
|
+
var statusPillClasses = {
|
|
832
|
+
pending: "bg-neutral-100 border-neutral-200 text-neutral-600 dark:bg-neutral-800 dark:border-neutral-700 dark:text-neutral-400",
|
|
833
|
+
running: "bg-primary-50 border-primary-200 text-primary-800 dark:bg-primary-900/20 dark:border-primary-800 dark:text-primary-300",
|
|
834
|
+
success: "bg-green-50 border-green-200 text-green-700 dark:bg-green-900/20 dark:border-green-800 dark:text-green-300",
|
|
835
|
+
error: "bg-red-50 border-red-200 text-red-700 dark:bg-red-900/20 dark:border-red-800 dark:text-red-300",
|
|
836
|
+
cancelled: "bg-neutral-100 border-neutral-200 text-neutral-400 opacity-60 dark:bg-neutral-800 dark:border-neutral-700 dark:text-neutral-400"
|
|
837
|
+
};
|
|
830
838
|
function MCPToolCallDisplay({
|
|
831
839
|
toolCall,
|
|
832
840
|
showParameters = true,
|
|
833
841
|
collapsible = true,
|
|
834
|
-
defaultCollapsed
|
|
842
|
+
defaultCollapsed,
|
|
835
843
|
compact,
|
|
844
|
+
hidden = false,
|
|
836
845
|
onLinkClick,
|
|
837
846
|
className
|
|
838
847
|
}) {
|
|
839
|
-
const [showDetails, setShowDetails] = React.useState(!defaultCollapsed);
|
|
840
848
|
const formatDuration = (ms) => {
|
|
841
849
|
if (!ms) return null;
|
|
842
850
|
if (ms < 1e3) return `${ms}ms`;
|
|
843
851
|
return `${(ms / 1e3).toFixed(1)}s`;
|
|
844
852
|
};
|
|
845
853
|
const friendlyName = getToolFriendlyName(toolCall.toolName, toolCall.status);
|
|
854
|
+
const durationLabel = formatDuration(toolCall.duration);
|
|
846
855
|
const paramSummary = getParameterSummary(
|
|
847
856
|
toolCall.toolName,
|
|
848
857
|
toolCall.parameters
|
|
849
858
|
);
|
|
850
|
-
|
|
859
|
+
const detailBit = toolCall.status === "success" ? durationLabel : paramSummary ?? durationLabel;
|
|
860
|
+
const pillLabel = detailBit ? `${friendlyName} \xB7 ${detailBit}` : friendlyName;
|
|
861
|
+
const hasParams = showParameters && toolCall.parameters.length > 0;
|
|
862
|
+
const hasBoxContent = Boolean(toolCall.result || toolCall.error || hasParams);
|
|
863
|
+
const isCompleted = toolCall.status === "success" || toolCall.status === "error";
|
|
864
|
+
const effectiveDefaultCollapsed = defaultCollapsed ?? !isCompleted;
|
|
865
|
+
if (hidden) return null;
|
|
866
|
+
const box = /* @__PURE__ */ jsxs(
|
|
851
867
|
"div",
|
|
852
868
|
{
|
|
853
|
-
"data-slot": "ai-tool-call",
|
|
854
869
|
className: cn(
|
|
855
|
-
|
|
856
|
-
|
|
870
|
+
"w-full max-w-md space-y-2 rounded-lg border border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-neutral-800/50",
|
|
871
|
+
compact ? "p-2" : "p-3"
|
|
857
872
|
),
|
|
858
|
-
children:
|
|
859
|
-
/* @__PURE__ */ jsx(
|
|
873
|
+
children: [
|
|
874
|
+
toolCall.result && /* @__PURE__ */ jsx("div", { "data-slot": "ai-tool-result", children: /* @__PURE__ */ jsx(
|
|
875
|
+
ToolResultDisplay,
|
|
876
|
+
{
|
|
877
|
+
result: toolCall.result,
|
|
878
|
+
onLinkClick
|
|
879
|
+
}
|
|
880
|
+
) }),
|
|
881
|
+
toolCall.error && /* @__PURE__ */ jsx("div", { className: "rounded-md bg-red-100 p-2 dark:bg-red-900/30", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-red-700 dark:text-red-300", children: toolCall.error }) }),
|
|
882
|
+
hasParams && /* @__PURE__ */ jsxs(
|
|
860
883
|
"div",
|
|
861
884
|
{
|
|
862
|
-
"data-slot": "ai-tool-
|
|
863
|
-
className: "
|
|
864
|
-
children:
|
|
885
|
+
"data-slot": "ai-tool-parameters",
|
|
886
|
+
className: "rounded-md bg-neutral-100 p-2 dark:bg-neutral-800",
|
|
887
|
+
children: [
|
|
888
|
+
/* @__PURE__ */ jsx("h4", { className: "mb-1.5 text-xs font-medium tracking-wide text-neutral-600 uppercase dark:text-neutral-400", children: "Parameters" }),
|
|
889
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: toolCall.parameters.map((param) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs", children: [
|
|
890
|
+
/* @__PURE__ */ jsxs("span", { className: "font-mono text-neutral-600 dark:text-neutral-400", children: [
|
|
891
|
+
param.name,
|
|
892
|
+
":"
|
|
893
|
+
] }),
|
|
894
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono text-neutral-700 dark:text-neutral-300", children: typeof param.value === "string" ? param.value : JSON.stringify(param.value) })
|
|
895
|
+
] }, param.name)) })
|
|
896
|
+
]
|
|
865
897
|
}
|
|
866
|
-
)
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
collapsible && showParameters && toolCall.parameters.length > 0 && /* @__PURE__ */ jsxs(
|
|
884
|
-
"button",
|
|
885
|
-
{
|
|
886
|
-
onClick: () => setShowDetails(!showDetails),
|
|
887
|
-
className: "mt-2 flex items-center gap-1 text-xs text-neutral-600 hover:text-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300",
|
|
888
|
-
children: [
|
|
889
|
-
/* @__PURE__ */ jsx(
|
|
890
|
-
"svg",
|
|
891
|
-
{
|
|
892
|
-
"aria-hidden": "true",
|
|
893
|
-
className: cn(
|
|
894
|
-
"h-3 w-3 transition-transform",
|
|
895
|
-
showDetails && "rotate-90"
|
|
896
|
-
),
|
|
897
|
-
fill: "none",
|
|
898
|
-
viewBox: "0 0 24 24",
|
|
899
|
-
stroke: "currentColor",
|
|
900
|
-
strokeWidth: "2",
|
|
901
|
-
children: /* @__PURE__ */ jsx(
|
|
902
|
-
"path",
|
|
903
|
-
{
|
|
904
|
-
strokeLinecap: "round",
|
|
905
|
-
strokeLinejoin: "round",
|
|
906
|
-
d: "M9 5l7 7-7 7"
|
|
907
|
-
}
|
|
908
|
-
)
|
|
909
|
-
}
|
|
910
|
-
),
|
|
911
|
-
showDetails ? "Hide" : "Show",
|
|
912
|
-
" details"
|
|
913
|
-
]
|
|
914
|
-
}
|
|
915
|
-
),
|
|
916
|
-
showDetails && showParameters && toolCall.parameters.length > 0 && /* @__PURE__ */ jsxs(
|
|
917
|
-
"div",
|
|
918
|
-
{
|
|
919
|
-
"data-slot": "ai-tool-parameters",
|
|
920
|
-
className: "mt-3 rounded-md bg-neutral-100 p-2 dark:bg-neutral-800",
|
|
921
|
-
children: [
|
|
922
|
-
/* @__PURE__ */ jsx("h4", { className: "mb-1.5 text-xs font-medium tracking-wide text-neutral-600 uppercase dark:text-neutral-400", children: "Parameters" }),
|
|
923
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: toolCall.parameters.map((param) => /* @__PURE__ */ jsxs(
|
|
924
|
-
"div",
|
|
925
|
-
{
|
|
926
|
-
className: "flex items-start gap-2 text-xs",
|
|
927
|
-
children: [
|
|
928
|
-
/* @__PURE__ */ jsxs("span", { className: "font-mono text-neutral-600 dark:text-neutral-400", children: [
|
|
929
|
-
param.name,
|
|
930
|
-
":"
|
|
931
|
-
] }),
|
|
932
|
-
/* @__PURE__ */ jsx("span", { className: "font-mono text-neutral-700 dark:text-neutral-300", children: typeof param.value === "string" ? param.value : JSON.stringify(param.value) })
|
|
933
|
-
]
|
|
934
|
-
},
|
|
935
|
-
param.name
|
|
936
|
-
)) })
|
|
937
|
-
]
|
|
938
|
-
}
|
|
939
|
-
)
|
|
940
|
-
] })
|
|
941
|
-
] })
|
|
898
|
+
)
|
|
899
|
+
]
|
|
900
|
+
}
|
|
901
|
+
);
|
|
902
|
+
const staticPill = /* @__PURE__ */ jsxs(
|
|
903
|
+
"span",
|
|
904
|
+
{
|
|
905
|
+
"data-slot": "ai-tool-pill",
|
|
906
|
+
className: cn(
|
|
907
|
+
"inline-flex items-center gap-1.5 border font-medium",
|
|
908
|
+
compact ? "rounded-[8px] px-2 py-0.5 text-[10px]" : "rounded-[10px] px-[11px] py-1 text-[11px]",
|
|
909
|
+
statusPillClasses[toolCall.status]
|
|
910
|
+
),
|
|
911
|
+
children: [
|
|
912
|
+
/* @__PURE__ */ jsx(ToolStatusIcon, { status: toolCall.status }),
|
|
913
|
+
/* @__PURE__ */ jsx("span", { children: pillLabel })
|
|
914
|
+
]
|
|
942
915
|
}
|
|
943
916
|
);
|
|
917
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "ai-tool-call", className, children: !hasBoxContent ? staticPill : collapsible ? (
|
|
918
|
+
// Pill click reveals the whole box (result + params) in one go.
|
|
919
|
+
/* @__PURE__ */ jsx(
|
|
920
|
+
CollapsiblePill,
|
|
921
|
+
{
|
|
922
|
+
label: pillLabel,
|
|
923
|
+
leadingIcon: /* @__PURE__ */ jsx(ToolStatusIcon, { status: toolCall.status }),
|
|
924
|
+
density: compact ? "condensed" : "standard",
|
|
925
|
+
defaultOpen: !effectiveDefaultCollapsed,
|
|
926
|
+
pillClassName: statusPillClasses[toolCall.status],
|
|
927
|
+
title: "Toggle details",
|
|
928
|
+
children: box
|
|
929
|
+
}
|
|
930
|
+
)
|
|
931
|
+
) : (
|
|
932
|
+
// Non-collapsible: pill + box always visible.
|
|
933
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
934
|
+
staticPill,
|
|
935
|
+
box
|
|
936
|
+
] })
|
|
937
|
+
) });
|
|
944
938
|
}
|
|
945
939
|
var avatarVariants = cva(
|
|
946
940
|
"flex shrink-0 items-center justify-center rounded-full",
|
|
@@ -1075,6 +1069,39 @@ function AITypingIndicator({ className }) {
|
|
|
1075
1069
|
}
|
|
1076
1070
|
);
|
|
1077
1071
|
}
|
|
1072
|
+
function ThinkingBlock({
|
|
1073
|
+
text,
|
|
1074
|
+
streaming,
|
|
1075
|
+
defaultCollapsed = false
|
|
1076
|
+
}) {
|
|
1077
|
+
const startedAt = React2.useRef(Date.now());
|
|
1078
|
+
const [elapsed, setElapsed] = React2.useState(null);
|
|
1079
|
+
const prevStreaming = React2.useRef(streaming);
|
|
1080
|
+
React2.useEffect(() => {
|
|
1081
|
+
if (prevStreaming.current && !streaming) {
|
|
1082
|
+
setElapsed(Math.round((Date.now() - startedAt.current) / 1e3));
|
|
1083
|
+
}
|
|
1084
|
+
prevStreaming.current = streaming;
|
|
1085
|
+
}, [streaming]);
|
|
1086
|
+
const label = streaming ? "Thinking" : elapsed !== null && elapsed > 0 ? `Thought for ${elapsed}s` : "Thought";
|
|
1087
|
+
const dot = streaming ? /* @__PURE__ */ jsx(
|
|
1088
|
+
"span",
|
|
1089
|
+
{
|
|
1090
|
+
"aria-hidden": "true",
|
|
1091
|
+
className: "inline-block h-1.5 w-1.5 animate-pulse rounded-full bg-violet-500 dark:bg-violet-400"
|
|
1092
|
+
}
|
|
1093
|
+
) : null;
|
|
1094
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "ai-message-thinking", children: /* @__PURE__ */ jsx(
|
|
1095
|
+
CollapsiblePill,
|
|
1096
|
+
{
|
|
1097
|
+
label,
|
|
1098
|
+
leadingIcon: dot,
|
|
1099
|
+
defaultOpen: !defaultCollapsed,
|
|
1100
|
+
pillClassName: "bg-violet-50 border-violet-200 text-violet-600 hover:bg-violet-100 dark:bg-violet-950/30 dark:border-violet-800 dark:text-violet-400 dark:hover:bg-violet-950/50 focus-visible:ring-violet-500",
|
|
1101
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-s-2 border-violet-200 ps-3 text-[13px] leading-relaxed text-neutral-600 italic dark:border-violet-700 dark:text-neutral-400", children: text })
|
|
1102
|
+
}
|
|
1103
|
+
) });
|
|
1104
|
+
}
|
|
1078
1105
|
function ContentBlock({
|
|
1079
1106
|
content,
|
|
1080
1107
|
onLinkClick,
|
|
@@ -1083,9 +1110,6 @@ function ContentBlock({
|
|
|
1083
1110
|
role,
|
|
1084
1111
|
renderTextContent
|
|
1085
1112
|
}) {
|
|
1086
|
-
const [isCollapsed, setIsCollapsed] = React.useState(
|
|
1087
|
-
content.collapsed ?? false
|
|
1088
|
-
);
|
|
1089
1113
|
if (content.type === "text" && content.text) {
|
|
1090
1114
|
if (renderTextContent) {
|
|
1091
1115
|
return /* @__PURE__ */ jsx("div", { className: "prose prose-sm dark:prose-invert max-w-none", children: renderTextContent(content.text, { messageId, streaming, role }) });
|
|
@@ -1103,52 +1127,12 @@ function ContentBlock({
|
|
|
1103
1127
|
);
|
|
1104
1128
|
}
|
|
1105
1129
|
if (content.type === "thinking" && content.text) {
|
|
1106
|
-
return /* @__PURE__ */
|
|
1107
|
-
|
|
1130
|
+
return /* @__PURE__ */ jsx(
|
|
1131
|
+
ThinkingBlock,
|
|
1108
1132
|
{
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
/* @__PURE__ */ jsxs(
|
|
1113
|
-
"button",
|
|
1114
|
-
{
|
|
1115
|
-
onClick: () => setIsCollapsed(!isCollapsed),
|
|
1116
|
-
className: "flex w-full items-center justify-between px-3 py-2 text-left",
|
|
1117
|
-
children: [
|
|
1118
|
-
/* @__PURE__ */ jsxs("span", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [
|
|
1119
|
-
/* @__PURE__ */ jsx(
|
|
1120
|
-
"svg",
|
|
1121
|
-
{
|
|
1122
|
-
"aria-hidden": "true",
|
|
1123
|
-
className: "h-4 w-4",
|
|
1124
|
-
fill: "none",
|
|
1125
|
-
viewBox: "0 0 24 24",
|
|
1126
|
-
stroke: "currentColor",
|
|
1127
|
-
strokeWidth: "1.5",
|
|
1128
|
-
children: /* @__PURE__ */ jsx(
|
|
1129
|
-
"path",
|
|
1130
|
-
{
|
|
1131
|
-
strokeLinecap: "round",
|
|
1132
|
-
strokeLinejoin: "round",
|
|
1133
|
-
d: "M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z"
|
|
1134
|
-
}
|
|
1135
|
-
)
|
|
1136
|
-
}
|
|
1137
|
-
),
|
|
1138
|
-
"Thinking..."
|
|
1139
|
-
] }),
|
|
1140
|
-
/* @__PURE__ */ jsx(
|
|
1141
|
-
ChevronIcon,
|
|
1142
|
-
{
|
|
1143
|
-
direction: isCollapsed ? "right" : "down",
|
|
1144
|
-
className: "text-neutral-400"
|
|
1145
|
-
}
|
|
1146
|
-
)
|
|
1147
|
-
]
|
|
1148
|
-
}
|
|
1149
|
-
),
|
|
1150
|
-
!isCollapsed && /* @__PURE__ */ jsx("div", { className: "border-t border-neutral-200 px-3 py-2 dark:border-neutral-700", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-neutral-600 italic dark:text-neutral-400", children: content.text }) })
|
|
1151
|
-
]
|
|
1133
|
+
text: content.text,
|
|
1134
|
+
streaming,
|
|
1135
|
+
defaultCollapsed: content.collapsed ?? false
|
|
1152
1136
|
}
|
|
1153
1137
|
);
|
|
1154
1138
|
}
|
|
@@ -1297,7 +1281,7 @@ var bubbleVariants = cva("rounded-2xl px-4 py-2.5 w-fit max-w-[85%]", {
|
|
|
1297
1281
|
variant: "assistant"
|
|
1298
1282
|
}
|
|
1299
1283
|
});
|
|
1300
|
-
var ChatBubble =
|
|
1284
|
+
var ChatBubble = React2.forwardRef(
|
|
1301
1285
|
({ className, variant, hasError, accent, style, children, ...props }, ref) => {
|
|
1302
1286
|
return /* @__PURE__ */ jsx(
|
|
1303
1287
|
"div",
|
|
@@ -1411,6 +1395,6 @@ function AIMessageDisplay({
|
|
|
1411
1395
|
);
|
|
1412
1396
|
}
|
|
1413
1397
|
|
|
1414
|
-
export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon };
|
|
1415
|
-
//# sourceMappingURL=chunk-
|
|
1416
|
-
//# sourceMappingURL=chunk-
|
|
1398
|
+
export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon };
|
|
1399
|
+
//# sourceMappingURL=chunk-QEBVYLI7.js.map
|
|
1400
|
+
//# sourceMappingURL=chunk-QEBVYLI7.js.map
|