@mieweb/ui 0.10.0-dev.9 → 0.11.0-dev.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 +4 -4
- package/agent/mieweb-ui.instructions.md +77 -0
- package/dist/CsvBlock-CFXSDPBI.js +9 -0
- package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
- package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
- package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
- package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
- package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
- package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
- package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
- package/dist/MermaidBlock-XCAK7IA5.js +9 -0
- package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
- package/dist/SurveyBlock-KI5JOWCL.js +9 -0
- package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
- package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
- package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
- package/dist/ag-grid.d.cts +142 -1
- package/dist/ag-grid.d.ts +142 -1
- package/dist/brands/bluehive.cjs +3 -3
- package/dist/brands/bluehive.css +3 -0
- package/dist/brands/bluehive.js +1 -1
- package/dist/brands/index.cjs +17 -17
- package/dist/brands/index.js +4 -4
- package/dist/{chunk-JYZW2PZS.cjs → chunk-254QK722.cjs} +7 -7
- package/dist/chunk-254QK722.cjs.map +1 -0
- package/dist/{chunk-4IS3QCOQ.cjs → chunk-2FZYZ4HT.cjs} +4 -3
- package/dist/chunk-2FZYZ4HT.cjs.map +1 -0
- package/dist/{chunk-VPIYTQCV.cjs → chunk-2I4IRQQG.cjs} +12 -5
- package/dist/chunk-2I4IRQQG.cjs.map +1 -0
- package/dist/{chunk-IT775BYG.js → chunk-2W73UQ3T.js} +4 -3
- package/dist/chunk-2W73UQ3T.js.map +1 -0
- package/dist/chunk-2X54ZLT6.js +874 -0
- package/dist/chunk-2X54ZLT6.js.map +1 -0
- package/dist/{chunk-5MCBWTIF.cjs → chunk-32ZCJOSR.cjs} +4 -4
- package/dist/{chunk-5MCBWTIF.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
- package/dist/{chunk-WNJRS7Y7.cjs → chunk-3ZWCIPFT.cjs} +4 -2
- package/dist/chunk-3ZWCIPFT.cjs.map +1 -0
- package/dist/chunk-434L5RYF.js +314 -0
- package/dist/chunk-434L5RYF.js.map +1 -0
- package/dist/{chunk-TPWKM7JH.js → chunk-43K7OQ3E.js} +3 -3
- package/dist/{chunk-TPWKM7JH.js.map → chunk-43K7OQ3E.js.map} +1 -1
- package/dist/chunk-47P5QLX4.cjs +42 -0
- package/dist/chunk-47P5QLX4.cjs.map +1 -0
- package/dist/{chunk-CR2SDI23.cjs → chunk-4QYYWYFD.cjs} +8 -7
- package/dist/chunk-4QYYWYFD.cjs.map +1 -0
- package/dist/{chunk-76TBQDED.js → chunk-4RI3CQGE.js} +6 -6
- package/dist/{chunk-76TBQDED.js.map → chunk-4RI3CQGE.js.map} +1 -1
- package/dist/chunk-4ZB7RSMY.cjs +306 -0
- package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
- package/dist/chunk-522WJIVI.js +99 -0
- package/dist/chunk-522WJIVI.js.map +1 -0
- package/dist/chunk-56VTM4OX.js +261 -0
- package/dist/chunk-56VTM4OX.js.map +1 -0
- package/dist/chunk-5HKZR6UG.js +248 -0
- package/dist/chunk-5HKZR6UG.js.map +1 -0
- package/dist/chunk-6BNZLN4B.cjs +548 -0
- package/dist/chunk-6BNZLN4B.cjs.map +1 -0
- package/dist/chunk-6N7NMOSV.js +233 -0
- package/dist/chunk-6N7NMOSV.js.map +1 -0
- package/dist/chunk-6TTCZY3P.cjs +4 -0
- package/dist/chunk-6TTCZY3P.cjs.map +1 -0
- package/dist/{chunk-YQDA366U.js → chunk-753ENNB6.js} +2 -2
- package/dist/{chunk-YQDA366U.js.map → chunk-753ENNB6.js.map} +1 -1
- package/dist/{chunk-N6IY47YA.cjs → chunk-7C5W744U.cjs} +8 -8
- package/dist/{chunk-N6IY47YA.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
- package/dist/chunk-7E46YDOT.cjs +122 -0
- package/dist/chunk-7E46YDOT.cjs.map +1 -0
- package/dist/chunk-7HUTR6RX.js +178 -0
- package/dist/chunk-7HUTR6RX.js.map +1 -0
- package/dist/chunk-7IRTD4JT.cjs +61 -0
- package/dist/chunk-7IRTD4JT.cjs.map +1 -0
- package/dist/{chunk-KZFBQ7GY.js → chunk-7QW6TU4X.js} +3 -3
- package/dist/{chunk-KZFBQ7GY.js.map → chunk-7QW6TU4X.js.map} +1 -1
- package/dist/{chunk-MWVW4APN.cjs → chunk-7UTBDFFL.cjs} +4 -4
- package/dist/{chunk-MWVW4APN.cjs.map → chunk-7UTBDFFL.cjs.map} +1 -1
- package/dist/chunk-7WJ6MBF5.cjs +47 -0
- package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
- package/dist/{chunk-FJ7YPVKV.js → chunk-7X6R3JIA.js} +3 -3
- package/dist/{chunk-FJ7YPVKV.js.map → chunk-7X6R3JIA.js.map} +1 -1
- package/dist/chunk-A4W5CSK7.cjs +216 -0
- package/dist/chunk-A4W5CSK7.cjs.map +1 -0
- package/dist/{chunk-2G75X6TS.cjs → chunk-AHHFFXJR.cjs} +3 -3
- package/dist/{chunk-2G75X6TS.cjs.map → chunk-AHHFFXJR.cjs.map} +1 -1
- package/dist/chunk-AJPFQF3H.cjs +896 -0
- package/dist/chunk-AJPFQF3H.cjs.map +1 -0
- package/dist/chunk-AMYFRY7K.js +3 -0
- package/dist/chunk-AMYFRY7K.js.map +1 -0
- package/dist/{chunk-VNYW4C4J.cjs → chunk-ANMX7YDL.cjs} +4 -84
- package/dist/chunk-ANMX7YDL.cjs.map +1 -0
- package/dist/chunk-ARIJ5OHW.cjs +139 -0
- package/dist/chunk-ARIJ5OHW.cjs.map +1 -0
- package/dist/{chunk-GD7EBGC4.cjs → chunk-ATRW3J5Z.cjs} +49 -19
- package/dist/chunk-ATRW3J5Z.cjs.map +1 -0
- package/dist/chunk-BJ6ABRSQ.cjs +256 -0
- package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
- package/dist/{chunk-G3JX3UAU.cjs → chunk-BWSZ2BHJ.cjs} +6 -6
- package/dist/{chunk-G3JX3UAU.cjs.map → chunk-BWSZ2BHJ.cjs.map} +1 -1
- package/dist/chunk-BXRQ6HEP.cjs +4 -0
- package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
- package/dist/chunk-CBBKWRLG.js +213 -0
- package/dist/chunk-CBBKWRLG.js.map +1 -0
- package/dist/{chunk-UAMXCMST.cjs → chunk-CFI3TQMA.cjs} +3 -3
- package/dist/{chunk-UAMXCMST.cjs.map → chunk-CFI3TQMA.cjs.map} +1 -1
- package/dist/chunk-CLQW724U.cjs +271 -0
- package/dist/chunk-CLQW724U.cjs.map +1 -0
- package/dist/chunk-CPDNX3LS.cjs +47 -0
- package/dist/chunk-CPDNX3LS.cjs.map +1 -0
- package/dist/chunk-CVNPNZMX.js +44 -0
- package/dist/chunk-CVNPNZMX.js.map +1 -0
- package/dist/chunk-DGHS5IVD.js +305 -0
- package/dist/chunk-DGHS5IVD.js.map +1 -0
- package/dist/chunk-DHGCLPFZ.js +91 -0
- package/dist/chunk-DHGCLPFZ.js.map +1 -0
- package/dist/chunk-DO2YN46R.cjs +201 -0
- package/dist/chunk-DO2YN46R.cjs.map +1 -0
- package/dist/chunk-DVDT7TX7.js +151 -0
- package/dist/chunk-DVDT7TX7.js.map +1 -0
- package/dist/chunk-DXEPYK3I.cjs +92 -0
- package/dist/chunk-DXEPYK3I.cjs.map +1 -0
- package/dist/chunk-DXFP53KF.js +283 -0
- package/dist/chunk-DXFP53KF.js.map +1 -0
- package/dist/chunk-EACNRR3C.cjs +4 -0
- package/dist/chunk-EACNRR3C.cjs.map +1 -0
- package/dist/{chunk-TVTIGV7Q.js → chunk-EBKE4DLU.js} +18 -11
- package/dist/chunk-EBKE4DLU.js.map +1 -0
- package/dist/{chunk-ASSDGS4F.cjs → chunk-ECYIDXG6.cjs} +254 -4
- package/dist/chunk-ECYIDXG6.cjs.map +1 -0
- package/dist/chunk-EGPDT7SM.js +195 -0
- package/dist/chunk-EGPDT7SM.js.map +1 -0
- package/dist/chunk-EPCUPHEO.js +193 -0
- package/dist/chunk-EPCUPHEO.js.map +1 -0
- package/dist/{chunk-7ZXAQTV4.cjs → chunk-ERACGSDY.cjs} +8 -8
- package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
- package/dist/{chunk-XCP454Q6.js → chunk-F4N67NAF.js} +12 -3
- package/dist/chunk-F4N67NAF.js.map +1 -0
- package/dist/{chunk-WGPLUCBD.js → chunk-F6W62K4J.js} +4 -4
- package/dist/{chunk-WGPLUCBD.js.map → chunk-F6W62K4J.js.map} +1 -1
- package/dist/{chunk-XVW5DPPP.js → chunk-F7SZSOB3.js} +4 -3
- package/dist/chunk-F7SZSOB3.js.map +1 -0
- package/dist/chunk-FBCDYTWM.js +385 -0
- package/dist/chunk-FBCDYTWM.js.map +1 -0
- package/dist/{chunk-KQUI4BGS.cjs → chunk-FBN2VHUV.cjs} +68 -61
- package/dist/chunk-FBN2VHUV.cjs.map +1 -0
- package/dist/{chunk-V7D3YGUV.js → chunk-FGLIP6YR.js} +4 -4
- package/dist/{chunk-V7D3YGUV.js.map → chunk-FGLIP6YR.js.map} +1 -1
- package/dist/{chunk-VU6UTJRM.js → chunk-FIKO4WR6.js} +3 -3
- package/dist/{chunk-VU6UTJRM.js.map → chunk-FIKO4WR6.js.map} +1 -1
- package/dist/{chunk-OD47TTAW.cjs → chunk-FMEA6WAY.cjs} +9 -9
- package/dist/{chunk-OD47TTAW.cjs.map → chunk-FMEA6WAY.cjs.map} +1 -1
- package/dist/chunk-FSGJXCBG.cjs +318 -0
- package/dist/chunk-FSGJXCBG.cjs.map +1 -0
- package/dist/chunk-FSWHZY3T.cjs +328 -0
- package/dist/chunk-FSWHZY3T.cjs.map +1 -0
- package/dist/chunk-FTEZNCRI.js +29 -0
- package/dist/chunk-FTEZNCRI.js.map +1 -0
- package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
- package/dist/chunk-GF2BE4FB.cjs.map +1 -0
- package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
- package/dist/chunk-GKDHMNUA.cjs.map +1 -0
- package/dist/{chunk-URAQIF67.cjs → chunk-GM32IDVL.cjs} +6 -6
- package/dist/{chunk-URAQIF67.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
- package/dist/chunk-GVM6DTR5.js +90 -0
- package/dist/chunk-GVM6DTR5.js.map +1 -0
- package/dist/{chunk-SQHMGT4W.js → chunk-GW4RFJZ5.js} +7 -7
- package/dist/chunk-GW4RFJZ5.js.map +1 -0
- package/dist/chunk-GY5SP4ST.js +3 -0
- package/dist/chunk-GY5SP4ST.js.map +1 -0
- package/dist/{chunk-OCSCBB52.cjs → chunk-GYXSF6BJ.cjs} +10 -10
- package/dist/{chunk-OCSCBB52.cjs.map → chunk-GYXSF6BJ.cjs.map} +1 -1
- package/dist/chunk-H2Y7HZV5.js +3 -0
- package/dist/chunk-H2Y7HZV5.js.map +1 -0
- package/dist/chunk-H3P7POFC.cjs +337 -0
- package/dist/chunk-H3P7POFC.cjs.map +1 -0
- package/dist/{chunk-JID7AZTO.cjs → chunk-H3ROMJYI.cjs} +4 -4
- package/dist/{chunk-JID7AZTO.cjs.map → chunk-H3ROMJYI.cjs.map} +1 -1
- package/dist/{chunk-462XSCP3.cjs → chunk-HCIXGFWR.cjs} +4 -4
- package/dist/{chunk-462XSCP3.cjs.map → chunk-HCIXGFWR.cjs.map} +1 -1
- package/dist/{chunk-H4ZXMQQW.js → chunk-HDY7YQFX.js} +3 -3
- package/dist/{chunk-H4ZXMQQW.js.map → chunk-HDY7YQFX.js.map} +1 -1
- package/dist/chunk-HNFFFFYH.cjs +114 -0
- package/dist/chunk-HNFFFFYH.cjs.map +1 -0
- package/dist/chunk-HNXLLDPN.js +25 -0
- package/dist/chunk-HNXLLDPN.js.map +1 -0
- package/dist/{chunk-NV2CWBI2.cjs → chunk-IEY3ZJIT.cjs} +12 -3
- package/dist/chunk-IEY3ZJIT.cjs.map +1 -0
- package/dist/chunk-IEZXJWHJ.cjs +306 -0
- package/dist/chunk-IEZXJWHJ.cjs.map +1 -0
- package/dist/{chunk-3QEVGSFG.cjs → chunk-IGDO62KR.cjs} +5 -5
- package/dist/{chunk-3QEVGSFG.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
- package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
- package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
- package/dist/chunk-IWRBJHO3.cjs +51 -0
- package/dist/chunk-IWRBJHO3.cjs.map +1 -0
- package/dist/{chunk-2IZLKPUW.js → chunk-J2CKXXOW.js} +27 -6
- package/dist/chunk-J2CKXXOW.js.map +1 -0
- package/dist/{chunk-VILW53UZ.js → chunk-JMAZ2GKT.js} +3 -3
- package/dist/{chunk-VILW53UZ.js.map → chunk-JMAZ2GKT.js.map} +1 -1
- package/dist/{chunk-WWJIW2IH.cjs → chunk-JSXIB6EJ.cjs} +4 -4
- package/dist/{chunk-WWJIW2IH.cjs.map → chunk-JSXIB6EJ.cjs.map} +1 -1
- package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
- package/dist/chunk-JUJGWUAN.js.map +1 -0
- package/dist/{chunk-FXO5ARBB.cjs → chunk-KDW6BD4O.cjs} +4 -4
- package/dist/{chunk-FXO5ARBB.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
- package/dist/{chunk-Z5V7SAZ4.js → chunk-KFEN2SRZ.js} +3 -3
- package/dist/{chunk-Z5V7SAZ4.js.map → chunk-KFEN2SRZ.js.map} +1 -1
- package/dist/chunk-KIVEYQGA.cjs +319 -0
- package/dist/chunk-KIVEYQGA.cjs.map +1 -0
- package/dist/{chunk-XEAT7XJG.cjs → chunk-KQ6GLYFZ.cjs} +29 -13
- package/dist/chunk-KQ6GLYFZ.cjs.map +1 -0
- package/dist/{chunk-4A3W4TQF.js → chunk-KVTKSPX5.js} +254 -4
- package/dist/chunk-KVTKSPX5.js.map +1 -0
- package/dist/{chunk-6EN3IQQI.cjs → chunk-L5Y52F2E.cjs} +9 -9
- package/dist/chunk-L5Y52F2E.cjs.map +1 -0
- package/dist/chunk-L6K4PRZK.cjs +4 -0
- package/dist/chunk-L6K4PRZK.cjs.map +1 -0
- package/dist/chunk-LAN5VWGC.js +2540 -0
- package/dist/chunk-LAN5VWGC.js.map +1 -0
- package/dist/{chunk-7ZDPD5ZX.cjs → chunk-LC3JL2HB.cjs} +11 -7
- package/dist/chunk-LC3JL2HB.cjs.map +1 -0
- package/dist/chunk-LRAAJRE7.cjs +2707 -0
- package/dist/chunk-LRAAJRE7.cjs.map +1 -0
- package/dist/{chunk-OE5CKRUC.js → chunk-LX323IMT.js} +34 -4
- package/dist/chunk-LX323IMT.js.map +1 -0
- package/dist/chunk-M3VPGJMV.js +283 -0
- package/dist/chunk-M3VPGJMV.js.map +1 -0
- package/dist/{chunk-DVOQ3JNO.js → chunk-ME7EVT6F.js} +23 -9
- package/dist/chunk-ME7EVT6F.js.map +1 -0
- package/dist/{chunk-SQJFBZ42.js → chunk-MUYUFOGL.js} +8 -7
- package/dist/chunk-MUYUFOGL.js.map +1 -0
- package/dist/{chunk-VKELAMAZ.js → chunk-N54FYWG6.js} +27 -11
- package/dist/chunk-N54FYWG6.js.map +1 -0
- package/dist/chunk-N5JDL4VE.js +3 -0
- package/dist/chunk-N5JDL4VE.js.map +1 -0
- package/dist/{chunk-ZPSJ2UV6.cjs → chunk-NAH65KPK.cjs} +8 -8
- package/dist/{chunk-ZPSJ2UV6.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
- package/dist/{chunk-PYJDVWXM.js → chunk-NUB5HRKS.js} +3 -3
- package/dist/{chunk-PYJDVWXM.js.map → chunk-NUB5HRKS.js.map} +1 -1
- package/dist/{chunk-WNZAYBVB.cjs → chunk-O6BJMVGT.cjs} +48 -48
- package/dist/{chunk-WNZAYBVB.cjs.map → chunk-O6BJMVGT.cjs.map} +1 -1
- package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
- package/dist/chunk-O6XDA3SI.js.map +1 -0
- package/dist/chunk-OIF34LEN.cjs +425 -0
- package/dist/chunk-OIF34LEN.cjs.map +1 -0
- package/dist/{chunk-J5CSLNCN.cjs → chunk-OODVC2UD.cjs} +2 -2
- package/dist/{chunk-J5CSLNCN.cjs.map → chunk-OODVC2UD.cjs.map} +1 -1
- package/dist/{chunk-LL6IWKI3.js → chunk-OW3SQJ7P.js} +3 -3
- package/dist/{chunk-LL6IWKI3.js.map → chunk-OW3SQJ7P.js.map} +1 -1
- package/dist/{chunk-ZGRCSNPK.js → chunk-OYUIEJPN.js} +17 -8
- package/dist/chunk-OYUIEJPN.js.map +1 -0
- package/dist/chunk-P22YCUVM.cjs +4 -0
- package/dist/chunk-P22YCUVM.cjs.map +1 -0
- package/dist/{chunk-CEQJGUAS.js → chunk-P4E3K3ND.js} +12 -5
- package/dist/chunk-P4E3K3ND.js.map +1 -0
- package/dist/{chunk-TMMVIUUN.js → chunk-P7D7BYFE.js} +4 -4
- package/dist/{chunk-TMMVIUUN.js.map → chunk-P7D7BYFE.js.map} +1 -1
- package/dist/{chunk-SGFYA22I.cjs → chunk-PINIBEIU.cjs} +21 -12
- package/dist/chunk-PINIBEIU.cjs.map +1 -0
- package/dist/{chunk-3T7QGLNB.js → chunk-PJEL5ZZV.js} +4 -2
- package/dist/chunk-PJEL5ZZV.js.map +1 -0
- package/dist/chunk-PWXDRFJL.cjs +218 -0
- package/dist/chunk-PWXDRFJL.cjs.map +1 -0
- package/dist/{chunk-XZNN3S3S.cjs → chunk-PYI2IWNX.cjs} +4 -4
- package/dist/{chunk-XZNN3S3S.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
- package/dist/chunk-Q3YVLO52.cjs +174 -0
- package/dist/chunk-Q3YVLO52.cjs.map +1 -0
- package/dist/{chunk-MNILXWVY.js → chunk-QJ2L5RU6.js} +7 -7
- package/dist/{chunk-MNILXWVY.js.map → chunk-QJ2L5RU6.js.map} +1 -1
- package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
- package/dist/chunk-QX6AAVDE.cjs.map +1 -0
- package/dist/{chunk-UV2FVNWT.cjs → chunk-RIUQP2QS.cjs} +5 -5
- package/dist/{chunk-UV2FVNWT.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
- package/dist/chunk-RLVYWUXG.js +115 -0
- package/dist/chunk-RLVYWUXG.js.map +1 -0
- package/dist/{chunk-HACNIFO3.js → chunk-RM2HPQIC.js} +77 -14
- package/dist/chunk-RM2HPQIC.js.map +1 -0
- package/dist/{chunk-DEDN5HAG.js → chunk-RSJGTWLM.js} +3 -3
- package/dist/{chunk-DEDN5HAG.js.map → chunk-RSJGTWLM.js.map} +1 -1
- package/dist/{chunk-G4D6CLBT.js → chunk-RZSSQ7AT.js} +3 -3
- package/dist/{chunk-G4D6CLBT.js.map → chunk-RZSSQ7AT.js.map} +1 -1
- package/dist/{chunk-ENKFJJZX.js → chunk-S2JZL4JC.js} +6 -6
- package/dist/{chunk-ENKFJJZX.js.map → chunk-S2JZL4JC.js.map} +1 -1
- package/dist/{chunk-P7UMS4E6.cjs → chunk-S7AMZ4RD.cjs} +23 -9
- package/dist/chunk-S7AMZ4RD.cjs.map +1 -0
- package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
- package/dist/chunk-SHBCUXFS.cjs.map +1 -0
- package/dist/{chunk-RJ6NTJHC.js → chunk-SRMTRD7F.js} +3 -3
- package/dist/{chunk-RJ6NTJHC.js.map → chunk-SRMTRD7F.js.map} +1 -1
- package/dist/{chunk-IX6KFB3K.cjs → chunk-SW2E7XKY.cjs} +9 -9
- package/dist/{chunk-IX6KFB3K.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
- package/dist/chunk-SZSRGUVO.js +402 -0
- package/dist/chunk-SZSRGUVO.js.map +1 -0
- package/dist/{chunk-NJ6MY6V5.js → chunk-T5BBZQ66.js} +3 -3
- package/dist/{chunk-NJ6MY6V5.js.map → chunk-T5BBZQ66.js.map} +1 -1
- package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
- package/dist/chunk-TI3TQQ7F.js.map +1 -0
- package/dist/{chunk-ACCAXVOG.js → chunk-TJ4GWQPM.js} +137 -57
- package/dist/chunk-TJ4GWQPM.js.map +1 -0
- package/dist/{chunk-5JJ2DAE4.js → chunk-TWQSMUE6.js} +7 -3
- package/dist/chunk-TWQSMUE6.js.map +1 -0
- package/dist/{chunk-X4XPNTCZ.cjs → chunk-U2RS574O.cjs} +139 -59
- package/dist/chunk-U2RS574O.cjs.map +1 -0
- package/dist/{chunk-TAXD5ADA.cjs → chunk-UEDTZYGI.cjs} +3 -3
- package/dist/{chunk-TAXD5ADA.cjs.map → chunk-UEDTZYGI.cjs.map} +1 -1
- package/dist/{chunk-3QGS6CXD.js → chunk-UJDWFDKE.js} +3 -3
- package/dist/{chunk-3QGS6CXD.js.map → chunk-UJDWFDKE.js.map} +1 -1
- package/dist/{chunk-DZ5HFLRC.js → chunk-UNFDIBKJ.js} +3 -3
- package/dist/{chunk-DZ5HFLRC.js.map → chunk-UNFDIBKJ.js.map} +1 -1
- package/dist/{chunk-UQ3VVR6A.cjs → chunk-UPWIJC6I.cjs} +3 -3
- package/dist/{chunk-UQ3VVR6A.cjs.map → chunk-UPWIJC6I.cjs.map} +1 -1
- package/dist/chunk-UTIPENPW.cjs +286 -0
- package/dist/chunk-UTIPENPW.cjs.map +1 -0
- package/dist/{chunk-S7WCHDBO.js → chunk-VCI2Y7ST.js} +3 -3
- package/dist/{chunk-S7WCHDBO.js.map → chunk-VCI2Y7ST.js.map} +1 -1
- package/dist/{chunk-Y5HFM7LO.js → chunk-VOEXGDL5.js} +6 -6
- package/dist/chunk-VOEXGDL5.js.map +1 -0
- package/dist/{chunk-P2CA3XGI.js → chunk-VSRO4PAI.js} +23 -5
- package/dist/chunk-VSRO4PAI.js.map +1 -0
- package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
- package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
- package/dist/{chunk-XI34EGK5.cjs → chunk-VV2U36T6.cjs} +9 -9
- package/dist/{chunk-XI34EGK5.cjs.map → chunk-VV2U36T6.cjs.map} +1 -1
- package/dist/{chunk-VPWJCJCX.cjs → chunk-VXW7D5LR.cjs} +26 -8
- package/dist/chunk-VXW7D5LR.cjs.map +1 -0
- package/dist/{chunk-GOALNQZ2.js → chunk-WFBUBT54.js} +4 -83
- package/dist/chunk-WFBUBT54.js.map +1 -0
- package/dist/chunk-WQHBMZSC.js +295 -0
- package/dist/chunk-WQHBMZSC.js.map +1 -0
- package/dist/chunk-WSMBIXPU.cjs +2573 -0
- package/dist/chunk-WSMBIXPU.cjs.map +1 -0
- package/dist/chunk-X5JOEZVR.js +525 -0
- package/dist/chunk-X5JOEZVR.js.map +1 -0
- package/dist/chunk-XBAAHOCP.js +3 -0
- package/dist/chunk-XBAAHOCP.js.map +1 -0
- package/dist/chunk-XDU65GLW.js +21 -0
- package/dist/chunk-XDU65GLW.js.map +1 -0
- package/dist/{chunk-5GUOOLPR.cjs → chunk-XHK5VZ4L.cjs} +29 -8
- package/dist/chunk-XHK5VZ4L.cjs.map +1 -0
- package/dist/chunk-XI74P5F2.cjs +424 -0
- package/dist/chunk-XI74P5F2.cjs.map +1 -0
- package/dist/chunk-XNPDZANN.cjs +238 -0
- package/dist/chunk-XNPDZANN.cjs.map +1 -0
- package/dist/{chunk-XDIMTPZU.cjs → chunk-XPWFIDZM.cjs} +4 -3
- package/dist/chunk-XPWFIDZM.cjs.map +1 -0
- package/dist/{chunk-FS4VZUFV.cjs → chunk-XRVMYT5G.cjs} +77 -13
- package/dist/chunk-XRVMYT5G.cjs.map +1 -0
- package/dist/chunk-XXA4NZUC.js +3 -0
- package/dist/chunk-XXA4NZUC.js.map +1 -0
- package/dist/chunk-Y424YL55.js +59 -0
- package/dist/chunk-Y424YL55.js.map +1 -0
- package/dist/chunk-Y7ZJZLJY.js +2657 -0
- package/dist/chunk-Y7ZJZLJY.js.map +1 -0
- package/dist/chunk-YG7BR76Y.js +281 -0
- package/dist/chunk-YG7BR76Y.js.map +1 -0
- package/dist/chunk-YGS2TRMP.js +38 -0
- package/dist/chunk-YGS2TRMP.js.map +1 -0
- package/dist/chunk-YUMOM3KE.js +167 -0
- package/dist/chunk-YUMOM3KE.js.map +1 -0
- package/dist/chunk-YVKBXNPK.js +41 -0
- package/dist/chunk-YVKBXNPK.js.map +1 -0
- package/dist/chunk-YW2AKBLS.cjs +23 -0
- package/dist/chunk-YW2AKBLS.cjs.map +1 -0
- package/dist/{chunk-3M7TAXNR.js → chunk-YZCM7CXK.js} +3 -3
- package/dist/{chunk-3M7TAXNR.js.map → chunk-YZCM7CXK.js.map} +1 -1
- package/dist/chunk-Z3WMDVMR.cjs +46 -0
- package/dist/chunk-Z3WMDVMR.cjs.map +1 -0
- package/dist/chunk-ZNUMOJOI.cjs +4 -0
- package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
- package/dist/components/Accordion/index.cjs +2 -2
- package/dist/components/Accordion/index.d.cts +6 -0
- package/dist/components/Accordion/index.d.ts +6 -0
- package/dist/components/Accordion/index.js +1 -1
- package/dist/components/ActionPlan/index.cjs +34 -0
- package/dist/components/ActionPlan/index.cjs.map +1 -0
- package/dist/components/ActionPlan/index.d.cts +65 -0
- package/dist/components/ActionPlan/index.d.ts +65 -0
- package/dist/components/ActionPlan/index.js +21 -0
- package/dist/components/ActionPlan/index.js.map +1 -0
- package/dist/components/ActivityFeed/index.cjs +31 -0
- package/dist/components/ActivityFeed/index.cjs.map +1 -0
- package/dist/components/ActivityFeed/index.d.cts +99 -0
- package/dist/components/ActivityFeed/index.d.ts +99 -0
- package/dist/components/ActivityFeed/index.js +18 -0
- package/dist/components/ActivityFeed/index.js.map +1 -0
- package/dist/components/Alert/index.d.cts +1 -1
- package/dist/components/Alert/index.d.ts +1 -1
- package/dist/components/AlertDialog/index.cjs +19 -5
- package/dist/components/AlertDialog/index.d.cts +94 -16
- package/dist/components/AlertDialog/index.d.ts +94 -16
- package/dist/components/AlertDialog/index.js +6 -4
- package/dist/components/AssociationList/index.cjs +29 -0
- package/dist/components/AssociationList/index.cjs.map +1 -0
- package/dist/components/AssociationList/index.d.cts +50 -0
- package/dist/components/AssociationList/index.d.ts +50 -0
- package/dist/components/AssociationList/index.js +16 -0
- package/dist/components/AssociationList/index.js.map +1 -0
- package/dist/components/AudioRecorder/index.d.cts +2 -2
- package/dist/components/AudioRecorder/index.d.ts +2 -2
- package/dist/components/Autocomplete/index.d.cts +8 -2
- package/dist/components/Autocomplete/index.d.ts +8 -2
- package/dist/components/Avatar/index.cjs +9 -7
- package/dist/components/Avatar/index.d.cts +46 -15
- package/dist/components/Avatar/index.d.ts +46 -15
- package/dist/components/Avatar/index.js +3 -1
- package/dist/components/AvatarGroup/index.cjs +20 -0
- package/dist/components/AvatarGroup/index.cjs.map +1 -0
- package/dist/components/AvatarGroup/index.d.cts +57 -0
- package/dist/components/AvatarGroup/index.d.ts +57 -0
- package/dist/components/AvatarGroup/index.js +7 -0
- package/dist/components/AvatarGroup/index.js.map +1 -0
- package/dist/components/Badge/index.cjs +3 -3
- package/dist/components/Badge/index.d.cts +16 -2
- package/dist/components/Badge/index.d.ts +16 -2
- package/dist/components/Badge/index.js +1 -1
- package/dist/components/BoardView/index.cjs +5 -4
- package/dist/components/BoardView/index.d.cts +2 -3
- package/dist/components/BoardView/index.d.ts +2 -3
- package/dist/components/BoardView/index.js +2 -1
- package/dist/components/Button/index.cjs +5 -3
- package/dist/components/Button/index.d.cts +2 -1
- package/dist/components/Button/index.d.ts +2 -1
- package/dist/components/Button/index.js +3 -1
- package/dist/components/CalendarHeatmap/index.cjs +18 -0
- package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
- package/dist/components/CalendarHeatmap/index.d.cts +47 -0
- package/dist/components/CalendarHeatmap/index.d.ts +47 -0
- package/dist/components/CalendarHeatmap/index.js +5 -0
- package/dist/components/CalendarHeatmap/index.js.map +1 -0
- package/dist/components/CalendarView/index.cjs +6 -4
- package/dist/components/CalendarView/index.d.cts +1 -2
- package/dist/components/CalendarView/index.d.ts +1 -2
- package/dist/components/CalendarView/index.js +4 -2
- package/dist/components/Card/index.d.cts +3 -3
- package/dist/components/Card/index.d.ts +3 -3
- package/dist/components/ClampedText/index.cjs +3 -2
- package/dist/components/ClampedText/index.js +2 -1
- package/dist/components/CollabStatus/index.cjs +6 -4
- package/dist/components/CollabStatus/index.d.cts +11 -0
- package/dist/components/CollabStatus/index.d.ts +11 -0
- package/dist/components/CollabStatus/index.js +3 -1
- package/dist/components/Collapsible/index.cjs +6 -6
- package/dist/components/Collapsible/index.d.cts +6 -0
- package/dist/components/Collapsible/index.d.ts +6 -0
- package/dist/components/Collapsible/index.js +3 -3
- package/dist/components/CompletenessMeter/index.cjs +23 -0
- package/dist/components/CompletenessMeter/index.cjs.map +1 -0
- package/dist/components/CompletenessMeter/index.d.cts +52 -0
- package/dist/components/CompletenessMeter/index.d.ts +52 -0
- package/dist/components/CompletenessMeter/index.js +6 -0
- package/dist/components/CompletenessMeter/index.js.map +1 -0
- package/dist/components/CountryCodeDropdown/index.cjs +5 -5
- package/dist/components/CountryCodeDropdown/index.js +2 -2
- package/dist/components/CustomizableDashboard/index.cjs +12 -10
- package/dist/components/CustomizableDashboard/index.js +5 -3
- package/dist/components/DateInput/index.d.cts +36 -4
- package/dist/components/DateInput/index.d.ts +36 -4
- package/dist/components/Dropdown/index.cjs +12 -10
- package/dist/components/Dropdown/index.d.cts +6 -4
- package/dist/components/Dropdown/index.d.ts +6 -4
- package/dist/components/Dropdown/index.js +5 -3
- package/dist/components/EmailEditor/index.cjs +68 -0
- package/dist/components/EmailEditor/index.cjs.map +1 -0
- package/dist/components/EmailEditor/index.d.cts +347 -0
- package/dist/components/EmailEditor/index.d.ts +347 -0
- package/dist/components/EmailEditor/index.js +27 -0
- package/dist/components/EmailEditor/index.js.map +1 -0
- package/dist/components/FieldHistory/index.cjs +34 -0
- package/dist/components/FieldHistory/index.cjs.map +1 -0
- package/dist/components/FieldHistory/index.d.cts +66 -0
- package/dist/components/FieldHistory/index.d.ts +66 -0
- package/dist/components/FieldHistory/index.js +21 -0
- package/dist/components/FieldHistory/index.js.map +1 -0
- package/dist/components/FloatingWindow/index.cjs +6 -4
- package/dist/components/FloatingWindow/index.js +4 -2
- package/dist/components/GanttView/index.d.cts +1 -2
- package/dist/components/GanttView/index.d.ts +1 -2
- package/dist/components/GlossaryTooltip/index.cjs +3 -3
- package/dist/components/GlossaryTooltip/index.js +2 -2
- package/dist/components/InlineEdit/index.cjs +20 -0
- package/dist/components/InlineEdit/index.cjs.map +1 -0
- package/dist/components/InlineEdit/index.d.cts +56 -0
- package/dist/components/InlineEdit/index.d.ts +56 -0
- package/dist/components/InlineEdit/index.js +7 -0
- package/dist/components/InlineEdit/index.js.map +1 -0
- package/dist/components/KeyboardShortcutsOverlay/index.cjs +5 -5
- package/dist/components/KeyboardShortcutsOverlay/index.js +3 -3
- package/dist/components/ListView/index.cjs +6 -4
- package/dist/components/ListView/index.d.cts +91 -4
- package/dist/components/ListView/index.d.ts +91 -4
- package/dist/components/ListView/index.js +4 -2
- package/dist/components/LogoUploader/index.cjs +18 -0
- package/dist/components/LogoUploader/index.cjs.map +1 -0
- package/dist/components/LogoUploader/index.d.cts +49 -0
- package/dist/components/LogoUploader/index.d.ts +49 -0
- package/dist/components/LogoUploader/index.js +5 -0
- package/dist/components/LogoUploader/index.js.map +1 -0
- package/dist/components/Markdown/index.cjs +21 -19
- package/dist/components/Markdown/index.js +9 -7
- package/dist/components/MediaEditor/index.cjs +16 -14
- package/dist/components/MediaEditor/index.d.cts +91 -2
- package/dist/components/MediaEditor/index.d.ts +91 -2
- package/dist/components/MediaEditor/index.js +11 -9
- package/dist/components/MediaFeed/index.cjs +29 -0
- package/dist/components/MediaFeed/index.cjs.map +1 -0
- package/dist/components/MediaFeed/index.d.cts +104 -0
- package/dist/components/MediaFeed/index.d.ts +104 -0
- package/dist/components/MediaFeed/index.js +20 -0
- package/dist/components/MediaFeed/index.js.map +1 -0
- package/dist/components/MediaPlayer/index.cjs +8 -6
- package/dist/components/MediaPlayer/index.d.cts +19 -1
- package/dist/components/MediaPlayer/index.d.ts +19 -1
- package/dist/components/MediaPlayer/index.js +5 -3
- package/dist/components/MegaMenu/index.cjs +7 -5
- package/dist/components/MegaMenu/index.js +4 -2
- package/dist/components/Modal/index.cjs +10 -10
- package/dist/components/Modal/index.js +2 -2
- package/dist/components/Pagination/index.d.cts +1 -1
- package/dist/components/Pagination/index.d.ts +1 -1
- package/dist/components/PhiMask/index.cjs +18 -0
- package/dist/components/PhiMask/index.cjs.map +1 -0
- package/dist/components/PhiMask/index.d.cts +45 -0
- package/dist/components/PhiMask/index.d.ts +45 -0
- package/dist/components/PhiMask/index.js +5 -0
- package/dist/components/PhiMask/index.js.map +1 -0
- package/dist/components/Progress/index.cjs +6 -6
- package/dist/components/Progress/index.d.cts +8 -2
- package/dist/components/Progress/index.d.ts +8 -2
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/PropertyList/index.cjs +25 -0
- package/dist/components/PropertyList/index.cjs.map +1 -0
- package/dist/components/PropertyList/index.d.cts +87 -0
- package/dist/components/PropertyList/index.d.ts +87 -0
- package/dist/components/PropertyList/index.js +12 -0
- package/dist/components/PropertyList/index.js.map +1 -0
- package/dist/components/Q/index.d.cts +2 -2
- package/dist/components/Q/index.d.ts +2 -2
- package/dist/components/QuickAction/index.d.cts +1 -1
- package/dist/components/QuickAction/index.d.ts +1 -1
- package/dist/components/RadialExplorer/index.cjs +7 -5
- package/dist/components/RadialExplorer/index.js +6 -4
- package/dist/components/Rating/index.cjs +28 -0
- package/dist/components/Rating/index.cjs.map +1 -0
- package/dist/components/Rating/index.d.cts +85 -0
- package/dist/components/Rating/index.d.ts +85 -0
- package/dist/components/Rating/index.js +7 -0
- package/dist/components/Rating/index.js.map +1 -0
- package/dist/components/RecordButton/index.d.cts +1 -1
- package/dist/components/RecordButton/index.d.ts +1 -1
- package/dist/components/RecordHeader/index.cjs +30 -0
- package/dist/components/RecordHeader/index.cjs.map +1 -0
- package/dist/components/RecordHeader/index.d.cts +96 -0
- package/dist/components/RecordHeader/index.d.ts +96 -0
- package/dist/components/RecordHeader/index.js +17 -0
- package/dist/components/RecordHeader/index.js.map +1 -0
- package/dist/components/RecordLayout/index.cjs +22 -0
- package/dist/components/RecordLayout/index.cjs.map +1 -0
- package/dist/components/RecordLayout/index.d.cts +40 -0
- package/dist/components/RecordLayout/index.d.ts +40 -0
- package/dist/components/RecordLayout/index.js +9 -0
- package/dist/components/RecordLayout/index.js.map +1 -0
- package/dist/components/RichTextEditor/index.cjs +12 -8
- package/dist/components/RichTextEditor/index.d.cts +12 -2
- package/dist/components/RichTextEditor/index.d.ts +12 -2
- package/dist/components/RichTextEditor/index.js +9 -5
- package/dist/components/ScrollArea/index.d.cts +1 -1
- package/dist/components/ScrollArea/index.d.ts +1 -1
- package/dist/components/SectionSpyNav/index.cjs +5 -3
- package/dist/components/SectionSpyNav/index.js +4 -2
- package/dist/components/Select/index.cjs +4 -4
- package/dist/components/Select/index.d.cts +2 -2
- package/dist/components/Select/index.d.ts +2 -2
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Skeleton/index.d.cts +1 -1
- package/dist/components/Skeleton/index.d.ts +1 -1
- package/dist/components/Slider/index.d.cts +2 -2
- package/dist/components/Slider/index.d.ts +2 -2
- package/dist/components/SliderCalculator/index.cjs +4 -4
- package/dist/components/SliderCalculator/index.js +2 -2
- package/dist/components/SourceTip/index.cjs +3 -3
- package/dist/components/SourceTip/index.js +2 -2
- package/dist/components/Spinner/index.d.cts +2 -2
- package/dist/components/Spinner/index.d.ts +2 -2
- package/dist/components/SuperChat/index.cjs +735 -322
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.d.cts +126 -8
- package/dist/components/SuperChat/index.d.ts +126 -8
- package/dist/components/SuperChat/index.js +721 -308
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +8 -6
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
- package/dist/components/SuperChat/plugins/index.d.cts +2 -3
- package/dist/components/SuperChat/plugins/index.d.ts +2 -3
- package/dist/components/SuperChat/plugins/index.js +7 -5
- package/dist/components/SuperChat/plugins/index.js.map +1 -1
- package/dist/components/Tabs/index.cjs +10 -7
- package/dist/components/Tabs/index.d.cts +12 -1
- package/dist/components/Tabs/index.d.ts +12 -1
- package/dist/components/Tabs/index.js +4 -1
- package/dist/components/TagEditor/index.cjs +22 -0
- package/dist/components/TagEditor/index.cjs.map +1 -0
- package/dist/components/TagEditor/index.d.cts +46 -0
- package/dist/components/TagEditor/index.d.ts +46 -0
- package/dist/components/TagEditor/index.js +9 -0
- package/dist/components/TagEditor/index.js.map +1 -0
- package/dist/components/Text/index.d.cts +3 -3
- package/dist/components/Text/index.d.ts +3 -3
- package/dist/components/Textarea/index.d.cts +2 -2
- package/dist/components/Textarea/index.d.ts +2 -2
- package/dist/components/ThemeProvider/index.cjs +9 -9
- package/dist/components/ThemeProvider/index.d.cts +3 -1
- package/dist/components/ThemeProvider/index.d.ts +3 -1
- package/dist/components/ThemeProvider/index.js +3 -3
- package/dist/components/Tooltip/index.cjs +3 -3
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/TranscriptView/index.d.cts +85 -4
- package/dist/components/TranscriptView/index.d.ts +85 -4
- package/dist/components/UserPicker/index.cjs +24 -0
- package/dist/components/UserPicker/index.cjs.map +1 -0
- package/dist/components/UserPicker/index.d.cts +60 -0
- package/dist/components/UserPicker/index.d.ts +60 -0
- package/dist/components/UserPicker/index.js +11 -0
- package/dist/components/UserPicker/index.js.map +1 -0
- package/dist/components/VideoCard/index.cjs +4 -4
- package/dist/components/VideoCard/index.js +2 -2
- package/dist/components/ViewSet/index.cjs +10 -7
- package/dist/components/ViewSet/index.d.cts +120 -8
- package/dist/components/ViewSet/index.d.ts +120 -8
- package/dist/components/ViewSet/index.js +9 -6
- package/dist/components/ViewSwitcher/index.cjs +4 -3
- package/dist/components/ViewSwitcher/index.d.cts +1 -2
- package/dist/components/ViewSwitcher/index.d.ts +1 -2
- package/dist/components/ViewSwitcher/index.js +2 -1
- package/dist/components/YearTimeline/index.cjs +5 -5
- package/dist/components/YearTimeline/index.js +1 -1
- package/dist/datavis.cjs +6 -4
- package/dist/datavis.cjs.map +1 -1
- package/dist/datavis.d.cts +167 -13
- package/dist/datavis.d.ts +167 -13
- package/dist/datavis.js +4 -2
- package/dist/datavis.js.map +1 -1
- package/dist/deck.cjs +3374 -0
- package/dist/deck.cjs.map +1 -0
- package/dist/deck.d.cts +712 -0
- package/dist/deck.d.ts +712 -0
- package/dist/deck.js +3330 -0
- package/dist/deck.js.map +1 -0
- package/dist/esheet.cjs +20 -16
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.d.cts +183 -1
- package/dist/esheet.d.ts +183 -1
- package/dist/esheet.js +17 -13
- package/dist/esheet.js.map +1 -1
- package/dist/globe.cjs +2 -2
- package/dist/globe.js +1 -1
- package/dist/{hey-buddy-INNUFFJJ.cjs → hey-buddy-5WOBYZRJ.cjs} +22 -11
- package/dist/hey-buddy-5WOBYZRJ.cjs.map +1 -0
- package/dist/{hey-buddy-V6FC5UKB.js → hey-buddy-AHUHCDBC.js} +22 -11
- package/dist/hey-buddy-AHUHCDBC.js.map +1 -0
- package/dist/hooks/index.cjs +88 -33
- package/dist/hooks/index.d.cts +592 -36
- package/dist/hooks/index.d.ts +592 -36
- package/dist/hooks/index.js +9 -6
- package/dist/icons-wBacj6BW.d.cts +142 -0
- package/dist/icons-wBacj6BW.d.ts +142 -0
- package/dist/index.cjs +2056 -1349
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10401 -637
- package/dist/index.d.ts +10401 -637
- package/dist/index.js +674 -352
- package/dist/index.js.map +1 -1
- package/dist/kerebron.css +115 -0
- package/dist/maps.cjs +160 -0
- package/dist/maps.cjs.map +1 -0
- package/dist/maps.d.cts +42 -0
- package/dist/maps.d.ts +42 -0
- package/dist/maps.js +138 -0
- package/dist/maps.js.map +1 -0
- package/dist/motion.cjs +7 -7
- package/dist/motion.d.cts +186 -2
- package/dist/motion.d.ts +186 -2
- package/dist/motion.js +2 -2
- package/dist/org-chart.cjs +1303 -0
- package/dist/org-chart.cjs.map +1 -0
- package/dist/org-chart.d.cts +164 -0
- package/dist/org-chart.d.ts +164 -0
- package/dist/org-chart.js +1278 -0
- package/dist/org-chart.js.map +1 -0
- package/dist/q.d.cts +25 -3
- package/dist/q.d.ts +25 -3
- package/dist/styles/effects.css +133 -0
- package/dist/styles/init.css +22 -3
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/templates.cjs +156 -0
- package/dist/templates.cjs.map +1 -0
- package/dist/templates.d.cts +734 -0
- package/dist/templates.d.ts +734 -0
- package/dist/templates.js +11 -0
- package/dist/templates.js.map +1 -0
- package/dist/{types-CbWXIKbe.d.cts → types-CDeBNZiE.d.cts} +1 -28
- package/dist/{types-CbWXIKbe.d.ts → types-CDeBNZiE.d.ts} +1 -28
- package/dist/types-Cx1FHLq2.d.cts +548 -0
- package/dist/types-Cx1FHLq2.d.ts +548 -0
- package/dist/types-DsdZvEI1.d.cts +92 -0
- package/dist/types-DsdZvEI1.d.ts +92 -0
- package/dist/utils/index.cjs +9 -9
- package/dist/utils/index.d.cts +13 -2
- package/dist/utils/index.d.ts +13 -2
- package/dist/utils/index.js +1 -1
- package/package.json +79 -15
- package/dist/Animated-XmH6k8pZ.d.cts +0 -188
- package/dist/Animated-XmH6k8pZ.d.ts +0 -188
- package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
- package/dist/CsvBlock-UWPMTLE2.js +0 -7
- package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
- package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
- package/dist/MedicationEditor-Bp4NLy7y.d.cts +0 -352
- package/dist/MedicationEditor-Bp4NLy7y.d.ts +0 -352
- package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
- package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
- package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
- package/dist/SurveyBlock-4DO62RBT.js +0 -7
- package/dist/chunk-2IZLKPUW.js.map +0 -1
- package/dist/chunk-3T7QGLNB.js.map +0 -1
- package/dist/chunk-4A3W4TQF.js.map +0 -1
- package/dist/chunk-4IS3QCOQ.cjs.map +0 -1
- package/dist/chunk-5GUOOLPR.cjs.map +0 -1
- package/dist/chunk-5JJ2DAE4.js.map +0 -1
- package/dist/chunk-6EN3IQQI.cjs.map +0 -1
- package/dist/chunk-6HFFWEM3.cjs +0 -22
- package/dist/chunk-6HFFWEM3.cjs.map +0 -1
- package/dist/chunk-7ZDPD5ZX.cjs.map +0 -1
- package/dist/chunk-7ZVTLTJF.js +0 -109
- package/dist/chunk-7ZVTLTJF.js.map +0 -1
- package/dist/chunk-ACCAXVOG.js.map +0 -1
- package/dist/chunk-AR7AKDM2.cjs +0 -143
- package/dist/chunk-AR7AKDM2.cjs.map +0 -1
- package/dist/chunk-ASSDGS4F.cjs.map +0 -1
- package/dist/chunk-AWJBOND5.js +0 -130
- package/dist/chunk-AWJBOND5.js.map +0 -1
- package/dist/chunk-BMSG4NBH.js +0 -56
- package/dist/chunk-BMSG4NBH.js.map +0 -1
- package/dist/chunk-CEQJGUAS.js.map +0 -1
- package/dist/chunk-CR2SDI23.cjs.map +0 -1
- package/dist/chunk-DVOQ3JNO.js.map +0 -1
- package/dist/chunk-E4IBHYJ7.cjs +0 -80
- package/dist/chunk-E4IBHYJ7.cjs.map +0 -1
- package/dist/chunk-FS4VZUFV.cjs.map +0 -1
- package/dist/chunk-GD7EBGC4.cjs.map +0 -1
- package/dist/chunk-GOALNQZ2.js.map +0 -1
- package/dist/chunk-HACNIFO3.js.map +0 -1
- package/dist/chunk-HB7C7NB5.js +0 -20
- package/dist/chunk-HB7C7NB5.js.map +0 -1
- package/dist/chunk-HZ4MBUC3.js.map +0 -1
- package/dist/chunk-IT775BYG.js.map +0 -1
- package/dist/chunk-JEIW7BSV.cjs.map +0 -1
- package/dist/chunk-JYZW2PZS.cjs.map +0 -1
- package/dist/chunk-KQUI4BGS.cjs.map +0 -1
- package/dist/chunk-KRU6IGV7.js.map +0 -1
- package/dist/chunk-NV2CWBI2.cjs.map +0 -1
- package/dist/chunk-OE5CKRUC.js.map +0 -1
- package/dist/chunk-P2CA3XGI.js.map +0 -1
- package/dist/chunk-P7UMS4E6.cjs.map +0 -1
- package/dist/chunk-SGFYA22I.cjs.map +0 -1
- package/dist/chunk-SQHMGT4W.js.map +0 -1
- package/dist/chunk-SQJFBZ42.js.map +0 -1
- package/dist/chunk-SVSHA7XV.js.map +0 -1
- package/dist/chunk-TVTIGV7Q.js.map +0 -1
- package/dist/chunk-VKELAMAZ.js.map +0 -1
- package/dist/chunk-VNYW4C4J.cjs.map +0 -1
- package/dist/chunk-VOKVG3ER.js +0 -78
- package/dist/chunk-VOKVG3ER.js.map +0 -1
- package/dist/chunk-VPIYTQCV.cjs.map +0 -1
- package/dist/chunk-VPWJCJCX.cjs.map +0 -1
- package/dist/chunk-VROIMIHB.cjs.map +0 -1
- package/dist/chunk-WNJRS7Y7.cjs.map +0 -1
- package/dist/chunk-X4LBUPJO.cjs.map +0 -1
- package/dist/chunk-X4XPNTCZ.cjs.map +0 -1
- package/dist/chunk-XCP454Q6.js.map +0 -1
- package/dist/chunk-XDIMTPZU.cjs.map +0 -1
- package/dist/chunk-XEAT7XJG.cjs.map +0 -1
- package/dist/chunk-XVW5DPPP.js.map +0 -1
- package/dist/chunk-Y5HFM7LO.js.map +0 -1
- package/dist/chunk-YVL3XATO.cjs +0 -79
- package/dist/chunk-YVL3XATO.cjs.map +0 -1
- package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
- package/dist/chunk-ZGRCSNPK.js.map +0 -1
- package/dist/hey-buddy-INNUFFJJ.cjs.map +0 -1
- package/dist/hey-buddy-V6FC5UKB.js.map +0 -1
- package/dist/html-MdxqSzjD.d.cts +0 -13
- package/dist/html-MdxqSzjD.d.ts +0 -13
- package/dist/orderRows-BUJYgSc7.d.cts +0 -221
- package/dist/orderRows-BUJYgSc7.d.ts +0 -221
- package/dist/transcript-Cg7uSW-C.d.cts +0 -84
- package/dist/transcript-Cg7uSW-C.d.ts +0 -84
- package/dist/types-B97JNRNQ.d.cts +0 -251
- package/dist/types-CnPEwzlp.d.cts +0 -254
- package/dist/types-CnPEwzlp.d.ts +0 -254
- package/dist/types-gZXrfLj6.d.ts +0 -251
- package/dist/useAnchoredPosition-CKwLSQW8.d.cts +0 -76
- package/dist/useAnchoredPosition-CKwLSQW8.d.ts +0 -76
- package/dist/useTheme-B9SWu6ui.d.cts +0 -24
- package/dist/useTheme-B9SWu6ui.d.ts +0 -24
- package/dist/useTranscriptEdits-CGzlemHT.d.cts +0 -182
- package/dist/useTranscriptEdits-D32bLs0l.d.ts +0 -182
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk47P5QLX4_cjs = require('./chunk-47P5QLX4.cjs');
|
|
4
|
+
var chunkIWRBJHO3_cjs = require('./chunk-IWRBJHO3.cjs');
|
|
5
|
+
var chunk7IRTD4JT_cjs = require('./chunk-7IRTD4JT.cjs');
|
|
6
|
+
var chunk2I4IRQQG_cjs = require('./chunk-2I4IRQQG.cjs');
|
|
7
|
+
var chunk7AECNMYV_cjs = require('./chunk-7AECNMYV.cjs');
|
|
8
|
+
var chunkGKDHMNUA_cjs = require('./chunk-GKDHMNUA.cjs');
|
|
9
|
+
var chunk4NCDU5IG_cjs = require('./chunk-4NCDU5IG.cjs');
|
|
10
|
+
var chunk7E46YDOT_cjs = require('./chunk-7E46YDOT.cjs');
|
|
11
|
+
var chunkANMX7YDL_cjs = require('./chunk-ANMX7YDL.cjs');
|
|
12
|
+
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
13
|
+
var React = require('react');
|
|
14
|
+
var luxon = require('luxon');
|
|
15
|
+
var lucideReact = require('lucide-react');
|
|
16
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
17
|
+
|
|
18
|
+
function _interopNamespace(e) {
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
20
|
+
var n = Object.create(null);
|
|
21
|
+
if (e) {
|
|
22
|
+
Object.keys(e).forEach(function (k) {
|
|
23
|
+
if (k !== 'default') {
|
|
24
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
25
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () { return e[k]; }
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
n.default = e;
|
|
33
|
+
return Object.freeze(n);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
37
|
+
|
|
38
|
+
var defaultActionPlanLabels = {
|
|
39
|
+
title: "Action plan",
|
|
40
|
+
progress: (done, total) => `${done} of ${total} complete`,
|
|
41
|
+
overdue: "Overdue",
|
|
42
|
+
todo: "To do",
|
|
43
|
+
inProgress: "In progress",
|
|
44
|
+
done: "Done",
|
|
45
|
+
addStep: "Add step",
|
|
46
|
+
loading: "Loading plan",
|
|
47
|
+
empty: "No steps yet",
|
|
48
|
+
error: "Could not load this plan",
|
|
49
|
+
retry: "Try again"
|
|
50
|
+
};
|
|
51
|
+
var STATUS_ORDER = ["in_progress", "todo", "done"];
|
|
52
|
+
var SUB_HEADING = { h2: "h3", h3: "h4", h4: "h5" };
|
|
53
|
+
var ActionPlan = React__namespace.forwardRef(
|
|
54
|
+
({
|
|
55
|
+
items,
|
|
56
|
+
title,
|
|
57
|
+
loading = false,
|
|
58
|
+
error = null,
|
|
59
|
+
onRetry,
|
|
60
|
+
arrange = "manual",
|
|
61
|
+
now,
|
|
62
|
+
locale,
|
|
63
|
+
timeZone = "local",
|
|
64
|
+
onStatusChange,
|
|
65
|
+
onAdd,
|
|
66
|
+
onOpen,
|
|
67
|
+
getHref,
|
|
68
|
+
renderStepMeta,
|
|
69
|
+
emptyState,
|
|
70
|
+
labels,
|
|
71
|
+
classNames,
|
|
72
|
+
headingLevel: Heading = "h3",
|
|
73
|
+
className,
|
|
74
|
+
...rest
|
|
75
|
+
}, ref) => {
|
|
76
|
+
const text = { ...defaultActionPlanLabels, ...labels };
|
|
77
|
+
const baseId = React__namespace.useId();
|
|
78
|
+
const [overrides, runStatus] = chunkIWRBJHO3_cjs.usePendingOverrides();
|
|
79
|
+
const today = (now ? luxon.DateTime.fromJSDate(now) : luxon.DateTime.now()).setZone(timeZone).startOf("day");
|
|
80
|
+
const statusOf = (step) => overrides.get(step.id) ?? step.status;
|
|
81
|
+
const statusLabel = {
|
|
82
|
+
todo: text.todo,
|
|
83
|
+
in_progress: text.inProgress,
|
|
84
|
+
done: text.done
|
|
85
|
+
};
|
|
86
|
+
const done = items.filter((s) => statusOf(s) === "done").length;
|
|
87
|
+
const dueOf = (step) => chunk4NCDU5IG_cjs.toDateTime(step.dueDate, timeZone);
|
|
88
|
+
const renderStep = (step) => {
|
|
89
|
+
const status = statusOf(step);
|
|
90
|
+
const pending = overrides.has(step.id);
|
|
91
|
+
const due = dueOf(step);
|
|
92
|
+
const overdue = status !== "done" && due !== null && due.startOf("day") < today;
|
|
93
|
+
const titleId = `${baseId}-step-${items.indexOf(step)}`;
|
|
94
|
+
const href = getHref?.(step.id, step);
|
|
95
|
+
const titleClasses = chunkS5RVSXDV_cjs.cn(
|
|
96
|
+
"text-sm font-medium",
|
|
97
|
+
status === "done" ? "text-muted-foreground line-through" : "text-foreground"
|
|
98
|
+
);
|
|
99
|
+
const focusRing = "rounded-sm hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
|
|
100
|
+
let titleNode = /* @__PURE__ */ jsxRuntime.jsx("span", { id: titleId, className: titleClasses, children: step.title });
|
|
101
|
+
if (href) {
|
|
102
|
+
titleNode = /* @__PURE__ */ jsxRuntime.jsx(
|
|
103
|
+
"a",
|
|
104
|
+
{
|
|
105
|
+
id: titleId,
|
|
106
|
+
href,
|
|
107
|
+
className: chunkS5RVSXDV_cjs.cn(titleClasses, focusRing),
|
|
108
|
+
onClick: (event) => {
|
|
109
|
+
if (!onOpen || event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0)
|
|
110
|
+
return;
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
onOpen(step.id, step);
|
|
113
|
+
},
|
|
114
|
+
children: step.title
|
|
115
|
+
}
|
|
116
|
+
);
|
|
117
|
+
} else if (onOpen) {
|
|
118
|
+
titleNode = /* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
+
"button",
|
|
120
|
+
{
|
|
121
|
+
id: titleId,
|
|
122
|
+
type: "button",
|
|
123
|
+
className: chunkS5RVSXDV_cjs.cn(titleClasses, focusRing, "text-start"),
|
|
124
|
+
onClick: () => onOpen(step.id, step),
|
|
125
|
+
children: step.title
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
130
|
+
"li",
|
|
131
|
+
{
|
|
132
|
+
"data-slot": "action-plan-step",
|
|
133
|
+
"data-overdue": overdue || void 0,
|
|
134
|
+
"aria-busy": pending || void 0,
|
|
135
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
136
|
+
"flex items-start gap-3 px-4 py-3",
|
|
137
|
+
overdue && chunk4NCDU5IG_cjs.accentClasses.destructive.tint,
|
|
138
|
+
classNames?.step,
|
|
139
|
+
overdue && classNames?.overdueStep
|
|
140
|
+
),
|
|
141
|
+
children: [
|
|
142
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
143
|
+
chunk7AECNMYV_cjs.Checkbox,
|
|
144
|
+
{
|
|
145
|
+
size: "sm",
|
|
146
|
+
className: "mt-0.5",
|
|
147
|
+
checked: status === "done",
|
|
148
|
+
disabled: !onStatusChange || pending,
|
|
149
|
+
"aria-labelledby": titleId,
|
|
150
|
+
onChange: (event) => {
|
|
151
|
+
if (!onStatusChange) return;
|
|
152
|
+
const next = event.currentTarget.checked ? "done" : "todo";
|
|
153
|
+
void runStatus(
|
|
154
|
+
step.id,
|
|
155
|
+
next,
|
|
156
|
+
() => onStatusChange(step.id, next)
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
162
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
163
|
+
titleNode,
|
|
164
|
+
status === "in_progress" && /* @__PURE__ */ jsxRuntime.jsx(chunk7E46YDOT_cjs.Badge, { size: "sm", variant: "secondary", children: text.inProgress }),
|
|
165
|
+
overdue && /* @__PURE__ */ jsxRuntime.jsx(chunk7E46YDOT_cjs.Badge, { size: "sm", variant: "danger", children: text.overdue })
|
|
166
|
+
] }),
|
|
167
|
+
(step.owner || due) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-muted-foreground mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs", children: [
|
|
168
|
+
step.owner && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
169
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
170
|
+
chunkGKDHMNUA_cjs.Avatar,
|
|
171
|
+
{
|
|
172
|
+
size: "xs",
|
|
173
|
+
name: step.owner.name,
|
|
174
|
+
src: step.owner.avatarUrl,
|
|
175
|
+
alt: "",
|
|
176
|
+
"aria-hidden": true
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
step.owner.name
|
|
180
|
+
] }),
|
|
181
|
+
due && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
182
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarClock, { className: "size-3.5", "aria-hidden": true }),
|
|
183
|
+
/* @__PURE__ */ jsxRuntime.jsx("time", { dateTime: step.dueDate, children: chunk47P5QLX4_cjs.withLocale(due, locale).toLocaleString(
|
|
184
|
+
luxon.DateTime.DATE_MED
|
|
185
|
+
) })
|
|
186
|
+
] }),
|
|
187
|
+
renderStepMeta?.(step)
|
|
188
|
+
] }),
|
|
189
|
+
step.note && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: step.note })
|
|
190
|
+
] })
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
step.id
|
|
194
|
+
);
|
|
195
|
+
};
|
|
196
|
+
let body;
|
|
197
|
+
if (error) {
|
|
198
|
+
body = /* @__PURE__ */ jsxRuntime.jsx(
|
|
199
|
+
chunk7IRTD4JT_cjs.RecordState,
|
|
200
|
+
{
|
|
201
|
+
kind: "error",
|
|
202
|
+
slot: "action-plan-state",
|
|
203
|
+
message: text.error,
|
|
204
|
+
retryLabel: text.retry,
|
|
205
|
+
onRetry,
|
|
206
|
+
className: classNames?.state
|
|
207
|
+
}
|
|
208
|
+
);
|
|
209
|
+
} else if (loading) {
|
|
210
|
+
body = /* @__PURE__ */ jsxRuntime.jsx(
|
|
211
|
+
chunk7IRTD4JT_cjs.RecordState,
|
|
212
|
+
{
|
|
213
|
+
kind: "loading",
|
|
214
|
+
slot: "action-plan-state",
|
|
215
|
+
message: text.loading,
|
|
216
|
+
className: classNames?.state
|
|
217
|
+
}
|
|
218
|
+
);
|
|
219
|
+
} else if (items.length === 0) {
|
|
220
|
+
body = emptyState ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
221
|
+
chunk7IRTD4JT_cjs.RecordState,
|
|
222
|
+
{
|
|
223
|
+
kind: "empty",
|
|
224
|
+
slot: "action-plan-state",
|
|
225
|
+
message: text.empty,
|
|
226
|
+
className: classNames?.state
|
|
227
|
+
}
|
|
228
|
+
);
|
|
229
|
+
} else if (arrange === "status") {
|
|
230
|
+
const SubHeading = SUB_HEADING[Heading];
|
|
231
|
+
body = STATUS_ORDER.map((status) => {
|
|
232
|
+
const group = items.filter((s) => statusOf(s) === status);
|
|
233
|
+
if (group.length === 0) return null;
|
|
234
|
+
const groupId = `${baseId}-group-${status}`;
|
|
235
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
236
|
+
"section",
|
|
237
|
+
{
|
|
238
|
+
"aria-labelledby": groupId,
|
|
239
|
+
"data-slot": "action-plan-group",
|
|
240
|
+
className: classNames?.group,
|
|
241
|
+
children: [
|
|
242
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
243
|
+
SubHeading,
|
|
244
|
+
{
|
|
245
|
+
id: groupId,
|
|
246
|
+
className: "border-border bg-muted text-muted-foreground flex items-center justify-between border-y px-4 py-1.5 text-xs font-semibold tracking-wide uppercase",
|
|
247
|
+
children: [
|
|
248
|
+
statusLabel[status],
|
|
249
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-normal tabular-nums", children: group.length })
|
|
250
|
+
]
|
|
251
|
+
}
|
|
252
|
+
),
|
|
253
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "divide-border divide-y", children: group.map(renderStep) })
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
status
|
|
257
|
+
);
|
|
258
|
+
});
|
|
259
|
+
} else {
|
|
260
|
+
const ordered = arrange === "dueDate" ? [...items].sort(
|
|
261
|
+
(a, b) => (dueOf(a)?.toMillis() ?? Infinity) - (dueOf(b)?.toMillis() ?? Infinity) || 0
|
|
262
|
+
) : items;
|
|
263
|
+
body = /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "divide-border divide-y", children: ordered.map(renderStep) });
|
|
264
|
+
}
|
|
265
|
+
const headingId = `${baseId}-title`;
|
|
266
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
267
|
+
"section",
|
|
268
|
+
{
|
|
269
|
+
ref,
|
|
270
|
+
"aria-labelledby": headingId,
|
|
271
|
+
"data-slot": "action-plan",
|
|
272
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
273
|
+
"border-border bg-card overflow-hidden rounded-lg border",
|
|
274
|
+
className
|
|
275
|
+
),
|
|
276
|
+
...rest,
|
|
277
|
+
children: [
|
|
278
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
279
|
+
"div",
|
|
280
|
+
{
|
|
281
|
+
"data-slot": "action-plan-header",
|
|
282
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
283
|
+
"border-border space-y-3 border-b px-4 py-3",
|
|
284
|
+
classNames?.header
|
|
285
|
+
),
|
|
286
|
+
children: [
|
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
288
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
289
|
+
Heading,
|
|
290
|
+
{
|
|
291
|
+
id: headingId,
|
|
292
|
+
className: "text-foreground min-w-0 flex-1 truncate text-sm font-semibold",
|
|
293
|
+
children: title ?? text.title
|
|
294
|
+
}
|
|
295
|
+
),
|
|
296
|
+
onAdd && /* @__PURE__ */ jsxRuntime.jsx(
|
|
297
|
+
chunkANMX7YDL_cjs.Button,
|
|
298
|
+
{
|
|
299
|
+
variant: "ghost",
|
|
300
|
+
size: "sm",
|
|
301
|
+
onClick: onAdd,
|
|
302
|
+
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4", "aria-hidden": true }),
|
|
303
|
+
children: text.addStep
|
|
304
|
+
}
|
|
305
|
+
)
|
|
306
|
+
] }),
|
|
307
|
+
!loading && !error && items.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
308
|
+
"div",
|
|
309
|
+
{
|
|
310
|
+
"data-slot": "action-plan-progress",
|
|
311
|
+
className: classNames?.progress,
|
|
312
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
313
|
+
chunk2I4IRQQG_cjs.Progress,
|
|
314
|
+
{
|
|
315
|
+
size: "sm",
|
|
316
|
+
value: done,
|
|
317
|
+
max: items.length,
|
|
318
|
+
label: text.progress(done, items.length)
|
|
319
|
+
}
|
|
320
|
+
)
|
|
321
|
+
}
|
|
322
|
+
)
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
),
|
|
326
|
+
body
|
|
327
|
+
]
|
|
328
|
+
}
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
);
|
|
332
|
+
ActionPlan.displayName = "ActionPlan";
|
|
333
|
+
|
|
334
|
+
exports.ActionPlan = ActionPlan;
|
|
335
|
+
exports.defaultActionPlanLabels = defaultActionPlanLabels;
|
|
336
|
+
//# sourceMappingURL=chunk-H3P7POFC.cjs.map
|
|
337
|
+
//# sourceMappingURL=chunk-H3P7POFC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ActionPlan/ActionPlan.tsx"],"names":["React","usePendingOverrides","DateTime","toDateTime","cn","jsx","jsxs","accentClasses","Checkbox","Badge","Avatar","CalendarClock","withLocale","RecordState","Button","Plus","Progress"],"mappings":"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","file":"chunk-H3P7POFC.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { DateTime } from 'luxon';\nimport { CalendarClock, Plus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from '../Avatar';\nimport { Badge } from '../Badge';\nimport { Button } from '../Button';\nimport { Checkbox } from '../Checkbox';\nimport { Progress } from '../Progress';\nimport { accentClasses, toDateTime } from '../../views/types';\nimport { withLocale } from '../ActivityFeed/dayGroups';\nimport { RecordState } from '../ActivityFeed/RecordState';\nimport { usePendingOverrides } from '../ActivityFeed/usePendingOverrides';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ActionPlanStepStatus = 'todo' | 'in_progress' | 'done';\n\nexport interface ActionPlanOwner {\n name: string;\n avatarUrl?: string;\n}\n\nexport interface ActionPlanStep {\n id: string;\n title: string;\n owner?: ActionPlanOwner;\n /** ISO date or date-time. Date-only values are wall dates in `timeZone`. */\n dueDate?: string;\n status: ActionPlanStepStatus;\n note?: string;\n}\n\nexport interface ActionPlanLabels {\n title: string;\n progress: (done: number, total: number) => string;\n overdue: string;\n todo: string;\n inProgress: string;\n done: string;\n addStep: string;\n loading: string;\n empty: string;\n error: string;\n retry: string;\n}\n\nexport const defaultActionPlanLabels: ActionPlanLabels = {\n title: 'Action plan',\n progress: (done, total) => `${done} of ${total} complete`,\n overdue: 'Overdue',\n todo: 'To do',\n inProgress: 'In progress',\n done: 'Done',\n addStep: 'Add step',\n loading: 'Loading plan',\n empty: 'No steps yet',\n error: 'Could not load this plan',\n retry: 'Try again',\n};\n\nexport type ActionPlanSlot =\n | 'header'\n | 'progress'\n | 'group'\n | 'step'\n | 'overdueStep'\n | 'state';\n\nexport type ActionPlanArrange = 'manual' | 'dueDate' | 'status';\n\nexport interface ActionPlanProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n 'children' | 'title'\n> {\n items: ActionPlanStep[];\n /** Card heading. Defaults to `labels.title`. */\n title?: string;\n loading?: boolean;\n error?: Error | null;\n onRetry?: () => void;\n /** `manual` keeps `items` order; `dueDate` sorts soonest first; `status` groups by status. */\n arrange?: ActionPlanArrange;\n /** Reference for overdue checks. Defaults to the current time. */\n now?: Date;\n locale?: string;\n /** IANA zone for due dates. Defaults to local. */\n timeZone?: string;\n /** The checkbox shows the new status at once and restores it on rejection. */\n onStatusChange?: (\n id: string,\n status: ActionPlanStepStatus\n ) => void | Promise<void>;\n onAdd?: () => void;\n onOpen?: (id: string, step: ActionPlanStep) => void;\n getHref?: (id: string, step: ActionPlanStep) => string;\n /** Extra content on a step's meta line. */\n renderStepMeta?: (step: ActionPlanStep) => React.ReactNode;\n emptyState?: React.ReactNode;\n labels?: Partial<ActionPlanLabels>;\n classNames?: Partial<Record<ActionPlanSlot, string>>;\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\nconst STATUS_ORDER: ActionPlanStepStatus[] = ['in_progress', 'todo', 'done'];\nconst SUB_HEADING = { h2: 'h3', h3: 'h4', h4: 'h5' } as const;\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * A shared checklist with progress and due dates. Declared\n * `parameters.catalog.collection` — its load states are part of the API.\n */\nexport const ActionPlan = React.forwardRef<HTMLElement, ActionPlanProps>(\n (\n {\n items,\n title,\n loading = false,\n error = null,\n onRetry,\n arrange = 'manual',\n now,\n locale,\n timeZone = 'local',\n onStatusChange,\n onAdd,\n onOpen,\n getHref,\n renderStepMeta,\n emptyState,\n labels,\n classNames,\n headingLevel: Heading = 'h3',\n className,\n ...rest\n },\n ref\n ) => {\n const text = { ...defaultActionPlanLabels, ...labels };\n const baseId = React.useId();\n const [overrides, runStatus] = usePendingOverrides<ActionPlanStepStatus>();\n const today = (now ? DateTime.fromJSDate(now) : DateTime.now())\n .setZone(timeZone)\n .startOf('day');\n\n const statusOf = (step: ActionPlanStep) =>\n overrides.get(step.id) ?? step.status;\n const statusLabel: Record<ActionPlanStepStatus, string> = {\n todo: text.todo,\n in_progress: text.inProgress,\n done: text.done,\n };\n const done = items.filter((s) => statusOf(s) === 'done').length;\n\n const dueOf = (step: ActionPlanStep) => toDateTime(step.dueDate, timeZone);\n\n const renderStep = (step: ActionPlanStep) => {\n const status = statusOf(step);\n const pending = overrides.has(step.id);\n const due = dueOf(step);\n const overdue =\n status !== 'done' && due !== null && due.startOf('day') < today;\n // Position, not the caller's id: ids with spaces would break aria-labelledby.\n const titleId = `${baseId}-step-${items.indexOf(step)}`;\n const href = getHref?.(step.id, step);\n const titleClasses = cn(\n 'text-sm font-medium',\n status === 'done'\n ? 'text-muted-foreground line-through'\n : 'text-foreground'\n );\n const focusRing =\n 'rounded-sm hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';\n\n let titleNode: React.ReactNode = (\n <span id={titleId} className={titleClasses}>\n {step.title}\n </span>\n );\n if (href) {\n titleNode = (\n <a\n id={titleId}\n href={href}\n className={cn(titleClasses, focusRing)}\n onClick={(event) => {\n if (\n !onOpen ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.button !== 0\n )\n return;\n event.preventDefault();\n onOpen(step.id, step);\n }}\n >\n {step.title}\n </a>\n );\n } else if (onOpen) {\n titleNode = (\n <button\n id={titleId}\n type=\"button\"\n className={cn(titleClasses, focusRing, 'text-start')}\n onClick={() => onOpen(step.id, step)}\n >\n {step.title}\n </button>\n );\n }\n\n return (\n <li\n key={step.id}\n data-slot=\"action-plan-step\"\n data-overdue={overdue || undefined}\n aria-busy={pending || undefined}\n className={cn(\n 'flex items-start gap-3 px-4 py-3',\n overdue && accentClasses.destructive.tint,\n classNames?.step,\n overdue && classNames?.overdueStep\n )}\n >\n <Checkbox\n size=\"sm\"\n className=\"mt-0.5\"\n checked={status === 'done'}\n disabled={!onStatusChange || pending}\n aria-labelledby={titleId}\n onChange={(event) => {\n if (!onStatusChange) return;\n const next = event.currentTarget.checked ? 'done' : 'todo';\n void runStatus(step.id, next, () =>\n onStatusChange(step.id, next)\n );\n }}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {titleNode}\n {status === 'in_progress' && (\n <Badge size=\"sm\" variant=\"secondary\">\n {text.inProgress}\n </Badge>\n )}\n {overdue && (\n <Badge size=\"sm\" variant=\"danger\">\n {text.overdue}\n </Badge>\n )}\n </div>\n {(step.owner || due) && (\n <div className=\"text-muted-foreground mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs\">\n {step.owner && (\n <span className=\"inline-flex items-center gap-1.5\">\n <Avatar\n size=\"xs\"\n name={step.owner.name}\n src={step.owner.avatarUrl}\n alt=\"\"\n aria-hidden\n />\n {step.owner.name}\n </span>\n )}\n {due && (\n <span className=\"inline-flex items-center gap-1\">\n <CalendarClock className=\"size-3.5\" aria-hidden />\n <time dateTime={step.dueDate}>\n {withLocale(due, locale).toLocaleString(\n DateTime.DATE_MED\n )}\n </time>\n </span>\n )}\n {renderStepMeta?.(step)}\n </div>\n )}\n {step.note && (\n <p className=\"text-muted-foreground mt-1 text-sm\">{step.note}</p>\n )}\n </div>\n </li>\n );\n };\n\n let body: React.ReactNode;\n if (error) {\n body = (\n <RecordState\n kind=\"error\"\n slot=\"action-plan-state\"\n message={text.error}\n retryLabel={text.retry}\n onRetry={onRetry}\n className={classNames?.state}\n />\n );\n } else if (loading) {\n body = (\n <RecordState\n kind=\"loading\"\n slot=\"action-plan-state\"\n message={text.loading}\n className={classNames?.state}\n />\n );\n } else if (items.length === 0) {\n body = emptyState ?? (\n <RecordState\n kind=\"empty\"\n slot=\"action-plan-state\"\n message={text.empty}\n className={classNames?.state}\n />\n );\n } else if (arrange === 'status') {\n const SubHeading = SUB_HEADING[Heading];\n body = STATUS_ORDER.map((status) => {\n const group = items.filter((s) => statusOf(s) === status);\n if (group.length === 0) return null;\n const groupId = `${baseId}-group-${status}`;\n return (\n <section\n key={status}\n aria-labelledby={groupId}\n data-slot=\"action-plan-group\"\n className={classNames?.group}\n >\n <SubHeading\n id={groupId}\n className=\"border-border bg-muted text-muted-foreground flex items-center justify-between border-y px-4 py-1.5 text-xs font-semibold tracking-wide uppercase\"\n >\n {statusLabel[status]}\n <span className=\"font-normal tabular-nums\">{group.length}</span>\n </SubHeading>\n <ul className=\"divide-border divide-y\">{group.map(renderStep)}</ul>\n </section>\n );\n });\n } else {\n const ordered =\n arrange === 'dueDate'\n ? [...items].sort(\n (a, b) =>\n (dueOf(a)?.toMillis() ?? Infinity) -\n (dueOf(b)?.toMillis() ?? Infinity) || 0\n )\n : items;\n body = (\n <ul className=\"divide-border divide-y\">{ordered.map(renderStep)}</ul>\n );\n }\n\n const headingId = `${baseId}-title`;\n return (\n <section\n ref={ref}\n aria-labelledby={headingId}\n data-slot=\"action-plan\"\n className={cn(\n 'border-border bg-card overflow-hidden rounded-lg border',\n className\n )}\n {...rest}\n >\n <div\n data-slot=\"action-plan-header\"\n className={cn(\n 'border-border space-y-3 border-b px-4 py-3',\n classNames?.header\n )}\n >\n <div className=\"flex items-center gap-2\">\n <Heading\n id={headingId}\n className=\"text-foreground min-w-0 flex-1 truncate text-sm font-semibold\"\n >\n {title ?? text.title}\n </Heading>\n {onAdd && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onAdd}\n leftIcon={<Plus className=\"size-4\" aria-hidden />}\n >\n {text.addStep}\n </Button>\n )}\n </div>\n {!loading && !error && items.length > 0 && (\n <div\n data-slot=\"action-plan-progress\"\n className={classNames?.progress}\n >\n <Progress\n size=\"sm\"\n value={done}\n max={items.length}\n label={text.progress(done, items.length)}\n />\n </div>\n )}\n </div>\n {body}\n </section>\n );\n }\n);\n\nActionPlan.displayName = 'ActionPlan';\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk2O7D6F67_cjs = require('./chunk-2O7D6F67.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkJSXIB6EJ_cjs = require('./chunk-JSXIB6EJ.cjs');
|
|
5
5
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -222,7 +222,7 @@ var ThemeToggle = React__namespace.forwardRef(
|
|
|
222
222
|
);
|
|
223
223
|
if (showTooltip) {
|
|
224
224
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
225
|
-
|
|
225
|
+
chunkJSXIB6EJ_cjs.Tooltip,
|
|
226
226
|
{
|
|
227
227
|
content: label,
|
|
228
228
|
placement: tooltipPlacement,
|
|
@@ -242,5 +242,5 @@ exports.ThemeToggle = ThemeToggle;
|
|
|
242
242
|
exports.themeToggleIconVariants = themeToggleIconVariants;
|
|
243
243
|
exports.themeToggleVariants = themeToggleVariants;
|
|
244
244
|
exports.useThemeContext = useThemeContext;
|
|
245
|
-
//# sourceMappingURL=chunk-
|
|
246
|
-
//# sourceMappingURL=chunk-
|
|
245
|
+
//# sourceMappingURL=chunk-H3ROMJYI.cjs.map
|
|
246
|
+
//# sourceMappingURL=chunk-H3ROMJYI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/ThemeProvider/ThemeToggle.tsx"],"names":["React","useTheme","jsx","cva","React2","cn","Tooltip"],"mappings":"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","file":"chunk-JID7AZTO.cjs","sourcesContent":["import * as React from 'react';\nimport { useTheme, type Theme, type ResolvedTheme } from '../../hooks/useTheme';\n\nexport interface ThemeProviderContextValue {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: ResolvedTheme;\n}\n\nconst ThemeProviderContext = React.createContext<\n ThemeProviderContextValue | undefined\n>(undefined);\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n /** Default theme to use on first load */\n defaultTheme?: Theme;\n /** Storage key for persisting theme */\n storageKey?: string;\n}\n\n/**\n * Provider component that wraps your app to enable theme switching.\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <ThemeProvider defaultTheme=\"system\">\n * <YourApp />\n * </ThemeProvider>\n * );\n * }\n * ```\n */\nfunction ThemeProvider({\n children,\n defaultTheme: _defaultTheme = 'system',\n}: ThemeProviderProps) {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const value = React.useMemo(\n () => ({ theme, setTheme, resolvedTheme }),\n [theme, setTheme, resolvedTheme]\n );\n\n return (\n <ThemeProviderContext.Provider value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n}\n\nThemeProvider.displayName = 'ThemeProvider';\n\n/**\n * Hook to access the theme context.\n *\n * @example\n * ```tsx\n * function ThemeToggle() {\n * const { theme, setTheme, resolvedTheme } = useThemeContext();\n * return (\n * <button onClick={() => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}>\n * Toggle theme\n * </button>\n * );\n * }\n * ```\n */\nfunction useThemeContext(): ThemeProviderContextValue {\n const context = React.useContext(ThemeProviderContext);\n if (!context) {\n throw new Error('useThemeContext must be used within a ThemeProvider');\n }\n return context;\n}\n\nexport { ThemeProvider, ThemeProviderContext, useThemeContext };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { useTheme, type Theme } from '../../hooks/useTheme';\nimport { Tooltip } from '../Tooltip';\n\n// ============================================================================\n// Theme Toggle Variants\n// ============================================================================\n\nconst themeToggleVariants = cva(\n [\n 'inline-flex items-center justify-center',\n 'rounded-md border transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-primary-500/40',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n md: 'h-8 w-8',\n lg: 'h-9 w-9',\n },\n variant: {\n default: [\n 'border-neutral-300 bg-white text-neutral-600 shadow-sm',\n 'hover:bg-neutral-100',\n 'dark:border-neutral-600 dark:bg-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-700',\n ],\n ghost: [\n 'border-transparent bg-transparent text-neutral-600',\n 'hover:bg-neutral-100',\n 'dark:text-neutral-300 dark:hover:bg-neutral-700',\n ],\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n },\n }\n);\n\nconst themeToggleIconVariants = cva('', {\n variants: {\n size: {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ============================================================================\n// Icon Components\n// ============================================================================\n\ninterface IconProps {\n className?: string;\n}\n\nconst SunIcon: React.FC<IconProps> = ({ className }) => (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\n />\n </svg>\n);\n\nconst MoonIcon: React.FC<IconProps> = ({ className }) => (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n);\n\nconst SystemIcon: React.FC<IconProps> = ({ className }) => (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n />\n </svg>\n);\n\n// ============================================================================\n// Three-way cycle (single source of truth)\n// ============================================================================\n\n/** The three-way cycle order: light → dark → system → light. Click handler,\n * tooltip label, and default icon are all derived from this one map. */\nconst THREE_WAY_NEXT: Record<Theme, Theme> = {\n light: 'dark',\n dark: 'system',\n system: 'light',\n};\n\nconst THEME_LABELS: Record<Theme, string> = {\n light: 'Switch to light mode',\n dark: 'Switch to dark mode',\n system: 'Switch to system theme',\n};\n\n// ============================================================================\n// ThemeToggle Component\n// ============================================================================\n\nexport interface ThemeToggleProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n VariantProps<typeof themeToggleVariants> {\n /**\n * What themes to cycle through.\n * - 'two-way': Toggle between light and dark only\n * - 'three-way': Cycle through light → dark → system\n * @default 'two-way'\n */\n mode?: 'two-way' | 'three-way';\n /**\n * Whether to show a tooltip with the current/next theme\n * @default true\n */\n showTooltip?: boolean;\n /**\n * Tooltip placement\n * @default 'bottom'\n */\n tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left';\n /**\n * Delay before showing tooltip in ms\n * @default 140\n */\n tooltipDelay?: number;\n /**\n * Custom icon for light theme\n */\n lightIcon?: React.ReactNode;\n /**\n * Custom icon for dark theme\n */\n darkIcon?: React.ReactNode;\n /**\n * Custom icon for system theme (only used in three-way mode)\n */\n systemIcon?: React.ReactNode;\n}\n\n/**\n * An accessible theme toggle button that switches between light/dark modes.\n *\n * Uses the mieweb-ui useTheme hook for state management and persists\n * the user's preference to localStorage.\n *\n * @example\n * ```tsx\n * // Simple two-way toggle (light/dark)\n * <ThemeToggle />\n *\n * // Three-way cycle (light → dark → system)\n * <ThemeToggle mode=\"three-way\" />\n *\n * // With custom styling\n * <ThemeToggle size=\"lg\" variant=\"ghost\" />\n *\n * // Without tooltip\n * <ThemeToggle showTooltip={false} />\n * ```\n */\nconst ThemeToggle = React.forwardRef<HTMLButtonElement, ThemeToggleProps>(\n (\n {\n className,\n size,\n variant,\n mode = 'two-way',\n showTooltip = true,\n tooltipPlacement = 'bottom',\n tooltipDelay = 140,\n lightIcon,\n darkIcon,\n systemIcon,\n ...props\n },\n ref\n ) => {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const handleClick = React.useCallback(() => {\n if (mode === 'two-way') {\n // Simple toggle between light and dark\n setTheme(resolvedTheme === 'dark' ? 'light' : 'dark');\n } else {\n setTheme(THREE_WAY_NEXT[theme]);\n }\n }, [mode, theme, resolvedTheme, setTheme]);\n\n const getLabel = () => {\n if (mode === 'two-way') {\n return resolvedTheme === 'dark'\n ? 'Switch to light mode'\n : 'Switch to dark mode';\n }\n // Three-way mode - name the next stop in the cycle\n return THEME_LABELS[THREE_WAY_NEXT[theme]];\n };\n\n const getCurrentIcon = () => {\n const iconClass = themeToggleIconVariants({ size });\n if (mode === 'three-way') {\n // The DEFAULT icon previews the next theme in the cycle, matching the\n // tooltip (previously dark showed a sun while the click gave system,\n // and system showed the current state instead of the next). The\n // lightIcon/darkIcon/systemIcon overrides are keyed by the CURRENT\n // theme — they replace the icon shown while in that theme.\n const override = {\n light: lightIcon,\n dark: darkIcon,\n system: systemIcon,\n }[theme];\n if (override) return override;\n const defaultIcons: Record<Theme, React.ReactNode> = {\n light: <SunIcon className={iconClass} />,\n dark: <MoonIcon className={iconClass} />,\n system: <SystemIcon className={iconClass} />,\n };\n return defaultIcons[THREE_WAY_NEXT[theme]];\n }\n\n // Two-way keeps the classic convention: sun while dark (\"click for\n // light\"), moon while light (\"click for dark\").\n if (resolvedTheme === 'dark') {\n return darkIcon || <SunIcon className={iconClass} />;\n }\n\n return lightIcon || <MoonIcon className={iconClass} />;\n };\n\n const label = getLabel();\n\n const button = (\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n onClick={handleClick}\n className={cn(themeToggleVariants({ size, variant }), className)}\n {...props}\n >\n {getCurrentIcon()}\n </button>\n );\n\n if (showTooltip) {\n return (\n <Tooltip\n content={label}\n placement={tooltipPlacement}\n delay={tooltipDelay}\n >\n {button}\n </Tooltip>\n );\n }\n\n return button;\n }\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n\nexport { ThemeToggle, themeToggleVariants, themeToggleIconVariants };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/ThemeProvider/ThemeToggle.tsx"],"names":["React","useTheme","jsx","cva","React2","cn","Tooltip"],"mappings":"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","file":"chunk-H3ROMJYI.cjs","sourcesContent":["import * as React from 'react';\nimport { useTheme, type Theme, type ResolvedTheme } from '../../hooks/useTheme';\n\nexport interface ThemeProviderContextValue {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: ResolvedTheme;\n}\n\nconst ThemeProviderContext = React.createContext<\n ThemeProviderContextValue | undefined\n>(undefined);\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n /** Default theme to use on first load */\n defaultTheme?: Theme;\n /** Storage key for persisting theme */\n storageKey?: string;\n}\n\n/**\n * Provider component that wraps your app to enable theme switching.\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <ThemeProvider defaultTheme=\"system\">\n * <YourApp />\n * </ThemeProvider>\n * );\n * }\n * ```\n */\nfunction ThemeProvider({\n children,\n defaultTheme: _defaultTheme = 'system',\n}: ThemeProviderProps) {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const value = React.useMemo(\n () => ({ theme, setTheme, resolvedTheme }),\n [theme, setTheme, resolvedTheme]\n );\n\n return (\n <ThemeProviderContext.Provider value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n}\n\nThemeProvider.displayName = 'ThemeProvider';\n\n/**\n * Hook to access the theme context.\n *\n * @example\n * ```tsx\n * function ThemeToggle() {\n * const { theme, setTheme, resolvedTheme } = useThemeContext();\n * return (\n * <button onClick={() => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}>\n * Toggle theme\n * </button>\n * );\n * }\n * ```\n */\nfunction useThemeContext(): ThemeProviderContextValue {\n const context = React.useContext(ThemeProviderContext);\n if (!context) {\n throw new Error('useThemeContext must be used within a ThemeProvider');\n }\n return context;\n}\n\nexport { ThemeProvider, ThemeProviderContext, useThemeContext };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { useTheme, type Theme } from '../../hooks/useTheme';\nimport { Tooltip } from '../Tooltip';\n\n// ============================================================================\n// Theme Toggle Variants\n// ============================================================================\n\nconst themeToggleVariants = cva(\n [\n 'inline-flex items-center justify-center',\n 'rounded-md border transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-primary-500/40',\n ],\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n md: 'h-8 w-8',\n lg: 'h-9 w-9',\n },\n variant: {\n default: [\n 'border-neutral-300 bg-white text-neutral-600 shadow-sm',\n 'hover:bg-neutral-100',\n 'dark:border-neutral-600 dark:bg-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-700',\n ],\n ghost: [\n 'border-transparent bg-transparent text-neutral-600',\n 'hover:bg-neutral-100',\n 'dark:text-neutral-300 dark:hover:bg-neutral-700',\n ],\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n },\n }\n);\n\nconst themeToggleIconVariants = cva('', {\n variants: {\n size: {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ============================================================================\n// Icon Components\n// ============================================================================\n\ninterface IconProps {\n className?: string;\n}\n\nconst SunIcon: React.FC<IconProps> = ({ className }) => (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\n />\n </svg>\n);\n\nconst MoonIcon: React.FC<IconProps> = ({ className }) => (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n);\n\nconst SystemIcon: React.FC<IconProps> = ({ className }) => (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n />\n </svg>\n);\n\n// ============================================================================\n// Three-way cycle (single source of truth)\n// ============================================================================\n\n/** The three-way cycle order: light → dark → system → light. Click handler,\n * tooltip label, and default icon are all derived from this one map. */\nconst THREE_WAY_NEXT: Record<Theme, Theme> = {\n light: 'dark',\n dark: 'system',\n system: 'light',\n};\n\nconst THEME_LABELS: Record<Theme, string> = {\n light: 'Switch to light mode',\n dark: 'Switch to dark mode',\n system: 'Switch to system theme',\n};\n\n// ============================================================================\n// ThemeToggle Component\n// ============================================================================\n\nexport interface ThemeToggleProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n VariantProps<typeof themeToggleVariants> {\n /**\n * What themes to cycle through.\n * - 'two-way': Toggle between light and dark only\n * - 'three-way': Cycle through light → dark → system\n * @default 'two-way'\n */\n mode?: 'two-way' | 'three-way';\n /**\n * Whether to show a tooltip with the current/next theme\n * @default true\n */\n showTooltip?: boolean;\n /**\n * Tooltip placement\n * @default 'bottom'\n */\n tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left';\n /**\n * Delay before showing tooltip in ms\n * @default 140\n */\n tooltipDelay?: number;\n /**\n * Custom icon for light theme\n */\n lightIcon?: React.ReactNode;\n /**\n * Custom icon for dark theme\n */\n darkIcon?: React.ReactNode;\n /**\n * Custom icon for system theme (only used in three-way mode)\n */\n systemIcon?: React.ReactNode;\n}\n\n/**\n * An accessible theme toggle button that switches between light/dark modes.\n *\n * Uses the mieweb-ui useTheme hook for state management and persists\n * the user's preference to localStorage.\n *\n * @example\n * ```tsx\n * // Simple two-way toggle (light/dark)\n * <ThemeToggle />\n *\n * // Three-way cycle (light → dark → system)\n * <ThemeToggle mode=\"three-way\" />\n *\n * // With custom styling\n * <ThemeToggle size=\"lg\" variant=\"ghost\" />\n *\n * // Without tooltip\n * <ThemeToggle showTooltip={false} />\n * ```\n */\nconst ThemeToggle = React.forwardRef<HTMLButtonElement, ThemeToggleProps>(\n (\n {\n className,\n size,\n variant,\n mode = 'two-way',\n showTooltip = true,\n tooltipPlacement = 'bottom',\n tooltipDelay = 140,\n lightIcon,\n darkIcon,\n systemIcon,\n ...props\n },\n ref\n ) => {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const handleClick = React.useCallback(() => {\n if (mode === 'two-way') {\n // Simple toggle between light and dark\n setTheme(resolvedTheme === 'dark' ? 'light' : 'dark');\n } else {\n setTheme(THREE_WAY_NEXT[theme]);\n }\n }, [mode, theme, resolvedTheme, setTheme]);\n\n const getLabel = () => {\n if (mode === 'two-way') {\n return resolvedTheme === 'dark'\n ? 'Switch to light mode'\n : 'Switch to dark mode';\n }\n // Three-way mode - name the next stop in the cycle\n return THEME_LABELS[THREE_WAY_NEXT[theme]];\n };\n\n const getCurrentIcon = () => {\n const iconClass = themeToggleIconVariants({ size });\n if (mode === 'three-way') {\n // The DEFAULT icon previews the next theme in the cycle, matching the\n // tooltip (previously dark showed a sun while the click gave system,\n // and system showed the current state instead of the next). The\n // lightIcon/darkIcon/systemIcon overrides are keyed by the CURRENT\n // theme — they replace the icon shown while in that theme.\n const override = {\n light: lightIcon,\n dark: darkIcon,\n system: systemIcon,\n }[theme];\n if (override) return override;\n const defaultIcons: Record<Theme, React.ReactNode> = {\n light: <SunIcon className={iconClass} />,\n dark: <MoonIcon className={iconClass} />,\n system: <SystemIcon className={iconClass} />,\n };\n return defaultIcons[THREE_WAY_NEXT[theme]];\n }\n\n // Two-way keeps the classic convention: sun while dark (\"click for\n // light\"), moon while light (\"click for dark\").\n if (resolvedTheme === 'dark') {\n return darkIcon || <SunIcon className={iconClass} />;\n }\n\n return lightIcon || <MoonIcon className={iconClass} />;\n };\n\n const label = getLabel();\n\n const button = (\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n onClick={handleClick}\n className={cn(themeToggleVariants({ size, variant }), className)}\n {...props}\n >\n {getCurrentIcon()}\n </button>\n );\n\n if (showTooltip) {\n return (\n <Tooltip\n content={label}\n placement={tooltipPlacement}\n delay={tooltipDelay}\n >\n {button}\n </Tooltip>\n );\n }\n\n return button;\n }\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n\nexport { ThemeToggle, themeToggleVariants, themeToggleIconVariants };\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkIXFC7LK2_cjs = require('./chunk-IXFC7LK2.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunk7E46YDOT_cjs = require('./chunk-7E46YDOT.cjs');
|
|
5
5
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
6
6
|
var lucideReact = require('lucide-react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -130,7 +130,7 @@ function VideoCard({
|
|
|
130
130
|
}
|
|
131
131
|
),
|
|
132
132
|
pill && !playing && /* @__PURE__ */ jsxRuntime.jsx(
|
|
133
|
-
|
|
133
|
+
chunk7E46YDOT_cjs.Badge,
|
|
134
134
|
{
|
|
135
135
|
"data-slot": "video-card-duration",
|
|
136
136
|
size: "sm",
|
|
@@ -195,5 +195,5 @@ function VideoCard({
|
|
|
195
195
|
|
|
196
196
|
exports.PlayButton = PlayButton;
|
|
197
197
|
exports.VideoCard = VideoCard;
|
|
198
|
-
//# sourceMappingURL=chunk-
|
|
199
|
-
//# sourceMappingURL=chunk-
|
|
198
|
+
//# sourceMappingURL=chunk-HCIXGFWR.cjs.map
|
|
199
|
+
//# sourceMappingURL=chunk-HCIXGFWR.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/VideoCard/VideoCard.tsx"],"names":["jsxs","cn","jsx","Play","useYouTubeHoverPreview","VolumeX","Badge"],"mappings":";;;;;;;;AAsBA,IAAM,SAAA,GAAY;AAAA,EAChB,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AACA,IAAM,YAAY,EAAE,EAAA,EAAI,WAAW,EAAA,EAAI,SAAA,EAAW,IAAI,SAAA,EAAU;AAOzD,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA,GAAO,IAAA;AAAA,EACP,IAAA,GAAO,OAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,uBACEA,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAWC,oBAAA;AAAA,QACT,kDAAA;AAAA,QACA,UAAU,IAAI,CAAA;AAAA,QACd;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,MAAA,oBACRC,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,oBAAA;AAAA,cACT,oFAAA;AAAA,cACA,qDAAA;AAAA,cACA,8KAAA;AAAA,cACA,sFAAA;AAAA,cACA,8FAAA;AAAA,cACA,oFAAA;AAAA,cACA,IAAA,KAAS,UACL,mEAAA,GACA;AAAA;AACN;AAAA,SACF;AAAA,wBAEFC,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,oBAAA;AAAA,cACT,yHAAA;AAAA,cACA,UAAU,IAAI;AAAA,aAChB;AAAA,YAEA,QAAA,kBAAAC,cAAA;AAAA,cAACC,gBAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAWF,oBAAA,CAAG,yBAAA,EAA2B,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,gBACxD,IAAA,EAAK;AAAA;AAAA;AACP;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AA6DO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA,GAAiB,OAAA;AAAA,EACjB,OAAA,GAAU,IAAA;AAAA,EACV,WAAA,GAAc,QAAA;AAAA,EACd,OAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,cAAc,OAAA,GAAU,IAAA;AAAA,EACxB;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,KAAA,GACJ,YAAA,KACC,SAAA,GACG,CAAA,uBAAA,EAA0B,SAAS,CAAA,cAAA,CAAA,GACnC,MAAA,CAAA;AAEN,EAAA,MAAM,QAAQG,wCAAA,CAAuB,SAAA,EAAW,EAAE,OAAA,EAAS,SAAS,CAAA;AACpE,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,KAAY,SAAA;AAElC,EAAA,MAAM,OACJ,QAAA,KAAa,cAAA,GAAiB,GAAG,cAAc,CAAA,MAAA,EAAM,QAAQ,CAAA,CAAA,GAAK,QAAA,CAAA;AAEpE,EAAA,MAAM,KAAA,mBACJJ,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAU,sDAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCE,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,KAAA;AAAA,YACL,KAAK,YAAA,IAAgB,KAAA;AAAA,YACrB,OAAA,EAAQ,MAAA;AAAA,YACR,QAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBAKFA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAK,KAAA,CAAM,OAAA;AAAA,YACX,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAWD,oBAAA;AAAA,cACT,qGAAA;AAAA,cACA,gGAAA;AAAA,cACA,UAAU,aAAA,GAAgB;AAAA;AAC5B;AAAA,SACF;AAAA,QAEC,OAAA,oBACCD,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6IAAA,EACd,QAAA,EAAA;AAAA,0BAAAE,cAAA,CAACG,mBAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,UAC/C;AAAA,SAAA,EACH,CAAA;AAAA,wBAGFH,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,oBAAA;AAAA,cACT,+HAAA;AAAA,cACA,OAAA,IAAW;AAAA,aACb;AAAA,YAEA,yCAAC,UAAA,EAAA,EAAW,IAAA,EAAM,OAAA,KAAY,OAAA,GAAU,OAAO,IAAA,EAAM;AAAA;AAAA,SACvD;AAAA,QAEC,IAAA,IAAQ,CAAC,OAAA,oBACRC,cAAA;AAAA,UAACI,uBAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,qBAAA;AAAA,YACV,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,uGAAA;AAAA,YAET,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAGD,MAAM,OAAA,KAAY,MAAA,oBACjBJ,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6CAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,mJAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,QAAA,GAAW,GAAA,EAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAI;AAAA,SAC5D,EACF;AAAA;AAAA;AAAA,GAEJ;AAKF,EAAA,MAAM,QAAA,GAAW,OAAO,OAAA,GAAU,MAAA;AAElC,EAAA,MAAM,IAAA,GAAO,YAAY,MAAA,oBACvBF,eAAA,CAAC,SAAI,WAAA,EAAU,iBAAA,EAAkB,WAAU,gBAAA,EACxC,QAAA,EAAA;AAAA,IAAA,OAAA,oBAAWE,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBACnEA,cAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,8HAAA,EACjB,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,IACC,WAAA,oBACCA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,mDACV,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,IAED,MAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAsC,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EAEhE,CAAA;AAGF,EAAA,MAAM,KAAA,GAAQD,oBAAA;AAAA,IACZ,mEAAA;AAAA,IACA,qGAAA;AAAA,IACA,OAAA,KAAY,SACR,wFAAA,GACA,sBAAA;AAAA,IACJ;AAAA,GACF;AAEA,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,cAAc,KAAA,CAAM,WAAA;AAAA,IACpB,cAAc,KAAA,CAAM,WAAA;AAAA,IACpB,SAAS,KAAA,CAAM,WAAA;AAAA,IACf,QAAQ,KAAA,CAAM,WAAA;AAAA,IACd,YAAA,EAAc,UAAU,KAAK,CAAA,CAAA;AAAA,IAC7B,WAAA,EAAa,YAAA;AAAA,IACb,gBAAgB,KAAA,CAAM;AAAA,GACxB;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACED,eAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,MAAA;AAAA,QACA,GAAA,EAAK,MAAA,KAAW,QAAA,GAAW,qBAAA,GAAwB,MAAA;AAAA,QACnD,OAAA;AAAA,QACA,SAAA,EAAW,KAAA;AAAA,QACV,GAAG,WAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACA,EAAA,uBACEA,eAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,SAAkB,SAAA,EAAW,KAAA,EAAQ,GAAG,WAAA,EAC3D,QAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAEJ","file":"chunk-462XSCP3.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Play, VolumeX } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Badge } from '../Badge';\nimport { useYouTubeHoverPreview } from '../../hooks/useYouTubeHoverPreview';\n\n// =============================================================================\n// PlayButton\n// =============================================================================\n\nexport interface PlayButtonProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Disc diameter. Default `md` (56px). */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Show the spinning brand ring. Default `hover` — the ring appears and spins\n * only while the nearest `.group` ancestor is hovered; `always` keeps it on.\n */\n ring?: 'hover' | 'always' | 'none';\n}\n\nconst DISC_SIZE = {\n sm: 'h-10 w-10',\n md: 'h-14 w-14',\n lg: 'h-20 w-20',\n} as const;\nconst ICON_SIZE = { sm: 'h-4 w-4', md: 'h-6 w-6', lg: 'h-8 w-8' } as const;\n\n/**\n * The branded play affordance: a white disc with a filled brand triangle and a\n * conic-gradient ring that lights up and spins on hover. Decorative — the\n * surrounding card/link carries the accessible label.\n */\nexport function PlayButton({\n size = 'md',\n ring = 'hover',\n className,\n ...props\n}: PlayButtonProps) {\n return (\n <span\n data-slot=\"play-button\"\n aria-hidden=\"true\"\n className={cn(\n 'relative inline-flex items-center justify-center',\n DISC_SIZE[size],\n className\n )}\n {...props}\n >\n {ring !== 'none' && (\n <span\n className={cn(\n 'pointer-events-none absolute -inset-2 rounded-full transition-opacity duration-300',\n 'motion-safe:animate-[mie-spin_1.4s_linear_infinite]',\n '[background:conic-gradient(from_0deg,transparent_0deg,var(--mieweb-primary-500)_90deg,var(--mieweb-primary-300)_240deg,var(--mieweb-primary-200)_320deg,transparent_360deg)]',\n '[mask:radial-gradient(farthest-side,transparent_calc(100%-4px),#000_calc(100%-4px))]',\n '[-webkit-mask:radial-gradient(farthest-side,transparent_calc(100%-4px),#000_calc(100%-4px))]',\n 'drop-shadow-[0_0_5px_color-mix(in_srgb,var(--mieweb-primary-400)_60%,transparent)]',\n ring === 'hover'\n ? 'opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100'\n : 'opacity-100'\n )}\n />\n )}\n <span\n className={cn(\n 'relative flex items-center justify-center rounded-full bg-white/90 shadow-lg transition-transform group-hover:scale-110',\n DISC_SIZE[size]\n )}\n >\n <Play\n // rtl-ignore -- optical centering of the play triangle, which points right in RTL media players too\n className={cn('text-primary-600 ml-0.5', ICON_SIZE[size])}\n fill=\"currentColor\"\n />\n </span>\n </span>\n );\n}\n\n// =============================================================================\n// VideoCard\n// =============================================================================\n\nexport interface VideoCardProps {\n /** Video title — also the accessible name (\"Watch: {title}\"). */\n title: string;\n /** Navigates on click. Omit to render a `<button>` driven by `onClick`. */\n href?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n /** Anchor target (e.g. `_blank`). */\n target?: string;\n /** Enables the muted hover preview and the default YouTube thumbnail. */\n youtubeId?: string;\n /** Thumbnail URL. Defaults to the YouTube `hqdefault` when `youtubeId` is set. */\n thumbnailUrl?: string;\n /** Thumbnail alt. Defaults to `title`. */\n thumbnailAlt?: string;\n /** Duration label, e.g. `34 min` or `2:44`. */\n duration?: string;\n /** Word before the duration in the pill. Default `Watch` → \"Watch · 34 min\". Pass `null` for just the duration. */\n durationPrefix?: string | null;\n /** Turn the hover preview off even when `youtubeId` is set. */\n preview?: boolean;\n /** Label shown on the pill while the muted preview plays. Default `Silent`. */\n silentLabel?: string;\n /** Slot above the title in the body — a category `Badge`, for instance. */\n eyebrow?: React.ReactNode;\n description?: string;\n /** Slot below the description — speaker, view count, date. */\n footer?: React.ReactNode;\n /**\n * `card` renders thumbnail + body; `plate` renders only the media plate\n * (for heroes and detail panels where the copy lives elsewhere).\n */\n variant?: 'card' | 'plate';\n /** Heading level for the title in `card` variant. Default `h3`. */\n headingLevel?: 'h2' | 'h3' | 'h4';\n className?: string;\n}\n\n/**\n * A video thumbnail card with the branded `PlayButton`, a \"Watch · 34 min\"\n * duration pill and — when a `youtubeId` is supplied — a muted, looping\n * hover preview with a progress bar, exactly as YouTube's own grid behaves.\n * Ported from the Enterprise Health video library and hero HUD.\n *\n * @example\n * ```tsx\n * <VideoCard\n * title=\"Ozwell AI in the exam room\"\n * href=\"/videos/ozwell-ai/\"\n * youtubeId=\"dQw4w9WgXcQ\"\n * duration=\"2:44\"\n * eyebrow={<Badge variant=\"secondary\" size=\"sm\">Demo</Badge>}\n * description=\"Documentation and surveillance, native to the platform.\"\n * />\n * ```\n */\nexport function VideoCard({\n title,\n href,\n onClick,\n target,\n youtubeId,\n thumbnailUrl,\n thumbnailAlt,\n duration,\n durationPrefix = 'Watch',\n preview = true,\n silentLabel = 'Silent',\n eyebrow,\n description,\n footer,\n variant = 'card',\n headingLevel: Heading = 'h3',\n className,\n}: VideoCardProps) {\n const thumb =\n thumbnailUrl ??\n (youtubeId\n ? `https://i.ytimg.com/vi/${youtubeId}/hqdefault.jpg`\n : undefined);\n\n const hover = useYouTubeHoverPreview(youtubeId, { enabled: preview });\n const playing = hover.preview === 'playing';\n\n const pill =\n duration && (durationPrefix ? `${durationPrefix} · ${duration}` : duration);\n\n const media = (\n <div\n data-slot=\"video-card-media\"\n className=\"bg-primary-950 relative aspect-video overflow-hidden\"\n >\n {thumb && (\n <img\n src={thumb}\n alt={thumbnailAlt ?? title}\n loading=\"lazy\"\n decoding=\"async\"\n className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n )}\n\n {/* Muted preview player — fades in once frames are flowing. pointer-events-none\n so clicks fall through to the card. */}\n <div\n ref={hover.hostRef}\n aria-hidden=\"true\"\n className={cn(\n 'bg-primary-950 pointer-events-none absolute inset-0 overflow-hidden transition-opacity duration-500',\n '[&_iframe]:absolute [&_iframe]:inset-0 [&_iframe]:h-full [&_iframe]:w-full [&_iframe]:border-0',\n playing ? 'opacity-100' : 'opacity-0'\n )}\n />\n\n {playing && (\n <span className=\"absolute start-2 top-2 inline-flex items-center gap-1 rounded bg-black/55 px-1.5 py-0.5 text-[11px] font-medium text-white backdrop-blur-sm\">\n <VolumeX className=\"h-3 w-3\" aria-hidden=\"true\" />\n {silentLabel}\n </span>\n )}\n\n <div\n className={cn(\n 'bg-primary-950/20 group-hover:bg-primary-950/30 absolute inset-0 flex items-center justify-center transition-all duration-300',\n playing && 'opacity-0'\n )}\n >\n <PlayButton size={variant === 'plate' ? 'lg' : 'md'} />\n </div>\n\n {pill && !playing && (\n <Badge\n data-slot=\"video-card-duration\"\n size=\"sm\"\n className=\"absolute end-2 bottom-2 bg-black/60 py-1 text-white backdrop-blur-sm dark:bg-black/60 dark:text-white\"\n >\n {pill}\n </Badge>\n )}\n\n {hover.preview !== 'idle' && (\n <div className=\"absolute inset-x-0 bottom-0 h-1 bg-white/20\">\n <div\n className=\"h-full rounded-e-full bg-[linear-gradient(90deg,var(--mieweb-primary-500),var(--mieweb-primary-300))] transition-[width] duration-200 ease-linear\"\n style={{ width: `${Math.max(hover.progress * 100, 1.5)}%` }}\n />\n </div>\n )}\n </div>\n );\n\n // A real heading is only valid in the link variant — `<button>` accepts\n // phrasing content only, so the button variant gets a styled block span.\n const TitleTag = href ? Heading : 'span';\n\n const body = variant === 'card' && (\n <div data-slot=\"video-card-body\" className=\"p-4 text-start\">\n {eyebrow && <div className=\"mb-2 flex items-center gap-2\">{eyebrow}</div>}\n <TitleTag className=\"text-foreground group-hover:text-primary-700 dark:group-hover:text-primary-300 block text-lg font-semibold transition-colors\">\n {title}\n </TitleTag>\n {description && (\n <p className=\"text-muted-foreground mt-1 line-clamp-2 text-sm\">\n {description}\n </p>\n )}\n {footer && (\n <div className=\"text-muted-foreground mt-2 text-sm\">{footer}</div>\n )}\n </div>\n );\n\n const shell = cn(\n 'group block w-full overflow-hidden no-underline transition-shadow',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n variant === 'card'\n ? 'rounded-xl border border-border bg-card text-card-foreground shadow-md hover:shadow-lg'\n : 'rounded-xl shadow-lg',\n className\n );\n\n const interaction = {\n onMouseEnter: hover.handleEnter,\n onMouseLeave: hover.stopPreview,\n onFocus: hover.handleEnter,\n onBlur: hover.stopPreview,\n 'aria-label': `Watch: ${title}`,\n 'data-slot': 'video-card',\n 'data-preview': hover.preview,\n };\n\n if (href) {\n return (\n <a\n href={href}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n onClick={onClick}\n className={shell}\n {...interaction}\n >\n {media}\n {body}\n </a>\n );\n }\n return (\n <button type=\"button\" onClick={onClick} className={shell} {...interaction}>\n {media}\n {body}\n </button>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/VideoCard/VideoCard.tsx"],"names":["jsxs","cn","jsx","Play","useYouTubeHoverPreview","VolumeX","Badge"],"mappings":"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","file":"chunk-HCIXGFWR.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Play, VolumeX } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Badge } from '../Badge';\nimport { useYouTubeHoverPreview } from '../../hooks/useYouTubeHoverPreview';\n\n// =============================================================================\n// PlayButton\n// =============================================================================\n\nexport interface PlayButtonProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Disc diameter. Default `md` (56px). */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Show the spinning brand ring. Default `hover` — the ring appears and spins\n * only while the nearest `.group` ancestor is hovered; `always` keeps it on.\n */\n ring?: 'hover' | 'always' | 'none';\n}\n\nconst DISC_SIZE = {\n sm: 'h-10 w-10',\n md: 'h-14 w-14',\n lg: 'h-20 w-20',\n} as const;\nconst ICON_SIZE = { sm: 'h-4 w-4', md: 'h-6 w-6', lg: 'h-8 w-8' } as const;\n\n/**\n * The branded play affordance: a white disc with a filled brand triangle and a\n * conic-gradient ring that lights up and spins on hover. Decorative — the\n * surrounding card/link carries the accessible label.\n */\nexport function PlayButton({\n size = 'md',\n ring = 'hover',\n className,\n ...props\n}: PlayButtonProps) {\n return (\n <span\n data-slot=\"play-button\"\n aria-hidden=\"true\"\n className={cn(\n 'relative inline-flex items-center justify-center',\n DISC_SIZE[size],\n className\n )}\n {...props}\n >\n {ring !== 'none' && (\n <span\n className={cn(\n 'pointer-events-none absolute -inset-2 rounded-full transition-opacity duration-300',\n 'motion-safe:animate-[mie-spin_1.4s_linear_infinite]',\n '[background:conic-gradient(from_0deg,transparent_0deg,var(--mieweb-primary-500)_90deg,var(--mieweb-primary-300)_240deg,var(--mieweb-primary-200)_320deg,transparent_360deg)]',\n '[mask:radial-gradient(farthest-side,transparent_calc(100%-4px),#000_calc(100%-4px))]',\n '[-webkit-mask:radial-gradient(farthest-side,transparent_calc(100%-4px),#000_calc(100%-4px))]',\n 'drop-shadow-[0_0_5px_color-mix(in_srgb,var(--mieweb-primary-400)_60%,transparent)]',\n ring === 'hover'\n ? 'opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100'\n : 'opacity-100'\n )}\n />\n )}\n <span\n className={cn(\n 'relative flex items-center justify-center rounded-full bg-white/90 shadow-lg transition-transform group-hover:scale-110',\n DISC_SIZE[size]\n )}\n >\n <Play\n // rtl-ignore -- optical centering of the play triangle, which points right in RTL media players too\n className={cn('text-primary-600 ml-0.5', ICON_SIZE[size])}\n fill=\"currentColor\"\n />\n </span>\n </span>\n );\n}\n\n// =============================================================================\n// VideoCard\n// =============================================================================\n\nexport interface VideoCardProps {\n /** Video title — also the accessible name (\"Watch: {title}\"). */\n title: string;\n /** Navigates on click. Omit to render a `<button>` driven by `onClick`. */\n href?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n /** Anchor target (e.g. `_blank`). */\n target?: string;\n /** Enables the muted hover preview and the default YouTube thumbnail. */\n youtubeId?: string;\n /** Thumbnail URL. Defaults to the YouTube `hqdefault` when `youtubeId` is set. */\n thumbnailUrl?: string;\n /** Thumbnail alt. Defaults to `title`. */\n thumbnailAlt?: string;\n /** Duration label, e.g. `34 min` or `2:44`. */\n duration?: string;\n /** Word before the duration in the pill. Default `Watch` → \"Watch · 34 min\". Pass `null` for just the duration. */\n durationPrefix?: string | null;\n /** Turn the hover preview off even when `youtubeId` is set. */\n preview?: boolean;\n /** Label shown on the pill while the muted preview plays. Default `Silent`. */\n silentLabel?: string;\n /** Slot above the title in the body — a category `Badge`, for instance. */\n eyebrow?: React.ReactNode;\n description?: string;\n /** Slot below the description — speaker, view count, date. */\n footer?: React.ReactNode;\n /**\n * `card` renders thumbnail + body; `plate` renders only the media plate\n * (for heroes and detail panels where the copy lives elsewhere).\n */\n variant?: 'card' | 'plate';\n /** Heading level for the title in `card` variant. Default `h3`. */\n headingLevel?: 'h2' | 'h3' | 'h4';\n className?: string;\n}\n\n/**\n * A video thumbnail card with the branded `PlayButton`, a \"Watch · 34 min\"\n * duration pill and — when a `youtubeId` is supplied — a muted, looping\n * hover preview with a progress bar, exactly as YouTube's own grid behaves.\n * Ported from the Enterprise Health video library and hero HUD.\n *\n * @example\n * ```tsx\n * <VideoCard\n * title=\"Ozwell AI in the exam room\"\n * href=\"/videos/ozwell-ai/\"\n * youtubeId=\"dQw4w9WgXcQ\"\n * duration=\"2:44\"\n * eyebrow={<Badge variant=\"secondary\" size=\"sm\">Demo</Badge>}\n * description=\"Documentation and surveillance, native to the platform.\"\n * />\n * ```\n */\nexport function VideoCard({\n title,\n href,\n onClick,\n target,\n youtubeId,\n thumbnailUrl,\n thumbnailAlt,\n duration,\n durationPrefix = 'Watch',\n preview = true,\n silentLabel = 'Silent',\n eyebrow,\n description,\n footer,\n variant = 'card',\n headingLevel: Heading = 'h3',\n className,\n}: VideoCardProps) {\n const thumb =\n thumbnailUrl ??\n (youtubeId\n ? `https://i.ytimg.com/vi/${youtubeId}/hqdefault.jpg`\n : undefined);\n\n const hover = useYouTubeHoverPreview(youtubeId, { enabled: preview });\n const playing = hover.preview === 'playing';\n\n const pill =\n duration && (durationPrefix ? `${durationPrefix} · ${duration}` : duration);\n\n const media = (\n <div\n data-slot=\"video-card-media\"\n className=\"bg-primary-950 relative aspect-video overflow-hidden\"\n >\n {thumb && (\n <img\n src={thumb}\n alt={thumbnailAlt ?? title}\n loading=\"lazy\"\n decoding=\"async\"\n className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n )}\n\n {/* Muted preview player — fades in once frames are flowing. pointer-events-none\n so clicks fall through to the card. */}\n <div\n ref={hover.hostRef}\n aria-hidden=\"true\"\n className={cn(\n 'bg-primary-950 pointer-events-none absolute inset-0 overflow-hidden transition-opacity duration-500',\n '[&_iframe]:absolute [&_iframe]:inset-0 [&_iframe]:h-full [&_iframe]:w-full [&_iframe]:border-0',\n playing ? 'opacity-100' : 'opacity-0'\n )}\n />\n\n {playing && (\n <span className=\"absolute start-2 top-2 inline-flex items-center gap-1 rounded bg-black/55 px-1.5 py-0.5 text-[11px] font-medium text-white backdrop-blur-sm\">\n <VolumeX className=\"h-3 w-3\" aria-hidden=\"true\" />\n {silentLabel}\n </span>\n )}\n\n <div\n className={cn(\n 'bg-primary-950/20 group-hover:bg-primary-950/30 absolute inset-0 flex items-center justify-center transition-all duration-300',\n playing && 'opacity-0'\n )}\n >\n <PlayButton size={variant === 'plate' ? 'lg' : 'md'} />\n </div>\n\n {pill && !playing && (\n <Badge\n data-slot=\"video-card-duration\"\n size=\"sm\"\n className=\"absolute end-2 bottom-2 bg-black/60 py-1 text-white backdrop-blur-sm dark:bg-black/60 dark:text-white\"\n >\n {pill}\n </Badge>\n )}\n\n {hover.preview !== 'idle' && (\n <div className=\"absolute inset-x-0 bottom-0 h-1 bg-white/20\">\n <div\n className=\"h-full rounded-e-full bg-[linear-gradient(90deg,var(--mieweb-primary-500),var(--mieweb-primary-300))] transition-[width] duration-200 ease-linear\"\n style={{ width: `${Math.max(hover.progress * 100, 1.5)}%` }}\n />\n </div>\n )}\n </div>\n );\n\n // A real heading is only valid in the link variant — `<button>` accepts\n // phrasing content only, so the button variant gets a styled block span.\n const TitleTag = href ? Heading : 'span';\n\n const body = variant === 'card' && (\n <div data-slot=\"video-card-body\" className=\"p-4 text-start\">\n {eyebrow && <div className=\"mb-2 flex items-center gap-2\">{eyebrow}</div>}\n <TitleTag className=\"text-foreground group-hover:text-primary-700 dark:group-hover:text-primary-300 block text-lg font-semibold transition-colors\">\n {title}\n </TitleTag>\n {description && (\n <p className=\"text-muted-foreground mt-1 line-clamp-2 text-sm\">\n {description}\n </p>\n )}\n {footer && (\n <div className=\"text-muted-foreground mt-2 text-sm\">{footer}</div>\n )}\n </div>\n );\n\n const shell = cn(\n 'group block w-full overflow-hidden no-underline transition-shadow',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n variant === 'card'\n ? 'rounded-xl border border-border bg-card text-card-foreground shadow-md hover:shadow-lg'\n : 'rounded-xl shadow-lg',\n className\n );\n\n const interaction = {\n onMouseEnter: hover.handleEnter,\n onMouseLeave: hover.stopPreview,\n onFocus: hover.handleEnter,\n onBlur: hover.stopPreview,\n 'aria-label': `Watch: ${title}`,\n 'data-slot': 'video-card',\n 'data-preview': hover.preview,\n };\n\n if (href) {\n return (\n <a\n href={href}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n onClick={onClick}\n className={shell}\n {...interaction}\n >\n {media}\n {body}\n </a>\n );\n }\n return (\n <button type=\"button\" onClick={onClick} className={shell} {...interaction}>\n {media}\n {body}\n </button>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-WFBUBT54.js';
|
|
2
2
|
import { Eye, Code, Check, ClipboardCopy } from 'lucide-react';
|
|
3
3
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -94,5 +94,5 @@ var FenceBlock = ({
|
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
export { FenceBlock };
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-HDY7YQFX.js.map
|
|
98
|
+
//# sourceMappingURL=chunk-HDY7YQFX.js.map
|