@mieweb/ui 0.10.0-dev.31 → 0.10.0-dev.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CsvBlock-CFXSDPBI.js +9 -0
- package/dist/{CsvBlock-VLMG7GUO.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
- package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
- package/dist/{CsvBlock-FX5YNGNE.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
- package/dist/{HtmlPreviewBlock-UO37JQ3K.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
- package/dist/{HtmlPreviewBlock-5JE7L3GR.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
- package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
- package/dist/{MermaidBlock-RZ75RPZA.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
- package/dist/MermaidBlock-XCAK7IA5.js +9 -0
- package/dist/{MermaidBlock-3XHFBAMV.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
- package/dist/SurveyBlock-KI5JOWCL.js +9 -0
- package/dist/{SurveyBlock-MUVJ3JUI.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
- package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
- package/dist/{SurveyBlock-VH47YXZC.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
- package/dist/brands/index.cjs +7 -7
- package/dist/brands/index.js +2 -2
- package/dist/{chunk-6ZPTZTKN.js → chunk-24AFHH4J.js} +3 -3
- package/dist/{chunk-6ZPTZTKN.js.map → chunk-24AFHH4J.js.map} +1 -1
- package/dist/{chunk-BNH4SXJB.js → chunk-2X54ZLT6.js} +6 -6
- package/dist/{chunk-BNH4SXJB.js.map → chunk-2X54ZLT6.js.map} +1 -1
- package/dist/{chunk-TYE5K5WV.cjs → chunk-32ZCJOSR.cjs} +4 -4
- package/dist/{chunk-TYE5K5WV.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
- package/dist/chunk-47P5QLX4.cjs +42 -0
- package/dist/chunk-47P5QLX4.cjs.map +1 -0
- package/dist/chunk-4ZB7RSMY.cjs +306 -0
- package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
- package/dist/chunk-56VTM4OX.js +261 -0
- package/dist/chunk-56VTM4OX.js.map +1 -0
- package/dist/{chunk-D22GE27K.js → chunk-5A4SL436.js} +4 -4
- package/dist/{chunk-D22GE27K.js.map → chunk-5A4SL436.js.map} +1 -1
- package/dist/chunk-6BNZLN4B.cjs +548 -0
- package/dist/chunk-6BNZLN4B.cjs.map +1 -0
- package/dist/chunk-6JSFT2J5.js +130 -0
- package/dist/chunk-6JSFT2J5.js.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-TTSSUOEV.cjs → chunk-7C5W744U.cjs} +8 -8
- package/dist/{chunk-TTSSUOEV.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
- 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-YU55JD35.js → chunk-7QW6TU4X.js} +3 -3
- package/dist/{chunk-YU55JD35.js.map → chunk-7QW6TU4X.js.map} +1 -1
- package/dist/chunk-7WJ6MBF5.cjs +47 -0
- package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
- package/dist/chunk-A4W5CSK7.cjs +216 -0
- package/dist/chunk-A4W5CSK7.cjs.map +1 -0
- package/dist/{chunk-WXFGHDTV.cjs → chunk-AJPFQF3H.cjs} +18 -18
- package/dist/{chunk-WXFGHDTV.cjs.map → chunk-AJPFQF3H.cjs.map} +1 -1
- package/dist/chunk-AMYFRY7K.js +3 -0
- package/dist/chunk-AMYFRY7K.js.map +1 -0
- package/dist/{chunk-X6A27RGO.cjs → chunk-ANMX7YDL.cjs} +2 -2
- package/dist/{chunk-X6A27RGO.cjs.map → chunk-ANMX7YDL.cjs.map} +1 -1
- package/dist/{chunk-DVOQ3JNO.js → chunk-B4CKCNWD.js} +16 -8
- package/dist/chunk-B4CKCNWD.js.map +1 -0
- package/dist/chunk-BJ6ABRSQ.cjs +256 -0
- package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
- package/dist/chunk-BXRQ6HEP.cjs +4 -0
- package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
- package/dist/{chunk-TJCX4OML.cjs → chunk-C77FAR3F.cjs} +2 -2
- package/dist/{chunk-TJCX4OML.cjs.map → chunk-C77FAR3F.cjs.map} +1 -1
- package/dist/chunk-CBBKWRLG.js +213 -0
- package/dist/chunk-CBBKWRLG.js.map +1 -0
- package/dist/{chunk-ZTMYKAVU.cjs → chunk-CCAVJSWL.cjs} +49 -48
- package/dist/chunk-CCAVJSWL.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-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-R5Z7AOVU.cjs → chunk-DZ3JTMKM.cjs} +9 -9
- package/dist/{chunk-R5Z7AOVU.cjs.map → chunk-DZ3JTMKM.cjs.map} +1 -1
- package/dist/chunk-EACNRR3C.cjs +4 -0
- package/dist/chunk-EACNRR3C.cjs.map +1 -0
- package/dist/{chunk-E2PBPQGS.js → chunk-EEOGIGIA.js} +2 -2
- package/dist/{chunk-E2PBPQGS.js.map → chunk-EEOGIGIA.js.map} +1 -1
- package/dist/chunk-EPCUPHEO.js +193 -0
- package/dist/chunk-EPCUPHEO.js.map +1 -0
- package/dist/chunk-EPTP3VKT.js +283 -0
- package/dist/chunk-EPTP3VKT.js.map +1 -0
- package/dist/{chunk-HIZWOAWY.cjs → chunk-ERACGSDY.cjs} +8 -8
- package/dist/{chunk-HIZWOAWY.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
- package/dist/{chunk-VOQJHSXN.cjs → chunk-F2FOG4EG.cjs} +9 -9
- package/dist/{chunk-VOQJHSXN.cjs.map → chunk-F2FOG4EG.cjs.map} +1 -1
- package/dist/{chunk-GBUVIGD5.js → chunk-F3EWRDIT.js} +99 -3
- package/dist/chunk-F3EWRDIT.js.map +1 -0
- package/dist/{chunk-GVLNXPJX.js → chunk-FGLIP6YR.js} +4 -4
- package/dist/{chunk-GVLNXPJX.js.map → chunk-FGLIP6YR.js.map} +1 -1
- package/dist/chunk-FKGFOBC2.js +314 -0
- package/dist/chunk-FKGFOBC2.js.map +1 -0
- package/dist/chunk-FSGJXCBG.cjs +318 -0
- package/dist/chunk-FSGJXCBG.cjs.map +1 -0
- package/dist/chunk-FTEZNCRI.js +29 -0
- package/dist/chunk-FTEZNCRI.js.map +1 -0
- package/dist/{chunk-COM7RNZU.cjs → chunk-FYQZWLAM.cjs} +2 -2
- package/dist/{chunk-COM7RNZU.cjs.map → chunk-FYQZWLAM.cjs.map} +1 -1
- 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-N7C4OEP7.cjs → chunk-GM32IDVL.cjs} +6 -6
- package/dist/{chunk-N7C4OEP7.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
- package/dist/chunk-GY5SP4ST.js +3 -0
- package/dist/chunk-GY5SP4ST.js.map +1 -0
- package/dist/chunk-H2Y7HZV5.js +3 -0
- package/dist/chunk-H2Y7HZV5.js.map +1 -0
- package/dist/chunk-H3QPREIJ.js +195 -0
- package/dist/chunk-H3QPREIJ.js.map +1 -0
- package/dist/{chunk-QOVJ6Z6R.js → chunk-HDY7YQFX.js} +3 -3
- package/dist/{chunk-QOVJ6Z6R.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-I2MMUFCN.cjs +154 -0
- package/dist/chunk-I2MMUFCN.cjs.map +1 -0
- package/dist/{chunk-GYXUS65N.cjs → chunk-IGDO62KR.cjs} +5 -5
- package/dist/{chunk-GYXUS65N.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
- package/dist/{chunk-HC3NAN55.cjs → chunk-IPL2O2OL.cjs} +19 -19
- package/dist/{chunk-HC3NAN55.cjs.map → chunk-IPL2O2OL.cjs.map} +1 -1
- package/dist/chunk-ISUIKUX7.cjs +337 -0
- package/dist/chunk-ISUIKUX7.cjs.map +1 -0
- 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-BIQ7GSO2.js → chunk-JMAZ2GKT.js} +3 -3
- package/dist/{chunk-BIQ7GSO2.js.map → chunk-JMAZ2GKT.js.map} +1 -1
- package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
- package/dist/chunk-JUJGWUAN.js.map +1 -0
- package/dist/{chunk-BUT6MF5K.cjs → chunk-KQ6GLYFZ.cjs} +4 -4
- package/dist/{chunk-BUT6MF5K.cjs.map → chunk-KQ6GLYFZ.cjs.map} +1 -1
- package/dist/chunk-L6K4PRZK.cjs +4 -0
- package/dist/chunk-L6K4PRZK.cjs.map +1 -0
- package/dist/{chunk-T4L7Q5FA.cjs → chunk-LC3JL2HB.cjs} +6 -2
- package/dist/chunk-LC3JL2HB.cjs.map +1 -0
- package/dist/{chunk-P7UMS4E6.cjs → chunk-LC7PVBXH.cjs} +16 -8
- package/dist/chunk-LC7PVBXH.cjs.map +1 -0
- package/dist/chunk-LRRSD7LR.js +248 -0
- package/dist/chunk-LRRSD7LR.js.map +1 -0
- package/dist/chunk-LSMS6DY7.cjs +331 -0
- package/dist/chunk-LSMS6DY7.cjs.map +1 -0
- package/dist/chunk-M3VPGJMV.js +283 -0
- package/dist/chunk-M3VPGJMV.js.map +1 -0
- package/dist/{chunk-QURJVPRH.cjs → chunk-MJJJDQ5P.cjs} +46 -2
- package/dist/chunk-MJJJDQ5P.cjs.map +1 -0
- package/dist/{chunk-2JICT4A2.js → chunk-N54FYWG6.js} +3 -3
- package/dist/{chunk-2JICT4A2.js.map → chunk-N54FYWG6.js.map} +1 -1
- package/dist/chunk-N5JDL4VE.js +3 -0
- package/dist/chunk-N5JDL4VE.js.map +1 -0
- package/dist/{chunk-KGKBZN3T.cjs → chunk-NAH65KPK.cjs} +8 -8
- package/dist/{chunk-KGKBZN3T.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
- package/dist/{chunk-NKV76R65.cjs → chunk-O6BJMVGT.cjs} +45 -45
- package/dist/{chunk-NKV76R65.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-ORCCJ5VY.cjs +218 -0
- package/dist/chunk-ORCCJ5VY.cjs.map +1 -0
- package/dist/{chunk-CRS2CQWM.js → chunk-OSTSZDQC.js} +3 -3
- package/dist/{chunk-CRS2CQWM.js.map → chunk-OSTSZDQC.js.map} +1 -1
- package/dist/chunk-P22YCUVM.cjs +4 -0
- package/dist/chunk-P22YCUVM.cjs.map +1 -0
- package/dist/chunk-P55LNEDH.cjs +306 -0
- package/dist/chunk-P55LNEDH.cjs.map +1 -0
- package/dist/{chunk-R6KPWIGO.js → chunk-P7D7BYFE.js} +4 -4
- package/dist/{chunk-R6KPWIGO.js.map → chunk-P7D7BYFE.js.map} +1 -1
- package/dist/{chunk-GU5OS7JJ.cjs → chunk-PYI2IWNX.cjs} +4 -4
- package/dist/{chunk-GU5OS7JJ.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-K34DXMLZ.js → chunk-QJ2L5RU6.js} +7 -7
- package/dist/{chunk-K34DXMLZ.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-LFPJ3OUM.cjs → chunk-RIUQP2QS.cjs} +5 -5
- package/dist/{chunk-LFPJ3OUM.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
- package/dist/{chunk-JHG3ELS2.js → chunk-RPFATYUI.js} +2 -2
- package/dist/{chunk-JHG3ELS2.js.map → chunk-RPFATYUI.js.map} +1 -1
- package/dist/{chunk-FZURBQJ2.js → chunk-RSJGTWLM.js} +3 -3
- package/dist/{chunk-FZURBQJ2.js.map → chunk-RSJGTWLM.js.map} +1 -1
- package/dist/{chunk-XBTKZCZF.js → chunk-RZSSQ7AT.js} +3 -3
- package/dist/{chunk-XBTKZCZF.js.map → chunk-RZSSQ7AT.js.map} +1 -1
- package/dist/{chunk-SD7ONW6S.js → chunk-S2JZL4JC.js} +5 -5
- package/dist/{chunk-SD7ONW6S.js.map → chunk-S2JZL4JC.js.map} +1 -1
- package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
- package/dist/chunk-SHBCUXFS.cjs.map +1 -0
- package/dist/{chunk-JELTRRR5.cjs → chunk-SW2E7XKY.cjs} +9 -9
- package/dist/{chunk-JELTRRR5.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-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
- package/dist/chunk-TI3TQQ7F.js.map +1 -0
- package/dist/{chunk-MLAWXPRY.js → chunk-TKWNXAFI.js} +46 -2
- package/dist/chunk-TKWNXAFI.js.map +1 -0
- package/dist/{chunk-H2IAMSHK.js → chunk-TVEJKKIM.js} +3 -3
- package/dist/{chunk-H2IAMSHK.js.map → chunk-TVEJKKIM.js.map} +1 -1
- package/dist/{chunk-LHBWRMNC.cjs → chunk-TVU4KB27.cjs} +130 -12
- package/dist/chunk-TVU4KB27.cjs.map +1 -0
- package/dist/{chunk-ENMXHZNE.js → chunk-TWQSMUE6.js} +6 -2
- package/dist/chunk-TWQSMUE6.js.map +1 -0
- package/dist/{chunk-ZYL4SNOR.js → chunk-UJDWFDKE.js} +3 -3
- package/dist/{chunk-ZYL4SNOR.js.map → chunk-UJDWFDKE.js.map} +1 -1
- package/dist/{chunk-4HC2IBOX.js → chunk-UNFDIBKJ.js} +3 -3
- package/dist/{chunk-4HC2IBOX.js.map → chunk-UNFDIBKJ.js.map} +1 -1
- package/dist/chunk-UTIPENPW.cjs +286 -0
- package/dist/chunk-UTIPENPW.cjs.map +1 -0
- package/dist/{chunk-IYWG72DM.js → chunk-VEE46VTX.js} +4 -4
- package/dist/{chunk-IYWG72DM.js.map → chunk-VEE46VTX.js.map} +1 -1
- package/dist/{chunk-Y4E2WRUR.cjs → chunk-VFFV7EMT.cjs} +6 -6
- package/dist/{chunk-Y4E2WRUR.cjs.map → chunk-VFFV7EMT.cjs.map} +1 -1
- package/dist/chunk-VNEAQCY2.js +308 -0
- package/dist/chunk-VNEAQCY2.js.map +1 -0
- package/dist/chunk-VOYLX32A.cjs +271 -0
- package/dist/chunk-VOYLX32A.cjs.map +1 -0
- package/dist/{chunk-7ZV67VZE.js → chunk-VSRO4PAI.js} +21 -3
- 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-CPPUT74P.cjs → chunk-VV2U36T6.cjs} +9 -9
- package/dist/{chunk-CPPUT74P.cjs.map → chunk-VV2U36T6.cjs.map} +1 -1
- package/dist/{chunk-35Y4ILCU.cjs → chunk-VXW7D5LR.cjs} +21 -3
- package/dist/chunk-VXW7D5LR.cjs.map +1 -0
- package/dist/{chunk-7YO7DNUV.js → chunk-WFBUBT54.js} +2 -2
- package/dist/{chunk-7YO7DNUV.js.map → chunk-WFBUBT54.js.map} +1 -1
- package/dist/chunk-WQHBMZSC.js +295 -0
- package/dist/chunk-WQHBMZSC.js.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-XNPDZANN.cjs +238 -0
- package/dist/chunk-XNPDZANN.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-YGS2TRMP.js +38 -0
- package/dist/chunk-YGS2TRMP.js.map +1 -0
- package/dist/{chunk-JBIGSP2T.js → chunk-YMILRSRO.js} +6 -5
- package/dist/chunk-YMILRSRO.js.map +1 -0
- package/dist/chunk-YUMOM3KE.js +167 -0
- package/dist/chunk-YUMOM3KE.js.map +1 -0
- package/dist/{chunk-3KPDQG5O.cjs → chunk-ZG6FXMDX.cjs} +5 -5
- package/dist/{chunk-3KPDQG5O.cjs.map → chunk-ZG6FXMDX.cjs.map} +1 -1
- 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/AlertDialog/index.cjs +17 -4
- package/dist/components/AlertDialog/index.d.cts +66 -13
- package/dist/components/AlertDialog/index.d.ts +66 -13
- package/dist/components/AlertDialog/index.js +4 -3
- 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/Avatar/index.cjs +9 -7
- package/dist/components/Avatar/index.d.cts +45 -14
- package/dist/components/Avatar/index.d.ts +45 -14
- 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/Button/index.cjs +3 -2
- package/dist/components/Button/index.js +2 -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 +5 -4
- package/dist/components/CalendarView/index.js +3 -2
- 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 +4 -4
- package/dist/components/Collapsible/index.d.cts +6 -0
- package/dist/components/Collapsible/index.d.ts +6 -0
- package/dist/components/Collapsible/index.js +1 -1
- package/dist/components/CompletenessMeter/index.cjs +22 -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 +5 -0
- package/dist/components/CompletenessMeter/index.js.map +1 -0
- package/dist/components/CustomizableDashboard/index.cjs +10 -9
- package/dist/components/CustomizableDashboard/index.js +3 -2
- package/dist/components/DateInput/index.d.cts +36 -4
- package/dist/components/DateInput/index.d.ts +36 -4
- package/dist/components/Dropdown/index.cjs +9 -8
- package/dist/components/Dropdown/index.js +2 -1
- 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 +5 -4
- package/dist/components/FloatingWindow/index.js +3 -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 +4 -4
- package/dist/components/KeyboardShortcutsOverlay/index.js +2 -2
- package/dist/components/ListView/index.cjs +5 -4
- package/dist/components/ListView/index.js +3 -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 +17 -16
- package/dist/components/Markdown/index.js +8 -7
- package/dist/components/MediaEditor/index.cjs +10 -9
- package/dist/components/MediaEditor/index.js +5 -4
- package/dist/components/MediaFeed/index.cjs +9 -6
- package/dist/components/MediaFeed/index.js +8 -5
- package/dist/components/MediaPlayer/index.cjs +6 -5
- package/dist/components/MediaPlayer/index.js +3 -2
- package/dist/components/MegaMenu/index.cjs +2 -1
- package/dist/components/MegaMenu/index.js +2 -1
- package/dist/components/Modal/index.cjs +9 -9
- package/dist/components/Modal/index.js +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/PhoneInput/index.d.cts +3 -36
- package/dist/components/PhoneInput/index.d.ts +3 -36
- package/dist/components/PropertyList/index.cjs +25 -0
- package/dist/components/PropertyList/index.cjs.map +1 -0
- package/dist/components/PropertyList/index.d.cts +71 -0
- package/dist/components/PropertyList/index.d.ts +71 -0
- package/dist/components/PropertyList/index.js +12 -0
- package/dist/components/PropertyList/index.js.map +1 -0
- package/dist/components/RadialExplorer/index.cjs +2 -1
- package/dist/components/RadialExplorer/index.js +2 -1
- 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/RecordHeader/index.cjs +29 -0
- package/dist/components/RecordHeader/index.cjs.map +1 -0
- package/dist/components/RecordHeader/index.d.cts +86 -0
- package/dist/components/RecordHeader/index.d.ts +86 -0
- package/dist/components/RecordHeader/index.js +16 -0
- package/dist/components/RecordHeader/index.js.map +1 -0
- package/dist/components/RecordLayout/index.cjs +21 -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 +8 -0
- package/dist/components/RecordLayout/index.js.map +1 -0
- package/dist/components/RichTextEditor/index.cjs +8 -6
- package/dist/components/RichTextEditor/index.js +5 -3
- package/dist/components/SectionSpyNav/index.cjs +2 -1
- package/dist/components/SectionSpyNav/index.js +2 -1
- package/dist/components/SuperChat/index.cjs +23 -19
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.js +11 -7
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +5 -4
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
- package/dist/components/SuperChat/plugins/index.js +4 -3
- package/dist/components/SuperChat/plugins/index.js.map +1 -1
- package/dist/components/Tabs/index.cjs +9 -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 +3 -1
- package/dist/components/TagEditor/index.cjs +20 -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 +7 -0
- package/dist/components/TagEditor/index.js.map +1 -0
- 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/ViewSet/index.cjs +6 -5
- package/dist/components/ViewSet/index.d.cts +2 -1
- package/dist/components/ViewSet/index.d.ts +2 -1
- package/dist/components/ViewSet/index.js +5 -4
- package/dist/components/ViewSwitcher/index.d.cts +39 -4
- package/dist/components/ViewSwitcher/index.d.ts +39 -4
- package/dist/datavis.cjs +3 -2
- package/dist/datavis.cjs.map +1 -1
- package/dist/datavis.js +2 -1
- package/dist/datavis.js.map +1 -1
- package/dist/esheet.cjs +9 -7
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.js +6 -4
- package/dist/esheet.js.map +1 -1
- package/dist/hooks/index.cjs +53 -27
- package/dist/hooks/index.d.cts +91 -6
- package/dist/hooks/index.d.ts +91 -6
- package/dist/hooks/index.js +5 -3
- package/dist/index.cjs +1391 -847
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1253 -168
- package/dist/index.d.ts +1253 -168
- package/dist/index.js +539 -171
- package/dist/index.js.map +1 -1
- package/dist/org-chart.cjs +1302 -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 +1277 -0
- package/dist/org-chart.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/{index-DoYYWsNc.d.cts → types-CDeBNZiE.d.cts} +1 -36
- package/dist/{index-DoYYWsNc.d.ts → types-CDeBNZiE.d.ts} +1 -36
- package/package.json +22 -2
- package/dist/CsvBlock-FX5YNGNE.cjs +0 -17
- package/dist/CsvBlock-VLMG7GUO.js +0 -8
- package/dist/HtmlPreviewBlock-5JE7L3GR.js +0 -8
- package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +0 -17
- package/dist/MermaidBlock-3XHFBAMV.js +0 -8
- package/dist/MermaidBlock-RZ75RPZA.cjs +0 -17
- package/dist/SurveyBlock-MUVJ3JUI.js +0 -8
- package/dist/SurveyBlock-VH47YXZC.cjs +0 -17
- package/dist/chunk-35Y4ILCU.cjs.map +0 -1
- package/dist/chunk-6N6LIAUJ.cjs +0 -80
- package/dist/chunk-6N6LIAUJ.cjs.map +0 -1
- package/dist/chunk-7ZV67VZE.js.map +0 -1
- package/dist/chunk-7ZVTLTJF.js +0 -109
- package/dist/chunk-7ZVTLTJF.js.map +0 -1
- package/dist/chunk-DVOQ3JNO.js.map +0 -1
- package/dist/chunk-ENMXHZNE.js.map +0 -1
- package/dist/chunk-GBUVIGD5.js.map +0 -1
- package/dist/chunk-HZ4MBUC3.js.map +0 -1
- package/dist/chunk-JBIGSP2T.js.map +0 -1
- package/dist/chunk-JEIW7BSV.cjs.map +0 -1
- package/dist/chunk-KRU6IGV7.js.map +0 -1
- package/dist/chunk-LHBWRMNC.cjs.map +0 -1
- package/dist/chunk-MLAWXPRY.js.map +0 -1
- package/dist/chunk-P7UMS4E6.cjs.map +0 -1
- package/dist/chunk-QURJVPRH.cjs.map +0 -1
- package/dist/chunk-SVSHA7XV.js.map +0 -1
- package/dist/chunk-T4L7Q5FA.cjs.map +0 -1
- package/dist/chunk-UBSH27C2.js +0 -78
- package/dist/chunk-UBSH27C2.js.map +0 -1
- package/dist/chunk-VROIMIHB.cjs.map +0 -1
- package/dist/chunk-X4LBUPJO.cjs.map +0 -1
- package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
- package/dist/chunk-ZTMYKAVU.cjs.map +0 -1
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
import { groupByDay, formatDayLabel, withLocale } from './chunk-YGS2TRMP.js';
|
|
2
|
+
import { usePendingOverrides } from './chunk-FTEZNCRI.js';
|
|
3
|
+
import { RecordState } from './chunk-Y424YL55.js';
|
|
4
|
+
import { Avatar } from './chunk-TI3TQQ7F.js';
|
|
5
|
+
import { accentClasses, toDateTime } from './chunk-3YBS4WUQ.js';
|
|
6
|
+
import { useLiveAnnouncement } from './chunk-HNXLLDPN.js';
|
|
7
|
+
import { usePrefersReducedMotion } from './chunk-XDU65GLW.js';
|
|
8
|
+
import { Button } from './chunk-WFBUBT54.js';
|
|
9
|
+
import { cn } from './chunk-TQONQSJO.js';
|
|
10
|
+
import * as React from 'react';
|
|
11
|
+
import { DateTime } from 'luxon';
|
|
12
|
+
import { Rows4, Pin } from 'lucide-react';
|
|
13
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
14
|
+
|
|
15
|
+
var defaultActivityFeedLabels = {
|
|
16
|
+
loading: "Loading activity",
|
|
17
|
+
empty: "No activity yet",
|
|
18
|
+
noMatches: "No activity matches these filters",
|
|
19
|
+
error: "Could not load activity",
|
|
20
|
+
retry: "Try again",
|
|
21
|
+
today: "Today",
|
|
22
|
+
yesterday: "Yesterday",
|
|
23
|
+
undated: "Undated",
|
|
24
|
+
pinned: "Pinned",
|
|
25
|
+
filters: "Filter by category",
|
|
26
|
+
allCategories: "All",
|
|
27
|
+
compact: "Compact view",
|
|
28
|
+
pin: "Pin",
|
|
29
|
+
loadMore: "Load more",
|
|
30
|
+
resultCount: (count) => count === 1 ? "1 activity shown" : `${count} activities shown`
|
|
31
|
+
};
|
|
32
|
+
function readPrefs(key) {
|
|
33
|
+
try {
|
|
34
|
+
const raw = JSON.parse(window.localStorage.getItem(key) ?? "{}");
|
|
35
|
+
if (!raw || typeof raw !== "object") return {};
|
|
36
|
+
const { categories, density } = raw;
|
|
37
|
+
return {
|
|
38
|
+
categories: Array.isArray(categories) && categories.every((c) => typeof c === "string") ? categories : void 0,
|
|
39
|
+
density: density === "compact" || density === "comfortable" ? density : void 0
|
|
40
|
+
};
|
|
41
|
+
} catch {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function writePrefs(key, prefs) {
|
|
46
|
+
try {
|
|
47
|
+
window.localStorage.setItem(key, JSON.stringify(prefs));
|
|
48
|
+
} catch {
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
var chipClasses = "inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
|
|
52
|
+
function ActivityFeedInner({
|
|
53
|
+
items,
|
|
54
|
+
getId,
|
|
55
|
+
getDate,
|
|
56
|
+
getCategory,
|
|
57
|
+
getTitle,
|
|
58
|
+
getDescription,
|
|
59
|
+
getActor,
|
|
60
|
+
categories = [],
|
|
61
|
+
loading = false,
|
|
62
|
+
error = null,
|
|
63
|
+
onRetry,
|
|
64
|
+
locale,
|
|
65
|
+
timeZone = "local",
|
|
66
|
+
now,
|
|
67
|
+
pinnedIds,
|
|
68
|
+
onTogglePin,
|
|
69
|
+
onOpen,
|
|
70
|
+
getHref,
|
|
71
|
+
highlightedId = null,
|
|
72
|
+
hasMore = false,
|
|
73
|
+
onLoadMore,
|
|
74
|
+
defaultCategories,
|
|
75
|
+
defaultDensity = "comfortable",
|
|
76
|
+
storageKey,
|
|
77
|
+
renderItem,
|
|
78
|
+
renderItemMeta,
|
|
79
|
+
renderDaySummary,
|
|
80
|
+
emptyState,
|
|
81
|
+
labels,
|
|
82
|
+
classNames,
|
|
83
|
+
headingLevel: Heading = "h3",
|
|
84
|
+
className,
|
|
85
|
+
...rest
|
|
86
|
+
}, ref) {
|
|
87
|
+
const text = { ...defaultActivityFeedLabels, ...labels };
|
|
88
|
+
const baseId = React.useId();
|
|
89
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
90
|
+
const [announcement, announce] = useLiveAnnouncement();
|
|
91
|
+
const [pinOverrides, runPin] = usePendingOverrides();
|
|
92
|
+
const [loadingMore, setLoadingMore] = React.useState(false);
|
|
93
|
+
const [selected, setSelected] = React.useState(
|
|
94
|
+
defaultCategories ?? []
|
|
95
|
+
);
|
|
96
|
+
const [density, setDensity] = React.useState(defaultDensity);
|
|
97
|
+
const rowRefs = React.useRef(/* @__PURE__ */ new Map());
|
|
98
|
+
React.useEffect(() => {
|
|
99
|
+
if (!storageKey) return;
|
|
100
|
+
const stored = readPrefs(storageKey);
|
|
101
|
+
if (stored.categories) setSelected(stored.categories);
|
|
102
|
+
if (stored.density) setDensity(stored.density);
|
|
103
|
+
}, [storageKey]);
|
|
104
|
+
React.useEffect(() => {
|
|
105
|
+
if (!highlightedId) return;
|
|
106
|
+
rowRefs.current.get(highlightedId)?.scrollIntoView?.({
|
|
107
|
+
block: "center",
|
|
108
|
+
behavior: reducedMotion ? "auto" : "smooth"
|
|
109
|
+
});
|
|
110
|
+
}, [highlightedId, loading, reducedMotion]);
|
|
111
|
+
const categoryById = React.useMemo(
|
|
112
|
+
() => new Map(categories.map((c) => [c.id, c])),
|
|
113
|
+
[categories]
|
|
114
|
+
);
|
|
115
|
+
const effectiveFilter = React.useMemo(
|
|
116
|
+
() => selected.filter((id) => categoryById.has(id)),
|
|
117
|
+
[selected, categoryById]
|
|
118
|
+
);
|
|
119
|
+
const pinnedSet = React.useMemo(() => new Set(pinnedIds), [pinnedIds]);
|
|
120
|
+
const isPinned = (id) => pinOverrides.get(id) ?? pinnedSet.has(id);
|
|
121
|
+
const matches = (item, filter) => filter.length === 0 || filter.includes(getCategory?.(item) ?? "");
|
|
122
|
+
const updateFilters = (next) => {
|
|
123
|
+
setSelected(next);
|
|
124
|
+
if (storageKey) writePrefs(storageKey, { categories: [...next], density });
|
|
125
|
+
announce(text.resultCount(items.filter((i) => matches(i, next)).length));
|
|
126
|
+
};
|
|
127
|
+
const toggleDensity = () => {
|
|
128
|
+
const next = density === "compact" ? "comfortable" : "compact";
|
|
129
|
+
setDensity(next);
|
|
130
|
+
if (storageKey)
|
|
131
|
+
writePrefs(storageKey, { categories: [...selected], density: next });
|
|
132
|
+
};
|
|
133
|
+
const loadMore = async () => {
|
|
134
|
+
if (!onLoadMore) return;
|
|
135
|
+
setLoadingMore(true);
|
|
136
|
+
try {
|
|
137
|
+
await onLoadMore();
|
|
138
|
+
} catch {
|
|
139
|
+
} finally {
|
|
140
|
+
setLoadingMore(false);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const zone = timeZone;
|
|
144
|
+
const reference = now ?? /* @__PURE__ */ new Date();
|
|
145
|
+
const compact = density === "compact";
|
|
146
|
+
const visible = items.filter((item) => matches(item, effectiveFilter));
|
|
147
|
+
const pinnedItems = groupByDay(
|
|
148
|
+
visible.filter((item) => isPinned(getId(item))),
|
|
149
|
+
getDate,
|
|
150
|
+
zone
|
|
151
|
+
).flatMap((g) => g.items);
|
|
152
|
+
const days = groupByDay(
|
|
153
|
+
visible.filter((item) => !isPinned(getId(item))),
|
|
154
|
+
getDate,
|
|
155
|
+
zone
|
|
156
|
+
);
|
|
157
|
+
let row = 0;
|
|
158
|
+
const renderRow = (item) => {
|
|
159
|
+
const id = getId(item);
|
|
160
|
+
const pinned = isPinned(id);
|
|
161
|
+
const pending = pinOverrides.has(id);
|
|
162
|
+
const highlighted = id === highlightedId;
|
|
163
|
+
const category = categoryById.get(getCategory?.(item) ?? "");
|
|
164
|
+
const titleId = `${baseId}-title-${row++}`;
|
|
165
|
+
const accent = accentClasses[category?.color ?? "neutral"];
|
|
166
|
+
const Icon = category?.icon;
|
|
167
|
+
const dt = toDateTime(getDate(item), zone);
|
|
168
|
+
const localDt = dt && withLocale(dt, locale);
|
|
169
|
+
const actor = getActor?.(item);
|
|
170
|
+
const description = compact ? void 0 : getDescription?.(item);
|
|
171
|
+
const body2 = renderItem?.(item, { density, pinned, category }) ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
172
|
+
/* @__PURE__ */ jsx(
|
|
173
|
+
"span",
|
|
174
|
+
{
|
|
175
|
+
"aria-hidden": true,
|
|
176
|
+
className: cn(
|
|
177
|
+
"flex shrink-0 items-center justify-center rounded-full",
|
|
178
|
+
compact ? "size-5" : "mt-0.5 size-7",
|
|
179
|
+
accent.tint
|
|
180
|
+
),
|
|
181
|
+
children: Icon ? /* @__PURE__ */ jsx(Icon, { className: "text-foreground size-3.5" }) : /* @__PURE__ */ jsx("span", { className: cn("size-2 rounded-full", accent.marker) })
|
|
182
|
+
}
|
|
183
|
+
),
|
|
184
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
185
|
+
/* @__PURE__ */ jsx(
|
|
186
|
+
"span",
|
|
187
|
+
{
|
|
188
|
+
id: titleId,
|
|
189
|
+
className: "text-foreground block truncate text-sm font-medium",
|
|
190
|
+
children: getTitle?.(item) ?? category?.label ?? id
|
|
191
|
+
}
|
|
192
|
+
),
|
|
193
|
+
description && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground line-clamp-2 block text-sm", children: description }),
|
|
194
|
+
/* @__PURE__ */ jsxs("span", { className: "text-muted-foreground mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs", children: [
|
|
195
|
+
actor && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
196
|
+
!compact && /* @__PURE__ */ jsx(
|
|
197
|
+
Avatar,
|
|
198
|
+
{
|
|
199
|
+
size: "xs",
|
|
200
|
+
name: actor.name,
|
|
201
|
+
src: actor.avatarUrl,
|
|
202
|
+
alt: "",
|
|
203
|
+
"aria-hidden": true
|
|
204
|
+
}
|
|
205
|
+
),
|
|
206
|
+
actor.name
|
|
207
|
+
] }),
|
|
208
|
+
category && /* @__PURE__ */ jsx("span", { children: category.label }),
|
|
209
|
+
localDt && /* @__PURE__ */ jsx(
|
|
210
|
+
"time",
|
|
211
|
+
{
|
|
212
|
+
dateTime: localDt.toISO() ?? void 0,
|
|
213
|
+
title: localDt.toLocaleString(DateTime.DATETIME_MED),
|
|
214
|
+
children: localDt.toLocaleString(DateTime.TIME_SIMPLE)
|
|
215
|
+
}
|
|
216
|
+
),
|
|
217
|
+
renderItemMeta?.(item)
|
|
218
|
+
] })
|
|
219
|
+
] })
|
|
220
|
+
] });
|
|
221
|
+
const mainClasses = "flex min-w-0 flex-1 items-start gap-3 rounded-md text-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
|
|
222
|
+
const href = getHref?.(id, item);
|
|
223
|
+
let main;
|
|
224
|
+
if (href) {
|
|
225
|
+
main = /* @__PURE__ */ jsx(
|
|
226
|
+
"a",
|
|
227
|
+
{
|
|
228
|
+
href,
|
|
229
|
+
className: mainClasses,
|
|
230
|
+
onClick: (event) => {
|
|
231
|
+
if (!onOpen || event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0)
|
|
232
|
+
return;
|
|
233
|
+
event.preventDefault();
|
|
234
|
+
onOpen(id, item);
|
|
235
|
+
},
|
|
236
|
+
onKeyDown: (event) => {
|
|
237
|
+
if (event.key !== " ") return;
|
|
238
|
+
event.preventDefault();
|
|
239
|
+
event.currentTarget.click();
|
|
240
|
+
},
|
|
241
|
+
children: body2
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
} else if (onOpen) {
|
|
245
|
+
main = /* @__PURE__ */ jsx(
|
|
246
|
+
"button",
|
|
247
|
+
{
|
|
248
|
+
type: "button",
|
|
249
|
+
className: mainClasses,
|
|
250
|
+
onClick: () => onOpen(id, item),
|
|
251
|
+
children: body2
|
|
252
|
+
}
|
|
253
|
+
);
|
|
254
|
+
} else {
|
|
255
|
+
main = /* @__PURE__ */ jsx("div", { className: mainClasses, children: body2 });
|
|
256
|
+
}
|
|
257
|
+
return /* @__PURE__ */ jsxs(
|
|
258
|
+
"li",
|
|
259
|
+
{
|
|
260
|
+
ref: (el) => {
|
|
261
|
+
if (el) rowRefs.current.set(id, el);
|
|
262
|
+
else rowRefs.current.delete(id);
|
|
263
|
+
},
|
|
264
|
+
"data-slot": "activity-feed-item",
|
|
265
|
+
"data-highlighted": highlighted || void 0,
|
|
266
|
+
"aria-busy": pending || void 0,
|
|
267
|
+
className: cn(
|
|
268
|
+
"flex items-start gap-2 px-3",
|
|
269
|
+
compact ? "py-1.5" : "py-3",
|
|
270
|
+
highlighted && "ring-primary-500 bg-primary-500/10 ring-2 ring-inset",
|
|
271
|
+
classNames?.item,
|
|
272
|
+
highlighted && classNames?.highlightedItem
|
|
273
|
+
),
|
|
274
|
+
children: [
|
|
275
|
+
main,
|
|
276
|
+
onTogglePin && renderItem && /* @__PURE__ */ jsx("span", { id: titleId, hidden: true, children: getTitle?.(item) ?? category?.label ?? id }),
|
|
277
|
+
onTogglePin && /* @__PURE__ */ jsx(
|
|
278
|
+
"button",
|
|
279
|
+
{
|
|
280
|
+
type: "button",
|
|
281
|
+
"aria-pressed": pinned,
|
|
282
|
+
"aria-label": text.pin,
|
|
283
|
+
"aria-describedby": titleId,
|
|
284
|
+
disabled: pending,
|
|
285
|
+
title: text.pin,
|
|
286
|
+
onClick: () => void runPin(id, !pinned, () => onTogglePin(id, !pinned)),
|
|
287
|
+
className: cn(
|
|
288
|
+
"text-muted-foreground hover:bg-muted hover:text-foreground shrink-0 rounded-md p-1.5",
|
|
289
|
+
"focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
|
|
290
|
+
"disabled:opacity-50",
|
|
291
|
+
pinned && "text-foreground"
|
|
292
|
+
),
|
|
293
|
+
children: /* @__PURE__ */ jsx(
|
|
294
|
+
Pin,
|
|
295
|
+
{
|
|
296
|
+
className: cn("size-4", pinned && "fill-current"),
|
|
297
|
+
"aria-hidden": true
|
|
298
|
+
}
|
|
299
|
+
)
|
|
300
|
+
}
|
|
301
|
+
)
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
id
|
|
305
|
+
);
|
|
306
|
+
};
|
|
307
|
+
const section = (key, label, sectionItems, summary) => {
|
|
308
|
+
const headingId = `${baseId}-day-${key || "none"}`;
|
|
309
|
+
return /* @__PURE__ */ jsxs(
|
|
310
|
+
"section",
|
|
311
|
+
{
|
|
312
|
+
"aria-labelledby": headingId,
|
|
313
|
+
"data-slot": "activity-feed-section",
|
|
314
|
+
className: classNames?.section,
|
|
315
|
+
children: [
|
|
316
|
+
/* @__PURE__ */ jsx(
|
|
317
|
+
Heading,
|
|
318
|
+
{
|
|
319
|
+
id: headingId,
|
|
320
|
+
"data-slot": "activity-feed-day-header",
|
|
321
|
+
className: cn(
|
|
322
|
+
"border-border bg-card text-muted-foreground sticky top-0 z-10 flex items-center gap-1.5 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase",
|
|
323
|
+
classNames?.dayHeader
|
|
324
|
+
),
|
|
325
|
+
children: label
|
|
326
|
+
}
|
|
327
|
+
),
|
|
328
|
+
summary,
|
|
329
|
+
/* @__PURE__ */ jsx("ul", { className: "divide-border divide-y", children: sectionItems.map(renderRow) })
|
|
330
|
+
]
|
|
331
|
+
},
|
|
332
|
+
key
|
|
333
|
+
);
|
|
334
|
+
};
|
|
335
|
+
let body;
|
|
336
|
+
if (error) {
|
|
337
|
+
body = /* @__PURE__ */ jsx(
|
|
338
|
+
RecordState,
|
|
339
|
+
{
|
|
340
|
+
kind: "error",
|
|
341
|
+
slot: "activity-feed-state",
|
|
342
|
+
message: text.error,
|
|
343
|
+
retryLabel: text.retry,
|
|
344
|
+
onRetry,
|
|
345
|
+
className: classNames?.state
|
|
346
|
+
}
|
|
347
|
+
);
|
|
348
|
+
} else if (loading) {
|
|
349
|
+
body = /* @__PURE__ */ jsx(
|
|
350
|
+
RecordState,
|
|
351
|
+
{
|
|
352
|
+
kind: "loading",
|
|
353
|
+
slot: "activity-feed-state",
|
|
354
|
+
message: text.loading,
|
|
355
|
+
className: classNames?.state
|
|
356
|
+
}
|
|
357
|
+
);
|
|
358
|
+
} else if (items.length === 0) {
|
|
359
|
+
body = emptyState ?? /* @__PURE__ */ jsx(
|
|
360
|
+
RecordState,
|
|
361
|
+
{
|
|
362
|
+
kind: "empty",
|
|
363
|
+
slot: "activity-feed-state",
|
|
364
|
+
message: text.empty,
|
|
365
|
+
className: classNames?.state
|
|
366
|
+
}
|
|
367
|
+
);
|
|
368
|
+
} else if (visible.length === 0) {
|
|
369
|
+
body = /* @__PURE__ */ jsx(
|
|
370
|
+
RecordState,
|
|
371
|
+
{
|
|
372
|
+
kind: "empty",
|
|
373
|
+
slot: "activity-feed-state",
|
|
374
|
+
message: text.noMatches,
|
|
375
|
+
className: classNames?.state,
|
|
376
|
+
children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: () => updateFilters([]), children: text.allCategories })
|
|
377
|
+
}
|
|
378
|
+
);
|
|
379
|
+
} else {
|
|
380
|
+
body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
381
|
+
pinnedItems.length > 0 && section(
|
|
382
|
+
"pinned",
|
|
383
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
384
|
+
/* @__PURE__ */ jsx(Pin, { className: "size-3.5", "aria-hidden": true }),
|
|
385
|
+
text.pinned
|
|
386
|
+
] }),
|
|
387
|
+
pinnedItems
|
|
388
|
+
),
|
|
389
|
+
days.map(
|
|
390
|
+
(day) => section(
|
|
391
|
+
day.key,
|
|
392
|
+
formatDayLabel(day.key, {
|
|
393
|
+
now: reference,
|
|
394
|
+
zone,
|
|
395
|
+
locale,
|
|
396
|
+
today: text.today,
|
|
397
|
+
yesterday: text.yesterday,
|
|
398
|
+
undated: text.undated
|
|
399
|
+
}),
|
|
400
|
+
day.items,
|
|
401
|
+
renderDaySummary?.(day.key, day.items)
|
|
402
|
+
)
|
|
403
|
+
),
|
|
404
|
+
hasMore && onLoadMore && /* @__PURE__ */ jsx(
|
|
405
|
+
"div",
|
|
406
|
+
{
|
|
407
|
+
"data-slot": "activity-feed-load-more",
|
|
408
|
+
className: cn("border-border border-t p-3", classNames?.loadMore),
|
|
409
|
+
children: /* @__PURE__ */ jsx(
|
|
410
|
+
Button,
|
|
411
|
+
{
|
|
412
|
+
variant: "ghost",
|
|
413
|
+
size: "sm",
|
|
414
|
+
fullWidth: true,
|
|
415
|
+
isLoading: loadingMore,
|
|
416
|
+
onClick: () => void loadMore(),
|
|
417
|
+
children: text.loadMore
|
|
418
|
+
}
|
|
419
|
+
)
|
|
420
|
+
}
|
|
421
|
+
)
|
|
422
|
+
] });
|
|
423
|
+
}
|
|
424
|
+
return /* @__PURE__ */ jsxs(
|
|
425
|
+
"div",
|
|
426
|
+
{
|
|
427
|
+
ref,
|
|
428
|
+
"data-slot": "activity-feed",
|
|
429
|
+
className: cn(
|
|
430
|
+
"border-border bg-card overflow-hidden rounded-lg border",
|
|
431
|
+
className
|
|
432
|
+
),
|
|
433
|
+
...rest,
|
|
434
|
+
children: [
|
|
435
|
+
(categories.length > 0 || items.length > 0) && /* @__PURE__ */ jsxs(
|
|
436
|
+
"div",
|
|
437
|
+
{
|
|
438
|
+
"data-slot": "activity-feed-toolbar",
|
|
439
|
+
className: cn(
|
|
440
|
+
"border-border flex items-center gap-2 border-b px-3 py-2",
|
|
441
|
+
classNames?.toolbar
|
|
442
|
+
),
|
|
443
|
+
children: [
|
|
444
|
+
categories.length > 0 && /* @__PURE__ */ jsxs(
|
|
445
|
+
"div",
|
|
446
|
+
{
|
|
447
|
+
role: "group",
|
|
448
|
+
"aria-label": text.filters,
|
|
449
|
+
className: "flex min-w-0 flex-1 flex-wrap gap-1.5",
|
|
450
|
+
children: [
|
|
451
|
+
/* @__PURE__ */ jsx(
|
|
452
|
+
"button",
|
|
453
|
+
{
|
|
454
|
+
type: "button",
|
|
455
|
+
"aria-pressed": effectiveFilter.length === 0,
|
|
456
|
+
onClick: () => updateFilters([]),
|
|
457
|
+
"data-slot": "activity-feed-filter",
|
|
458
|
+
className: cn(
|
|
459
|
+
chipClasses,
|
|
460
|
+
effectiveFilter.length === 0 ? "border-primary-500/40 bg-primary-500/10 text-foreground" : "border-border text-muted-foreground hover:bg-muted",
|
|
461
|
+
classNames?.filter
|
|
462
|
+
),
|
|
463
|
+
children: text.allCategories
|
|
464
|
+
}
|
|
465
|
+
),
|
|
466
|
+
categories.map((category) => {
|
|
467
|
+
const active = effectiveFilter.includes(category.id);
|
|
468
|
+
const accent = accentClasses[category.color ?? "primary"];
|
|
469
|
+
const Icon = category.icon;
|
|
470
|
+
return /* @__PURE__ */ jsxs(
|
|
471
|
+
"button",
|
|
472
|
+
{
|
|
473
|
+
type: "button",
|
|
474
|
+
"aria-pressed": active,
|
|
475
|
+
onClick: () => updateFilters(
|
|
476
|
+
active ? effectiveFilter.filter((c) => c !== category.id) : [...effectiveFilter, category.id]
|
|
477
|
+
),
|
|
478
|
+
"data-slot": "activity-feed-filter",
|
|
479
|
+
className: cn(
|
|
480
|
+
chipClasses,
|
|
481
|
+
active ? cn(accent.tint, accent.border, "text-foreground") : "border-border text-muted-foreground hover:bg-muted",
|
|
482
|
+
classNames?.filter
|
|
483
|
+
),
|
|
484
|
+
children: [
|
|
485
|
+
Icon && /* @__PURE__ */ jsx(Icon, { className: "size-3.5", "aria-hidden": true }),
|
|
486
|
+
category.label
|
|
487
|
+
]
|
|
488
|
+
},
|
|
489
|
+
category.id
|
|
490
|
+
);
|
|
491
|
+
})
|
|
492
|
+
]
|
|
493
|
+
}
|
|
494
|
+
),
|
|
495
|
+
/* @__PURE__ */ jsx(
|
|
496
|
+
"button",
|
|
497
|
+
{
|
|
498
|
+
type: "button",
|
|
499
|
+
"aria-pressed": compact,
|
|
500
|
+
"aria-label": text.compact,
|
|
501
|
+
title: text.compact,
|
|
502
|
+
onClick: toggleDensity,
|
|
503
|
+
className: cn(
|
|
504
|
+
"text-muted-foreground hover:bg-muted ms-auto shrink-0 rounded-md p-1.5",
|
|
505
|
+
"focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
|
|
506
|
+
compact && "bg-muted text-foreground"
|
|
507
|
+
),
|
|
508
|
+
children: /* @__PURE__ */ jsx(Rows4, { className: "size-4", "aria-hidden": true })
|
|
509
|
+
}
|
|
510
|
+
)
|
|
511
|
+
]
|
|
512
|
+
}
|
|
513
|
+
),
|
|
514
|
+
/* @__PURE__ */ jsx("div", { "aria-live": "polite", className: "sr-only", children: announcement }),
|
|
515
|
+
body
|
|
516
|
+
]
|
|
517
|
+
}
|
|
518
|
+
);
|
|
519
|
+
}
|
|
520
|
+
var ActivityFeed = React.forwardRef(ActivityFeedInner);
|
|
521
|
+
ActivityFeed.displayName = "ActivityFeed";
|
|
522
|
+
|
|
523
|
+
export { ActivityFeed, defaultActivityFeedLabels };
|
|
524
|
+
//# sourceMappingURL=chunk-X5JOEZVR.js.map
|
|
525
|
+
//# sourceMappingURL=chunk-X5JOEZVR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ActivityFeed/ActivityFeed.tsx"],"names":["body"],"mappings":"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","file":"chunk-X5JOEZVR.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { DateTime } from 'luxon';\nimport { Pin, Rows4, type LucideIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from '../Avatar';\nimport { Button } from '../Button';\nimport { useLiveAnnouncement } from '../../hooks/useLiveAnnouncement';\nimport { usePrefersReducedMotion } from '../../hooks/usePrefersReducedMotion';\nimport { accentClasses, toDateTime, type Accent } from '../../views/types';\nimport { formatDayLabel, groupByDay, withLocale } from './dayGroups';\nimport { RecordState } from './RecordState';\nimport { usePendingOverrides } from './usePendingOverrides';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ActivityFeedDensity = 'comfortable' | 'compact';\n\nexport interface ActivityFeedCategory {\n id: string;\n label: string;\n icon?: LucideIcon;\n /** Token name, resolved to `--mieweb-*` colours. */\n color?: Accent;\n}\n\nexport interface ActivityFeedActor {\n name: string;\n avatarUrl?: string;\n}\n\nexport interface ActivityFeedLabels {\n loading: string;\n empty: string;\n /** Shown when items exist but the active filters hide all of them. */\n noMatches: string;\n error: string;\n retry: string;\n today: string;\n yesterday: string;\n undated: string;\n pinned: string;\n /** Accessible name of the category filter group. */\n filters: string;\n /** The chip that clears every filter. */\n allCategories: string;\n compact: string;\n pin: string;\n loadMore: string;\n /** Announced politely after a filter change. */\n resultCount: (count: number) => string;\n}\n\nexport const defaultActivityFeedLabels: ActivityFeedLabels = {\n loading: 'Loading activity',\n empty: 'No activity yet',\n noMatches: 'No activity matches these filters',\n error: 'Could not load activity',\n retry: 'Try again',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n pinned: 'Pinned',\n filters: 'Filter by category',\n allCategories: 'All',\n compact: 'Compact view',\n pin: 'Pin',\n loadMore: 'Load more',\n resultCount: (count) =>\n count === 1 ? '1 activity shown' : `${count} activities shown`,\n};\n\nexport type ActivityFeedSlot =\n | 'toolbar'\n | 'filter'\n | 'section'\n | 'dayHeader'\n | 'item'\n | 'highlightedItem'\n | 'state'\n | 'loadMore';\n\nexport interface ActivityFeedItemContext {\n density: ActivityFeedDensity;\n pinned: boolean;\n category?: ActivityFeedCategory;\n}\n\nexport interface ActivityFeedProps<T> extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n items: T[];\n getId: (item: T) => string;\n /** ISO string or `Date`. Date-only strings are wall dates in `timeZone`. */\n getDate: (item: T) => Date | string | null | undefined;\n /** Matched against `categories[].id`. */\n getCategory?: (item: T) => string | undefined;\n getTitle?: (item: T) => string | undefined;\n getDescription?: (item: T) => string | undefined;\n getActor?: (item: T) => ActivityFeedActor | undefined;\n /** Filter chips, icons and colours, in display order. */\n categories?: readonly ActivityFeedCategory[];\n loading?: boolean;\n error?: Error | null;\n onRetry?: () => void;\n /** BCP 47 locale for day headers and times. Defaults to the runtime's. */\n locale?: string;\n /** IANA zone that decides which day an item falls on. Defaults to local. */\n timeZone?: string;\n /** Pins \"today\" so stories and tests stay deterministic. */\n now?: Date;\n pinnedIds?: readonly string[];\n /** Receives the requested state; the row moves optimistically and restores on rejection. */\n onTogglePin?: (id: string, pinned: boolean) => void | Promise<void>;\n onOpen?: (id: string, item: T) => void;\n getHref?: (id: string, item: T) => string;\n /** Scrolls this row into view and highlights it — for deep links. */\n highlightedId?: string | null;\n hasMore?: boolean;\n /** The button shows pending until the returned promise settles. */\n onLoadMore?: () => void | Promise<void>;\n defaultCategories?: readonly string[];\n defaultDensity?: ActivityFeedDensity;\n /** Persists the selected categories and density in `localStorage` under this key. */\n storageKey?: string;\n /** Replaces the built-in row body. Pinning and opening still wrap it. */\n renderItem?: (item: T, context: ActivityFeedItemContext) => React.ReactNode;\n /** Extra content on the row's meta line (badges, durations, sentiment). */\n renderItemMeta?: (item: T) => React.ReactNode;\n /** Rendered under each day header, e.g. a roll-up of that day's calls. */\n renderDaySummary?: (dayKey: string, items: T[]) => React.ReactNode;\n emptyState?: React.ReactNode;\n labels?: Partial<ActivityFeedLabels>;\n classNames?: Partial<Record<ActivityFeedSlot, string>>;\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\ninterface StoredPrefs {\n categories?: string[];\n density?: ActivityFeedDensity;\n}\n\nfunction readPrefs(key: string): StoredPrefs {\n try {\n const raw: unknown = JSON.parse(window.localStorage.getItem(key) ?? '{}');\n if (!raw || typeof raw !== 'object') return {};\n const { categories, density } = raw as Record<string, unknown>;\n return {\n categories:\n Array.isArray(categories) &&\n categories.every((c) => typeof c === 'string')\n ? categories\n : undefined,\n density:\n density === 'compact' || density === 'comfortable'\n ? density\n : undefined,\n };\n } catch {\n return {};\n }\n}\n\nfunction writePrefs(key: string, prefs: StoredPrefs) {\n try {\n window.localStorage.setItem(key, JSON.stringify(prefs));\n } catch {\n // Storage full or blocked: the preference just doesn't persist.\n }\n}\n\nconst chipClasses =\n 'inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction ActivityFeedInner<T>(\n {\n items,\n getId,\n getDate,\n getCategory,\n getTitle,\n getDescription,\n getActor,\n categories = [],\n loading = false,\n error = null,\n onRetry,\n locale,\n timeZone = 'local',\n now,\n pinnedIds,\n onTogglePin,\n onOpen,\n getHref,\n highlightedId = null,\n hasMore = false,\n onLoadMore,\n defaultCategories,\n defaultDensity = 'comfortable',\n storageKey,\n renderItem,\n renderItemMeta,\n renderDaySummary,\n emptyState,\n labels,\n classNames,\n headingLevel: Heading = 'h3',\n className,\n ...rest\n }: ActivityFeedProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const text = { ...defaultActivityFeedLabels, ...labels };\n const baseId = React.useId();\n const reducedMotion = usePrefersReducedMotion();\n const [announcement, announce] = useLiveAnnouncement();\n const [pinOverrides, runPin] = usePendingOverrides<boolean>();\n const [loadingMore, setLoadingMore] = React.useState(false);\n const [selected, setSelected] = React.useState<readonly string[]>(\n defaultCategories ?? []\n );\n const [density, setDensity] =\n React.useState<ActivityFeedDensity>(defaultDensity);\n const rowRefs = React.useRef(new Map<string, HTMLElement>());\n\n // Read after mount so server and first client render agree.\n React.useEffect(() => {\n if (!storageKey) return;\n const stored = readPrefs(storageKey);\n if (stored.categories) setSelected(stored.categories);\n if (stored.density) setDensity(stored.density);\n }, [storageKey]);\n\n React.useEffect(() => {\n if (!highlightedId) return;\n rowRefs.current.get(highlightedId)?.scrollIntoView?.({\n block: 'center',\n behavior: reducedMotion ? 'auto' : 'smooth',\n });\n }, [highlightedId, loading, reducedMotion]);\n\n const categoryById = React.useMemo(\n () => new Map(categories.map((c) => [c.id, c])),\n [categories]\n );\n // Persisted IDs may reference renamed/removed categories; applying them\n // verbatim would filter out everything with no chip shown as active.\n const effectiveFilter = React.useMemo(\n () => selected.filter((id) => categoryById.has(id)),\n [selected, categoryById]\n );\n const pinnedSet = React.useMemo(() => new Set(pinnedIds), [pinnedIds]);\n const isPinned = (id: string) => pinOverrides.get(id) ?? pinnedSet.has(id);\n const matches = (item: T, filter: readonly string[]) =>\n filter.length === 0 || filter.includes(getCategory?.(item) ?? '');\n\n const updateFilters = (next: readonly string[]) => {\n setSelected(next);\n if (storageKey) writePrefs(storageKey, { categories: [...next], density });\n announce(text.resultCount(items.filter((i) => matches(i, next)).length));\n };\n\n const toggleDensity = () => {\n const next = density === 'compact' ? 'comfortable' : 'compact';\n setDensity(next);\n if (storageKey)\n writePrefs(storageKey, { categories: [...selected], density: next });\n };\n\n const loadMore = async () => {\n if (!onLoadMore) return;\n setLoadingMore(true);\n try {\n await onLoadMore();\n } catch {\n // The caller reports the failure; the button becomes usable again.\n } finally {\n setLoadingMore(false);\n }\n };\n\n const zone = timeZone;\n const reference = now ?? new Date();\n const compact = density === 'compact';\n const visible = items.filter((item) => matches(item, effectiveFilter));\n const pinnedItems = groupByDay(\n visible.filter((item) => isPinned(getId(item))),\n getDate,\n zone\n ).flatMap((g) => g.items);\n const days = groupByDay(\n visible.filter((item) => !isPinned(getId(item))),\n getDate,\n zone\n );\n\n let row = 0;\n const renderRow = (item: T) => {\n const id = getId(item);\n const pinned = isPinned(id);\n const pending = pinOverrides.has(id);\n const highlighted = id === highlightedId;\n const category = categoryById.get(getCategory?.(item) ?? '');\n const titleId = `${baseId}-title-${row++}`;\n const accent = accentClasses[category?.color ?? 'neutral'];\n const Icon = category?.icon;\n const dt = toDateTime(getDate(item), zone);\n const localDt = dt && withLocale(dt, locale);\n const actor = getActor?.(item);\n const description = compact ? undefined : getDescription?.(item);\n\n const body = renderItem?.(item, { density, pinned, category }) ?? (\n <>\n <span\n aria-hidden\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full',\n compact ? 'size-5' : 'mt-0.5 size-7',\n accent.tint\n )}\n >\n {Icon ? (\n <Icon className=\"text-foreground size-3.5\" />\n ) : (\n <span className={cn('size-2 rounded-full', accent.marker)} />\n )}\n </span>\n <span className=\"min-w-0 flex-1\">\n <span\n id={titleId}\n className=\"text-foreground block truncate text-sm font-medium\"\n >\n {getTitle?.(item) ?? category?.label ?? id}\n </span>\n {description && (\n <span className=\"text-muted-foreground line-clamp-2 block text-sm\">\n {description}\n </span>\n )}\n <span className=\"text-muted-foreground mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs\">\n {actor && (\n <span className=\"inline-flex items-center gap-1.5\">\n {!compact && (\n <Avatar\n size=\"xs\"\n name={actor.name}\n src={actor.avatarUrl}\n alt=\"\"\n aria-hidden\n />\n )}\n {actor.name}\n </span>\n )}\n {category && <span>{category.label}</span>}\n {localDt && (\n <time\n dateTime={localDt.toISO() ?? undefined}\n title={localDt.toLocaleString(DateTime.DATETIME_MED)}\n >\n {localDt.toLocaleString(DateTime.TIME_SIMPLE)}\n </time>\n )}\n {renderItemMeta?.(item)}\n </span>\n </span>\n </>\n );\n\n const mainClasses =\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md text-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';\n const href = getHref?.(id, item);\n let main: React.ReactNode;\n if (href) {\n main = (\n <a\n href={href}\n className={mainClasses}\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(id, item);\n }}\n onKeyDown={(event) => {\n // Anchors ignore Space natively; rows open on Enter and Space alike.\n if (event.key !== ' ') return;\n event.preventDefault();\n event.currentTarget.click();\n }}\n >\n {body}\n </a>\n );\n } else if (onOpen) {\n main = (\n <button\n type=\"button\"\n className={mainClasses}\n onClick={() => onOpen(id, item)}\n >\n {body}\n </button>\n );\n } else {\n main = <div className={mainClasses}>{body}</div>;\n }\n\n return (\n <li\n key={id}\n ref={(el) => {\n if (el) rowRefs.current.set(id, el);\n else rowRefs.current.delete(id);\n }}\n data-slot=\"activity-feed-item\"\n data-highlighted={highlighted || undefined}\n aria-busy={pending || undefined}\n className={cn(\n 'flex items-start gap-2 px-3',\n compact ? 'py-1.5' : 'py-3',\n highlighted && 'ring-primary-500 bg-primary-500/10 ring-2 ring-inset',\n classNames?.item,\n highlighted && classNames?.highlightedItem\n )}\n >\n {main}\n {onTogglePin && renderItem && (\n <span id={titleId} hidden>\n {getTitle?.(item) ?? category?.label ?? id}\n </span>\n )}\n {onTogglePin && (\n <button\n type=\"button\"\n aria-pressed={pinned}\n aria-label={text.pin}\n aria-describedby={titleId}\n disabled={pending}\n title={text.pin}\n onClick={() =>\n void runPin(id, !pinned, () => onTogglePin(id, !pinned))\n }\n className={cn(\n 'text-muted-foreground hover:bg-muted hover:text-foreground shrink-0 rounded-md p-1.5',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none',\n 'disabled:opacity-50',\n pinned && 'text-foreground'\n )}\n >\n <Pin\n className={cn('size-4', pinned && 'fill-current')}\n aria-hidden\n />\n </button>\n )}\n </li>\n );\n };\n\n const section = (\n key: string,\n label: React.ReactNode,\n sectionItems: T[],\n summary?: React.ReactNode\n ) => {\n const headingId = `${baseId}-day-${key || 'none'}`;\n return (\n <section\n key={key}\n aria-labelledby={headingId}\n data-slot=\"activity-feed-section\"\n className={classNames?.section}\n >\n <Heading\n id={headingId}\n data-slot=\"activity-feed-day-header\"\n className={cn(\n 'border-border bg-card text-muted-foreground sticky top-0 z-10 flex items-center gap-1.5 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase',\n classNames?.dayHeader\n )}\n >\n {label}\n </Heading>\n {summary}\n <ul className=\"divide-border divide-y\">\n {sectionItems.map(renderRow)}\n </ul>\n </section>\n );\n };\n\n let body: React.ReactNode;\n if (error) {\n body = (\n <RecordState\n kind=\"error\"\n slot=\"activity-feed-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=\"activity-feed-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=\"activity-feed-state\"\n message={text.empty}\n className={classNames?.state}\n />\n );\n } else if (visible.length === 0) {\n body = (\n <RecordState\n kind=\"empty\"\n slot=\"activity-feed-state\"\n message={text.noMatches}\n className={classNames?.state}\n >\n <Button variant=\"ghost\" size=\"sm\" onClick={() => updateFilters([])}>\n {text.allCategories}\n </Button>\n </RecordState>\n );\n } else {\n body = (\n <>\n {pinnedItems.length > 0 &&\n section(\n 'pinned',\n <>\n <Pin className=\"size-3.5\" aria-hidden />\n {text.pinned}\n </>,\n pinnedItems\n )}\n {days.map((day) =>\n section(\n day.key,\n formatDayLabel(day.key, {\n now: reference,\n zone,\n locale,\n today: text.today,\n yesterday: text.yesterday,\n undated: text.undated,\n }),\n day.items,\n renderDaySummary?.(day.key, day.items)\n )\n )}\n {hasMore && onLoadMore && (\n <div\n data-slot=\"activity-feed-load-more\"\n className={cn('border-border border-t p-3', classNames?.loadMore)}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n fullWidth\n isLoading={loadingMore}\n onClick={() => void loadMore()}\n >\n {text.loadMore}\n </Button>\n </div>\n )}\n </>\n );\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"activity-feed\"\n className={cn(\n 'border-border bg-card overflow-hidden rounded-lg border',\n className\n )}\n {...rest}\n >\n {(categories.length > 0 || items.length > 0) && (\n <div\n data-slot=\"activity-feed-toolbar\"\n className={cn(\n 'border-border flex items-center gap-2 border-b px-3 py-2',\n classNames?.toolbar\n )}\n >\n {categories.length > 0 && (\n <div\n role=\"group\"\n aria-label={text.filters}\n className=\"flex min-w-0 flex-1 flex-wrap gap-1.5\"\n >\n <button\n type=\"button\"\n aria-pressed={effectiveFilter.length === 0}\n onClick={() => updateFilters([])}\n data-slot=\"activity-feed-filter\"\n className={cn(\n chipClasses,\n effectiveFilter.length === 0\n ? 'border-primary-500/40 bg-primary-500/10 text-foreground'\n : 'border-border text-muted-foreground hover:bg-muted',\n classNames?.filter\n )}\n >\n {text.allCategories}\n </button>\n {categories.map((category) => {\n const active = effectiveFilter.includes(category.id);\n const accent = accentClasses[category.color ?? 'primary'];\n const Icon = category.icon;\n return (\n <button\n key={category.id}\n type=\"button\"\n aria-pressed={active}\n onClick={() =>\n updateFilters(\n active\n ? effectiveFilter.filter((c) => c !== category.id)\n : [...effectiveFilter, category.id]\n )\n }\n data-slot=\"activity-feed-filter\"\n className={cn(\n chipClasses,\n active\n ? cn(accent.tint, accent.border, 'text-foreground')\n : 'border-border text-muted-foreground hover:bg-muted',\n classNames?.filter\n )}\n >\n {Icon && <Icon className=\"size-3.5\" aria-hidden />}\n {category.label}\n </button>\n );\n })}\n </div>\n )}\n <button\n type=\"button\"\n aria-pressed={compact}\n aria-label={text.compact}\n title={text.compact}\n onClick={toggleDensity}\n className={cn(\n 'text-muted-foreground hover:bg-muted ms-auto shrink-0 rounded-md p-1.5',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none',\n compact && 'bg-muted text-foreground'\n )}\n >\n <Rows4 className=\"size-4\" aria-hidden />\n </button>\n </div>\n )}\n <div aria-live=\"polite\" className=\"sr-only\">\n {announcement}\n </div>\n {body}\n </div>\n );\n}\n\n/**\n * A day-grouped feed of a record's activity. Declared\n * `parameters.catalog.collection` — its load states are part of the API.\n */\nexport const ActivityFeed = React.forwardRef(ActivityFeedInner) as <T>(\n props: ActivityFeedProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => React.ReactElement;\n\n(ActivityFeed as React.FC).displayName = 'ActivityFeed';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-XBAAHOCP.js"}
|