silver-ui 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/{chunk-E7UOFIBW.cjs → chunk-23NN5WRP.cjs} +7 -6
- package/dist/chunk-23NN5WRP.cjs.map +1 -0
- package/dist/{chunk-3SLWOIT4.cjs → chunk-276LEL3G.cjs} +15 -6
- package/dist/chunk-276LEL3G.cjs.map +1 -0
- package/dist/chunk-2PSZAWLC.js +8 -0
- package/dist/chunk-2PSZAWLC.js.map +1 -0
- package/dist/{chunk-5MDH6QZE.js → chunk-2XAA3CM5.js} +7 -10
- package/dist/chunk-2XAA3CM5.js.map +1 -0
- package/dist/{chunk-SA3LUT6E.js → chunk-3DJ46WN4.js} +5 -5
- package/dist/{chunk-SA3LUT6E.js.map → chunk-3DJ46WN4.js.map} +1 -1
- package/dist/{chunk-JMLJLDHO.cjs → chunk-3IBY374V.cjs} +9 -9
- package/dist/{chunk-JMLJLDHO.cjs.map → chunk-3IBY374V.cjs.map} +1 -1
- package/dist/{chunk-7MB2KK6X.js → chunk-3L6KAW7G.js} +5 -5
- package/dist/{chunk-7MB2KK6X.js.map → chunk-3L6KAW7G.js.map} +1 -1
- package/dist/{chunk-WVQDFCFQ.js → chunk-3TXVDCF2.js} +4 -4
- package/dist/chunk-3TXVDCF2.js.map +1 -0
- package/dist/{chunk-P4A7GWQY.cjs → chunk-3XDUR3IG.cjs} +7 -6
- package/dist/chunk-3XDUR3IG.cjs.map +1 -0
- package/dist/{chunk-XHTKGOQV.cjs → chunk-3ZFEBOXD.cjs} +29 -18
- package/dist/chunk-3ZFEBOXD.cjs.map +1 -0
- package/dist/{chunk-UYKFE7KF.js → chunk-4CVDLMD6.js} +15 -6
- package/dist/chunk-4CVDLMD6.js.map +1 -0
- package/dist/{chunk-UUIAGGFW.cjs → chunk-4H35H54I.cjs} +35 -33
- package/dist/chunk-4H35H54I.cjs.map +1 -0
- package/dist/chunk-4MRORQNN.js +213 -0
- package/dist/chunk-4MRORQNN.js.map +1 -0
- package/dist/{chunk-CPZWTWYQ.js → chunk-54J6FRPG.js} +21 -16
- package/dist/chunk-54J6FRPG.js.map +1 -0
- package/dist/chunk-5AYGQJOW.js +162 -0
- package/dist/chunk-5AYGQJOW.js.map +1 -0
- package/dist/{chunk-GGZGVAEF.cjs → chunk-5BCLEOFF.cjs} +19 -16
- package/dist/chunk-5BCLEOFF.cjs.map +1 -0
- package/dist/{chunk-MEBIRX2P.js → chunk-5D4LRSIV.js} +6 -5
- package/dist/chunk-5D4LRSIV.js.map +1 -0
- package/dist/{chunk-4YQTSHIB.cjs → chunk-5GNYP3PH.cjs} +256 -209
- package/dist/chunk-5GNYP3PH.cjs.map +1 -0
- package/dist/{chunk-3DZPRXMC.cjs → chunk-5TT4PGZO.cjs} +6 -6
- package/dist/chunk-5TT4PGZO.cjs.map +1 -0
- package/dist/{chunk-AJYVGSBW.cjs → chunk-65QAZWOG.cjs} +4 -4
- package/dist/chunk-65QAZWOG.cjs.map +1 -0
- package/dist/{chunk-TZQWZ7IL.cjs → chunk-66LRFIYK.cjs} +8 -7
- package/dist/chunk-66LRFIYK.cjs.map +1 -0
- package/dist/{chunk-BDPE6ZKX.cjs → chunk-6MOJEGDU.cjs} +3 -3
- package/dist/{chunk-BDPE6ZKX.cjs.map → chunk-6MOJEGDU.cjs.map} +1 -1
- package/dist/{chunk-BA2VUDQS.js → chunk-6NTDPZWP.js} +3 -3
- package/dist/{chunk-BA2VUDQS.js.map → chunk-6NTDPZWP.js.map} +1 -1
- package/dist/{chunk-35MFOORC.js → chunk-6USJ4LJJ.js} +4 -4
- package/dist/{chunk-35MFOORC.js.map → chunk-6USJ4LJJ.js.map} +1 -1
- package/dist/{chunk-36QGPGT2.cjs → chunk-6W3L6IJB.cjs} +13 -12
- package/dist/chunk-6W3L6IJB.cjs.map +1 -0
- package/dist/{chunk-7P3VY5JZ.js → chunk-75CPTIET.js} +8 -7
- package/dist/chunk-75CPTIET.js.map +1 -0
- package/dist/{chunk-J2FCNWYM.js → chunk-76B2VLID.js} +82 -88
- package/dist/chunk-76B2VLID.js.map +1 -0
- package/dist/{chunk-FHKB6MBQ.js → chunk-7MN4JDP7.js} +31 -16
- package/dist/chunk-7MN4JDP7.js.map +1 -0
- package/dist/{chunk-3DFRJSNE.cjs → chunk-7PNLMDAR.cjs} +8 -8
- package/dist/{chunk-3DFRJSNE.cjs.map → chunk-7PNLMDAR.cjs.map} +1 -1
- package/dist/{chunk-ABEOBHAM.cjs → chunk-7U7RP6N2.cjs} +8 -8
- package/dist/{chunk-ABEOBHAM.cjs.map → chunk-7U7RP6N2.cjs.map} +1 -1
- package/dist/{chunk-463O56TB.js → chunk-AJTJD5C6.js} +6 -6
- package/dist/{chunk-463O56TB.js.map → chunk-AJTJD5C6.js.map} +1 -1
- package/dist/chunk-AMFFE5UJ.js +216 -0
- package/dist/chunk-AMFFE5UJ.js.map +1 -0
- package/dist/{chunk-K6CQ45C2.js → chunk-ASJ5CBCR.js} +7 -6
- package/dist/chunk-ASJ5CBCR.js.map +1 -0
- package/dist/{chunk-ESJND7B6.js → chunk-BA4A7C7U.js} +12 -9
- package/dist/chunk-BA4A7C7U.js.map +1 -0
- package/dist/{chunk-KFEXS6OK.cjs → chunk-BAPCHFNX.cjs} +10 -9
- package/dist/chunk-BAPCHFNX.cjs.map +1 -0
- package/dist/{chunk-O3T7Z6RH.cjs → chunk-BRB52QFV.cjs} +14 -54
- package/dist/chunk-BRB52QFV.cjs.map +1 -0
- package/dist/chunk-BS55BG2U.cjs +164 -0
- package/dist/chunk-BS55BG2U.cjs.map +1 -0
- package/dist/{chunk-TH3H5UGK.cjs → chunk-CEU7BIL6.cjs} +11 -11
- package/dist/{chunk-TH3H5UGK.cjs.map → chunk-CEU7BIL6.cjs.map} +1 -1
- package/dist/{chunk-VBL5SI5N.js → chunk-CN2HJ7CP.js} +212 -183
- package/dist/chunk-CN2HJ7CP.js.map +1 -0
- package/dist/{chunk-PXVVTPRJ.js → chunk-CRQXHA7N.js} +9 -8
- package/dist/chunk-CRQXHA7N.js.map +1 -0
- package/dist/{chunk-SXIBQQ55.js → chunk-CZC2K5GJ.js} +10 -9
- package/dist/chunk-CZC2K5GJ.js.map +1 -0
- package/dist/{chunk-WA4VZ363.cjs → chunk-CZM5FAWL.cjs} +11 -10
- package/dist/chunk-CZM5FAWL.cjs.map +1 -0
- package/dist/{chunk-3JVD4AXC.js → chunk-D2DOHX4W.js} +253 -206
- package/dist/chunk-D2DOHX4W.js.map +1 -0
- package/dist/chunk-D3SSMY73.cjs +80 -0
- package/dist/chunk-D3SSMY73.cjs.map +1 -0
- package/dist/{chunk-PTZAJW3J.js → chunk-DIIE44GO.js} +14 -13
- package/dist/chunk-DIIE44GO.js.map +1 -0
- package/dist/{chunk-S54CKWKV.js → chunk-DSB4Q3AS.js} +3 -3
- package/dist/{chunk-S54CKWKV.js.map → chunk-DSB4Q3AS.js.map} +1 -1
- package/dist/{chunk-AMG3S252.js → chunk-EBQ3A4XO.js} +9 -8
- package/dist/chunk-EBQ3A4XO.js.map +1 -0
- package/dist/{chunk-2K44WLBJ.js → chunk-EC2ALHNJ.js} +73 -67
- package/dist/chunk-EC2ALHNJ.js.map +1 -0
- package/dist/{chunk-JEK5SVB5.cjs → chunk-EE2O457Z.cjs} +9 -9
- package/dist/{chunk-JEK5SVB5.cjs.map → chunk-EE2O457Z.cjs.map} +1 -1
- package/dist/{chunk-DP4KK2N4.cjs → chunk-EVKFA5FA.cjs} +32 -27
- package/dist/chunk-EVKFA5FA.cjs.map +1 -0
- package/dist/{chunk-MNVBSOAQ.cjs → chunk-F3NATTQG.cjs} +81 -75
- package/dist/chunk-F3NATTQG.cjs.map +1 -0
- package/dist/{chunk-OJCJPYXE.js → chunk-F3ZNRO6W.js} +8 -7
- package/dist/chunk-F3ZNRO6W.js.map +1 -0
- package/dist/{chunk-OHKL4DOV.js → chunk-FZCBTFHY.js} +7 -6
- package/dist/chunk-FZCBTFHY.js.map +1 -0
- package/dist/{chunk-Z7ID5TC7.cjs → chunk-GLJWAY4A.cjs} +15 -10
- package/dist/chunk-GLJWAY4A.cjs.map +1 -0
- package/dist/{chunk-7DWASA3K.js → chunk-GXRH5XQY.js} +89 -74
- package/dist/chunk-GXRH5XQY.js.map +1 -0
- package/dist/{chunk-WE2AXMPB.js → chunk-HNROO7CR.js} +230 -170
- package/dist/chunk-HNROO7CR.js.map +1 -0
- package/dist/{chunk-UJODHP7E.cjs → chunk-HPVXP3DG.cjs} +12 -11
- package/dist/chunk-HPVXP3DG.cjs.map +1 -0
- package/dist/chunk-HVUYVPQL.cjs +193 -0
- package/dist/chunk-HVUYVPQL.cjs.map +1 -0
- package/dist/{chunk-PWL6TWVC.cjs → chunk-I7KILUVL.cjs} +13 -12
- package/dist/chunk-I7KILUVL.cjs.map +1 -0
- package/dist/{chunk-UY3MYNI6.js → chunk-IHM2M74J.js} +5 -4
- package/dist/chunk-IHM2M74J.js.map +1 -0
- package/dist/{chunk-4M2KCZMO.js → chunk-IRSJHEYI.js} +5 -4
- package/dist/chunk-IRSJHEYI.js.map +1 -0
- package/dist/{chunk-MX2F3HUI.cjs → chunk-JEIQ5GDK.cjs} +25 -24
- package/dist/chunk-JEIQ5GDK.cjs.map +1 -0
- package/dist/{chunk-YXYD5HKL.cjs → chunk-KFDHP4WP.cjs} +4 -4
- package/dist/{chunk-YXYD5HKL.cjs.map → chunk-KFDHP4WP.cjs.map} +1 -1
- package/dist/{chunk-FDSUILCM.cjs → chunk-KRZ57O2J.cjs} +3 -4
- package/dist/chunk-KRZ57O2J.cjs.map +1 -0
- package/dist/{chunk-W3QVSVL7.cjs → chunk-L5YTMHDI.cjs} +11 -10
- package/dist/chunk-L5YTMHDI.cjs.map +1 -0
- package/dist/{chunk-PNYF6NS4.cjs → chunk-L7BOLGF2.cjs} +8 -7
- package/dist/chunk-L7BOLGF2.cjs.map +1 -0
- package/dist/{chunk-QPYPPJEZ.js → chunk-LHP47U6H.js} +5 -4
- package/dist/chunk-LHP47U6H.js.map +1 -0
- package/dist/{chunk-EBCHOGKT.js → chunk-LUBVZVY3.js} +17 -16
- package/dist/chunk-LUBVZVY3.js.map +1 -0
- package/dist/{chunk-47FUQCAT.cjs → chunk-LX64ENLC.cjs} +66 -51
- package/dist/chunk-LX64ENLC.cjs.map +1 -0
- package/dist/{chunk-GYUWDJXS.cjs → chunk-M3BF3BBJ.cjs} +13 -12
- package/dist/chunk-M3BF3BBJ.cjs.map +1 -0
- package/dist/chunk-M3IKL2VG.js +393 -0
- package/dist/chunk-M3IKL2VG.js.map +1 -0
- package/dist/{chunk-RSG7N5QQ.cjs → chunk-M3RNFDA2.cjs} +14 -13
- package/dist/chunk-M3RNFDA2.cjs.map +1 -0
- package/dist/{chunk-U4GWNENK.js → chunk-M4JUQCKP.js} +3 -3
- package/dist/chunk-M4JUQCKP.js.map +1 -0
- package/dist/{chunk-YUONTRNC.js → chunk-MGVEX3RS.js} +7 -7
- package/dist/{chunk-YUONTRNC.js.map → chunk-MGVEX3RS.js.map} +1 -1
- package/dist/chunk-MSNRGNVY.cjs +216 -0
- package/dist/chunk-MSNRGNVY.cjs.map +1 -0
- package/dist/{chunk-IXJOPMJX.cjs → chunk-MUUPZEZ5.cjs} +7 -6
- package/dist/chunk-MUUPZEZ5.cjs.map +1 -0
- package/dist/{chunk-XVRQSTUF.js → chunk-N2TNBDQI.js} +4 -3
- package/dist/chunk-N2TNBDQI.js.map +1 -0
- package/dist/{chunk-CBJ4APCT.js → chunk-NH7KH7QP.js} +5 -4
- package/dist/chunk-NH7KH7QP.js.map +1 -0
- package/dist/{chunk-76FHSISK.cjs → chunk-NHXJVSZZ.cjs} +7 -10
- package/dist/chunk-NHXJVSZZ.cjs.map +1 -0
- package/dist/{chunk-4I6VIR44.cjs → chunk-NYQPIBOD.cjs} +12 -11
- package/dist/chunk-NYQPIBOD.cjs.map +1 -0
- package/dist/{chunk-BTL6GUMN.js → chunk-O4RTJESR.js} +3 -3
- package/dist/{chunk-BTL6GUMN.js.map → chunk-O4RTJESR.js.map} +1 -1
- package/dist/{chunk-DZ3NHSJ4.js → chunk-O5A47TA2.js} +5 -4
- package/dist/chunk-O5A47TA2.js.map +1 -0
- package/dist/{chunk-HMWV6KCW.cjs → chunk-OSBVDRVD.cjs} +17 -16
- package/dist/chunk-OSBVDRVD.cjs.map +1 -0
- package/dist/{chunk-NF63IRZR.cjs → chunk-OULO3YDQ.cjs} +6 -5
- package/dist/chunk-OULO3YDQ.cjs.map +1 -0
- package/dist/{chunk-POW2Z7TP.js → chunk-OWBNRALR.js} +5 -5
- package/dist/{chunk-POW2Z7TP.js.map → chunk-OWBNRALR.js.map} +1 -1
- package/dist/{chunk-GEGYC7CE.js → chunk-P6RAOXJA.js} +5 -5
- package/dist/chunk-P6RAOXJA.js.map +1 -0
- package/dist/{chunk-MMQIQILP.cjs → chunk-PJMV2HTO.cjs} +27 -29
- package/dist/chunk-PJMV2HTO.cjs.map +1 -0
- package/dist/{chunk-3WMLV4VP.cjs → chunk-PL6J55JB.cjs} +6 -6
- package/dist/chunk-PL6J55JB.cjs.map +1 -0
- package/dist/chunk-PQRIV5XU.js +242 -0
- package/dist/chunk-PQRIV5XU.js.map +1 -0
- package/dist/chunk-PZ63ZCEO.cjs +470 -0
- package/dist/chunk-PZ63ZCEO.cjs.map +1 -0
- package/dist/{chunk-AKTUU5ML.js → chunk-Q3OA23V5.js} +17 -19
- package/dist/chunk-Q3OA23V5.js.map +1 -0
- package/dist/chunk-QAO6QMNQ.cjs +10 -0
- package/dist/chunk-QAO6QMNQ.cjs.map +1 -0
- package/dist/{chunk-O2ZMOBMA.cjs → chunk-QCT4BPB6.cjs} +21 -21
- package/dist/{chunk-O2ZMOBMA.cjs.map → chunk-QCT4BPB6.cjs.map} +1 -1
- package/dist/{chunk-JMNH45Q3.cjs → chunk-QEFE4QBL.cjs} +81 -87
- package/dist/chunk-QEFE4QBL.cjs.map +1 -0
- package/dist/{chunk-ZP3UZDSV.cjs → chunk-QEX7V7TI.cjs} +10 -9
- package/dist/chunk-QEX7V7TI.cjs.map +1 -0
- package/dist/chunk-QGHFUOUB.cjs +112 -0
- package/dist/chunk-QGHFUOUB.cjs.map +1 -0
- package/dist/{chunk-VQ7IRFRR.cjs → chunk-QL3YSC3H.cjs} +16 -15
- package/dist/chunk-QL3YSC3H.cjs.map +1 -0
- package/dist/{chunk-2VIJC4NW.cjs → chunk-QRKRVCA3.cjs} +238 -178
- package/dist/chunk-QRKRVCA3.cjs.map +1 -0
- package/dist/{chunk-S4GLMGFI.js → chunk-RINP34ZG.js} +5 -4
- package/dist/chunk-RINP34ZG.js.map +1 -0
- package/dist/{chunk-RRNT32KY.js → chunk-RVENUWRD.js} +15 -55
- package/dist/chunk-RVENUWRD.js.map +1 -0
- package/dist/{chunk-GTPRZCNZ.js → chunk-S4B2D427.js} +3 -3
- package/dist/{chunk-GTPRZCNZ.js.map → chunk-S4B2D427.js.map} +1 -1
- package/dist/{chunk-AXCE2HKG.js → chunk-S4LVSSJI.js} +11 -6
- package/dist/chunk-S4LVSSJI.js.map +1 -0
- package/dist/{chunk-L6JT244G.cjs → chunk-SSOAZZNR.cjs} +4 -3
- package/dist/chunk-SSOAZZNR.cjs.map +1 -0
- package/dist/{chunk-BZ4XKKNH.js → chunk-TF7IWMV2.js} +9 -8
- package/dist/chunk-TF7IWMV2.js.map +1 -0
- package/dist/{chunk-V7Q64Z3S.cjs → chunk-U2U4FMFM.cjs} +8 -8
- package/dist/{chunk-V7Q64Z3S.cjs.map → chunk-U2U4FMFM.cjs.map} +1 -1
- package/dist/chunk-U5GTHA44.cjs +395 -0
- package/dist/chunk-U5GTHA44.cjs.map +1 -0
- package/dist/chunk-UKDGDMWN.js +78 -0
- package/dist/chunk-UKDGDMWN.js.map +1 -0
- package/dist/chunk-UN35QV25.js +110 -0
- package/dist/chunk-UN35QV25.js.map +1 -0
- package/dist/{chunk-IR4COTIR.js → chunk-UPQHFW47.js} +4 -4
- package/dist/{chunk-IR4COTIR.js.map → chunk-UPQHFW47.js.map} +1 -1
- package/dist/{chunk-U5ZCQI5O.cjs → chunk-UXDXE7Z6.cjs} +41 -40
- package/dist/chunk-UXDXE7Z6.cjs.map +1 -0
- package/dist/{chunk-ZJ2NV4SQ.js → chunk-UYBGXFYX.js} +22 -21
- package/dist/chunk-UYBGXFYX.js.map +1 -0
- package/dist/{chunk-ZW2ATXTL.js → chunk-VAK4JQYL.js} +7 -6
- package/dist/chunk-VAK4JQYL.js.map +1 -0
- package/dist/{chunk-QADMIAYK.js → chunk-VEUZ5DZR.js} +6 -5
- package/dist/chunk-VEUZ5DZR.js.map +1 -0
- package/dist/{chunk-JVLE7PCJ.cjs → chunk-VJBBMBRT.cjs} +7 -7
- package/dist/{chunk-JVLE7PCJ.cjs.map → chunk-VJBBMBRT.cjs.map} +1 -1
- package/dist/chunk-VVO7GIHG.cjs +220 -0
- package/dist/chunk-VVO7GIHG.cjs.map +1 -0
- package/dist/{chunk-BDBHHJGN.cjs → chunk-W3KMDQKP.cjs} +8 -7
- package/dist/chunk-W3KMDQKP.cjs.map +1 -0
- package/dist/{chunk-UC36KIEP.cjs → chunk-WGCGHFXE.cjs} +2 -3
- package/dist/chunk-WGCGHFXE.cjs.map +1 -0
- package/dist/{chunk-74ONIT6C.js → chunk-WO6FS4DV.js} +5 -4
- package/dist/chunk-WO6FS4DV.js.map +1 -0
- package/dist/chunk-WYE3VOFK.cjs +244 -0
- package/dist/chunk-WYE3VOFK.cjs.map +1 -0
- package/dist/{chunk-3IDEWEDY.cjs → chunk-X2GRBPCJ.cjs} +89 -74
- package/dist/chunk-X2GRBPCJ.cjs.map +1 -0
- package/dist/{chunk-4YQSKCVF.cjs → chunk-XADTIY7J.cjs} +4 -4
- package/dist/{chunk-4YQSKCVF.cjs.map → chunk-XADTIY7J.cjs.map} +1 -1
- package/dist/{chunk-63RKQ237.js → chunk-XUJZTD4E.js} +9 -8
- package/dist/chunk-XUJZTD4E.js.map +1 -0
- package/dist/{chunk-OJ3KVNW2.js → chunk-Y4FH67QZ.js} +8 -7
- package/dist/chunk-Y4FH67QZ.js.map +1 -0
- package/dist/{chunk-UQV5MOGR.js → chunk-YLGAJD6Q.js} +8 -6
- package/dist/chunk-YLGAJD6Q.js.map +1 -0
- package/dist/chunk-YNTPHZFJ.js +191 -0
- package/dist/chunk-YNTPHZFJ.js.map +1 -0
- package/dist/{chunk-OBBPRWYD.js → chunk-YSTESYUB.js} +24 -13
- package/dist/chunk-YSTESYUB.js.map +1 -0
- package/dist/{chunk-K77D7H4V.cjs → chunk-ZD3NPHZ7.cjs} +5 -4
- package/dist/chunk-ZD3NPHZ7.cjs.map +1 -0
- package/dist/{chunk-2RIDPITG.cjs → chunk-ZLATP3P5.cjs} +10 -8
- package/dist/chunk-ZLATP3P5.cjs.map +1 -0
- package/dist/{chunk-6NY5DOFM.js → chunk-ZVH3BLYO.js} +8 -7
- package/dist/chunk-ZVH3BLYO.js.map +1 -0
- package/dist/{chunk-STSR3FAC.js → chunk-ZWULWVN3.js} +30 -28
- package/dist/chunk-ZWULWVN3.js.map +1 -0
- package/dist/components/Accordion/AccordionItem.recipe.d.ts +1 -1
- package/dist/components/Accordion/index.cjs +5 -5
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/Alert.recipe.d.ts +1 -1
- package/dist/components/Alert/index.cjs +8 -7
- package/dist/components/Alert/index.js +7 -6
- package/dist/components/AlertDialog/index.cjs +10 -9
- package/dist/components/AlertDialog/index.js +8 -7
- package/dist/components/AppShell/AppShell.d.ts.map +1 -1
- package/dist/components/AppShell/index.cjs +16 -15
- package/dist/components/AppShell/index.js +13 -12
- package/dist/components/AutocompleteInput/AutocompleteInput.d.ts +6 -1
- package/dist/components/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/AutocompleteInput.recipe.d.ts +42 -0
- package/dist/components/AutocompleteInput/AutocompleteInput.recipe.d.ts.map +1 -0
- package/dist/components/AutocompleteInput/AutocompleteInputItem.d.ts +27 -4
- package/dist/components/AutocompleteInput/AutocompleteInputItem.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/BaseAutocompleteInput.d.ts +22 -2
- package/dist/components/AutocompleteInput/BaseAutocompleteInput.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/index.cjs +14 -13
- package/dist/components/AutocompleteInput/index.d.ts +1 -1
- package/dist/components/AutocompleteInput/index.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/index.js +10 -9
- package/dist/components/AutocompleteInput/types.d.ts +39 -3
- package/dist/components/AutocompleteInput/types.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/components/Avatar/index.cjs +6 -5
- package/dist/components/Avatar/index.js +3 -2
- package/dist/components/AvatarGroup/index.cjs +6 -5
- package/dist/components/AvatarGroup/index.js +4 -3
- package/dist/components/Blockquote/Blockquote.d.ts.map +1 -1
- package/dist/components/Blockquote/index.cjs +3 -6
- package/dist/components/Blockquote/index.d.ts +0 -1
- package/dist/components/Blockquote/index.d.ts.map +1 -1
- package/dist/components/Blockquote/index.js +2 -1
- package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/BreadcrumbItem.recipe.d.ts +22 -0
- package/dist/components/Breadcrumbs/BreadcrumbItem.recipe.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.recipe.d.ts +4 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.recipe.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/index.cjs +6 -4
- package/dist/components/Breadcrumbs/index.js +3 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.recipe.d.ts +80 -62
- package/dist/components/Button/Button.recipe.d.ts.map +1 -1
- package/dist/components/Button/index.cjs +7 -6
- package/dist/components/Button/index.js +6 -5
- package/dist/components/ButtonGroup/ButtonGroup.recipe.d.ts +4 -4
- package/dist/components/ButtonGroup/ButtonGroup.recipe.d.ts.map +1 -1
- package/dist/components/ButtonGroup/index.cjs +2 -2
- package/dist/components/ButtonGroup/index.js +1 -1
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.recipe.d.ts +86 -0
- package/dist/components/Calendar/Calendar.recipe.d.ts.map +1 -0
- package/dist/components/Calendar/index.cjs +8 -7
- package/dist/components/Calendar/index.js +7 -6
- package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts +39 -0
- package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts.map +1 -0
- package/dist/components/CheckboxInput/index.cjs +7 -6
- package/dist/components/CheckboxInput/index.js +6 -5
- package/dist/components/CodeBlock/index.cjs +9 -8
- package/dist/components/CodeBlock/index.d.ts +0 -1
- package/dist/components/CodeBlock/index.d.ts.map +1 -1
- package/dist/components/CodeBlock/index.js +8 -7
- package/dist/components/ContextMenu/index.cjs +13 -12
- package/dist/components/ContextMenu/index.js +11 -10
- package/dist/components/DateInput/DateInput.d.ts +5 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/index.cjs +11 -10
- package/dist/components/DateInput/index.js +10 -9
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/index.cjs +11 -10
- package/dist/components/DateRangeInput/index.js +10 -9
- package/dist/components/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/components/DateTimeInput/index.cjs +13 -12
- package/dist/components/DateTimeInput/index.js +12 -11
- package/dist/components/Divider/Divider.d.ts.map +1 -1
- package/dist/components/Divider/index.cjs +3 -2
- package/dist/components/Divider/index.js +2 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/DropdownMenu/index.cjs +14 -13
- package/dist/components/DropdownMenu/index.js +10 -9
- package/dist/components/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.recipe.d.ts +13 -4
- package/dist/components/EmptyState/EmptyState.recipe.d.ts.map +1 -1
- package/dist/components/EmptyState/index.cjs +5 -3
- package/dist/components/EmptyState/index.js +4 -2
- package/dist/components/Field/Field.d.ts.map +1 -1
- package/dist/components/Field/index.cjs +6 -5
- package/dist/components/Field/index.js +4 -3
- package/dist/components/FileInput/FileInput.d.ts.map +1 -1
- package/dist/components/FileInput/index.cjs +9 -8
- package/dist/components/FileInput/index.js +8 -7
- package/dist/components/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/components/InputGroup/index.cjs +9 -8
- package/dist/components/InputGroup/index.js +5 -4
- package/dist/components/Item/Item.d.ts.map +1 -1
- package/dist/components/Item/index.cjs +4 -3
- package/dist/components/Item/index.js +3 -2
- package/dist/components/Kbd/index.d.ts +0 -1
- package/dist/components/Kbd/index.d.ts.map +1 -1
- package/dist/components/Layout/Layout.d.ts.map +1 -1
- package/dist/components/Layout/LayoutFooter.d.ts.map +1 -1
- package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/components/Layout/index.cjs +12 -11
- package/dist/components/Layout/index.js +7 -6
- package/dist/components/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/components/Lightbox/index.cjs +9 -8
- package/dist/components/Lightbox/index.js +7 -6
- package/dist/components/Link/index.cjs +1 -0
- package/dist/components/Link/index.js +1 -0
- package/dist/components/List/List.d.ts.map +1 -1
- package/dist/components/List/List.recipe.d.ts +42 -0
- package/dist/components/List/List.recipe.d.ts.map +1 -0
- package/dist/components/List/ListItem.d.ts.map +1 -1
- package/dist/components/List/index.cjs +7 -5
- package/dist/components/List/index.js +5 -3
- package/dist/components/MetadataList/index.cjs +4 -4
- package/dist/components/MetadataList/index.js +2 -2
- package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.cjs +11 -10
- package/dist/components/MultiSelect/index.js +10 -9
- package/dist/components/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/components/NumberInput/index.cjs +10 -9
- package/dist/components/NumberInput/index.js +9 -8
- package/dist/components/Pagination/index.cjs +8 -7
- package/dist/components/Pagination/index.js +7 -6
- package/dist/components/PasswordInput/index.cjs +11 -10
- package/dist/components/PasswordInput/index.js +10 -9
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/index.cjs +9 -8
- package/dist/components/Popover/index.js +7 -6
- package/dist/components/Progress/Progress.d.ts.map +1 -1
- package/dist/components/Progress/Progress.recipe.d.ts +34 -16
- package/dist/components/Progress/Progress.recipe.d.ts.map +1 -1
- package/dist/components/Progress/index.cjs +4 -2
- package/dist/components/Progress/index.js +3 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroupItem.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.cjs +8 -7
- package/dist/components/RadioGroup/index.d.ts +0 -1
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +6 -5
- package/dist/components/Rating/index.cjs +3 -7
- package/dist/components/Rating/index.d.ts +0 -1
- package/dist/components/Rating/index.d.ts.map +1 -1
- package/dist/components/Rating/index.js +2 -2
- package/dist/components/Schedule/index.cjs +23 -22
- package/dist/components/Schedule/index.js +12 -11
- package/dist/components/SearchFilterInput/SearchFilterInput.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/index.cjs +30 -29
- package/dist/components/SearchFilterInput/index.js +22 -21
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.recipe.d.ts +25 -0
- package/dist/components/Select/Select.recipe.d.ts.map +1 -0
- package/dist/components/Select/SelectOption.d.ts.map +1 -1
- package/dist/components/Select/index.cjs +13 -12
- package/dist/components/Select/index.js +11 -10
- package/dist/components/SideNav/SideNav.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavSection.d.ts.map +1 -1
- package/dist/components/SideNav/index.cjs +15 -14
- package/dist/components/SideNav/index.js +9 -8
- package/dist/components/Skeleton/index.cjs +2 -6
- package/dist/components/Skeleton/index.d.ts +0 -1
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +1 -1
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/index.cjs +6 -9
- package/dist/components/Slider/index.d.ts +0 -1
- package/dist/components/Slider/index.d.ts.map +1 -1
- package/dist/components/Slider/index.js +5 -4
- package/dist/components/Spinner/index.cjs +3 -3
- package/dist/components/Spinner/index.js +2 -2
- package/dist/components/SplitButton/SplitButton.d.ts +89 -0
- package/dist/components/SplitButton/SplitButton.d.ts.map +1 -0
- package/dist/components/SplitButton/index.cjs +35 -0
- package/dist/components/SplitButton/index.cjs.map +1 -0
- package/dist/components/SplitButton/index.d.ts +2 -0
- package/dist/components/SplitButton/index.d.ts.map +1 -0
- package/dist/components/SplitButton/index.js +26 -0
- package/dist/components/SplitButton/index.js.map +1 -0
- package/dist/components/Stack/HStack.d.ts +1 -1
- package/dist/components/Stack/HStack.d.ts.map +1 -1
- package/dist/components/Stack/VStack.d.ts +1 -1
- package/dist/components/Stack/VStack.d.ts.map +1 -1
- package/dist/components/Stack/index.cjs +3 -3
- package/dist/components/Stack/index.d.ts +1 -1
- package/dist/components/Stack/index.d.ts.map +1 -1
- package/dist/components/Stack/index.js +1 -1
- package/dist/components/Stack/{Stack.d.ts → internal/Stack.d.ts} +13 -3
- package/dist/components/Stack/internal/Stack.d.ts.map +1 -0
- package/dist/components/Stack/{Stack.recipe.d.ts → internal/Stack.recipe.d.ts} +1 -1
- package/dist/components/Stack/internal/Stack.recipe.d.ts.map +1 -0
- package/dist/components/Stepper/Step.d.ts.map +1 -1
- package/dist/components/Stepper/index.cjs +6 -5
- package/dist/components/Stepper/index.js +3 -2
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/index.cjs +6 -5
- package/dist/components/Switch/index.js +5 -4
- package/dist/components/Table/BaseTable.d.ts.map +1 -1
- package/dist/components/Table/index.cjs +53 -52
- package/dist/components/Table/index.js +25 -24
- package/dist/components/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/components/Tabs/index.cjs +13 -12
- package/dist/components/Tabs/index.js +8 -7
- package/dist/components/Tag/Tag.d.ts +2 -2
- package/dist/components/Tag/Tag.d.ts.map +1 -1
- package/dist/components/Tag/Tag.recipe.d.ts +103 -68
- package/dist/components/Tag/Tag.recipe.d.ts.map +1 -1
- package/dist/components/Tag/index.cjs +4 -2
- package/dist/components/Tag/index.js +3 -1
- package/dist/components/TagsInput/TagsInput.d.ts.map +1 -1
- package/dist/components/TagsInput/index.cjs +12 -11
- package/dist/components/TagsInput/index.js +11 -10
- package/dist/components/Text/Heading.d.ts.map +1 -1
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/index.cjs +3 -3
- package/dist/components/Text/index.js +1 -1
- package/dist/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/TextArea/index.cjs +7 -6
- package/dist/components/TextArea/index.js +6 -5
- package/dist/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/components/TextInput/index.cjs +10 -9
- package/dist/components/TextInput/index.js +9 -8
- package/dist/components/Thumbnail/Thumbnail.recipe.d.ts +1 -1
- package/dist/components/Thumbnail/index.cjs +9 -8
- package/dist/components/Thumbnail/index.d.ts +0 -1
- package/dist/components/Thumbnail/index.d.ts.map +1 -1
- package/dist/components/Thumbnail/index.js +8 -7
- package/dist/components/TimeInput/TimeInput.d.ts +10 -2
- package/dist/components/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/components/TimeInput/index.cjs +9 -8
- package/dist/components/TimeInput/index.js +8 -7
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/Toast.recipe.d.ts +39 -0
- package/dist/components/Toast/Toast.recipe.d.ts.map +1 -0
- package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/components/Toast/index.cjs +10 -9
- package/dist/components/Toast/index.js +7 -6
- package/dist/components/ToggleButton/index.cjs +7 -7
- package/dist/components/ToggleButton/index.js +5 -5
- package/dist/components/TopNav/TopNav.d.ts.map +1 -1
- package/dist/components/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/components/TopNav/index.cjs +15 -14
- package/dist/components/TopNav/index.js +9 -8
- package/dist/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
- package/dist/components/TreeView/index.cjs +3 -2
- package/dist/components/TreeView/index.js +2 -1
- package/dist/index.cjs +229 -227
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -64
- package/dist/index.js.map +1 -1
- package/dist/internal/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/internal/OverflowList.d.ts.map +1 -1
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/isReactNode.d.ts +3 -0
- package/dist/internal/isReactNode.d.ts.map +1 -0
- package/dist/internal/useSelectListbox.d.ts +2 -2
- package/dist/internal/useSelectListbox.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/chunk-2K44WLBJ.js.map +0 -1
- package/dist/chunk-2RIDPITG.cjs.map +0 -1
- package/dist/chunk-2VIJC4NW.cjs.map +0 -1
- package/dist/chunk-36QGPGT2.cjs.map +0 -1
- package/dist/chunk-3DZPRXMC.cjs.map +0 -1
- package/dist/chunk-3IDEWEDY.cjs.map +0 -1
- package/dist/chunk-3JVD4AXC.js.map +0 -1
- package/dist/chunk-3SLWOIT4.cjs.map +0 -1
- package/dist/chunk-3WMLV4VP.cjs.map +0 -1
- package/dist/chunk-47FUQCAT.cjs.map +0 -1
- package/dist/chunk-4I6VIR44.cjs.map +0 -1
- package/dist/chunk-4M2KCZMO.js.map +0 -1
- package/dist/chunk-4YESF35X.cjs +0 -211
- package/dist/chunk-4YESF35X.cjs.map +0 -1
- package/dist/chunk-4YQTSHIB.cjs.map +0 -1
- package/dist/chunk-5MDH6QZE.js.map +0 -1
- package/dist/chunk-63RKQ237.js.map +0 -1
- package/dist/chunk-6D3FA247.js +0 -126
- package/dist/chunk-6D3FA247.js.map +0 -1
- package/dist/chunk-6NY5DOFM.js.map +0 -1
- package/dist/chunk-74ONIT6C.js.map +0 -1
- package/dist/chunk-76FHSISK.cjs.map +0 -1
- package/dist/chunk-77RGTGRM.cjs +0 -128
- package/dist/chunk-77RGTGRM.cjs.map +0 -1
- package/dist/chunk-7DWASA3K.js.map +0 -1
- package/dist/chunk-7P3VY5JZ.js.map +0 -1
- package/dist/chunk-AJYVGSBW.cjs.map +0 -1
- package/dist/chunk-AKTUU5ML.js.map +0 -1
- package/dist/chunk-AMG3S252.js.map +0 -1
- package/dist/chunk-AXCE2HKG.js.map +0 -1
- package/dist/chunk-BDBHHJGN.cjs.map +0 -1
- package/dist/chunk-BZ4XKKNH.js.map +0 -1
- package/dist/chunk-CBJ4APCT.js.map +0 -1
- package/dist/chunk-CPZWTWYQ.js.map +0 -1
- package/dist/chunk-DH2ZFYKE.cjs +0 -441
- package/dist/chunk-DH2ZFYKE.cjs.map +0 -1
- package/dist/chunk-DP4KK2N4.cjs.map +0 -1
- package/dist/chunk-DZ3NHSJ4.js.map +0 -1
- package/dist/chunk-E2JZGYKU.cjs +0 -181
- package/dist/chunk-E2JZGYKU.cjs.map +0 -1
- package/dist/chunk-E7UOFIBW.cjs.map +0 -1
- package/dist/chunk-EBCHOGKT.js.map +0 -1
- package/dist/chunk-EFO5NDBJ.js +0 -191
- package/dist/chunk-EFO5NDBJ.js.map +0 -1
- package/dist/chunk-ESJND7B6.js.map +0 -1
- package/dist/chunk-FDSUILCM.cjs.map +0 -1
- package/dist/chunk-FHKB6MBQ.js.map +0 -1
- package/dist/chunk-GEGYC7CE.js.map +0 -1
- package/dist/chunk-GGZGVAEF.cjs.map +0 -1
- package/dist/chunk-GYUWDJXS.cjs.map +0 -1
- package/dist/chunk-HMWV6KCW.cjs.map +0 -1
- package/dist/chunk-IXJOPMJX.cjs.map +0 -1
- package/dist/chunk-J2FCNWYM.js.map +0 -1
- package/dist/chunk-JMNH45Q3.cjs.map +0 -1
- package/dist/chunk-K6CQ45C2.js.map +0 -1
- package/dist/chunk-K77D7H4V.cjs.map +0 -1
- package/dist/chunk-KFEXS6OK.cjs.map +0 -1
- package/dist/chunk-L6JT244G.cjs.map +0 -1
- package/dist/chunk-L6WUK7O4.js +0 -207
- package/dist/chunk-L6WUK7O4.js.map +0 -1
- package/dist/chunk-LJLCGQRV.js +0 -99
- package/dist/chunk-LJLCGQRV.js.map +0 -1
- package/dist/chunk-MEBIRX2P.js.map +0 -1
- package/dist/chunk-MMQIQILP.cjs.map +0 -1
- package/dist/chunk-MMST4VXH.cjs +0 -392
- package/dist/chunk-MMST4VXH.cjs.map +0 -1
- package/dist/chunk-MNVBSOAQ.cjs.map +0 -1
- package/dist/chunk-MX2F3HUI.cjs.map +0 -1
- package/dist/chunk-NF63IRZR.cjs.map +0 -1
- package/dist/chunk-O3T7Z6RH.cjs.map +0 -1
- package/dist/chunk-OBBPRWYD.js.map +0 -1
- package/dist/chunk-OHKL4DOV.js.map +0 -1
- package/dist/chunk-OJ3KVNW2.js.map +0 -1
- package/dist/chunk-OJCJPYXE.js.map +0 -1
- package/dist/chunk-P4A7GWQY.cjs.map +0 -1
- package/dist/chunk-P4TOIB2A.cjs +0 -101
- package/dist/chunk-P4TOIB2A.cjs.map +0 -1
- package/dist/chunk-PJXJOI73.js +0 -232
- package/dist/chunk-PJXJOI73.js.map +0 -1
- package/dist/chunk-PNYF6NS4.cjs.map +0 -1
- package/dist/chunk-PTZAJW3J.js.map +0 -1
- package/dist/chunk-PWL6TWVC.cjs.map +0 -1
- package/dist/chunk-PXVVTPRJ.js.map +0 -1
- package/dist/chunk-QADMIAYK.js.map +0 -1
- package/dist/chunk-QPYPPJEZ.js.map +0 -1
- package/dist/chunk-RRNT32KY.js.map +0 -1
- package/dist/chunk-RSG7N5QQ.cjs.map +0 -1
- package/dist/chunk-S4GLMGFI.js.map +0 -1
- package/dist/chunk-SSOHJEHS.js +0 -390
- package/dist/chunk-SSOHJEHS.js.map +0 -1
- package/dist/chunk-STSR3FAC.js.map +0 -1
- package/dist/chunk-SXIBQQ55.js.map +0 -1
- package/dist/chunk-TO3ZPSYO.cjs +0 -234
- package/dist/chunk-TO3ZPSYO.cjs.map +0 -1
- package/dist/chunk-TZQWZ7IL.cjs.map +0 -1
- package/dist/chunk-U4GWNENK.js.map +0 -1
- package/dist/chunk-U5ZCQI5O.cjs.map +0 -1
- package/dist/chunk-UC36KIEP.cjs.map +0 -1
- package/dist/chunk-UJODHP7E.cjs.map +0 -1
- package/dist/chunk-UQV5MOGR.js.map +0 -1
- package/dist/chunk-UUIAGGFW.cjs.map +0 -1
- package/dist/chunk-UX2Z7LRM.cjs +0 -194
- package/dist/chunk-UX2Z7LRM.cjs.map +0 -1
- package/dist/chunk-UY3MYNI6.js.map +0 -1
- package/dist/chunk-UYKFE7KF.js.map +0 -1
- package/dist/chunk-VBL5SI5N.js.map +0 -1
- package/dist/chunk-VQ7IRFRR.cjs.map +0 -1
- package/dist/chunk-W3QVSVL7.cjs.map +0 -1
- package/dist/chunk-WA4VZ363.cjs.map +0 -1
- package/dist/chunk-WE2AXMPB.js.map +0 -1
- package/dist/chunk-WVQDFCFQ.js.map +0 -1
- package/dist/chunk-XHTKGOQV.cjs.map +0 -1
- package/dist/chunk-XVRQSTUF.js.map +0 -1
- package/dist/chunk-Z7ID5TC7.cjs.map +0 -1
- package/dist/chunk-ZC6GLBEL.js +0 -179
- package/dist/chunk-ZC6GLBEL.js.map +0 -1
- package/dist/chunk-ZJ2NV4SQ.js.map +0 -1
- package/dist/chunk-ZP3UZDSV.cjs.map +0 -1
- package/dist/chunk-ZW2ATXTL.js.map +0 -1
- package/dist/components/Stack/Stack.d.ts.map +0 -1
- package/dist/components/Stack/Stack.recipe.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Schedule/CalendarEvent.ts","../src/components/Schedule/context.tsx","../src/components/Schedule/dateMath.ts","../src/components/Schedule/shared.tsx","../src/components/Schedule/useCurrentTime.ts","../src/components/Schedule/TimeGridView.tsx","../src/components/Schedule/zonedDateTime.ts","../src/components/Schedule/DayView.tsx","../src/components/Schedule/ListView.tsx","../src/components/Schedule/MonthlyView.tsx","../src/components/Schedule/plugins/PaginationPlugin.tsx","../src/components/Schedule/plugins/ViewSelectorPlugin.tsx","../src/components/Schedule/plugins/index.tsx","../src/components/Schedule/Schedule.tsx","../src/components/Schedule/WeeklyView.tsx"],"names":["Temporal","createContext","use","plainDateToInstant","plainDateIsBefore","plainDateIsAfter","plainDateFromInstant","css","plainDateFormat","DATE_FORMAT_WITH_WEEKDAY","DATE_FORMAT_MONTH_YEAR","plainDateIsEqual","currentTime","jsx","cx","jsxs","Heading","Spinner","useSyncExternalStore","styles","Text","Tooltip","plainDateSetStartOfWeek","ButtonGroup","Button","ChevronLeft","ChevronRight","Fragment","useMemo","DropdownMenu","DropdownMenuItem","Icon","Check","getBrowserTimezoneID","useState","nowEpochMilliseconds","useCallback","Suspense","plainDateDayOfWeek"],"mappings":"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","file":"chunk-O2ZMOBMA.cjs","sourcesContent":["import {Temporal} from '@js-temporal/polyfill';\nimport type {PlainDate} from '../../internal/dateTypes';\nimport type {TagColor} from '../Tag';\nimport type {Instant} from './types';\n\nconst DATE_ONLY_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport type ScheduleEventColor = Exclude<TagColor, 'default'>;\n\nexport interface ScheduleCategory {\n color: ScheduleEventColor;\n label: string;\n}\n\nexport interface CalendarEventBase {\n category?: string;\n id: string;\n title: string;\n}\n\nexport interface CalendarDayEvent extends CalendarEventBase {\n end: PlainDate;\n start: PlainDate;\n}\n\nexport interface CalendarInstantEvent extends CalendarEventBase {\n end: Instant;\n start: Instant;\n}\n\nexport type CalendarEvent = CalendarDayEvent | CalendarInstantEvent;\n\nexport function createEventFromISO({\n category,\n end,\n id,\n start,\n title,\n}: {\n category?: CalendarEvent['category'];\n end: string;\n id: string;\n start: string;\n title: string;\n}): CalendarEvent {\n if (DATE_ONLY_RE.test(start) && DATE_ONLY_RE.test(end)) {\n return {\n category,\n end: Temporal.PlainDate.from(end),\n id,\n start: Temporal.PlainDate.from(start),\n title,\n };\n }\n\n return {\n category,\n end: Temporal.Instant.from(end).epochMilliseconds,\n id,\n start: Temporal.Instant.from(start).epochMilliseconds,\n title,\n };\n}\n","import {createContext, use} from 'react';\nimport type {\n CalendarEvent,\n ScheduleCategory,\n SchedulePlugin,\n ScheduleRange,\n ScheduleViewBase,\n ZonedDateTime,\n} from './types';\n\nexport interface ScheduleContextValue {\n categories: ReadonlyArray<ScheduleCategory>;\n events: ReadonlyArray<CalendarEvent>;\n highlightDate: ZonedDateTime;\n isLoading: boolean;\n nextDateLabel: string;\n onNextDate: () => void;\n onPreviousDate: () => void;\n onToday: () => void;\n plugins: ReadonlyArray<SchedulePlugin>;\n previousDateLabel: string;\n range: ScheduleRange;\n timezoneID: string;\n view: ScheduleViewBase;\n viewDate: ZonedDateTime;\n}\n\nexport const ScheduleContext = createContext<ScheduleContextValue | null>(null);\nScheduleContext.displayName = 'ScheduleContext';\n\nexport function useScheduleContext(): ScheduleContextValue {\n const context = use(ScheduleContext);\n if (context == null) {\n throw new Error('Schedule views must be rendered inside Schedule.');\n }\n return context;\n}\n","import {\n plainDateFromInstant,\n plainDateIsAfter,\n plainDateIsBefore,\n plainDateToInstant,\n type PlainDate,\n} from '../../internal/plainDate';\nimport type {CalendarDayEvent, CalendarEvent} from './CalendarEvent';\nimport type {Instant, ScheduleRange} from './types';\n\nexport function isDayEvent(event: CalendarEvent): event is CalendarDayEvent {\n return typeof event.start !== 'number';\n}\n\nexport function getScheduleRangeFromDates({\n endDate,\n startDate,\n timezoneID,\n}: {\n endDate: PlainDate;\n startDate: PlainDate;\n timezoneID: string;\n}): ScheduleRange {\n return {\n end: plainDateToInstant(endDate, timezoneID),\n endDate,\n start: plainDateToInstant(startDate, timezoneID),\n startDate,\n };\n}\n\nexport function enumerateDates(\n start: PlainDate,\n endExclusive: PlainDate,\n): PlainDate[] {\n const dates: PlainDate[] = [];\n let current = start;\n while (plainDateIsBefore(current, endExclusive)) {\n dates.push(current);\n current = current.add({days: 1});\n }\n return dates;\n}\n\nexport function eventOverlapsRange(\n event: CalendarEvent,\n range: ScheduleRange,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n const eventStart = plainDateToInstant(event.start, timezoneID);\n const eventEnd = plainDateToInstant(event.end.add({days: 1}), timezoneID);\n return eventStart < range.end && eventEnd > range.start;\n }\n\n return event.start < range.end && event.end > range.start;\n}\n\nexport function eventOccursOnDate(\n event: CalendarEvent,\n date: PlainDate,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n return (\n !plainDateIsAfter(event.start, date) &&\n !plainDateIsBefore(event.end, date)\n );\n }\n\n const startDate = plainDateFromInstant(event.start, timezoneID);\n const endDate = plainDateFromInstant(\n Math.max(event.end - 1, event.start),\n timezoneID,\n );\n return (\n !plainDateIsAfter(startDate, date) && !plainDateIsBefore(endDate, date)\n );\n}\n\nexport function sortEvents(\n events: ReadonlyArray<CalendarEvent>,\n timezoneID: string,\n): CalendarEvent[] {\n return [...events].sort((a, b) => {\n const aStart = getEventSortStart(a, timezoneID);\n const bStart = getEventSortStart(b, timezoneID);\n return aStart < bStart\n ? -1\n : aStart > bStart\n ? 1\n : a.title.localeCompare(b.title);\n });\n}\n\nfunction getEventSortStart(event: CalendarEvent, timezoneID: string): Instant {\n return isDayEvent(event)\n ? plainDateToInstant(event.start, timezoneID)\n : event.start;\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport type {ReactNode} from 'react';\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_MONTH_YEAR,\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsBefore,\n plainDateIsEqual,\n type PlainDate,\n} from '../../internal/plainDate';\nimport {Spinner} from '../Spinner';\nimport {Heading} from '../Text';\nimport {useScheduleContext} from './context';\nimport {isDayEvent} from './dateMath';\nimport type {\n CalendarEvent,\n ScheduleCategory,\n ScheduleEventColor,\n ScheduleHeaderContent,\n} from './types';\n\nexport const styles = {\n root: css({\n color: 'fg',\n fontFamily: 'body',\n w: 'full',\n }),\n frame: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '3',\n w: 'full',\n }),\n header: css({\n display: 'grid',\n gridTemplateColumns: '1fr auto 1fr',\n alignItems: 'center',\n gap: '3',\n }),\n headerSlotStart: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: '2',\n }),\n headerSlotCenter: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '2',\n textAlign: 'center',\n }),\n headerSlotEnd: css({\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n gap: '2',\n }),\n headerTitleContent: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2',\n }),\n surface: css({\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n borderRadius: 'md',\n overflow: 'hidden',\n bg: 'bg',\n }),\n event: css({\n display: 'inline-flex',\n alignItems: 'baseline',\n gap: '1',\n maxW: 'full',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'var(--schedule-event-border)',\n borderRadius: 'sm',\n px: '1',\n py: '0.5',\n fontSize: 'xs',\n fontWeight: 'medium',\n lineHeight: 'tight',\n bg: 'var(--schedule-event-bg)',\n color: 'var(--schedule-event-fg)',\n _hover: {\n bg: 'var(--schedule-event-bg-hover)',\n },\n }),\n eventPast: css({\n '--schedule-event-bg':\n 'color-mix(in srgb, var(--schedule-event-dot) 10%, token(colors.bg))',\n '--schedule-event-bg-hover':\n 'color-mix(in srgb, var(--schedule-event-dot) 14%, token(colors.bg))',\n '--schedule-event-border':\n 'color-mix(in srgb, var(--schedule-event-dot) 48%, token(colors.border))',\n '--schedule-event-fg':\n 'color-mix(in srgb, var(--schedule-event-fg-base) 52%, token(colors.fg.muted))',\n }),\n eventDot: css({\n display: 'inline-block',\n w: '2',\n h: '2',\n borderRadius: 'full',\n bg: 'var(--schedule-event-dot)',\n flexShrink: 0,\n }),\n eventTime: css({\n flexShrink: 0,\n fontWeight: 'normal',\n }),\n eventTitle: css({\n fontWeight: 'bold',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n} as const;\n\nconst categoryFallback: ScheduleCategory = {label: 'Event', color: 'blue'};\n\nconst colorStyles = {\n blue: css({\n '--schedule-event-bg': 'token(colors.surface.blue)',\n '--schedule-event-bg-hover': 'token(colors.surface.blue.hover)',\n '--schedule-event-border': 'token(colors.surface.blue.accent)',\n '--schedule-event-fg': 'token(colors.surface.blue.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.blue.fg)',\n '--schedule-event-dot': 'token(colors.surface.blue.accent)',\n }),\n cyan: css({\n '--schedule-event-bg': 'token(colors.surface.cyan)',\n '--schedule-event-bg-hover': 'token(colors.surface.cyan.hover)',\n '--schedule-event-border': 'token(colors.surface.cyan.accent)',\n '--schedule-event-fg': 'token(colors.surface.cyan.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.cyan.fg)',\n '--schedule-event-dot': 'token(colors.surface.cyan.accent)',\n }),\n gray: css({\n '--schedule-event-bg': 'token(colors.surface.gray)',\n '--schedule-event-bg-hover': 'token(colors.surface.gray.hover)',\n '--schedule-event-border': 'token(colors.surface.gray.accent)',\n '--schedule-event-fg': 'token(colors.surface.gray.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.gray.fg)',\n '--schedule-event-dot': 'token(colors.surface.gray.accent)',\n }),\n green: css({\n '--schedule-event-bg': 'token(colors.surface.green)',\n '--schedule-event-bg-hover': 'token(colors.surface.green.hover)',\n '--schedule-event-border': 'token(colors.surface.green.accent)',\n '--schedule-event-fg': 'token(colors.surface.green.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.green.fg)',\n '--schedule-event-dot': 'token(colors.surface.green.accent)',\n }),\n orange: css({\n '--schedule-event-bg': 'token(colors.surface.orange)',\n '--schedule-event-bg-hover': 'token(colors.surface.orange.hover)',\n '--schedule-event-border': 'token(colors.surface.orange.accent)',\n '--schedule-event-fg': 'token(colors.surface.orange.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.orange.fg)',\n '--schedule-event-dot': 'token(colors.surface.orange.accent)',\n }),\n pink: css({\n '--schedule-event-bg': 'token(colors.surface.pink)',\n '--schedule-event-bg-hover': 'token(colors.surface.pink.hover)',\n '--schedule-event-border': 'token(colors.surface.pink.accent)',\n '--schedule-event-fg': 'token(colors.surface.pink.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.pink.fg)',\n '--schedule-event-dot': 'token(colors.surface.pink.accent)',\n }),\n purple: css({\n '--schedule-event-bg': 'token(colors.surface.purple)',\n '--schedule-event-bg-hover': 'token(colors.surface.purple.hover)',\n '--schedule-event-border': 'token(colors.surface.purple.accent)',\n '--schedule-event-fg': 'token(colors.surface.purple.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.purple.fg)',\n '--schedule-event-dot': 'token(colors.surface.purple.accent)',\n }),\n red: css({\n '--schedule-event-bg': 'token(colors.surface.red)',\n '--schedule-event-bg-hover': 'token(colors.surface.red.hover)',\n '--schedule-event-border': 'token(colors.surface.red.accent)',\n '--schedule-event-fg': 'token(colors.surface.red.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.red.fg)',\n '--schedule-event-dot': 'token(colors.surface.red.accent)',\n }),\n teal: css({\n '--schedule-event-bg': 'token(colors.surface.teal)',\n '--schedule-event-bg-hover': 'token(colors.surface.teal.hover)',\n '--schedule-event-border': 'token(colors.surface.teal.accent)',\n '--schedule-event-fg': 'token(colors.surface.teal.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.teal.fg)',\n '--schedule-event-dot': 'token(colors.surface.teal.accent)',\n }),\n yellow: css({\n '--schedule-event-bg': 'token(colors.surface.yellow)',\n '--schedule-event-bg-hover': 'token(colors.surface.yellow.hover)',\n '--schedule-event-border': 'token(colors.surface.yellow.accent)',\n '--schedule-event-fg': 'token(colors.surface.yellow.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.yellow.fg)',\n '--schedule-event-dot': 'token(colors.surface.yellow.accent)',\n }),\n} satisfies Record<ScheduleEventColor, string>;\n\nexport function getCategory(\n categories: ReadonlyArray<ScheduleCategory>,\n event: CalendarEvent,\n): ScheduleCategory {\n return (\n categories.find(category => category.label === event.category) ??\n (event.category != null\n ? {label: event.category, color: categoryFallback.color}\n : categoryFallback)\n );\n}\n\nexport function eventColorClassName(\n color: ScheduleEventColor | undefined,\n): string {\n return colorStyles[color ?? categoryFallback.color];\n}\n\nexport function formatDate(date: PlainDate): string {\n return plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);\n}\n\nexport function formatMonthTitle(date: PlainDate): string {\n return plainDateFormat(date, DATE_FORMAT_MONTH_YEAR);\n}\n\nexport function formatWeekTitle(start: PlainDate, end: PlainDate): string {\n if (start.year === end.year && start.month === end.month) {\n return formatMonthTitle(start);\n }\n\n const startMonth = plainDateFormat(start, {month: 'long'});\n const endMonth = plainDateFormat(end, {month: 'long'});\n return start.year === end.year\n ? `${startMonth} - ${endMonth} ${end.year}`\n : `${startMonth} ${start.year} - ${endMonth} ${end.year}`;\n}\n\nexport function formatListRangeTitle(start: PlainDate, end: PlainDate): string {\n return plainDateIsEqual(start, end)\n ? formatDate(start)\n : formatWeekTitle(start, end);\n}\n\nfunction formatTime(instant: number, timezoneID: string): string {\n return Temporal.Instant.fromEpochMilliseconds(instant)\n .toZonedDateTimeISO(timezoneID)\n .toLocaleString(undefined, {\n hour: 'numeric',\n minute: '2-digit',\n });\n}\n\nexport function formatTimezoneAbbreviation(\n date: PlainDate,\n timezoneID: string,\n): string {\n const formatter = new Intl.DateTimeFormat(undefined, {\n timeZone: timezoneID,\n timeZoneName: 'short',\n });\n const parts = formatter.formatToParts(\n date.toZonedDateTime(timezoneID).epochMilliseconds,\n );\n return parts.find(part => part.type === 'timeZoneName')?.value ?? timezoneID;\n}\n\nexport function formatHour(hour: number, _timezoneID: string): string {\n return Temporal.PlainTime.from({hour}).toLocaleString(undefined, {\n hour: 'numeric',\n });\n}\n\nexport function getEventTimeLabel(\n event: CalendarEvent,\n timezoneID: string,\n): string {\n if (isDayEvent(event)) {\n return 'all day';\n }\n\n return `${formatTime(event.start, timezoneID)} - ${formatTime(event.end, timezoneID)}`;\n}\n\nfunction getEventStartTimeLabel(\n event: CalendarEvent,\n timezoneID: string,\n): string | null {\n return isDayEvent(event) ? null : formatTime(event.start, timezoneID);\n}\n\nexport function getEventAccessibleLabel(\n event: CalendarEvent,\n categories: ReadonlyArray<ScheduleCategory>,\n timezoneID: string,\n): string {\n const category = getCategory(categories, event);\n return `${event.title}, ${category.label}, ${getEventTimeLabel(event, timezoneID)}`;\n}\n\nexport function getMinutesSinceStartOfDay(\n instant: number,\n timezoneID: string,\n): number {\n const zonedTime = Temporal.Instant.fromEpochMilliseconds(instant)\n .toZonedDateTimeISO(timezoneID)\n .toPlainTime();\n return zonedTime.hour * 60 + zonedTime.minute;\n}\n\nexport function isEventInPast(\n event: CalendarEvent,\n currentTime: number,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n return plainDateIsBefore(\n event.end,\n plainDateFromInstant(currentTime, timezoneID),\n );\n }\n\n return event.end <= currentTime;\n}\n\n/**\n * Renders a colored pill displaying an event's accessible label.\n */\nexport function CalendarEventPill({\n event,\n isPast = false,\n}: {\n event: CalendarEvent;\n isPast?: boolean;\n}): React.JSX.Element {\n const {categories, timezoneID} = useScheduleContext();\n const category = getCategory(categories, event);\n return (\n <span\n className={cx(\n styles.event,\n eventColorClassName(category.color),\n isPast && styles.eventPast,\n )}\n data-state={isPast ? 'past' : undefined}\n data-testid={`schedule-event-${event.id}`}>\n <span className={styles.eventTitle}>\n {isDayEvent(event)\n ? event.title\n : getEventAccessibleLabel(event, categories, timezoneID)}\n </span>\n </span>\n );\n}\n\nexport function CalendarMonthEventPill({\n event,\n isPast = false,\n}: {\n event: CalendarEvent;\n isPast?: boolean;\n}): React.JSX.Element {\n const {categories, timezoneID} = useScheduleContext();\n const category = getCategory(categories, event);\n const startTimeLabel = getEventStartTimeLabel(event, timezoneID);\n return (\n <span\n className={cx(\n styles.event,\n css({w: 'full'}),\n eventColorClassName(category.color),\n isPast && styles.eventPast,\n )}\n data-state={isPast ? 'past' : undefined}\n data-testid={`schedule-event-${event.id}`}>\n {startTimeLabel != null ? (\n <span className={styles.eventTime}>{startTimeLabel}</span>\n ) : null}\n <span className={styles.eventTitle}>{event.title}</span>\n </span>\n );\n}\n\n/**\n * Layout wrapper that renders the schedule header (with plugin slots) and body.\n */\nexport function ScheduleFrame({\n children,\n title,\n titleLabel,\n}: {\n /**\n * View content rendered below the header.\n */\n children: ReactNode;\n /**\n * Title displayed in the header center slot.\n */\n title: ReactNode;\n /**\n * Accessible label for the enclosing section.\n */\n titleLabel: string;\n}): React.JSX.Element {\n const {isLoading, plugins} = useScheduleContext();\n const initialHeader: ScheduleHeaderContent = {\n startContent: null,\n centerContent: (\n <span className={styles.headerTitleContent}>\n <Heading level={2}>{title}</Heading>\n {isLoading ? <Spinner aria-label=\"Loading events\" size=\"sm\" /> : null}\n </span>\n ),\n endContent: null,\n };\n const header = plugins.reduce(\n (content, plugin) =>\n plugin.renderHeader?.(\n content.startContent,\n content.centerContent,\n content.endContent,\n ) ?? content,\n initialHeader,\n );\n\n return (\n <section aria-label={titleLabel} className={styles.frame}>\n <div className={styles.header}>\n <div className={styles.headerSlotStart}>{header.startContent}</div>\n <div className={styles.headerSlotCenter}>{header.centerContent}</div>\n <div className={styles.headerSlotEnd}>{header.endContent}</div>\n </div>\n {children}\n </section>\n );\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport {useSyncExternalStore} from 'react';\nimport type {Instant} from './types';\n\nconst UPDATE_INTERVAL_MS = 60 * 1000;\nconst listeners = new Set<() => void>();\nlet interval: ReturnType<typeof setInterval> | null = null;\nlet currentTime = getCurrentTime();\n\nfunction getCurrentTime(): Instant {\n return Temporal.Now.instant().epochMilliseconds;\n}\n\nfunction getSnapshot(): Instant {\n return currentTime;\n}\n\nfunction getServerSnapshot(): Instant {\n return 0;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n currentTime = getCurrentTime();\n listener();\n\n interval ??= setInterval(() => {\n currentTime = getCurrentTime();\n listeners.forEach(activeListener => activeListener());\n }, UPDATE_INTERVAL_MS);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0 && interval != null) {\n clearInterval(interval);\n interval = null;\n }\n };\n}\n\nexport function useCurrentTime(): Instant {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {Temporal} from '@js-temporal/polyfill';\nimport type {CSSProperties} from 'react';\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsBefore,\n plainDateIsEqual,\n type PlainDate,\n} from '../../internal/plainDate';\nimport {Heading, Text} from '../Text';\nimport {useScheduleContext} from './context';\nimport {eventOccursOnDate, isDayEvent} from './dateMath';\nimport {\n CalendarEventPill,\n eventColorClassName,\n formatHour,\n formatTimezoneAbbreviation,\n getCategory,\n getEventAccessibleLabel,\n getEventTimeLabel,\n getMinutesSinceStartOfDay,\n isEventInPast,\n styles as sharedStyles,\n} from './shared';\nimport type {CalendarEvent, CalendarInstantEvent} from './types';\nimport {useCurrentTime} from './useCurrentTime';\n\ntype GridStyle = CSSProperties & {'--schedule-day-count': string};\ntype HourStyle = Pick<CSSProperties, 'height' | 'minHeight'>;\n\nconst styles = {\n grid: css({\n display: 'grid',\n gridTemplateColumns: '72px 1fr',\n overflow: 'auto',\n }),\n header: css({\n display: 'grid',\n gridTemplateColumns:\n 'repeat(var(--schedule-day-count), minmax(160px, 1fr))',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n corner: css({\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n dayHeader: css({\n p: '2',\n textAlign: 'center',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n }),\n lastColumn: css({\n borderInlineEndWidth: 0,\n }),\n dayHeaderContent: css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n }),\n dayHeaderDayNumber: css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minW: '30px',\n h: '30px',\n lineHeight: '30px',\n borderRadius: 'full',\n }),\n dayHeaderCurrent: css({\n bg: 'primary',\n color: 'fg.onPrimary',\n }),\n allDayLabel: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n py: '1',\n px: '2',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n allDayRow: css({\n display: 'grid',\n gridTemplateColumns:\n 'repeat(var(--schedule-day-count), minmax(160px, 1fr))',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n dayCell: css({\n minH: 0,\n p: '0.5',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n }),\n timeLabel: css({\n p: '2',\n color: 'fg.muted',\n textAlign: 'end',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n timeRow: css({\n display: 'grid',\n gridTemplateColumns:\n 'repeat(var(--schedule-day-count), minmax(160px, 1fr))',\n }),\n hourCell: css({\n position: 'relative',\n minH: '14',\n p: '1',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n lastRow: css({\n borderBlockEndWidth: 0,\n }),\n timedEvent: css({\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n minH: '9',\n minW: 0,\n overflow: 'hidden',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'var(--schedule-event-border)',\n borderRadius: 'sm',\n px: '1',\n py: '0.5',\n fontSize: 'xs',\n lineHeight: 'tight',\n bg: 'var(--schedule-event-bg)',\n color: 'var(--schedule-event-fg)',\n _hover: {\n bg: 'var(--schedule-event-bg-hover)',\n },\n }),\n timedEventTitle: css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontWeight: 'bold',\n }),\n timedEventTime: css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n flexShrink: 0,\n fontWeight: 'normal',\n }),\n events: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1',\n }),\n currentTimeLine: css({\n position: 'absolute',\n insetInline: '0',\n borderBlockStartWidth: '2px',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'surface.orange.accent',\n transform: 'translateY(2px)',\n zIndex: '20',\n pointerEvents: 'none',\n _before: {\n content: '\"\"',\n position: 'absolute',\n insetInlineStart: '-6px',\n top: '-6px',\n w: '2.5',\n h: '2.5',\n borderRadius: 'full',\n bg: 'surface.orange.accent',\n },\n }),\n rowContents: css({\n display: 'contents',\n }),\n} as const;\n\nfunction eventOverlapsHour(\n event: CalendarEvent,\n day: PlainDate,\n hour: number,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n return false;\n }\n if (!eventOccursOnDate(event, day, timezoneID)) {\n return false;\n }\n\n const hourStart = day\n .toPlainDateTime(Temporal.PlainTime.from({hour}))\n .toZonedDateTime(timezoneID).epochMilliseconds;\n const hourEnd =\n hour === 23\n ? day.add({days: 1}).toZonedDateTime(timezoneID).epochMilliseconds\n : day\n .toPlainDateTime(Temporal.PlainTime.from({hour: hour + 1}))\n .toZonedDateTime(timezoneID).epochMilliseconds;\n return event.start < hourEnd && event.end > hourStart;\n}\n\ninterface TimedEventLayout {\n event: CalendarInstantEvent;\n height: number;\n level: number;\n startHour: number;\n top: number;\n}\n\nfunction eventSpansPastDay(\n event: CalendarInstantEvent,\n day: PlainDate,\n timezoneID: string,\n): boolean {\n return !plainDateIsEqual(\n plainDateFromInstant(Math.max(event.end - 1, event.start), timezoneID),\n day,\n );\n}\n\nfunction getAvailableTimedEventLevel(\n levelEndMinutes: number[],\n visibleStart: number,\n): number {\n const level = levelEndMinutes.findIndex(\n endMinute => visibleStart >= endMinute,\n );\n return level >= 0 ? level : levelEndMinutes.length;\n}\n\nfunction getTimedEventLayouts({\n day,\n events,\n hourHeight,\n maxHour,\n minHour,\n timezoneID,\n}: {\n day: PlainDate;\n events: ReadonlyArray<CalendarInstantEvent>;\n hourHeight: number;\n maxHour: number;\n minHour: number;\n timezoneID: string;\n}): TimedEventLayout[] {\n const levelEndMinutes: number[] = [];\n const minMinute = minHour * 60;\n const maxMinute = maxHour * 60;\n\n return events\n .map(event => {\n const startDate = plainDateFromInstant(event.start, timezoneID);\n const rawStart = plainDateIsBefore(startDate, day)\n ? 0\n : getMinutesSinceStartOfDay(event.start, timezoneID);\n const rawEnd = eventSpansPastDay(event, day, timezoneID)\n ? 24 * 60\n : getMinutesSinceStartOfDay(event.end, timezoneID);\n if (rawEnd <= minMinute || rawStart >= maxMinute) {\n return null;\n }\n const visibleStart = Math.max(rawStart, minMinute);\n const visibleEnd = Math.min(\n maxMinute,\n Math.max(visibleStart + 15, rawEnd),\n );\n return {event, visibleEnd, visibleStart};\n })\n .filter(\n (\n layout,\n ): layout is {\n event: CalendarInstantEvent;\n visibleEnd: number;\n visibleStart: number;\n } => layout != null && layout.visibleEnd > layout.visibleStart,\n )\n .sort((a, b) => {\n if (a.visibleStart !== b.visibleStart) {\n return a.visibleStart - b.visibleStart;\n }\n return (\n a.visibleEnd - b.visibleEnd ||\n a.event.title.localeCompare(b.event.title)\n );\n })\n .map(({event, visibleEnd, visibleStart}) => {\n const level = getAvailableTimedEventLevel(levelEndMinutes, visibleStart);\n levelEndMinutes[level] = visibleEnd;\n const startHour = Math.floor(visibleStart / 60);\n return {\n event,\n height: ((visibleEnd - visibleStart) / 60) * hourHeight,\n level,\n startHour,\n top: ((visibleStart - startHour * 60) / 60) * hourHeight,\n };\n });\n}\n\nfunction getTimedEventStyle({\n height,\n level,\n top,\n}: TimedEventLayout): React.CSSProperties {\n return {\n height: `${Math.max(36, height - 5)}px`,\n insetInlineEnd: '2px',\n insetInlineStart: level === 0 ? '2px' : `calc(2px + ${level * 8}%)`,\n top: `${top + 2}px`,\n zIndex: level + 1,\n };\n}\n\nfunction getCellName({\n categories,\n date,\n events,\n hourLabel,\n timezoneID,\n}: {\n categories: ReturnType<typeof useScheduleContext>['categories'];\n date: PlainDate;\n events: CalendarEvent[];\n hourLabel: string;\n timezoneID: string;\n}): string {\n const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);\n const eventLabels = events.map(event =>\n getEventAccessibleLabel(event, categories, timezoneID),\n );\n return eventLabels.length > 0\n ? `${dateLabel} ${hourLabel}. ${eventLabels.join('. ')}`\n : `${dateLabel} ${hourLabel}`;\n}\n\n/**\n * Shared time grid layout used by day and week views with hourly rows.\n */\nexport function TimeGridView({\n days,\n hourHeight = 100,\n maxHour = 24,\n minHour = 0,\n}: {\n /**\n * Days to display as columns in the grid.\n */\n days: PlainDate[];\n /**\n * Pixel height used for each hourly row.\n * @default 100\n */\n hourHeight?: number;\n /**\n * Exclusive ending hour shown in the grid (1-24).\n * @default 24\n */\n maxHour?: number;\n /**\n * First hour shown in the grid (0-23).\n * @default 0\n */\n minHour?: number;\n}): React.JSX.Element {\n const {categories, events, highlightDate, timezoneID} = useScheduleContext();\n const normalizedMinHour = Math.max(0, Math.min(23, Math.floor(minHour)));\n const normalizedMaxHour = Math.max(\n normalizedMinHour + 1,\n Math.min(24, Math.floor(maxHour)),\n );\n const hours = Array.from(\n {length: normalizedMaxHour - normalizedMinHour},\n (_, index) => normalizedMinHour + index,\n );\n const currentTime = useCurrentTime();\n const highlightPlainDate = highlightDate.toPlainDate();\n const timezoneLabel = formatTimezoneAbbreviation(\n days[0] ?? highlightPlainDate,\n timezoneID,\n );\n const gridStyle: GridStyle = {\n '--schedule-day-count': String(days.length),\n };\n const normalizedHourHeight = Math.max(1, Math.floor(hourHeight));\n const hourStyle: HourStyle = {\n height: normalizedHourHeight,\n minHeight: normalizedHourHeight,\n };\n\n return (\n <div\n aria-label=\"Schedule time grid\"\n aria-readonly=\"true\"\n className={cx(sharedStyles.surface, styles.grid)}\n role=\"grid\"\n style={gridStyle}>\n <div className={styles.rowContents} role=\"row\">\n <div\n aria-colindex={1}\n aria-label=\"Time\"\n className={styles.corner}\n role=\"columnheader\"\n />\n <div className={styles.header}>\n {days.map((day, index) => (\n <div\n aria-colindex={index + 2}\n aria-current={\n plainDateIsEqual(day, highlightPlainDate) ? 'date' : undefined\n }\n aria-label={plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY)}\n className={cx(\n styles.dayHeader,\n index === days.length - 1 && styles.lastColumn,\n )}\n key={day.toString()}\n role=\"columnheader\">\n <Heading\n aria-hidden=\"true\"\n color=\"secondary\"\n level={4}\n textWrap=\"nowrap\">\n <span className={styles.dayHeaderContent}>\n {plainDateFormat(day, {weekday: 'short'})}\n <span\n className={cx(\n styles.dayHeaderDayNumber,\n plainDateIsEqual(day, highlightPlainDate) &&\n styles.dayHeaderCurrent,\n )}>\n {day.day}\n </span>\n </span>\n </Heading>\n </div>\n ))}\n </div>\n </div>\n <div className={styles.rowContents} role=\"row\">\n <div\n aria-colindex={1}\n aria-label={`${timezoneLabel} all day`}\n className={styles.allDayLabel}\n role=\"rowheader\">\n <Text color=\"secondary\" type=\"supporting\" weight=\"bold\">\n {timezoneLabel}\n </Text>\n </div>\n <div className={styles.allDayRow}>\n {days.map((day, index) => {\n const dayEvents = events.filter(\n event =>\n isDayEvent(event) && eventOccursOnDate(event, day, timezoneID),\n );\n return (\n <div\n aria-colindex={index + 2}\n aria-label={getCellName({\n categories,\n date: day,\n events: dayEvents,\n hourLabel: 'all day',\n timezoneID,\n })}\n className={cx(\n styles.dayCell,\n index === days.length - 1 && styles.lastColumn,\n )}\n key={`${day.toString()}-all-day`}\n role=\"gridcell\">\n <div className={styles.events}>\n {dayEvents.map(event => (\n <CalendarEventPill\n event={event}\n isPast={isEventInPast(event, currentTime, timezoneID)}\n key={event.id}\n />\n ))}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n {hours.map(hour => {\n const hourLabel = formatHour(hour, timezoneID);\n const isLastHour = hour === hours[hours.length - 1];\n return (\n <div className={styles.rowContents} key={hour} role=\"row\">\n <div\n aria-colindex={1}\n className={cx(styles.timeLabel, isLastHour && styles.lastRow)}\n role=\"rowheader\"\n style={hourStyle}>\n {hourLabel}\n </div>\n <div className={styles.timeRow}>\n {days.map((day, index) => {\n const hourEvents = events.filter(event =>\n eventOverlapsHour(event, day, hour, timezoneID),\n );\n const visibleTimedEventLayouts = getTimedEventLayouts({\n day,\n events: events.filter(\n (event): event is CalendarInstantEvent =>\n !isDayEvent(event) &&\n eventOccursOnDate(event, day, timezoneID),\n ),\n hourHeight: normalizedHourHeight,\n maxHour: normalizedMaxHour,\n minHour: normalizedMinHour,\n timezoneID,\n }).filter(layout => layout.startHour === hour);\n const currentTimeTop = getCurrentTimeTopForHour({\n currentTime,\n day,\n hour,\n maxHour: normalizedMaxHour,\n minHour: normalizedMinHour,\n timezoneID,\n });\n return (\n <div\n aria-colindex={index + 2}\n aria-label={getCellName({\n categories,\n date: day,\n events: hourEvents,\n hourLabel,\n timezoneID,\n })}\n className={cx(\n styles.hourCell,\n index === days.length - 1 && styles.lastColumn,\n isLastHour && styles.lastRow,\n )}\n key={`${day.toString()}-${hour}`}\n role=\"gridcell\"\n style={hourStyle}>\n {currentTimeTop != null ? (\n <div\n aria-hidden=\"true\"\n className={styles.currentTimeLine}\n data-testid=\"schedule-current-time-line\"\n style={{top: `${currentTimeTop}%`}}\n />\n ) : null}\n <div className={styles.events}>\n {visibleTimedEventLayouts.map(layout => {\n const {event} = layout;\n const category = getCategory(categories, event);\n return (\n <div\n className={cx(\n styles.timedEvent,\n eventColorClassName(category.color),\n isEventInPast(event, currentTime, timezoneID) &&\n sharedStyles.eventPast,\n )}\n data-state={\n isEventInPast(event, currentTime, timezoneID)\n ? 'past'\n : undefined\n }\n data-testid={`schedule-event-${event.id}`}\n key={event.id}\n style={getTimedEventStyle(layout)}>\n <span className={styles.timedEventTitle}>\n {event.title}\n </span>\n <span className={styles.timedEventTime}>\n {getEventTimeLabel(event, timezoneID)}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction getCurrentTimeTopForHour({\n currentTime,\n day,\n hour,\n maxHour,\n minHour,\n timezoneID,\n}: {\n currentTime: number;\n day: PlainDate;\n hour: number;\n maxHour: number;\n minHour: number;\n timezoneID: string;\n}): number | null {\n if (!plainDateIsEqual(day, plainDateFromInstant(currentTime, timezoneID))) {\n return null;\n }\n\n const currentMinute = getMinutesSinceStartOfDay(currentTime, timezoneID);\n const minMinute = minHour * 60;\n const maxMinute = maxHour * 60;\n if (currentMinute < minMinute || currentMinute > maxMinute) {\n return null;\n }\n\n if (currentMinute === maxMinute) {\n return hour === maxHour - 1 ? 100 : null;\n }\n\n if (Math.floor(currentMinute / 60) !== hour) {\n return null;\n }\n\n return ((currentMinute % 60) / 60) * 100;\n}\n","import {\n plainDateFromInstant,\n plainDateToInstant,\n type PlainDate,\n} from '../../internal/plainDate';\nimport type {Instant, ScheduleDate, ScheduleRange} from './types';\n\nexport interface ZonedDateTime {\n addDays: (days: number) => ZonedDateTime;\n instant: Instant;\n startOfDay: () => ZonedDateTime;\n timezoneID: string;\n toPlainDate: () => PlainDate;\n}\n\nexport type ZonedDateTimeRange = [ZonedDateTime, ZonedDateTime];\n\nexport function createZonedDateTime(\n date: ScheduleDate,\n timezoneID: string,\n): ZonedDateTime {\n return zonedDateTimeFromInstant(date, timezoneID);\n}\n\nexport function zonedDateTimeFromInstant(\n instant: Instant,\n timezoneID: string,\n): ZonedDateTime {\n return {\n addDays: days => {\n const date = plainDateFromInstant(instant, timezoneID).add({days});\n return zonedDateTimeFromInstant(\n plainDateToInstant(date, timezoneID),\n timezoneID,\n );\n },\n instant,\n startOfDay: () => {\n const date = plainDateFromInstant(instant, timezoneID);\n return zonedDateTimeFromInstant(\n plainDateToInstant(date, timezoneID),\n timezoneID,\n );\n },\n timezoneID,\n toPlainDate: () => plainDateFromInstant(instant, timezoneID),\n };\n}\n\nexport function scheduleRangeToZonedDateTimeRange(\n range: ScheduleRange,\n timezoneID: string,\n): ZonedDateTimeRange {\n return [\n zonedDateTimeFromInstant(range.start, timezoneID),\n zonedDateTimeFromInstant(range.end, timezoneID),\n ];\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {TimeGridView} from './TimeGridView';\nimport {useScheduleContext} from './context';\nimport {getScheduleRangeFromDates} from './dateMath';\nimport {ScheduleFrame, formatDate, formatMonthTitle} from './shared';\nimport type {\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n} from './types';\nimport {scheduleRangeToZonedDateTimeRange} from './zonedDateTime';\n\nexport interface ScheduleDayViewOptions {\n /**\n * Pixel height used for each hourly row.\n * @default 100\n */\n hourHeight?: number;\n /**\n * Exclusive ending hour shown in the day grid (1-24).\n * @default 24\n */\n maxHour?: number;\n /**\n * First hour shown in the day grid (0-23).\n * @default 0\n */\n minHour?: number;\n}\n\n/**\n * Internal view component that renders a single-day time grid.\n */\nfunction ScheduleDayView({\n options,\n}: ScheduleViewComponentProps<ScheduleDayViewOptions>): React.JSX.Element {\n const {viewDate} = useScheduleContext();\n const day = viewDate.toPlainDate();\n return (\n <ScheduleFrame title={formatMonthTitle(day)} titleLabel={formatDate(day)}>\n <TimeGridView\n days={[day]}\n hourHeight={options.hourHeight}\n maxHour={options.maxHour}\n minHour={options.minHour}\n />\n </ScheduleFrame>\n );\n}\n\n/**\n * Creates a single-day schedule view configuration.\n */\nexport function createScheduleDayView({\n hourHeight = 100,\n maxHour = 24,\n minHour = 0,\n}: ScheduleDayViewOptions = {}): ScheduleView<ScheduleDayViewOptions> {\n return {\n component: ScheduleDayView,\n getDateRange: (date: ZonedDateTime) =>\n scheduleRangeToZonedDateTimeRange(\n getScheduleRangeFromDates({\n endDate: date.toPlainDate().add({days: 1}),\n startDate: date.toPlainDate(),\n timezoneID: date.timezoneID,\n }),\n date.timezoneID,\n ),\n getNextDateRange: (date: ZonedDateTime) => ({\n label: 'Next day',\n range: [date.startOfDay().addDays(1), date.startOfDay().addDays(2)],\n }),\n getPreviousDateRange: (date: ZonedDateTime) => ({\n label: 'Previous day',\n range: [date.startOfDay().addDays(-1), date.startOfDay()],\n }),\n options: {hourHeight, maxHour, minHour},\n };\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsEqual,\n} from '../../internal/plainDate';\nimport {Text} from '../Text';\nimport {Tooltip} from '../Tooltip';\nimport {useScheduleContext} from './context';\nimport {enumerateDates, eventOccursOnDate, isDayEvent} from './dateMath';\nimport {\n eventColorClassName,\n getCategory,\n getEventTimeLabel,\n isEventInPast,\n formatListRangeTitle,\n ScheduleFrame,\n styles as sharedStyles,\n} from './shared';\nimport type {\n CalendarEvent,\n Instant,\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n} from './types';\nimport {useCurrentTime} from './useCurrentTime';\n\nexport interface ScheduleListViewOptions {\n /**\n * Number of days shown in the list.\n * @default 7\n */\n days?: number;\n}\n\nconst styles = {\n list: css({\n display: 'flex',\n flexDirection: 'column',\n }),\n day: css({\n display: 'grid',\n gridTemplateColumns: '112px minmax(0, 1fr)',\n alignItems: 'start',\n columnGap: '3',\n p: '3',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n dayLast: css({\n borderBlockEndWidth: 0,\n }),\n dayHeading: css({\n m: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: '2',\n color: 'fg.muted',\n fontFamily: 'body',\n fontSize: 'lg',\n fontWeight: 'semibold',\n lineHeight: 'tight',\n whiteSpace: 'nowrap',\n }),\n dayWeekday: css({\n display: 'inline-block',\n fontSize: 'lg',\n }),\n dayNumber: css({\n display: 'inline-flex',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n w: '30px',\n h: '30px',\n borderRadius: 'full',\n fontWeight: 'bold',\n }),\n dayNumberCurrent: css({\n bg: 'primary',\n color: 'fg.onPrimary',\n }),\n events: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '2',\n }),\n eventRow: css({\n display: 'grid',\n gridTemplateColumns: '160px minmax(0, 1fr)',\n alignItems: 'center',\n gap: '3',\n }),\n eventPast: css({\n opacity: 0.64,\n }),\n eventContent: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minW: 0,\n }),\n eventTime: css({\n whiteSpace: 'nowrap',\n }),\n nowRow: css({\n h: '0.5',\n bg: 'fg.danger',\n borderRadius: 'full',\n }),\n} as const;\n\n/**\n * Renders a single event row in the list view.\n */\nfunction ListEvent({\n event,\n isPast,\n}: {\n event: CalendarEvent;\n isPast: boolean;\n}): React.JSX.Element {\n const {categories, timezoneID} = useScheduleContext();\n const category = getCategory(categories, event);\n return (\n <div\n className={cx(styles.eventRow, isPast && styles.eventPast)}\n data-state={isPast ? 'past' : undefined}>\n <Text className={styles.eventTime} color=\"secondary\" type=\"supporting\">\n {isDayEvent(event) ? 'All day' : getEventTimeLabel(event, timezoneID)}\n </Text>\n <div className={styles.eventContent}>\n <Tooltip content={category.label} hasHoverIndication={false}>\n <span\n aria-label={category.label}\n className={cx(\n sharedStyles.eventDot,\n eventColorClassName(category.color),\n )}\n role=\"img\"\n />\n </Tooltip>\n <Text>{event.title}</Text>\n </div>\n </div>\n );\n}\n\n/**\n * Internal view component that renders events as a chronological day-by-day list.\n */\nfunction ScheduleListView(\n _props: ScheduleViewComponentProps<ScheduleListViewOptions>,\n): React.JSX.Element {\n const {events, highlightDate, isLoading, range, timezoneID} =\n useScheduleContext();\n const days = enumerateDates(range.startDate, range.endDate);\n const currentTime = useCurrentTime();\n const currentPlainDate = plainDateFromInstant(currentTime, timezoneID);\n const highlightPlainDate = highlightDate.toPlainDate();\n const endDate = range.endDate.add({days: -1});\n const title = formatListRangeTitle(range.startDate, endDate);\n const visibleDays = days\n .map(day => {\n const dayEvents = events.filter(event =>\n eventOccursOnDate(event, day, timezoneID),\n );\n const isCurrentDay = plainDateIsEqual(day, currentPlainDate);\n const isHighlightedDay = plainDateIsEqual(day, highlightPlainDate);\n const isBaseDay = plainDateIsEqual(day, range.startDate);\n return {\n day,\n dayEvents,\n isCurrentDay,\n isHighlightedDay,\n isVisible: dayEvents.length > 0 || isCurrentDay || isBaseDay,\n };\n })\n .filter(dayRecord => dayRecord.isVisible);\n\n return (\n <ScheduleFrame title={title} titleLabel={title}>\n <div className={cx(sharedStyles.surface, styles.list)}>\n {visibleDays.map(\n ({day, dayEvents, isCurrentDay, isHighlightedDay}, index) => {\n const fullDate = plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY);\n return (\n <section\n className={cx(\n styles.day,\n index === visibleDays.length - 1 && styles.dayLast,\n )}\n key={day.toString()}>\n <h4\n aria-current={isHighlightedDay ? 'date' : undefined}\n aria-label={fullDate}\n className={styles.dayHeading}>\n <span\n className={cx(\n styles.dayNumber,\n isHighlightedDay && styles.dayNumberCurrent,\n )}>\n {day.day}\n </span>\n <span className={styles.dayWeekday}>\n {plainDateFormat(day, {weekday: 'short'})}\n </span>\n </h4>\n <div className={styles.events}>\n {renderListRows({\n currentTime,\n events: dayEvents,\n isShowingCurrentTime: isCurrentDay && !isLoading,\n timezoneID,\n })}\n </div>\n </section>\n );\n },\n )}\n </div>\n </ScheduleFrame>\n );\n}\n\nfunction renderListRows({\n currentTime,\n events,\n isShowingCurrentTime,\n timezoneID,\n}: {\n currentTime: Instant;\n events: ReadonlyArray<CalendarEvent>;\n isShowingCurrentTime: boolean;\n timezoneID: string;\n}): React.JSX.Element[] {\n const rows = events.map(event => (\n <ListEvent\n event={event}\n isPast={isEventInPast(event, currentTime, timezoneID)}\n key={event.id}\n />\n ));\n\n if (!isShowingCurrentTime) {\n return rows;\n }\n\n const marker = (\n <div\n aria-hidden=\"true\"\n className={styles.nowRow}\n data-testid=\"schedule-list-current-time\"\n key=\"current-time\"\n />\n );\n const insertIndex = events.findIndex(\n event => !isDayEvent(event) && event.start > currentTime,\n );\n\n if (insertIndex < 0) {\n return [...rows, marker];\n }\n\n return [...rows.slice(0, insertIndex), marker, ...rows.slice(insertIndex)];\n}\n\n/**\n * Creates a list schedule view configuration.\n */\nexport function createScheduleListView({\n days = 7,\n}: ScheduleListViewOptions = {}): ScheduleView<ScheduleListViewOptions> {\n return {\n component: ScheduleListView,\n getDateRange: (date: ZonedDateTime) => [\n date.startOfDay(),\n date.startOfDay().addDays(days),\n ],\n getNextDateRange: date => ({\n label: 'Next range',\n range: [\n date.startOfDay().addDays(days),\n date.startOfDay().addDays(days * 2),\n ],\n }),\n getPreviousDateRange: date => ({\n label: 'Previous range',\n range: [date.startOfDay().addDays(-days), date.startOfDay()],\n }),\n options: {days},\n };\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsAfter,\n plainDateIsBefore,\n plainDateIsEqual,\n plainDateSetStartOfWeek,\n type PlainDate,\n} from '../../internal/plainDate';\nimport {Heading, Text} from '../Text';\nimport {useScheduleContext} from './context';\nimport {eventOccursOnDate, isDayEvent} from './dateMath';\nimport {\n CalendarMonthEventPill,\n ScheduleFrame,\n formatMonthTitle,\n getEventAccessibleLabel,\n isEventInPast,\n styles as sharedStyles,\n} from './shared';\nimport type {\n CalendarEvent,\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n ZonedDateTimeRange,\n} from './types';\nimport {useCurrentTime} from './useCurrentTime';\n\nexport interface ScheduleMonthlyViewOptions {\n /**\n * Number of weeks to display in the monthly grid.\n * @default 6\n */\n weekCount?: number;\n}\n\nconst styles = {\n grid: css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n }),\n weekday: css({\n p: '2',\n textAlign: 'center',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n cell: css({\n minH: '24',\n p: '0.5',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n lastColumn: css({\n borderInlineEndWidth: 0,\n }),\n lastRow: css({\n borderBlockEndWidth: 0,\n }),\n otherMonth: css({\n bg: 'bg.subtle',\n color: 'fg.muted',\n }),\n dayNumber: css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: '6',\n h: '6',\n m: '0.5',\n borderRadius: 'full',\n }),\n today: css({\n bg: 'primary',\n color: 'fg.onPrimary',\n }),\n events: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1',\n m: 0,\n p: 0,\n listStyleType: 'none',\n }),\n eventItem: css({\n display: 'flex',\n }),\n monthSurface: css({\n position: 'relative',\n gridColumn: '1 / -1',\n }),\n monthCellGrid: css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n gridAutoRows: '128px',\n }),\n monthEventOverlay: css({\n position: 'absolute',\n inset: 0,\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n gridAutoRows: '128px',\n pointerEvents: 'none',\n }),\n monthEventSpan: css({\n alignSelf: 'start',\n minW: 0,\n mx: '0.5',\n pointerEvents: 'auto',\n zIndex: 1,\n }),\n} as const;\n\nconst weekdays = [\n {label: 'Sunday', shortLabel: 'Sun'},\n {label: 'Monday', shortLabel: 'Mon'},\n {label: 'Tuesday', shortLabel: 'Tue'},\n {label: 'Wednesday', shortLabel: 'Wed'},\n {label: 'Thursday', shortLabel: 'Thu'},\n {label: 'Friday', shortLabel: 'Fri'},\n {label: 'Saturday', shortLabel: 'Sat'},\n];\n\nfunction getMonthDays(date: PlainDate, weekCount: number): PlainDate[] {\n const firstOfMonth = date.with({day: 1});\n const firstVisibleDay = plainDateSetStartOfWeek(firstOfMonth);\n return Array.from({length: weekCount * 7}, (_, index) =>\n firstVisibleDay.add({days: index}),\n );\n}\n\nfunction getVisibleMonthRange(\n date: ZonedDateTime,\n month: PlainDate,\n weekCount: number,\n): ZonedDateTimeRange {\n const firstVisible = plainDateSetStartOfWeek(month.with({day: 1}));\n const end = firstVisible.add({days: weekCount * 7});\n const currentDate = date.toPlainDate();\n return [\n date.startOfDay().addDays(currentDate.until(firstVisible).days),\n date.startOfDay().addDays(currentDate.until(end).days),\n ];\n}\n\ninterface MonthEventSegment {\n columnEnd: number;\n columnStart: number;\n event: CalendarEvent;\n level: number;\n week: number;\n}\n\nconst MAX_MONTH_EVENT_LEVELS = 4;\n\nfunction getEventDateSpan(\n event: CalendarEvent,\n timezoneID: string,\n): [PlainDate, PlainDate] {\n if (isDayEvent(event)) {\n return [event.start, event.end];\n }\n\n return [\n plainDateFromInstant(event.start, timezoneID),\n plainDateFromInstant(Math.max(event.end - 1, event.start), timezoneID),\n ];\n}\n\nfunction getAvailableLevel(levels: number[], columnStart: number): number {\n const level = levels.findIndex(columnEnd => columnStart > columnEnd);\n return level >= 0 ? level : levels.length;\n}\n\nfunction getMonthEventSegments(\n events: ReadonlyArray<CalendarEvent>,\n days: ReadonlyArray<PlainDate>,\n timezoneID: string,\n): MonthEventSegment[] {\n const segments: MonthEventSegment[] = [];\n const levelsByWeek: number[][] = [];\n const firstDay = days[0];\n const lastDay = days[days.length - 1];\n\n const monthEvents = events\n .map(event => {\n const [eventStart, eventEnd] = getEventDateSpan(event, timezoneID);\n const startIndex = days.findIndex(\n day => !plainDateIsBefore(day, eventStart),\n );\n const endIndexFromRight = [...days]\n .reverse()\n .findIndex(day => !plainDateIsAfter(day, eventEnd));\n if (startIndex < 0 || endIndexFromRight < 0) {\n return null;\n }\n const endIndex = days.length - 1 - endIndexFromRight;\n return {\n endIndex,\n event,\n isPriority: isDayEvent(event) || endIndex > startIndex,\n startIndex,\n };\n })\n .filter(\n (\n record,\n ): record is {\n endIndex: number;\n event: CalendarEvent;\n isPriority: boolean;\n startIndex: number;\n } => record != null,\n )\n .sort((a, b) => {\n if (a.startIndex !== b.startIndex) {\n return a.startIndex - b.startIndex;\n }\n if (a.isPriority !== b.isPriority) {\n return a.isPriority ? -1 : 1;\n }\n const aDuration = a.endIndex - a.startIndex;\n const bDuration = b.endIndex - b.startIndex;\n if (aDuration !== bDuration) {\n return bDuration - aDuration;\n }\n return a.event.title.localeCompare(b.event.title);\n });\n\n monthEvents.forEach(({endIndex, event, startIndex}) => {\n const [eventStart, eventEnd] = getEventDateSpan(event, timezoneID);\n if (\n plainDateIsBefore(eventEnd, firstDay) ||\n plainDateIsAfter(eventStart, lastDay)\n ) {\n return;\n }\n\n for (\n let week = Math.floor(startIndex / 7);\n week <= Math.floor(endIndex / 7);\n week += 1\n ) {\n const columnStart =\n week === Math.floor(startIndex / 7) ? startIndex % 7 : 0;\n const columnEnd = week === Math.floor(endIndex / 7) ? endIndex % 7 : 6;\n const weekLevels = (levelsByWeek[week] ??= []);\n const level = getAvailableLevel(weekLevels, columnStart);\n if (level < MAX_MONTH_EVENT_LEVELS) {\n weekLevels[level] = columnEnd;\n segments.push({columnEnd, columnStart, event, level, week});\n }\n }\n });\n\n return segments;\n}\n\nfunction getMonthEventSegmentStyle({\n columnEnd,\n columnStart,\n level,\n week,\n}: MonthEventSegment): React.CSSProperties {\n return {\n gridColumn: `${columnStart + 1} / ${columnEnd + 2}`,\n gridRow: `${week + 1}`,\n marginBlockStart: `${30 + level * 29}px`,\n };\n}\n\nfunction getGridCellName({\n date,\n events,\n timezoneID,\n}: {\n date: PlainDate;\n events: CalendarEvent[];\n timezoneID: string;\n}): string {\n const eventLabels = events.map(event =>\n getEventAccessibleLabel(event, [], timezoneID),\n );\n const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);\n return eventLabels.length > 0\n ? `${dateLabel}. ${eventLabels.join('. ')}`\n : dateLabel;\n}\n\n/**\n * Internal view component that renders a month grid with day cells and events.\n */\nfunction ScheduleMonthlyView({\n options,\n}: ScheduleViewComponentProps<ScheduleMonthlyViewOptions>): React.JSX.Element {\n const {events, highlightDate, timezoneID, viewDate} = useScheduleContext();\n const currentTime = useCurrentTime();\n const month = viewDate.toPlainDate();\n const title = formatMonthTitle(month);\n const days = getMonthDays(month, options.weekCount ?? 6);\n const eventSegments = getMonthEventSegments(events, days, timezoneID);\n const today = highlightDate.toPlainDate();\n\n return (\n <ScheduleFrame title={title} titleLabel={title}>\n <div\n aria-label={title}\n className={cx(sharedStyles.surface, styles.grid)}\n role=\"grid\">\n {weekdays.map((weekday, index) => (\n <div\n aria-colindex={index + 1}\n aria-label={weekday.label}\n className={styles.weekday}\n key={weekday.label}\n role=\"columnheader\">\n <Heading color=\"secondary\" level={4}>\n {weekday.shortLabel}\n </Heading>\n </div>\n ))}\n <div className={styles.monthSurface}>\n <div className={styles.monthCellGrid}>\n {days.map((day, index) => {\n const dayEvents = events.filter(event =>\n eventOccursOnDate(event, day, timezoneID),\n );\n const isCurrentMonth =\n day.month === month.month && day.year === month.year;\n const isLastColumn = index % 7 === 6;\n const isLastRow = index >= days.length - 7;\n return (\n <div\n aria-current={\n plainDateIsEqual(day, today) ? 'date' : undefined\n }\n aria-label={getGridCellName({\n date: day,\n events: dayEvents,\n timezoneID,\n })}\n className={cx(\n styles.cell,\n isLastColumn ? styles.lastColumn : undefined,\n isLastRow ? styles.lastRow : undefined,\n !isCurrentMonth ? styles.otherMonth : undefined,\n )}\n key={day.toString()}\n role=\"gridcell\">\n <span\n className={cx(\n styles.dayNumber,\n plainDateIsEqual(day, today) ? styles.today : undefined,\n )}>\n <Text\n as=\"span\"\n color=\"inherit\"\n hasTabularNumbers\n type=\"supporting\"\n weight=\"medium\">\n {day.day}\n </Text>\n </span>\n </div>\n );\n })}\n </div>\n <div aria-hidden=\"true\" className={styles.monthEventOverlay}>\n {eventSegments.map(segment => (\n <div\n className={styles.monthEventSpan}\n data-testid={`schedule-event-span-${segment.event.id}`}\n key={`${segment.event.id}:${segment.week}:${segment.columnStart}`}\n style={getMonthEventSegmentStyle(segment)}>\n <CalendarMonthEventPill\n event={segment.event}\n isPast={isEventInPast(segment.event, currentTime, timezoneID)}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n </ScheduleFrame>\n );\n}\n\n/**\n * Creates a monthly schedule view configuration.\n */\nexport function createScheduleMonthlyView({\n weekCount = 6,\n}: ScheduleMonthlyViewOptions = {}): ScheduleView<ScheduleMonthlyViewOptions> {\n return {\n component: ScheduleMonthlyView,\n getDateRange: date => {\n const month = date.toPlainDate();\n return getVisibleMonthRange(date, month, weekCount);\n },\n getNextDateRange: date => {\n const nextMonth = date.toPlainDate().with({day: 1}).add({months: 1});\n return {\n label: 'Next month',\n range: getVisibleMonthRange(date, nextMonth, weekCount),\n };\n },\n getPreviousDateRange: date => {\n const previousMonth = date\n .toPlainDate()\n .with({day: 1})\n .subtract({months: 1});\n return {\n label: 'Previous month',\n range: getVisibleMonthRange(date, previousMonth, weekCount),\n };\n },\n options: {weekCount},\n };\n}\n","import {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {useMemo, type ReactNode} from 'react';\nimport {Button} from '../../Button';\nimport {ButtonGroup} from '../../ButtonGroup';\nimport {useScheduleContext} from '../context';\nimport type {\n ScheduleHeaderContent,\n SchedulePlugin,\n SchedulePluginPosition,\n} from '../types';\n\nexport interface SchedulePaginationPluginOptions {\n position?: SchedulePluginPosition;\n}\n\nfunction SchedulePaginationControls(): React.JSX.Element {\n const {\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n previousDateLabel,\n } = useScheduleContext();\n return (\n <ButtonGroup label=\"Schedule pagination\" size=\"sm\">\n <Button\n icon={ChevronLeft}\n isIconOnly\n label={previousDateLabel}\n onClick={onPreviousDate}\n />\n <Button label=\"Today\" onClick={onToday} size=\"sm\" />\n <Button\n icon={ChevronRight}\n isIconOnly\n label={nextDateLabel}\n onClick={onNextDate}\n />\n </ButtonGroup>\n );\n}\n\nfunction createSchedulePaginationPlugin({\n position = 'start',\n}: SchedulePaginationPluginOptions = {}): SchedulePlugin {\n return {\n renderHeader(\n startContent: ReactNode,\n centerContent: ReactNode,\n endContent: ReactNode,\n ): ScheduleHeaderContent {\n const controls = <SchedulePaginationControls />;\n return position === 'start'\n ? {\n centerContent,\n endContent,\n startContent: (\n <>\n {controls}\n {startContent}\n </>\n ),\n }\n : {\n centerContent,\n endContent: (\n <>\n {endContent}\n {controls}\n </>\n ),\n startContent,\n };\n },\n };\n}\n\nexport const defaultSchedulePaginationPlugin = createSchedulePaginationPlugin();\n\nexport function useSchedulePaginationPlugin({\n position = 'start',\n}: SchedulePaginationPluginOptions = {}): SchedulePlugin {\n return useMemo(() => createSchedulePaginationPlugin({position}), [position]);\n}\n","import {Check} from 'lucide-react';\nimport {useMemo, type ReactNode} from 'react';\nimport {DropdownMenu, DropdownMenuItem} from '../../DropdownMenu';\nimport {Icon} from '../../Icon';\nimport {useScheduleContext} from '../context';\nimport type {\n ScheduleHeaderContent,\n SchedulePlugin,\n SchedulePluginPosition,\n ScheduleView,\n ScheduleViewBase,\n} from '../types';\n\nexport interface ScheduleViewSelectorOption<\n View extends ScheduleViewBase = ScheduleView,\n> {\n label: string;\n view: View;\n}\n\nexport interface ScheduleViewSelectorPluginOptions<\n View extends ScheduleViewBase = ScheduleView,\n> {\n onChangeView?: (view: View) => void;\n position?: SchedulePluginPosition;\n}\n\nfunction ScheduleViewSelectorControl<View extends ScheduleViewBase>({\n onChangeView,\n options,\n}: {\n onChangeView?: (view: View) => void;\n options: ReadonlyArray<ScheduleViewSelectorOption<View>>;\n}): React.JSX.Element {\n const {view} = useScheduleContext();\n const currentOption = options.find(option => option.view === view);\n\n return (\n <DropdownMenu\n button={{\n isDisabled: onChangeView == null,\n label: currentOption?.label ?? 'View',\n size: 'sm',\n }}\n menuWidth={160}>\n {options.map(option => (\n <DropdownMenuItem\n endContent={\n option.view === view ? (\n <Icon\n color=\"primary\"\n data-testid=\"schedule-view-selector-selected-icon\"\n icon={Check}\n size=\"sm\"\n />\n ) : null\n }\n key={option.label}\n label={option.label}\n onClick={() => onChangeView?.(option.view)}\n />\n ))}\n </DropdownMenu>\n );\n}\n\nfunction createScheduleViewSelectorPlugin<View extends ScheduleViewBase>(\n options: ReadonlyArray<ScheduleViewSelectorOption<View>>,\n {\n onChangeView,\n position = 'end',\n }: ScheduleViewSelectorPluginOptions<View> = {},\n): SchedulePlugin {\n return {\n renderHeader(\n startContent: ReactNode,\n centerContent: ReactNode,\n endContent: ReactNode,\n ): ScheduleHeaderContent {\n const selector = (\n <ScheduleViewSelectorControl\n onChangeView={onChangeView}\n options={options}\n />\n );\n return position === 'start'\n ? {\n centerContent,\n endContent,\n startContent: (\n <>\n {startContent}\n {selector}\n </>\n ),\n }\n : {\n centerContent,\n endContent: (\n <>\n {endContent}\n {selector}\n </>\n ),\n startContent,\n };\n },\n };\n}\n\nexport function useScheduleViewSelectorPlugin<View extends ScheduleViewBase>(\n options: ReadonlyArray<ScheduleViewSelectorOption<View>>,\n pluginOptions: ScheduleViewSelectorPluginOptions<View> = {},\n): SchedulePlugin {\n const {onChangeView, position = 'end'} = pluginOptions;\n return useMemo(\n () => createScheduleViewSelectorPlugin(options, {onChangeView, position}),\n [onChangeView, options, position],\n );\n}\n","import type {SchedulePlugin} from '../types';\nimport {defaultSchedulePaginationPlugin} from './PaginationPlugin';\n\nexport {useSchedulePaginationPlugin} from './PaginationPlugin';\nexport {useScheduleViewSelectorPlugin} from './ViewSelectorPlugin';\n\nexport const defaultSchedulePlugins: ReadonlyArray<SchedulePlugin> = [\n defaultSchedulePaginationPlugin,\n];\n","import {\n Suspense,\n useCallback,\n useMemo,\n useState,\n type CSSProperties,\n type Ref,\n} from 'react';\nimport {cx} from '../../internal/cx';\nimport {plainDateFromInstant} from '../../internal/plainDate';\nimport {getBrowserTimezoneID, nowEpochMilliseconds} from '../../internal/time';\nimport {ScheduleContext} from './context';\nimport {eventOverlapsRange, sortEvents} from './dateMath';\nimport {defaultSchedulePlugins} from './plugins';\nimport {styles} from './shared';\nimport type {\n CalendarEvent,\n Instant,\n ScheduleCategory,\n ScheduleEventSource,\n SchedulePlugin,\n ScheduleRange,\n ScheduleView,\n ScheduleViewOptions,\n ZonedDateTime,\n ZonedDateTimeRange,\n} from './types';\nimport {createZonedDateTime} from './zonedDateTime';\n\nconst EMPTY_CATEGORIES: ReadonlyArray<ScheduleCategory> = [];\n\nexport interface ScheduleProps<\n Options extends ScheduleViewOptions = ScheduleViewOptions,\n> {\n /**\n * Category definitions used to style events by their `category` value.\n */\n categories?: ReadonlyArray<ScheduleCategory>;\n /**\n * Additional CSS class names applied to the schedule root.\n */\n className?: string;\n /**\n * Test ID applied to the schedule root.\n */\n 'data-testid'?: string;\n /**\n * Static events or an async event loader.\n */\n events: ScheduleEventSource;\n /**\n * Instant highlighted as the current date. Defaults to mount time.\n */\n highlightDate?: Instant;\n /**\n * Called by navigation plugins when the visible date changes.\n */\n onViewDateChange?: (date: Instant) => void;\n /**\n * Header/rendering plugins. Defaults to pagination controls.\n */\n plugins?: ReadonlyArray<SchedulePlugin>;\n /**\n * Ref forwarded to the schedule root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the schedule root.\n */\n style?: CSSProperties;\n /**\n * IANA timezone ID used for date math and rendering.\n */\n timezoneID?: string;\n /**\n * View object returned by a `createSchedule*View` factory.\n */\n view: ScheduleView<Options>;\n /**\n * Instant used to choose the rendered range.\n */\n viewDate: Instant;\n}\n\ninterface EventRecord {\n error: unknown;\n promise: Promise<void>;\n status: 'fulfilled' | 'pending' | 'rejected';\n value: ReadonlyArray<CalendarEvent>;\n}\n\nfunction readAsyncEvents(\n loader: Exclude<ScheduleEventSource, ReadonlyArray<CalendarEvent>>,\n start: Instant,\n end: Instant,\n cache: Map<string, EventRecord>,\n): ReadonlyArray<CalendarEvent> {\n const key = `${start}:${end}`;\n let record = cache.get(key);\n if (record == null) {\n record = {\n error: null,\n promise: Promise.resolve()\n .then(async () => loader(start, end))\n .then(\n value => {\n if (record != null) {\n record.status = 'fulfilled';\n record.value = value;\n }\n },\n error => {\n if (record != null) {\n record.status = 'rejected';\n record.error = error;\n }\n },\n ),\n status: 'pending',\n value: [],\n };\n cache.set(key, record);\n }\n\n if (record.status === 'pending') {\n // Suspense uses thrown promises to pause rendering until async events resolve.\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw record.promise;\n }\n\n if (record.status === 'rejected') {\n throw record.error instanceof Error\n ? record.error\n : new Error(String(record.error));\n }\n\n return record.value;\n}\n\nfunction resolveEvents(\n eventSource: ScheduleEventSource,\n range: ScheduleRange,\n timezoneID: string,\n eventCache: Map<string, EventRecord>,\n): ReadonlyArray<CalendarEvent> {\n const events =\n typeof eventSource === 'function'\n ? readAsyncEvents(eventSource, range.start, range.end, eventCache)\n : eventSource;\n return sortEvents(\n events.filter(event => eventOverlapsRange(event, range, timezoneID)),\n timezoneID,\n );\n}\n\nfunction getRange<Options extends ScheduleViewOptions>(\n view: ScheduleView<Options>,\n date: ZonedDateTime,\n): ScheduleRange {\n const [start, end] = view.getDateRange(date);\n return {\n end: end.instant,\n endDate: plainDateFromInstant(end.instant, end.timezoneID),\n start: start.instant,\n startDate: plainDateFromInstant(start.instant, start.timezoneID),\n };\n}\n\nfunction ScheduleViewContent<Options extends ScheduleViewOptions>({\n categories,\n eventCache,\n eventSource,\n highlightDate,\n isLoading,\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n plugins,\n previousDateLabel,\n view,\n viewDate,\n}: {\n categories: ReadonlyArray<ScheduleCategory>;\n eventCache: Map<string, EventRecord>;\n eventSource: ScheduleEventSource;\n highlightDate: ZonedDateTime;\n isLoading: boolean;\n nextDateLabel: string;\n onNextDate: () => void;\n onPreviousDate: () => void;\n onToday: () => void;\n plugins: ReadonlyArray<SchedulePlugin>;\n previousDateLabel: string;\n view: ScheduleView<Options>;\n viewDate: ZonedDateTime;\n}): React.JSX.Element {\n const Component = view.component;\n const range = getRange(view, viewDate);\n const contextValue = useMemo(() => {\n const events = isLoading\n ? []\n : resolveEvents(eventSource, range, viewDate.timezoneID, eventCache);\n return {\n categories,\n events,\n highlightDate,\n isLoading,\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n plugins,\n previousDateLabel,\n range,\n timezoneID: viewDate.timezoneID,\n view,\n viewDate,\n };\n }, [\n categories,\n eventCache,\n eventSource,\n highlightDate,\n isLoading,\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n plugins,\n previousDateLabel,\n range,\n view,\n viewDate,\n ]);\n\n return (\n <ScheduleContext value={contextValue}>\n <Component options={view.options} />\n </ScheduleContext>\n );\n}\n\n/**\n * Read-only schedule shell for day, week, month, and list views.\n */\nexport function Schedule({\n categories = EMPTY_CATEGORIES,\n className,\n 'data-testid': dataTestId,\n events,\n highlightDate: highlightDateFromProps,\n onViewDateChange,\n plugins = defaultSchedulePlugins,\n ref,\n style,\n timezoneID: timezoneIDFromProps,\n view,\n viewDate,\n}: ScheduleProps): React.JSX.Element {\n const timezoneID = timezoneIDFromProps ?? getBrowserTimezoneID();\n // Instance-scoped cache for async event loading. Unlike the previous\n // module-level WeakMap keyed on loader function identity, this cache belongs\n // to each Schedule instance so unstable (inline) loader references do not\n // defeat caching or leak memory.\n const [eventCache] = useState(() => new Map<string, EventRecord>());\n const [internalHighlightDate] = useState<Instant>(() =>\n nowEpochMilliseconds(),\n );\n const highlightDate = highlightDateFromProps ?? internalHighlightDate;\n const zonedDateTime = useMemo(\n () => createZonedDateTime(viewDate, timezoneID),\n [viewDate, timezoneID],\n );\n const highlightZonedDateTime = useMemo(\n () => createZonedDateTime(highlightDate, timezoneID),\n [highlightDate, timezoneID],\n );\n const updateViewDate = useCallback(\n (nextViewDate: Instant) => {\n onViewDateChange?.(nextViewDate);\n },\n [onViewDateChange],\n );\n const shiftToRange = useCallback(\n (nextRange: ZonedDateTimeRange) => {\n const currentRange = view.getDateRange(zonedDateTime);\n updateViewDate(\n zonedDateTime.instant + nextRange[0].instant - currentRange[0].instant,\n );\n },\n [updateViewDate, view, zonedDateTime],\n );\n const previousDateRange = useMemo(\n () => view.getPreviousDateRange(zonedDateTime),\n [view, zonedDateTime],\n );\n const nextDateRange = useMemo(\n () => view.getNextDateRange(zonedDateTime),\n [view, zonedDateTime],\n );\n const onPreviousDate = useCallback(() => {\n shiftToRange(previousDateRange.range);\n }, [previousDateRange, shiftToRange]);\n const onToday = useCallback(() => {\n updateViewDate(nowEpochMilliseconds());\n }, [updateViewDate]);\n const onNextDate = useCallback(() => {\n shiftToRange(nextDateRange.range);\n }, [nextDateRange, shiftToRange]);\n\n return (\n <div\n className={cx(styles.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n <Suspense\n fallback={\n <ScheduleViewContent\n categories={categories}\n eventCache={eventCache}\n eventSource={[]}\n highlightDate={highlightZonedDateTime}\n isLoading\n nextDateLabel={nextDateRange.label}\n onNextDate={onNextDate}\n onPreviousDate={onPreviousDate}\n onToday={onToday}\n plugins={plugins}\n previousDateLabel={previousDateRange.label}\n view={view}\n viewDate={zonedDateTime}\n />\n }>\n <ScheduleViewContent\n categories={categories}\n eventCache={eventCache}\n eventSource={events}\n highlightDate={highlightZonedDateTime}\n isLoading={false}\n nextDateLabel={nextDateRange.label}\n onNextDate={onNextDate}\n onPreviousDate={onPreviousDate}\n onToday={onToday}\n plugins={plugins}\n previousDateLabel={previousDateRange.label}\n view={view}\n viewDate={zonedDateTime}\n />\n </Suspense>\n </div>\n );\n}\n\nSchedule.displayName = 'Schedule';\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {plainDateDayOfWeek, type PlainDate} from '../../internal/plainDate';\nimport {TimeGridView} from './TimeGridView';\nimport {useScheduleContext} from './context';\nimport {enumerateDates, getScheduleRangeFromDates} from './dateMath';\nimport {ScheduleFrame, formatWeekTitle} from './shared';\nimport type {\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n} from './types';\nimport {scheduleRangeToZonedDateTimeRange} from './zonedDateTime';\n\nexport interface ScheduleWeeklyViewOptions {\n /**\n * Pixel height used for each hourly row.\n * @default 100\n */\n hourHeight?: number;\n /**\n * Exclusive ending hour shown in the weekly grid (1-24).\n * @default 24\n */\n maxHour?: number;\n /**\n * First hour shown in the weekly grid (0-23).\n * @default 0\n */\n minHour?: number;\n /**\n * Day used as the first day of the week, where 0 is Sunday and 6 is Saturday.\n * @default 0\n */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n}\n\n/**\n * Internal view component that renders a 7-day time grid.\n */\nfunction ScheduleWeeklyView({\n options,\n}: ScheduleViewComponentProps<ScheduleWeeklyViewOptions>): React.JSX.Element {\n const {range} = useScheduleContext();\n const days = enumerateDates(range.startDate, range.endDate);\n const title = formatWeekTitle(days[0], days[days.length - 1]);\n return (\n <ScheduleFrame title={title} titleLabel={title}>\n <TimeGridView\n days={days}\n hourHeight={options.hourHeight}\n maxHour={options.maxHour}\n minHour={options.minHour}\n />\n </ScheduleFrame>\n );\n}\n\n/**\n * Creates a weekly schedule view configuration.\n */\nexport function createScheduleWeeklyView({\n hourHeight = 100,\n maxHour = 24,\n minHour = 0,\n weekStartsOn = 0,\n}: ScheduleWeeklyViewOptions = {}): ScheduleView<ScheduleWeeklyViewOptions> {\n const getWeekStart = (date: ZonedDateTime) =>\n setStartOfWeek(date.toPlainDate(), weekStartsOn);\n const getWeekRange = (date: ZonedDateTime) => {\n const startDate = getWeekStart(date);\n return scheduleRangeToZonedDateTimeRange(\n getScheduleRangeFromDates({\n endDate: startDate.add({days: 7}),\n startDate,\n timezoneID: date.timezoneID,\n }),\n date.timezoneID,\n );\n };\n\n return {\n component: ScheduleWeeklyView,\n getDateRange: getWeekRange,\n getNextDateRange: date => ({\n label: 'Next week',\n range: getWeekRange(date.addDays(7)),\n }),\n getPreviousDateRange: date => ({\n label: 'Previous week',\n range: getWeekRange(date.addDays(-7)),\n }),\n options: {hourHeight, maxHour, minHour, weekStartsOn},\n };\n}\n\nfunction setStartOfWeek(\n date: PlainDate,\n weekStartsOn: NonNullable<ScheduleWeeklyViewOptions['weekStartsOn']>,\n): PlainDate {\n const daysSinceWeekStart = (plainDateDayOfWeek(date) - weekStartsOn + 7) % 7;\n return date.add({days: -daysSinceWeekStart});\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Schedule/CalendarEvent.ts","../src/components/Schedule/context.tsx","../src/components/Schedule/dateMath.ts","../src/components/Schedule/shared.tsx","../src/components/Schedule/useCurrentTime.ts","../src/components/Schedule/TimeGridView.tsx","../src/components/Schedule/zonedDateTime.ts","../src/components/Schedule/DayView.tsx","../src/components/Schedule/ListView.tsx","../src/components/Schedule/MonthlyView.tsx","../src/components/Schedule/plugins/PaginationPlugin.tsx","../src/components/Schedule/plugins/ViewSelectorPlugin.tsx","../src/components/Schedule/plugins/index.tsx","../src/components/Schedule/Schedule.tsx","../src/components/Schedule/WeeklyView.tsx"],"names":["Temporal","createContext","use","plainDateToInstant","plainDateIsBefore","plainDateIsAfter","plainDateFromInstant","css","plainDateFormat","DATE_FORMAT_WITH_WEEKDAY","DATE_FORMAT_MONTH_YEAR","plainDateIsEqual","currentTime","jsx","cx","jsxs","Heading","Spinner","useSyncExternalStore","styles","Text","Tooltip","plainDateSetStartOfWeek","ButtonGroup","Button","ChevronLeft","ChevronRight","Fragment","useMemo","DropdownMenu","DropdownMenuItem","Icon","Check","getBrowserTimezoneID","useState","nowEpochMilliseconds","useCallback","Suspense","plainDateDayOfWeek"],"mappings":"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","file":"chunk-QCT4BPB6.cjs","sourcesContent":["import {Temporal} from '@js-temporal/polyfill';\nimport type {PlainDate} from '../../internal/dateTypes';\nimport type {TagColor} from '../Tag';\nimport type {Instant} from './types';\n\nconst DATE_ONLY_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport type ScheduleEventColor = Exclude<TagColor, 'default'>;\n\nexport interface ScheduleCategory {\n color: ScheduleEventColor;\n label: string;\n}\n\nexport interface CalendarEventBase {\n category?: string;\n id: string;\n title: string;\n}\n\nexport interface CalendarDayEvent extends CalendarEventBase {\n end: PlainDate;\n start: PlainDate;\n}\n\nexport interface CalendarInstantEvent extends CalendarEventBase {\n end: Instant;\n start: Instant;\n}\n\nexport type CalendarEvent = CalendarDayEvent | CalendarInstantEvent;\n\nexport function createEventFromISO({\n category,\n end,\n id,\n start,\n title,\n}: {\n category?: CalendarEvent['category'];\n end: string;\n id: string;\n start: string;\n title: string;\n}): CalendarEvent {\n if (DATE_ONLY_RE.test(start) && DATE_ONLY_RE.test(end)) {\n return {\n category,\n end: Temporal.PlainDate.from(end),\n id,\n start: Temporal.PlainDate.from(start),\n title,\n };\n }\n\n return {\n category,\n end: Temporal.Instant.from(end).epochMilliseconds,\n id,\n start: Temporal.Instant.from(start).epochMilliseconds,\n title,\n };\n}\n","import {createContext, use} from 'react';\nimport type {\n CalendarEvent,\n ScheduleCategory,\n SchedulePlugin,\n ScheduleRange,\n ScheduleViewBase,\n ZonedDateTime,\n} from './types';\n\nexport interface ScheduleContextValue {\n categories: ReadonlyArray<ScheduleCategory>;\n events: ReadonlyArray<CalendarEvent>;\n highlightDate: ZonedDateTime;\n isLoading: boolean;\n nextDateLabel: string;\n onNextDate: () => void;\n onPreviousDate: () => void;\n onToday: () => void;\n plugins: ReadonlyArray<SchedulePlugin>;\n previousDateLabel: string;\n range: ScheduleRange;\n timezoneID: string;\n view: ScheduleViewBase;\n viewDate: ZonedDateTime;\n}\n\nexport const ScheduleContext = createContext<ScheduleContextValue | null>(null);\nScheduleContext.displayName = 'ScheduleContext';\n\nexport function useScheduleContext(): ScheduleContextValue {\n const context = use(ScheduleContext);\n if (context == null) {\n throw new Error('Schedule views must be rendered inside Schedule.');\n }\n return context;\n}\n","import {\n plainDateFromInstant,\n plainDateIsAfter,\n plainDateIsBefore,\n plainDateToInstant,\n type PlainDate,\n} from '../../internal/plainDate';\nimport type {CalendarDayEvent, CalendarEvent} from './CalendarEvent';\nimport type {Instant, ScheduleRange} from './types';\n\nexport function isDayEvent(event: CalendarEvent): event is CalendarDayEvent {\n return typeof event.start !== 'number';\n}\n\nexport function getScheduleRangeFromDates({\n endDate,\n startDate,\n timezoneID,\n}: {\n endDate: PlainDate;\n startDate: PlainDate;\n timezoneID: string;\n}): ScheduleRange {\n return {\n end: plainDateToInstant(endDate, timezoneID),\n endDate,\n start: plainDateToInstant(startDate, timezoneID),\n startDate,\n };\n}\n\nexport function enumerateDates(\n start: PlainDate,\n endExclusive: PlainDate,\n): PlainDate[] {\n const dates: PlainDate[] = [];\n let current = start;\n while (plainDateIsBefore(current, endExclusive)) {\n dates.push(current);\n current = current.add({days: 1});\n }\n return dates;\n}\n\nexport function eventOverlapsRange(\n event: CalendarEvent,\n range: ScheduleRange,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n const eventStart = plainDateToInstant(event.start, timezoneID);\n const eventEnd = plainDateToInstant(event.end.add({days: 1}), timezoneID);\n return eventStart < range.end && eventEnd > range.start;\n }\n\n return event.start < range.end && event.end > range.start;\n}\n\nexport function eventOccursOnDate(\n event: CalendarEvent,\n date: PlainDate,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n return (\n !plainDateIsAfter(event.start, date) &&\n !plainDateIsBefore(event.end, date)\n );\n }\n\n const startDate = plainDateFromInstant(event.start, timezoneID);\n const endDate = plainDateFromInstant(\n Math.max(event.end - 1, event.start),\n timezoneID,\n );\n return (\n !plainDateIsAfter(startDate, date) && !plainDateIsBefore(endDate, date)\n );\n}\n\nexport function sortEvents(\n events: ReadonlyArray<CalendarEvent>,\n timezoneID: string,\n): CalendarEvent[] {\n return [...events].sort((a, b) => {\n const aStart = getEventSortStart(a, timezoneID);\n const bStart = getEventSortStart(b, timezoneID);\n return aStart < bStart\n ? -1\n : aStart > bStart\n ? 1\n : a.title.localeCompare(b.title);\n });\n}\n\nfunction getEventSortStart(event: CalendarEvent, timezoneID: string): Instant {\n return isDayEvent(event)\n ? plainDateToInstant(event.start, timezoneID)\n : event.start;\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport type {ReactNode} from 'react';\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_MONTH_YEAR,\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsBefore,\n plainDateIsEqual,\n type PlainDate,\n} from '../../internal/plainDate';\nimport {Spinner} from '../Spinner';\nimport {Heading} from '../Text';\nimport {useScheduleContext} from './context';\nimport {isDayEvent} from './dateMath';\nimport type {\n CalendarEvent,\n ScheduleCategory,\n ScheduleEventColor,\n ScheduleHeaderContent,\n} from './types';\n\nexport const styles = {\n root: css({\n color: 'fg',\n fontFamily: 'body',\n w: 'full',\n }),\n frame: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '3',\n w: 'full',\n }),\n header: css({\n display: 'grid',\n gridTemplateColumns: '1fr auto 1fr',\n alignItems: 'center',\n gap: '3',\n }),\n headerSlotStart: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: '2',\n }),\n headerSlotCenter: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '2',\n textAlign: 'center',\n }),\n headerSlotEnd: css({\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n gap: '2',\n }),\n headerTitleContent: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2',\n }),\n surface: css({\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n borderRadius: 'md',\n overflow: 'hidden',\n bg: 'bg',\n }),\n event: css({\n display: 'inline-flex',\n alignItems: 'baseline',\n gap: '1',\n maxW: 'full',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'var(--schedule-event-border)',\n borderRadius: 'sm',\n px: '1',\n py: '0.5',\n fontSize: 'xs',\n fontWeight: 'medium',\n lineHeight: 'tight',\n bg: 'var(--schedule-event-bg)',\n color: 'var(--schedule-event-fg)',\n _hover: {\n bg: 'var(--schedule-event-bg-hover)',\n },\n }),\n eventPast: css({\n '--schedule-event-bg':\n 'color-mix(in srgb, var(--schedule-event-dot) 10%, token(colors.bg))',\n '--schedule-event-bg-hover':\n 'color-mix(in srgb, var(--schedule-event-dot) 14%, token(colors.bg))',\n '--schedule-event-border':\n 'color-mix(in srgb, var(--schedule-event-dot) 48%, token(colors.border))',\n '--schedule-event-fg':\n 'color-mix(in srgb, var(--schedule-event-fg-base) 52%, token(colors.fg.muted))',\n }),\n eventDot: css({\n display: 'inline-block',\n w: '2',\n h: '2',\n borderRadius: 'full',\n bg: 'var(--schedule-event-dot)',\n flexShrink: 0,\n }),\n eventTime: css({\n flexShrink: 0,\n fontWeight: 'normal',\n }),\n eventTitle: css({\n fontWeight: 'bold',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n} as const;\n\nconst categoryFallback: ScheduleCategory = {label: 'Event', color: 'blue'};\n\nconst colorStyles = {\n blue: css({\n '--schedule-event-bg': 'token(colors.surface.blue)',\n '--schedule-event-bg-hover': 'token(colors.surface.blue.hover)',\n '--schedule-event-border': 'token(colors.surface.blue.accent)',\n '--schedule-event-fg': 'token(colors.surface.blue.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.blue.fg)',\n '--schedule-event-dot': 'token(colors.surface.blue.accent)',\n }),\n cyan: css({\n '--schedule-event-bg': 'token(colors.surface.cyan)',\n '--schedule-event-bg-hover': 'token(colors.surface.cyan.hover)',\n '--schedule-event-border': 'token(colors.surface.cyan.accent)',\n '--schedule-event-fg': 'token(colors.surface.cyan.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.cyan.fg)',\n '--schedule-event-dot': 'token(colors.surface.cyan.accent)',\n }),\n gray: css({\n '--schedule-event-bg': 'token(colors.surface.gray)',\n '--schedule-event-bg-hover': 'token(colors.surface.gray.hover)',\n '--schedule-event-border': 'token(colors.surface.gray.accent)',\n '--schedule-event-fg': 'token(colors.surface.gray.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.gray.fg)',\n '--schedule-event-dot': 'token(colors.surface.gray.accent)',\n }),\n green: css({\n '--schedule-event-bg': 'token(colors.surface.green)',\n '--schedule-event-bg-hover': 'token(colors.surface.green.hover)',\n '--schedule-event-border': 'token(colors.surface.green.accent)',\n '--schedule-event-fg': 'token(colors.surface.green.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.green.fg)',\n '--schedule-event-dot': 'token(colors.surface.green.accent)',\n }),\n orange: css({\n '--schedule-event-bg': 'token(colors.surface.orange)',\n '--schedule-event-bg-hover': 'token(colors.surface.orange.hover)',\n '--schedule-event-border': 'token(colors.surface.orange.accent)',\n '--schedule-event-fg': 'token(colors.surface.orange.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.orange.fg)',\n '--schedule-event-dot': 'token(colors.surface.orange.accent)',\n }),\n pink: css({\n '--schedule-event-bg': 'token(colors.surface.pink)',\n '--schedule-event-bg-hover': 'token(colors.surface.pink.hover)',\n '--schedule-event-border': 'token(colors.surface.pink.accent)',\n '--schedule-event-fg': 'token(colors.surface.pink.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.pink.fg)',\n '--schedule-event-dot': 'token(colors.surface.pink.accent)',\n }),\n purple: css({\n '--schedule-event-bg': 'token(colors.surface.purple)',\n '--schedule-event-bg-hover': 'token(colors.surface.purple.hover)',\n '--schedule-event-border': 'token(colors.surface.purple.accent)',\n '--schedule-event-fg': 'token(colors.surface.purple.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.purple.fg)',\n '--schedule-event-dot': 'token(colors.surface.purple.accent)',\n }),\n red: css({\n '--schedule-event-bg': 'token(colors.surface.red)',\n '--schedule-event-bg-hover': 'token(colors.surface.red.hover)',\n '--schedule-event-border': 'token(colors.surface.red.accent)',\n '--schedule-event-fg': 'token(colors.surface.red.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.red.fg)',\n '--schedule-event-dot': 'token(colors.surface.red.accent)',\n }),\n teal: css({\n '--schedule-event-bg': 'token(colors.surface.teal)',\n '--schedule-event-bg-hover': 'token(colors.surface.teal.hover)',\n '--schedule-event-border': 'token(colors.surface.teal.accent)',\n '--schedule-event-fg': 'token(colors.surface.teal.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.teal.fg)',\n '--schedule-event-dot': 'token(colors.surface.teal.accent)',\n }),\n yellow: css({\n '--schedule-event-bg': 'token(colors.surface.yellow)',\n '--schedule-event-bg-hover': 'token(colors.surface.yellow.hover)',\n '--schedule-event-border': 'token(colors.surface.yellow.accent)',\n '--schedule-event-fg': 'token(colors.surface.yellow.fg)',\n '--schedule-event-fg-base': 'token(colors.surface.yellow.fg)',\n '--schedule-event-dot': 'token(colors.surface.yellow.accent)',\n }),\n} satisfies Record<ScheduleEventColor, string>;\n\nexport function getCategory(\n categories: ReadonlyArray<ScheduleCategory>,\n event: CalendarEvent,\n): ScheduleCategory {\n return (\n categories.find(category => category.label === event.category) ??\n (event.category != null\n ? {label: event.category, color: categoryFallback.color}\n : categoryFallback)\n );\n}\n\nexport function eventColorClassName(\n color: ScheduleEventColor | undefined,\n): string {\n return colorStyles[color ?? categoryFallback.color];\n}\n\nexport function formatDate(date: PlainDate): string {\n return plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);\n}\n\nexport function formatMonthTitle(date: PlainDate): string {\n return plainDateFormat(date, DATE_FORMAT_MONTH_YEAR);\n}\n\nexport function formatWeekTitle(start: PlainDate, end: PlainDate): string {\n if (start.year === end.year && start.month === end.month) {\n return formatMonthTitle(start);\n }\n\n const startMonth = plainDateFormat(start, {month: 'long'});\n const endMonth = plainDateFormat(end, {month: 'long'});\n return start.year === end.year\n ? `${startMonth} - ${endMonth} ${end.year}`\n : `${startMonth} ${start.year} - ${endMonth} ${end.year}`;\n}\n\nexport function formatListRangeTitle(start: PlainDate, end: PlainDate): string {\n return plainDateIsEqual(start, end)\n ? formatDate(start)\n : formatWeekTitle(start, end);\n}\n\nfunction formatTime(instant: number, timezoneID: string): string {\n return Temporal.Instant.fromEpochMilliseconds(instant)\n .toZonedDateTimeISO(timezoneID)\n .toLocaleString(undefined, {\n hour: 'numeric',\n minute: '2-digit',\n });\n}\n\nexport function formatTimezoneAbbreviation(\n date: PlainDate,\n timezoneID: string,\n): string {\n const formatter = new Intl.DateTimeFormat(undefined, {\n timeZone: timezoneID,\n timeZoneName: 'short',\n });\n const parts = formatter.formatToParts(\n date.toZonedDateTime(timezoneID).epochMilliseconds,\n );\n return parts.find(part => part.type === 'timeZoneName')?.value ?? timezoneID;\n}\n\nexport function formatHour(hour: number, _timezoneID: string): string {\n return Temporal.PlainTime.from({hour}).toLocaleString(undefined, {\n hour: 'numeric',\n });\n}\n\nexport function getEventTimeLabel(\n event: CalendarEvent,\n timezoneID: string,\n): string {\n if (isDayEvent(event)) {\n return 'all day';\n }\n\n return `${formatTime(event.start, timezoneID)} - ${formatTime(event.end, timezoneID)}`;\n}\n\nfunction getEventStartTimeLabel(\n event: CalendarEvent,\n timezoneID: string,\n): string | null {\n return isDayEvent(event) ? null : formatTime(event.start, timezoneID);\n}\n\nexport function getEventAccessibleLabel(\n event: CalendarEvent,\n categories: ReadonlyArray<ScheduleCategory>,\n timezoneID: string,\n): string {\n const category = getCategory(categories, event);\n return `${event.title}, ${category.label}, ${getEventTimeLabel(event, timezoneID)}`;\n}\n\nexport function getMinutesSinceStartOfDay(\n instant: number,\n timezoneID: string,\n): number {\n const zonedTime = Temporal.Instant.fromEpochMilliseconds(instant)\n .toZonedDateTimeISO(timezoneID)\n .toPlainTime();\n return zonedTime.hour * 60 + zonedTime.minute;\n}\n\nexport function isEventInPast(\n event: CalendarEvent,\n currentTime: number,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n return plainDateIsBefore(\n event.end,\n plainDateFromInstant(currentTime, timezoneID),\n );\n }\n\n return event.end <= currentTime;\n}\n\n/**\n * Renders a colored pill displaying an event's accessible label.\n */\nexport function CalendarEventPill({\n event,\n isPast = false,\n}: {\n event: CalendarEvent;\n isPast?: boolean;\n}): React.JSX.Element {\n const {categories, timezoneID} = useScheduleContext();\n const category = getCategory(categories, event);\n return (\n <span\n className={cx(\n styles.event,\n eventColorClassName(category.color),\n isPast && styles.eventPast,\n )}\n data-state={isPast ? 'past' : undefined}\n data-testid={`schedule-event-${event.id}`}>\n <span className={styles.eventTitle}>\n {isDayEvent(event)\n ? event.title\n : getEventAccessibleLabel(event, categories, timezoneID)}\n </span>\n </span>\n );\n}\n\nexport function CalendarMonthEventPill({\n event,\n isPast = false,\n}: {\n event: CalendarEvent;\n isPast?: boolean;\n}): React.JSX.Element {\n const {categories, timezoneID} = useScheduleContext();\n const category = getCategory(categories, event);\n const startTimeLabel = getEventStartTimeLabel(event, timezoneID);\n return (\n <span\n className={cx(\n styles.event,\n css({w: 'full'}),\n eventColorClassName(category.color),\n isPast && styles.eventPast,\n )}\n data-state={isPast ? 'past' : undefined}\n data-testid={`schedule-event-${event.id}`}>\n {startTimeLabel != null ? (\n <span className={styles.eventTime}>{startTimeLabel}</span>\n ) : null}\n <span className={styles.eventTitle}>{event.title}</span>\n </span>\n );\n}\n\n/**\n * Layout wrapper that renders the schedule header (with plugin slots) and body.\n */\nexport function ScheduleFrame({\n children,\n title,\n titleLabel,\n}: {\n /**\n * View content rendered below the header.\n */\n children: ReactNode;\n /**\n * Title displayed in the header center slot.\n */\n title: ReactNode;\n /**\n * Accessible label for the enclosing section.\n */\n titleLabel: string;\n}): React.JSX.Element {\n const {isLoading, plugins} = useScheduleContext();\n const initialHeader: ScheduleHeaderContent = {\n startContent: null,\n centerContent: (\n <span className={styles.headerTitleContent}>\n <Heading level={2}>{title}</Heading>\n {isLoading ? <Spinner aria-label=\"Loading events\" size=\"sm\" /> : null}\n </span>\n ),\n endContent: null,\n };\n const header = plugins.reduce(\n (content, plugin) =>\n plugin.renderHeader?.(\n content.startContent,\n content.centerContent,\n content.endContent,\n ) ?? content,\n initialHeader,\n );\n\n return (\n <section aria-label={titleLabel} className={styles.frame}>\n <div className={styles.header}>\n <div className={styles.headerSlotStart}>{header.startContent}</div>\n <div className={styles.headerSlotCenter}>{header.centerContent}</div>\n <div className={styles.headerSlotEnd}>{header.endContent}</div>\n </div>\n {children}\n </section>\n );\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport {useSyncExternalStore} from 'react';\nimport type {Instant} from './types';\n\nconst UPDATE_INTERVAL_MS = 60 * 1000;\nconst listeners = new Set<() => void>();\nlet interval: ReturnType<typeof setInterval> | null = null;\nlet currentTime = getCurrentTime();\n\nfunction getCurrentTime(): Instant {\n return Temporal.Now.instant().epochMilliseconds;\n}\n\nfunction getSnapshot(): Instant {\n return currentTime;\n}\n\nfunction getServerSnapshot(): Instant {\n return 0;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n currentTime = getCurrentTime();\n listener();\n\n interval ??= setInterval(() => {\n currentTime = getCurrentTime();\n listeners.forEach(activeListener => activeListener());\n }, UPDATE_INTERVAL_MS);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0 && interval != null) {\n clearInterval(interval);\n interval = null;\n }\n };\n}\n\nexport function useCurrentTime(): Instant {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {Temporal} from '@js-temporal/polyfill';\nimport type {CSSProperties} from 'react';\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsBefore,\n plainDateIsEqual,\n type PlainDate,\n} from '../../internal/plainDate';\nimport {Heading, Text} from '../Text';\nimport {useScheduleContext} from './context';\nimport {eventOccursOnDate, isDayEvent} from './dateMath';\nimport {\n CalendarEventPill,\n eventColorClassName,\n formatHour,\n formatTimezoneAbbreviation,\n getCategory,\n getEventAccessibleLabel,\n getEventTimeLabel,\n getMinutesSinceStartOfDay,\n isEventInPast,\n styles as sharedStyles,\n} from './shared';\nimport type {CalendarEvent, CalendarInstantEvent} from './types';\nimport {useCurrentTime} from './useCurrentTime';\n\ntype GridStyle = CSSProperties & {'--schedule-day-count': string};\ntype HourStyle = Pick<CSSProperties, 'height' | 'minHeight'>;\n\nconst styles = {\n grid: css({\n display: 'grid',\n gridTemplateColumns: '72px 1fr',\n overflow: 'auto',\n }),\n header: css({\n display: 'grid',\n gridTemplateColumns:\n 'repeat(var(--schedule-day-count), minmax(160px, 1fr))',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n corner: css({\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n dayHeader: css({\n p: '2',\n textAlign: 'center',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n }),\n lastColumn: css({\n borderInlineEndWidth: 0,\n }),\n dayHeaderContent: css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n }),\n dayHeaderDayNumber: css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minW: '30px',\n h: '30px',\n lineHeight: '30px',\n borderRadius: 'full',\n }),\n dayHeaderCurrent: css({\n bg: 'primary',\n color: 'fg.onPrimary',\n }),\n allDayLabel: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n py: '1',\n px: '2',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n allDayRow: css({\n display: 'grid',\n gridTemplateColumns:\n 'repeat(var(--schedule-day-count), minmax(160px, 1fr))',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n dayCell: css({\n minH: 0,\n p: '0.5',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n }),\n timeLabel: css({\n p: '2',\n color: 'fg.muted',\n textAlign: 'end',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n timeRow: css({\n display: 'grid',\n gridTemplateColumns:\n 'repeat(var(--schedule-day-count), minmax(160px, 1fr))',\n }),\n hourCell: css({\n position: 'relative',\n minH: '14',\n p: '1',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n lastRow: css({\n borderBlockEndWidth: 0,\n }),\n timedEvent: css({\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n minH: '9',\n minW: 0,\n overflow: 'hidden',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'var(--schedule-event-border)',\n borderRadius: 'sm',\n px: '1',\n py: '0.5',\n fontSize: 'xs',\n lineHeight: 'tight',\n bg: 'var(--schedule-event-bg)',\n color: 'var(--schedule-event-fg)',\n _hover: {\n bg: 'var(--schedule-event-bg-hover)',\n },\n }),\n timedEventTitle: css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontWeight: 'bold',\n }),\n timedEventTime: css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n flexShrink: 0,\n fontWeight: 'normal',\n }),\n events: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1',\n }),\n currentTimeLine: css({\n position: 'absolute',\n insetInline: '0',\n borderBlockStartWidth: '2px',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'surface.orange.accent',\n transform: 'translateY(2px)',\n zIndex: '20',\n pointerEvents: 'none',\n _before: {\n content: '\"\"',\n position: 'absolute',\n insetInlineStart: '-6px',\n top: '-6px',\n w: '2.5',\n h: '2.5',\n borderRadius: 'full',\n bg: 'surface.orange.accent',\n },\n }),\n rowContents: css({\n display: 'contents',\n }),\n} as const;\n\nfunction eventOverlapsHour(\n event: CalendarEvent,\n day: PlainDate,\n hour: number,\n timezoneID: string,\n): boolean {\n if (isDayEvent(event)) {\n return false;\n }\n if (!eventOccursOnDate(event, day, timezoneID)) {\n return false;\n }\n\n const hourStart = day\n .toPlainDateTime(Temporal.PlainTime.from({hour}))\n .toZonedDateTime(timezoneID).epochMilliseconds;\n const hourEnd =\n hour === 23\n ? day.add({days: 1}).toZonedDateTime(timezoneID).epochMilliseconds\n : day\n .toPlainDateTime(Temporal.PlainTime.from({hour: hour + 1}))\n .toZonedDateTime(timezoneID).epochMilliseconds;\n return event.start < hourEnd && event.end > hourStart;\n}\n\ninterface TimedEventLayout {\n event: CalendarInstantEvent;\n height: number;\n level: number;\n startHour: number;\n top: number;\n}\n\nfunction eventSpansPastDay(\n event: CalendarInstantEvent,\n day: PlainDate,\n timezoneID: string,\n): boolean {\n return !plainDateIsEqual(\n plainDateFromInstant(Math.max(event.end - 1, event.start), timezoneID),\n day,\n );\n}\n\nfunction getAvailableTimedEventLevel(\n levelEndMinutes: number[],\n visibleStart: number,\n): number {\n const level = levelEndMinutes.findIndex(\n endMinute => visibleStart >= endMinute,\n );\n return level >= 0 ? level : levelEndMinutes.length;\n}\n\nfunction getTimedEventLayouts({\n day,\n events,\n hourHeight,\n maxHour,\n minHour,\n timezoneID,\n}: {\n day: PlainDate;\n events: ReadonlyArray<CalendarInstantEvent>;\n hourHeight: number;\n maxHour: number;\n minHour: number;\n timezoneID: string;\n}): TimedEventLayout[] {\n const levelEndMinutes: number[] = [];\n const minMinute = minHour * 60;\n const maxMinute = maxHour * 60;\n\n return events\n .map(event => {\n const startDate = plainDateFromInstant(event.start, timezoneID);\n const rawStart = plainDateIsBefore(startDate, day)\n ? 0\n : getMinutesSinceStartOfDay(event.start, timezoneID);\n const rawEnd = eventSpansPastDay(event, day, timezoneID)\n ? 24 * 60\n : getMinutesSinceStartOfDay(event.end, timezoneID);\n if (rawEnd <= minMinute || rawStart >= maxMinute) {\n return null;\n }\n const visibleStart = Math.max(rawStart, minMinute);\n const visibleEnd = Math.min(\n maxMinute,\n Math.max(visibleStart + 15, rawEnd),\n );\n return {event, visibleEnd, visibleStart};\n })\n .filter(\n (\n layout,\n ): layout is {\n event: CalendarInstantEvent;\n visibleEnd: number;\n visibleStart: number;\n } => layout != null && layout.visibleEnd > layout.visibleStart,\n )\n .sort((a, b) => {\n if (a.visibleStart !== b.visibleStart) {\n return a.visibleStart - b.visibleStart;\n }\n return (\n a.visibleEnd - b.visibleEnd ||\n a.event.title.localeCompare(b.event.title)\n );\n })\n .map(({event, visibleEnd, visibleStart}) => {\n const level = getAvailableTimedEventLevel(levelEndMinutes, visibleStart);\n levelEndMinutes[level] = visibleEnd;\n const startHour = Math.floor(visibleStart / 60);\n return {\n event,\n height: ((visibleEnd - visibleStart) / 60) * hourHeight,\n level,\n startHour,\n top: ((visibleStart - startHour * 60) / 60) * hourHeight,\n };\n });\n}\n\nfunction getTimedEventStyle({\n height,\n level,\n top,\n}: TimedEventLayout): React.CSSProperties {\n return {\n height: `${Math.max(36, height - 5)}px`,\n insetInlineEnd: '2px',\n insetInlineStart: level === 0 ? '2px' : `calc(2px + ${level * 8}%)`,\n top: `${top + 2}px`,\n zIndex: level + 1,\n };\n}\n\nfunction getCellName({\n categories,\n date,\n events,\n hourLabel,\n timezoneID,\n}: {\n categories: ReturnType<typeof useScheduleContext>['categories'];\n date: PlainDate;\n events: CalendarEvent[];\n hourLabel: string;\n timezoneID: string;\n}): string {\n const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);\n const eventLabels = events.map(event =>\n getEventAccessibleLabel(event, categories, timezoneID),\n );\n return eventLabels.length > 0\n ? `${dateLabel} ${hourLabel}. ${eventLabels.join('. ')}`\n : `${dateLabel} ${hourLabel}`;\n}\n\n/**\n * Shared time grid layout used by day and week views with hourly rows.\n */\nexport function TimeGridView({\n days,\n hourHeight = 100,\n maxHour = 24,\n minHour = 0,\n}: {\n /**\n * Days to display as columns in the grid.\n */\n days: PlainDate[];\n /**\n * Pixel height used for each hourly row.\n * @default 100\n */\n hourHeight?: number;\n /**\n * Exclusive ending hour shown in the grid (1-24).\n * @default 24\n */\n maxHour?: number;\n /**\n * First hour shown in the grid (0-23).\n * @default 0\n */\n minHour?: number;\n}): React.JSX.Element {\n const {categories, events, highlightDate, timezoneID} = useScheduleContext();\n const normalizedMinHour = Math.max(0, Math.min(23, Math.floor(minHour)));\n const normalizedMaxHour = Math.max(\n normalizedMinHour + 1,\n Math.min(24, Math.floor(maxHour)),\n );\n const hours = Array.from(\n {length: normalizedMaxHour - normalizedMinHour},\n (_, index) => normalizedMinHour + index,\n );\n const currentTime = useCurrentTime();\n const highlightPlainDate = highlightDate.toPlainDate();\n const timezoneLabel = formatTimezoneAbbreviation(\n days[0] ?? highlightPlainDate,\n timezoneID,\n );\n const gridStyle: GridStyle = {\n '--schedule-day-count': String(days.length),\n };\n const normalizedHourHeight = Math.max(1, Math.floor(hourHeight));\n const hourStyle: HourStyle = {\n height: normalizedHourHeight,\n minHeight: normalizedHourHeight,\n };\n\n return (\n <div\n aria-label=\"Schedule time grid\"\n aria-readonly=\"true\"\n className={cx(sharedStyles.surface, styles.grid)}\n role=\"grid\"\n style={gridStyle}>\n <div className={styles.rowContents} role=\"row\">\n <div\n aria-colindex={1}\n aria-label=\"Time\"\n className={styles.corner}\n role=\"columnheader\"\n />\n <div className={styles.header}>\n {days.map((day, index) => (\n <div\n aria-colindex={index + 2}\n aria-current={\n plainDateIsEqual(day, highlightPlainDate) ? 'date' : undefined\n }\n aria-label={plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY)}\n className={cx(\n styles.dayHeader,\n index === days.length - 1 && styles.lastColumn,\n )}\n key={day.toString()}\n role=\"columnheader\">\n <Heading\n aria-hidden=\"true\"\n color=\"secondary\"\n level={4}\n textWrap=\"nowrap\">\n <span className={styles.dayHeaderContent}>\n {plainDateFormat(day, {weekday: 'short'})}\n <span\n className={cx(\n styles.dayHeaderDayNumber,\n plainDateIsEqual(day, highlightPlainDate) &&\n styles.dayHeaderCurrent,\n )}>\n {day.day}\n </span>\n </span>\n </Heading>\n </div>\n ))}\n </div>\n </div>\n <div className={styles.rowContents} role=\"row\">\n <div\n aria-colindex={1}\n aria-label={`${timezoneLabel} all day`}\n className={styles.allDayLabel}\n role=\"rowheader\">\n <Text color=\"secondary\" type=\"supporting\" weight=\"bold\">\n {timezoneLabel}\n </Text>\n </div>\n <div className={styles.allDayRow}>\n {days.map((day, index) => {\n const dayEvents = events.filter(\n event =>\n isDayEvent(event) && eventOccursOnDate(event, day, timezoneID),\n );\n return (\n <div\n aria-colindex={index + 2}\n aria-label={getCellName({\n categories,\n date: day,\n events: dayEvents,\n hourLabel: 'all day',\n timezoneID,\n })}\n className={cx(\n styles.dayCell,\n index === days.length - 1 && styles.lastColumn,\n )}\n key={`${day.toString()}-all-day`}\n role=\"gridcell\">\n <div className={styles.events}>\n {dayEvents.map(event => (\n <CalendarEventPill\n event={event}\n isPast={isEventInPast(event, currentTime, timezoneID)}\n key={event.id}\n />\n ))}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n {hours.map(hour => {\n const hourLabel = formatHour(hour, timezoneID);\n const isLastHour = hour === hours[hours.length - 1];\n return (\n <div className={styles.rowContents} key={hour} role=\"row\">\n <div\n aria-colindex={1}\n className={cx(styles.timeLabel, isLastHour && styles.lastRow)}\n role=\"rowheader\"\n style={hourStyle}>\n {hourLabel}\n </div>\n <div className={styles.timeRow}>\n {days.map((day, index) => {\n const hourEvents = events.filter(event =>\n eventOverlapsHour(event, day, hour, timezoneID),\n );\n const visibleTimedEventLayouts = getTimedEventLayouts({\n day,\n events: events.filter(\n (event): event is CalendarInstantEvent =>\n !isDayEvent(event) &&\n eventOccursOnDate(event, day, timezoneID),\n ),\n hourHeight: normalizedHourHeight,\n maxHour: normalizedMaxHour,\n minHour: normalizedMinHour,\n timezoneID,\n }).filter(layout => layout.startHour === hour);\n const currentTimeTop = getCurrentTimeTopForHour({\n currentTime,\n day,\n hour,\n maxHour: normalizedMaxHour,\n minHour: normalizedMinHour,\n timezoneID,\n });\n return (\n <div\n aria-colindex={index + 2}\n aria-label={getCellName({\n categories,\n date: day,\n events: hourEvents,\n hourLabel,\n timezoneID,\n })}\n className={cx(\n styles.hourCell,\n index === days.length - 1 && styles.lastColumn,\n isLastHour && styles.lastRow,\n )}\n key={`${day.toString()}-${hour}`}\n role=\"gridcell\"\n style={hourStyle}>\n {currentTimeTop != null ? (\n <div\n aria-hidden=\"true\"\n className={styles.currentTimeLine}\n data-testid=\"schedule-current-time-line\"\n style={{top: `${currentTimeTop}%`}}\n />\n ) : null}\n <div className={styles.events}>\n {visibleTimedEventLayouts.map(layout => {\n const {event} = layout;\n const category = getCategory(categories, event);\n return (\n <div\n className={cx(\n styles.timedEvent,\n eventColorClassName(category.color),\n isEventInPast(event, currentTime, timezoneID) &&\n sharedStyles.eventPast,\n )}\n data-state={\n isEventInPast(event, currentTime, timezoneID)\n ? 'past'\n : undefined\n }\n data-testid={`schedule-event-${event.id}`}\n key={event.id}\n style={getTimedEventStyle(layout)}>\n <span className={styles.timedEventTitle}>\n {event.title}\n </span>\n <span className={styles.timedEventTime}>\n {getEventTimeLabel(event, timezoneID)}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction getCurrentTimeTopForHour({\n currentTime,\n day,\n hour,\n maxHour,\n minHour,\n timezoneID,\n}: {\n currentTime: number;\n day: PlainDate;\n hour: number;\n maxHour: number;\n minHour: number;\n timezoneID: string;\n}): number | null {\n if (!plainDateIsEqual(day, plainDateFromInstant(currentTime, timezoneID))) {\n return null;\n }\n\n const currentMinute = getMinutesSinceStartOfDay(currentTime, timezoneID);\n const minMinute = minHour * 60;\n const maxMinute = maxHour * 60;\n if (currentMinute < minMinute || currentMinute > maxMinute) {\n return null;\n }\n\n if (currentMinute === maxMinute) {\n return hour === maxHour - 1 ? 100 : null;\n }\n\n if (Math.floor(currentMinute / 60) !== hour) {\n return null;\n }\n\n return ((currentMinute % 60) / 60) * 100;\n}\n","import {\n plainDateFromInstant,\n plainDateToInstant,\n type PlainDate,\n} from '../../internal/plainDate';\nimport type {Instant, ScheduleDate, ScheduleRange} from './types';\n\nexport interface ZonedDateTime {\n addDays: (days: number) => ZonedDateTime;\n instant: Instant;\n startOfDay: () => ZonedDateTime;\n timezoneID: string;\n toPlainDate: () => PlainDate;\n}\n\nexport type ZonedDateTimeRange = [ZonedDateTime, ZonedDateTime];\n\nexport function createZonedDateTime(\n date: ScheduleDate,\n timezoneID: string,\n): ZonedDateTime {\n return zonedDateTimeFromInstant(date, timezoneID);\n}\n\nexport function zonedDateTimeFromInstant(\n instant: Instant,\n timezoneID: string,\n): ZonedDateTime {\n return {\n addDays: days => {\n const date = plainDateFromInstant(instant, timezoneID).add({days});\n return zonedDateTimeFromInstant(\n plainDateToInstant(date, timezoneID),\n timezoneID,\n );\n },\n instant,\n startOfDay: () => {\n const date = plainDateFromInstant(instant, timezoneID);\n return zonedDateTimeFromInstant(\n plainDateToInstant(date, timezoneID),\n timezoneID,\n );\n },\n timezoneID,\n toPlainDate: () => plainDateFromInstant(instant, timezoneID),\n };\n}\n\nexport function scheduleRangeToZonedDateTimeRange(\n range: ScheduleRange,\n timezoneID: string,\n): ZonedDateTimeRange {\n return [\n zonedDateTimeFromInstant(range.start, timezoneID),\n zonedDateTimeFromInstant(range.end, timezoneID),\n ];\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {TimeGridView} from './TimeGridView';\nimport {useScheduleContext} from './context';\nimport {getScheduleRangeFromDates} from './dateMath';\nimport {ScheduleFrame, formatDate, formatMonthTitle} from './shared';\nimport type {\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n} from './types';\nimport {scheduleRangeToZonedDateTimeRange} from './zonedDateTime';\n\nexport interface ScheduleDayViewOptions {\n /**\n * Pixel height used for each hourly row.\n * @default 100\n */\n hourHeight?: number;\n /**\n * Exclusive ending hour shown in the day grid (1-24).\n * @default 24\n */\n maxHour?: number;\n /**\n * First hour shown in the day grid (0-23).\n * @default 0\n */\n minHour?: number;\n}\n\n/**\n * Internal view component that renders a single-day time grid.\n */\nfunction ScheduleDayView({\n options,\n}: ScheduleViewComponentProps<ScheduleDayViewOptions>): React.JSX.Element {\n const {viewDate} = useScheduleContext();\n const day = viewDate.toPlainDate();\n return (\n <ScheduleFrame title={formatMonthTitle(day)} titleLabel={formatDate(day)}>\n <TimeGridView\n days={[day]}\n hourHeight={options.hourHeight}\n maxHour={options.maxHour}\n minHour={options.minHour}\n />\n </ScheduleFrame>\n );\n}\n\n/**\n * Creates a single-day schedule view configuration.\n */\nexport function createScheduleDayView({\n hourHeight = 100,\n maxHour = 24,\n minHour = 0,\n}: ScheduleDayViewOptions = {}): ScheduleView<ScheduleDayViewOptions> {\n return {\n component: ScheduleDayView,\n getDateRange: (date: ZonedDateTime) =>\n scheduleRangeToZonedDateTimeRange(\n getScheduleRangeFromDates({\n endDate: date.toPlainDate().add({days: 1}),\n startDate: date.toPlainDate(),\n timezoneID: date.timezoneID,\n }),\n date.timezoneID,\n ),\n getNextDateRange: (date: ZonedDateTime) => ({\n label: 'Next day',\n range: [date.startOfDay().addDays(1), date.startOfDay().addDays(2)],\n }),\n getPreviousDateRange: (date: ZonedDateTime) => ({\n label: 'Previous day',\n range: [date.startOfDay().addDays(-1), date.startOfDay()],\n }),\n options: {hourHeight, maxHour, minHour},\n };\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsEqual,\n} from '../../internal/plainDate';\nimport {Text} from '../Text';\nimport {Tooltip} from '../Tooltip';\nimport {useScheduleContext} from './context';\nimport {enumerateDates, eventOccursOnDate, isDayEvent} from './dateMath';\nimport {\n eventColorClassName,\n getCategory,\n getEventTimeLabel,\n isEventInPast,\n formatListRangeTitle,\n ScheduleFrame,\n styles as sharedStyles,\n} from './shared';\nimport type {\n CalendarEvent,\n Instant,\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n} from './types';\nimport {useCurrentTime} from './useCurrentTime';\n\nexport interface ScheduleListViewOptions {\n /**\n * Number of days shown in the list.\n * @default 7\n */\n days?: number;\n}\n\nconst styles = {\n list: css({\n display: 'flex',\n flexDirection: 'column',\n }),\n day: css({\n display: 'grid',\n gridTemplateColumns: '112px minmax(0, 1fr)',\n alignItems: 'start',\n columnGap: '3',\n p: '3',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n dayLast: css({\n borderBlockEndWidth: 0,\n }),\n dayHeading: css({\n m: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: '2',\n color: 'fg.muted',\n fontFamily: 'body',\n fontSize: 'lg',\n fontWeight: 'semibold',\n lineHeight: 'tight',\n whiteSpace: 'nowrap',\n }),\n dayWeekday: css({\n display: 'inline-block',\n fontSize: 'lg',\n }),\n dayNumber: css({\n display: 'inline-flex',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n w: '30px',\n h: '30px',\n borderRadius: 'full',\n fontWeight: 'bold',\n }),\n dayNumberCurrent: css({\n bg: 'primary',\n color: 'fg.onPrimary',\n }),\n events: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '2',\n }),\n eventRow: css({\n display: 'grid',\n gridTemplateColumns: '160px minmax(0, 1fr)',\n alignItems: 'center',\n gap: '3',\n }),\n eventPast: css({\n opacity: 0.64,\n }),\n eventContent: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minW: 0,\n }),\n eventTime: css({\n whiteSpace: 'nowrap',\n }),\n nowRow: css({\n h: '0.5',\n bg: 'fg.danger',\n borderRadius: 'full',\n }),\n} as const;\n\n/**\n * Renders a single event row in the list view.\n */\nfunction ListEvent({\n event,\n isPast,\n}: {\n event: CalendarEvent;\n isPast: boolean;\n}): React.JSX.Element {\n const {categories, timezoneID} = useScheduleContext();\n const category = getCategory(categories, event);\n return (\n <div\n className={cx(styles.eventRow, isPast && styles.eventPast)}\n data-state={isPast ? 'past' : undefined}>\n <Text className={styles.eventTime} color=\"secondary\" type=\"supporting\">\n {isDayEvent(event) ? 'All day' : getEventTimeLabel(event, timezoneID)}\n </Text>\n <div className={styles.eventContent}>\n <Tooltip content={category.label} hasHoverIndication={false}>\n <span\n aria-label={category.label}\n className={cx(\n sharedStyles.eventDot,\n eventColorClassName(category.color),\n )}\n role=\"img\"\n />\n </Tooltip>\n <Text>{event.title}</Text>\n </div>\n </div>\n );\n}\n\n/**\n * Internal view component that renders events as a chronological day-by-day list.\n */\nfunction ScheduleListView(\n _props: ScheduleViewComponentProps<ScheduleListViewOptions>,\n): React.JSX.Element {\n const {events, highlightDate, isLoading, range, timezoneID} =\n useScheduleContext();\n const days = enumerateDates(range.startDate, range.endDate);\n const currentTime = useCurrentTime();\n const currentPlainDate = plainDateFromInstant(currentTime, timezoneID);\n const highlightPlainDate = highlightDate.toPlainDate();\n const endDate = range.endDate.add({days: -1});\n const title = formatListRangeTitle(range.startDate, endDate);\n const visibleDays = days\n .map(day => {\n const dayEvents = events.filter(event =>\n eventOccursOnDate(event, day, timezoneID),\n );\n const isCurrentDay = plainDateIsEqual(day, currentPlainDate);\n const isHighlightedDay = plainDateIsEqual(day, highlightPlainDate);\n const isBaseDay = plainDateIsEqual(day, range.startDate);\n return {\n day,\n dayEvents,\n isCurrentDay,\n isHighlightedDay,\n isVisible: dayEvents.length > 0 || isCurrentDay || isBaseDay,\n };\n })\n .filter(dayRecord => dayRecord.isVisible);\n\n return (\n <ScheduleFrame title={title} titleLabel={title}>\n <div className={cx(sharedStyles.surface, styles.list)}>\n {visibleDays.map(\n ({day, dayEvents, isCurrentDay, isHighlightedDay}, index) => {\n const fullDate = plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY);\n return (\n <section\n className={cx(\n styles.day,\n index === visibleDays.length - 1 && styles.dayLast,\n )}\n key={day.toString()}>\n <h4\n aria-current={isHighlightedDay ? 'date' : undefined}\n aria-label={fullDate}\n className={styles.dayHeading}>\n <span\n className={cx(\n styles.dayNumber,\n isHighlightedDay && styles.dayNumberCurrent,\n )}>\n {day.day}\n </span>\n <span className={styles.dayWeekday}>\n {plainDateFormat(day, {weekday: 'short'})}\n </span>\n </h4>\n <div className={styles.events}>\n {renderListRows({\n currentTime,\n events: dayEvents,\n isShowingCurrentTime: isCurrentDay && !isLoading,\n timezoneID,\n })}\n </div>\n </section>\n );\n },\n )}\n </div>\n </ScheduleFrame>\n );\n}\n\nfunction renderListRows({\n currentTime,\n events,\n isShowingCurrentTime,\n timezoneID,\n}: {\n currentTime: Instant;\n events: ReadonlyArray<CalendarEvent>;\n isShowingCurrentTime: boolean;\n timezoneID: string;\n}): React.JSX.Element[] {\n const rows = events.map(event => (\n <ListEvent\n event={event}\n isPast={isEventInPast(event, currentTime, timezoneID)}\n key={event.id}\n />\n ));\n\n if (!isShowingCurrentTime) {\n return rows;\n }\n\n const marker = (\n <div\n aria-hidden=\"true\"\n className={styles.nowRow}\n data-testid=\"schedule-list-current-time\"\n key=\"current-time\"\n />\n );\n const insertIndex = events.findIndex(\n event => !isDayEvent(event) && event.start > currentTime,\n );\n\n if (insertIndex < 0) {\n return [...rows, marker];\n }\n\n return [...rows.slice(0, insertIndex), marker, ...rows.slice(insertIndex)];\n}\n\n/**\n * Creates a list schedule view configuration.\n */\nexport function createScheduleListView({\n days = 7,\n}: ScheduleListViewOptions = {}): ScheduleView<ScheduleListViewOptions> {\n return {\n component: ScheduleListView,\n getDateRange: (date: ZonedDateTime) => [\n date.startOfDay(),\n date.startOfDay().addDays(days),\n ],\n getNextDateRange: date => ({\n label: 'Next range',\n range: [\n date.startOfDay().addDays(days),\n date.startOfDay().addDays(days * 2),\n ],\n }),\n getPreviousDateRange: date => ({\n label: 'Previous range',\n range: [date.startOfDay().addDays(-days), date.startOfDay()],\n }),\n options: {days},\n };\n}\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {css, cx} from 'styled-system/css';\nimport {\n DATE_FORMAT_WITH_WEEKDAY,\n plainDateFormat,\n plainDateFromInstant,\n plainDateIsAfter,\n plainDateIsBefore,\n plainDateIsEqual,\n plainDateSetStartOfWeek,\n type PlainDate,\n} from '../../internal/plainDate';\nimport {Heading, Text} from '../Text';\nimport {useScheduleContext} from './context';\nimport {eventOccursOnDate, isDayEvent} from './dateMath';\nimport {\n CalendarMonthEventPill,\n ScheduleFrame,\n formatMonthTitle,\n getEventAccessibleLabel,\n isEventInPast,\n styles as sharedStyles,\n} from './shared';\nimport type {\n CalendarEvent,\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n ZonedDateTimeRange,\n} from './types';\nimport {useCurrentTime} from './useCurrentTime';\n\nexport interface ScheduleMonthlyViewOptions {\n /**\n * Number of weeks to display in the monthly grid.\n * @default 6\n */\n weekCount?: number;\n}\n\nconst styles = {\n grid: css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n }),\n weekday: css({\n p: '2',\n textAlign: 'center',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n cell: css({\n minH: '24',\n p: '0.5',\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n }),\n lastColumn: css({\n borderInlineEndWidth: 0,\n }),\n lastRow: css({\n borderBlockEndWidth: 0,\n }),\n otherMonth: css({\n bg: 'bg.subtle',\n color: 'fg.muted',\n }),\n dayNumber: css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: '6',\n h: '6',\n m: '0.5',\n borderRadius: 'full',\n }),\n today: css({\n bg: 'primary',\n color: 'fg.onPrimary',\n }),\n events: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1',\n m: 0,\n p: 0,\n listStyleType: 'none',\n }),\n eventItem: css({\n display: 'flex',\n }),\n monthSurface: css({\n position: 'relative',\n gridColumn: '1 / -1',\n }),\n monthCellGrid: css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n gridAutoRows: '128px',\n }),\n monthEventOverlay: css({\n position: 'absolute',\n inset: 0,\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n gridAutoRows: '128px',\n pointerEvents: 'none',\n }),\n monthEventSpan: css({\n alignSelf: 'start',\n minW: 0,\n mx: '0.5',\n pointerEvents: 'auto',\n zIndex: 1,\n }),\n} as const;\n\nconst weekdays = [\n {label: 'Sunday', shortLabel: 'Sun'},\n {label: 'Monday', shortLabel: 'Mon'},\n {label: 'Tuesday', shortLabel: 'Tue'},\n {label: 'Wednesday', shortLabel: 'Wed'},\n {label: 'Thursday', shortLabel: 'Thu'},\n {label: 'Friday', shortLabel: 'Fri'},\n {label: 'Saturday', shortLabel: 'Sat'},\n];\n\nfunction getMonthDays(date: PlainDate, weekCount: number): PlainDate[] {\n const firstOfMonth = date.with({day: 1});\n const firstVisibleDay = plainDateSetStartOfWeek(firstOfMonth);\n return Array.from({length: weekCount * 7}, (_, index) =>\n firstVisibleDay.add({days: index}),\n );\n}\n\nfunction getVisibleMonthRange(\n date: ZonedDateTime,\n month: PlainDate,\n weekCount: number,\n): ZonedDateTimeRange {\n const firstVisible = plainDateSetStartOfWeek(month.with({day: 1}));\n const end = firstVisible.add({days: weekCount * 7});\n const currentDate = date.toPlainDate();\n return [\n date.startOfDay().addDays(currentDate.until(firstVisible).days),\n date.startOfDay().addDays(currentDate.until(end).days),\n ];\n}\n\ninterface MonthEventSegment {\n columnEnd: number;\n columnStart: number;\n event: CalendarEvent;\n level: number;\n week: number;\n}\n\nconst MAX_MONTH_EVENT_LEVELS = 4;\n\nfunction getEventDateSpan(\n event: CalendarEvent,\n timezoneID: string,\n): [PlainDate, PlainDate] {\n if (isDayEvent(event)) {\n return [event.start, event.end];\n }\n\n return [\n plainDateFromInstant(event.start, timezoneID),\n plainDateFromInstant(Math.max(event.end - 1, event.start), timezoneID),\n ];\n}\n\nfunction getAvailableLevel(levels: number[], columnStart: number): number {\n const level = levels.findIndex(columnEnd => columnStart > columnEnd);\n return level >= 0 ? level : levels.length;\n}\n\nfunction getMonthEventSegments(\n events: ReadonlyArray<CalendarEvent>,\n days: ReadonlyArray<PlainDate>,\n timezoneID: string,\n): MonthEventSegment[] {\n const segments: MonthEventSegment[] = [];\n const levelsByWeek: number[][] = [];\n const firstDay = days[0];\n const lastDay = days[days.length - 1];\n\n const monthEvents = events\n .map(event => {\n const [eventStart, eventEnd] = getEventDateSpan(event, timezoneID);\n const startIndex = days.findIndex(\n day => !plainDateIsBefore(day, eventStart),\n );\n const endIndexFromRight = [...days]\n .reverse()\n .findIndex(day => !plainDateIsAfter(day, eventEnd));\n if (startIndex < 0 || endIndexFromRight < 0) {\n return null;\n }\n const endIndex = days.length - 1 - endIndexFromRight;\n return {\n endIndex,\n event,\n isPriority: isDayEvent(event) || endIndex > startIndex,\n startIndex,\n };\n })\n .filter(\n (\n record,\n ): record is {\n endIndex: number;\n event: CalendarEvent;\n isPriority: boolean;\n startIndex: number;\n } => record != null,\n )\n .sort((a, b) => {\n if (a.startIndex !== b.startIndex) {\n return a.startIndex - b.startIndex;\n }\n if (a.isPriority !== b.isPriority) {\n return a.isPriority ? -1 : 1;\n }\n const aDuration = a.endIndex - a.startIndex;\n const bDuration = b.endIndex - b.startIndex;\n if (aDuration !== bDuration) {\n return bDuration - aDuration;\n }\n return a.event.title.localeCompare(b.event.title);\n });\n\n monthEvents.forEach(({endIndex, event, startIndex}) => {\n const [eventStart, eventEnd] = getEventDateSpan(event, timezoneID);\n if (\n plainDateIsBefore(eventEnd, firstDay) ||\n plainDateIsAfter(eventStart, lastDay)\n ) {\n return;\n }\n\n for (\n let week = Math.floor(startIndex / 7);\n week <= Math.floor(endIndex / 7);\n week += 1\n ) {\n const columnStart =\n week === Math.floor(startIndex / 7) ? startIndex % 7 : 0;\n const columnEnd = week === Math.floor(endIndex / 7) ? endIndex % 7 : 6;\n const weekLevels = (levelsByWeek[week] ??= []);\n const level = getAvailableLevel(weekLevels, columnStart);\n if (level < MAX_MONTH_EVENT_LEVELS) {\n weekLevels[level] = columnEnd;\n segments.push({columnEnd, columnStart, event, level, week});\n }\n }\n });\n\n return segments;\n}\n\nfunction getMonthEventSegmentStyle({\n columnEnd,\n columnStart,\n level,\n week,\n}: MonthEventSegment): React.CSSProperties {\n return {\n gridColumn: `${columnStart + 1} / ${columnEnd + 2}`,\n gridRow: `${week + 1}`,\n marginBlockStart: `${30 + level * 29}px`,\n };\n}\n\nfunction getGridCellName({\n date,\n events,\n timezoneID,\n}: {\n date: PlainDate;\n events: CalendarEvent[];\n timezoneID: string;\n}): string {\n const eventLabels = events.map(event =>\n getEventAccessibleLabel(event, [], timezoneID),\n );\n const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);\n return eventLabels.length > 0\n ? `${dateLabel}. ${eventLabels.join('. ')}`\n : dateLabel;\n}\n\n/**\n * Internal view component that renders a month grid with day cells and events.\n */\nfunction ScheduleMonthlyView({\n options,\n}: ScheduleViewComponentProps<ScheduleMonthlyViewOptions>): React.JSX.Element {\n const {events, highlightDate, timezoneID, viewDate} = useScheduleContext();\n const currentTime = useCurrentTime();\n const month = viewDate.toPlainDate();\n const title = formatMonthTitle(month);\n const days = getMonthDays(month, options.weekCount ?? 6);\n const eventSegments = getMonthEventSegments(events, days, timezoneID);\n const today = highlightDate.toPlainDate();\n\n return (\n <ScheduleFrame title={title} titleLabel={title}>\n <div\n aria-label={title}\n className={cx(sharedStyles.surface, styles.grid)}\n role=\"grid\">\n {weekdays.map((weekday, index) => (\n <div\n aria-colindex={index + 1}\n aria-label={weekday.label}\n className={styles.weekday}\n key={weekday.label}\n role=\"columnheader\">\n <Heading color=\"secondary\" level={4}>\n {weekday.shortLabel}\n </Heading>\n </div>\n ))}\n <div className={styles.monthSurface}>\n <div className={styles.monthCellGrid}>\n {days.map((day, index) => {\n const dayEvents = events.filter(event =>\n eventOccursOnDate(event, day, timezoneID),\n );\n const isCurrentMonth =\n day.month === month.month && day.year === month.year;\n const isLastColumn = index % 7 === 6;\n const isLastRow = index >= days.length - 7;\n return (\n <div\n aria-current={\n plainDateIsEqual(day, today) ? 'date' : undefined\n }\n aria-label={getGridCellName({\n date: day,\n events: dayEvents,\n timezoneID,\n })}\n className={cx(\n styles.cell,\n isLastColumn ? styles.lastColumn : undefined,\n isLastRow ? styles.lastRow : undefined,\n !isCurrentMonth ? styles.otherMonth : undefined,\n )}\n key={day.toString()}\n role=\"gridcell\">\n <span\n className={cx(\n styles.dayNumber,\n plainDateIsEqual(day, today) ? styles.today : undefined,\n )}>\n <Text\n as=\"span\"\n color=\"inherit\"\n hasTabularNumbers\n type=\"supporting\"\n weight=\"medium\">\n {day.day}\n </Text>\n </span>\n </div>\n );\n })}\n </div>\n <div aria-hidden=\"true\" className={styles.monthEventOverlay}>\n {eventSegments.map(segment => (\n <div\n className={styles.monthEventSpan}\n data-testid={`schedule-event-span-${segment.event.id}`}\n key={`${segment.event.id}:${segment.week}:${segment.columnStart}`}\n style={getMonthEventSegmentStyle(segment)}>\n <CalendarMonthEventPill\n event={segment.event}\n isPast={isEventInPast(segment.event, currentTime, timezoneID)}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n </ScheduleFrame>\n );\n}\n\n/**\n * Creates a monthly schedule view configuration.\n */\nexport function createScheduleMonthlyView({\n weekCount = 6,\n}: ScheduleMonthlyViewOptions = {}): ScheduleView<ScheduleMonthlyViewOptions> {\n return {\n component: ScheduleMonthlyView,\n getDateRange: date => {\n const month = date.toPlainDate();\n return getVisibleMonthRange(date, month, weekCount);\n },\n getNextDateRange: date => {\n const nextMonth = date.toPlainDate().with({day: 1}).add({months: 1});\n return {\n label: 'Next month',\n range: getVisibleMonthRange(date, nextMonth, weekCount),\n };\n },\n getPreviousDateRange: date => {\n const previousMonth = date\n .toPlainDate()\n .with({day: 1})\n .subtract({months: 1});\n return {\n label: 'Previous month',\n range: getVisibleMonthRange(date, previousMonth, weekCount),\n };\n },\n options: {weekCount},\n };\n}\n","import {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {useMemo, type ReactNode} from 'react';\nimport {Button} from '../../Button';\nimport {ButtonGroup} from '../../ButtonGroup';\nimport {useScheduleContext} from '../context';\nimport type {\n ScheduleHeaderContent,\n SchedulePlugin,\n SchedulePluginPosition,\n} from '../types';\n\nexport interface SchedulePaginationPluginOptions {\n position?: SchedulePluginPosition;\n}\n\nfunction SchedulePaginationControls(): React.JSX.Element {\n const {\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n previousDateLabel,\n } = useScheduleContext();\n return (\n <ButtonGroup label=\"Schedule pagination\" size=\"sm\">\n <Button\n icon={ChevronLeft}\n isIconOnly\n label={previousDateLabel}\n onClick={onPreviousDate}\n />\n <Button label=\"Today\" onClick={onToday} size=\"sm\" />\n <Button\n icon={ChevronRight}\n isIconOnly\n label={nextDateLabel}\n onClick={onNextDate}\n />\n </ButtonGroup>\n );\n}\n\nfunction createSchedulePaginationPlugin({\n position = 'start',\n}: SchedulePaginationPluginOptions = {}): SchedulePlugin {\n return {\n renderHeader(\n startContent: ReactNode,\n centerContent: ReactNode,\n endContent: ReactNode,\n ): ScheduleHeaderContent {\n const controls = <SchedulePaginationControls />;\n return position === 'start'\n ? {\n centerContent,\n endContent,\n startContent: (\n <>\n {controls}\n {startContent}\n </>\n ),\n }\n : {\n centerContent,\n endContent: (\n <>\n {endContent}\n {controls}\n </>\n ),\n startContent,\n };\n },\n };\n}\n\nexport const defaultSchedulePaginationPlugin = createSchedulePaginationPlugin();\n\nexport function useSchedulePaginationPlugin({\n position = 'start',\n}: SchedulePaginationPluginOptions = {}): SchedulePlugin {\n return useMemo(() => createSchedulePaginationPlugin({position}), [position]);\n}\n","import {Check} from 'lucide-react';\nimport {useMemo, type ReactNode} from 'react';\nimport {DropdownMenu, DropdownMenuItem} from '../../DropdownMenu';\nimport {Icon} from '../../Icon';\nimport {useScheduleContext} from '../context';\nimport type {\n ScheduleHeaderContent,\n SchedulePlugin,\n SchedulePluginPosition,\n ScheduleView,\n ScheduleViewBase,\n} from '../types';\n\nexport interface ScheduleViewSelectorOption<\n View extends ScheduleViewBase = ScheduleView,\n> {\n label: string;\n view: View;\n}\n\nexport interface ScheduleViewSelectorPluginOptions<\n View extends ScheduleViewBase = ScheduleView,\n> {\n onChangeView?: (view: View) => void;\n position?: SchedulePluginPosition;\n}\n\nfunction ScheduleViewSelectorControl<View extends ScheduleViewBase>({\n onChangeView,\n options,\n}: {\n onChangeView?: (view: View) => void;\n options: ReadonlyArray<ScheduleViewSelectorOption<View>>;\n}): React.JSX.Element {\n const {view} = useScheduleContext();\n const currentOption = options.find(option => option.view === view);\n\n return (\n <DropdownMenu\n button={{\n isDisabled: onChangeView == null,\n label: currentOption?.label ?? 'View',\n size: 'sm',\n }}\n menuWidth={160}>\n {options.map(option => (\n <DropdownMenuItem\n endContent={\n option.view === view ? (\n <Icon\n color=\"primary\"\n data-testid=\"schedule-view-selector-selected-icon\"\n icon={Check}\n size=\"sm\"\n />\n ) : null\n }\n key={option.label}\n label={option.label}\n onClick={() => onChangeView?.(option.view)}\n />\n ))}\n </DropdownMenu>\n );\n}\n\nfunction createScheduleViewSelectorPlugin<View extends ScheduleViewBase>(\n options: ReadonlyArray<ScheduleViewSelectorOption<View>>,\n {\n onChangeView,\n position = 'end',\n }: ScheduleViewSelectorPluginOptions<View> = {},\n): SchedulePlugin {\n return {\n renderHeader(\n startContent: ReactNode,\n centerContent: ReactNode,\n endContent: ReactNode,\n ): ScheduleHeaderContent {\n const selector = (\n <ScheduleViewSelectorControl\n onChangeView={onChangeView}\n options={options}\n />\n );\n return position === 'start'\n ? {\n centerContent,\n endContent,\n startContent: (\n <>\n {startContent}\n {selector}\n </>\n ),\n }\n : {\n centerContent,\n endContent: (\n <>\n {endContent}\n {selector}\n </>\n ),\n startContent,\n };\n },\n };\n}\n\nexport function useScheduleViewSelectorPlugin<View extends ScheduleViewBase>(\n options: ReadonlyArray<ScheduleViewSelectorOption<View>>,\n pluginOptions: ScheduleViewSelectorPluginOptions<View> = {},\n): SchedulePlugin {\n const {onChangeView, position = 'end'} = pluginOptions;\n return useMemo(\n () => createScheduleViewSelectorPlugin(options, {onChangeView, position}),\n [onChangeView, options, position],\n );\n}\n","import type {SchedulePlugin} from '../types';\nimport {defaultSchedulePaginationPlugin} from './PaginationPlugin';\n\nexport {useSchedulePaginationPlugin} from './PaginationPlugin';\nexport {useScheduleViewSelectorPlugin} from './ViewSelectorPlugin';\n\nexport const defaultSchedulePlugins: ReadonlyArray<SchedulePlugin> = [\n defaultSchedulePaginationPlugin,\n];\n","import {\n Suspense,\n useCallback,\n useMemo,\n useState,\n type CSSProperties,\n type Ref,\n} from 'react';\nimport {cx} from '../../internal/cx';\nimport {plainDateFromInstant} from '../../internal/plainDate';\nimport {getBrowserTimezoneID, nowEpochMilliseconds} from '../../internal/time';\nimport {ScheduleContext} from './context';\nimport {eventOverlapsRange, sortEvents} from './dateMath';\nimport {defaultSchedulePlugins} from './plugins';\nimport {styles} from './shared';\nimport type {\n CalendarEvent,\n Instant,\n ScheduleCategory,\n ScheduleEventSource,\n SchedulePlugin,\n ScheduleRange,\n ScheduleView,\n ScheduleViewOptions,\n ZonedDateTime,\n ZonedDateTimeRange,\n} from './types';\nimport {createZonedDateTime} from './zonedDateTime';\n\nconst EMPTY_CATEGORIES: ReadonlyArray<ScheduleCategory> = [];\n\nexport interface ScheduleProps<\n Options extends ScheduleViewOptions = ScheduleViewOptions,\n> {\n /**\n * Category definitions used to style events by their `category` value.\n */\n categories?: ReadonlyArray<ScheduleCategory>;\n /**\n * Additional CSS class names applied to the schedule root.\n */\n className?: string;\n /**\n * Test ID applied to the schedule root.\n */\n 'data-testid'?: string;\n /**\n * Static events or an async event loader.\n */\n events: ScheduleEventSource;\n /**\n * Instant highlighted as the current date. Defaults to mount time.\n */\n highlightDate?: Instant;\n /**\n * Called by navigation plugins when the visible date changes.\n */\n onViewDateChange?: (date: Instant) => void;\n /**\n * Header/rendering plugins. Defaults to pagination controls.\n */\n plugins?: ReadonlyArray<SchedulePlugin>;\n /**\n * Ref forwarded to the schedule root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the schedule root.\n */\n style?: CSSProperties;\n /**\n * IANA timezone ID used for date math and rendering.\n */\n timezoneID?: string;\n /**\n * View object returned by a `createSchedule*View` factory.\n */\n view: ScheduleView<Options>;\n /**\n * Instant used to choose the rendered range.\n */\n viewDate: Instant;\n}\n\ninterface EventRecord {\n error: unknown;\n promise: Promise<void>;\n status: 'fulfilled' | 'pending' | 'rejected';\n value: ReadonlyArray<CalendarEvent>;\n}\n\nfunction readAsyncEvents(\n loader: Exclude<ScheduleEventSource, ReadonlyArray<CalendarEvent>>,\n start: Instant,\n end: Instant,\n cache: Map<string, EventRecord>,\n): ReadonlyArray<CalendarEvent> {\n const key = `${start}:${end}`;\n let record = cache.get(key);\n if (record == null) {\n record = {\n error: null,\n promise: Promise.resolve()\n .then(async () => loader(start, end))\n .then(\n value => {\n if (record != null) {\n record.status = 'fulfilled';\n record.value = value;\n }\n },\n error => {\n if (record != null) {\n record.status = 'rejected';\n record.error = error;\n }\n },\n ),\n status: 'pending',\n value: [],\n };\n cache.set(key, record);\n }\n\n if (record.status === 'pending') {\n // Suspense uses thrown promises to pause rendering until async events resolve.\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw record.promise;\n }\n\n if (record.status === 'rejected') {\n throw record.error instanceof Error\n ? record.error\n : new Error(String(record.error));\n }\n\n return record.value;\n}\n\nfunction resolveEvents(\n eventSource: ScheduleEventSource,\n range: ScheduleRange,\n timezoneID: string,\n eventCache: Map<string, EventRecord>,\n): ReadonlyArray<CalendarEvent> {\n const events =\n typeof eventSource === 'function'\n ? readAsyncEvents(eventSource, range.start, range.end, eventCache)\n : eventSource;\n return sortEvents(\n events.filter(event => eventOverlapsRange(event, range, timezoneID)),\n timezoneID,\n );\n}\n\nfunction getRange<Options extends ScheduleViewOptions>(\n view: ScheduleView<Options>,\n date: ZonedDateTime,\n): ScheduleRange {\n const [start, end] = view.getDateRange(date);\n return {\n end: end.instant,\n endDate: plainDateFromInstant(end.instant, end.timezoneID),\n start: start.instant,\n startDate: plainDateFromInstant(start.instant, start.timezoneID),\n };\n}\n\nfunction ScheduleViewContent<Options extends ScheduleViewOptions>({\n categories,\n eventCache,\n eventSource,\n highlightDate,\n isLoading,\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n plugins,\n previousDateLabel,\n view,\n viewDate,\n}: {\n categories: ReadonlyArray<ScheduleCategory>;\n eventCache: Map<string, EventRecord>;\n eventSource: ScheduleEventSource;\n highlightDate: ZonedDateTime;\n isLoading: boolean;\n nextDateLabel: string;\n onNextDate: () => void;\n onPreviousDate: () => void;\n onToday: () => void;\n plugins: ReadonlyArray<SchedulePlugin>;\n previousDateLabel: string;\n view: ScheduleView<Options>;\n viewDate: ZonedDateTime;\n}): React.JSX.Element {\n const Component = view.component;\n const range = getRange(view, viewDate);\n const contextValue = useMemo(() => {\n const events = isLoading\n ? []\n : resolveEvents(eventSource, range, viewDate.timezoneID, eventCache);\n return {\n categories,\n events,\n highlightDate,\n isLoading,\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n plugins,\n previousDateLabel,\n range,\n timezoneID: viewDate.timezoneID,\n view,\n viewDate,\n };\n }, [\n categories,\n eventCache,\n eventSource,\n highlightDate,\n isLoading,\n nextDateLabel,\n onNextDate,\n onPreviousDate,\n onToday,\n plugins,\n previousDateLabel,\n range,\n view,\n viewDate,\n ]);\n\n return (\n <ScheduleContext value={contextValue}>\n <Component options={view.options} />\n </ScheduleContext>\n );\n}\n\n/**\n * Read-only schedule shell for day, week, month, and list views.\n */\nexport function Schedule({\n categories = EMPTY_CATEGORIES,\n className,\n 'data-testid': dataTestId,\n events,\n highlightDate: highlightDateFromProps,\n onViewDateChange,\n plugins = defaultSchedulePlugins,\n ref,\n style,\n timezoneID: timezoneIDFromProps,\n view,\n viewDate,\n}: ScheduleProps): React.JSX.Element {\n const timezoneID = timezoneIDFromProps ?? getBrowserTimezoneID();\n // Instance-scoped cache for async event loading. Unlike the previous\n // module-level WeakMap keyed on loader function identity, this cache belongs\n // to each Schedule instance so unstable (inline) loader references do not\n // defeat caching or leak memory.\n const [eventCache] = useState(() => new Map<string, EventRecord>());\n const [internalHighlightDate] = useState<Instant>(() =>\n nowEpochMilliseconds(),\n );\n const highlightDate = highlightDateFromProps ?? internalHighlightDate;\n const zonedDateTime = useMemo(\n () => createZonedDateTime(viewDate, timezoneID),\n [viewDate, timezoneID],\n );\n const highlightZonedDateTime = useMemo(\n () => createZonedDateTime(highlightDate, timezoneID),\n [highlightDate, timezoneID],\n );\n const updateViewDate = useCallback(\n (nextViewDate: Instant) => {\n onViewDateChange?.(nextViewDate);\n },\n [onViewDateChange],\n );\n const shiftToRange = useCallback(\n (nextRange: ZonedDateTimeRange) => {\n const currentRange = view.getDateRange(zonedDateTime);\n updateViewDate(\n zonedDateTime.instant + nextRange[0].instant - currentRange[0].instant,\n );\n },\n [updateViewDate, view, zonedDateTime],\n );\n const previousDateRange = useMemo(\n () => view.getPreviousDateRange(zonedDateTime),\n [view, zonedDateTime],\n );\n const nextDateRange = useMemo(\n () => view.getNextDateRange(zonedDateTime),\n [view, zonedDateTime],\n );\n const onPreviousDate = useCallback(() => {\n shiftToRange(previousDateRange.range);\n }, [previousDateRange, shiftToRange]);\n const onToday = useCallback(() => {\n updateViewDate(nowEpochMilliseconds());\n }, [updateViewDate]);\n const onNextDate = useCallback(() => {\n shiftToRange(nextDateRange.range);\n }, [nextDateRange, shiftToRange]);\n\n return (\n <div\n className={cx(styles.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n <Suspense\n fallback={\n <ScheduleViewContent\n categories={categories}\n eventCache={eventCache}\n eventSource={[]}\n highlightDate={highlightZonedDateTime}\n isLoading\n nextDateLabel={nextDateRange.label}\n onNextDate={onNextDate}\n onPreviousDate={onPreviousDate}\n onToday={onToday}\n plugins={plugins}\n previousDateLabel={previousDateRange.label}\n view={view}\n viewDate={zonedDateTime}\n />\n }>\n <ScheduleViewContent\n categories={categories}\n eventCache={eventCache}\n eventSource={events}\n highlightDate={highlightZonedDateTime}\n isLoading={false}\n nextDateLabel={nextDateRange.label}\n onNextDate={onNextDate}\n onPreviousDate={onPreviousDate}\n onToday={onToday}\n plugins={plugins}\n previousDateLabel={previousDateRange.label}\n view={view}\n viewDate={zonedDateTime}\n />\n </Suspense>\n </div>\n );\n}\n\nSchedule.displayName = 'Schedule';\n","/* eslint-disable silver-ui/require-component-props -- schedule views are internal view renderers */\n\nimport {plainDateDayOfWeek, type PlainDate} from '../../internal/plainDate';\nimport {TimeGridView} from './TimeGridView';\nimport {useScheduleContext} from './context';\nimport {enumerateDates, getScheduleRangeFromDates} from './dateMath';\nimport {ScheduleFrame, formatWeekTitle} from './shared';\nimport type {\n ScheduleView,\n ScheduleViewComponentProps,\n ZonedDateTime,\n} from './types';\nimport {scheduleRangeToZonedDateTimeRange} from './zonedDateTime';\n\nexport interface ScheduleWeeklyViewOptions {\n /**\n * Pixel height used for each hourly row.\n * @default 100\n */\n hourHeight?: number;\n /**\n * Exclusive ending hour shown in the weekly grid (1-24).\n * @default 24\n */\n maxHour?: number;\n /**\n * First hour shown in the weekly grid (0-23).\n * @default 0\n */\n minHour?: number;\n /**\n * Day used as the first day of the week, where 0 is Sunday and 6 is Saturday.\n * @default 0\n */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n}\n\n/**\n * Internal view component that renders a 7-day time grid.\n */\nfunction ScheduleWeeklyView({\n options,\n}: ScheduleViewComponentProps<ScheduleWeeklyViewOptions>): React.JSX.Element {\n const {range} = useScheduleContext();\n const days = enumerateDates(range.startDate, range.endDate);\n const title = formatWeekTitle(days[0], days[days.length - 1]);\n return (\n <ScheduleFrame title={title} titleLabel={title}>\n <TimeGridView\n days={days}\n hourHeight={options.hourHeight}\n maxHour={options.maxHour}\n minHour={options.minHour}\n />\n </ScheduleFrame>\n );\n}\n\n/**\n * Creates a weekly schedule view configuration.\n */\nexport function createScheduleWeeklyView({\n hourHeight = 100,\n maxHour = 24,\n minHour = 0,\n weekStartsOn = 0,\n}: ScheduleWeeklyViewOptions = {}): ScheduleView<ScheduleWeeklyViewOptions> {\n const getWeekStart = (date: ZonedDateTime) =>\n setStartOfWeek(date.toPlainDate(), weekStartsOn);\n const getWeekRange = (date: ZonedDateTime) => {\n const startDate = getWeekStart(date);\n return scheduleRangeToZonedDateTimeRange(\n getScheduleRangeFromDates({\n endDate: startDate.add({days: 7}),\n startDate,\n timezoneID: date.timezoneID,\n }),\n date.timezoneID,\n );\n };\n\n return {\n component: ScheduleWeeklyView,\n getDateRange: getWeekRange,\n getNextDateRange: date => ({\n label: 'Next week',\n range: getWeekRange(date.addDays(7)),\n }),\n getPreviousDateRange: date => ({\n label: 'Previous week',\n range: getWeekRange(date.addDays(-7)),\n }),\n options: {hourHeight, maxHour, minHour, weekStartsOn},\n };\n}\n\nfunction setStartOfWeek(\n date: PlainDate,\n weekStartsOn: NonNullable<ScheduleWeeklyViewOptions['weekStartsOn']>,\n): PlainDate {\n const daysSinceWeekStart = (plainDateDayOfWeek(date) - weekStartsOn + 7) % 7;\n return date.add({days: -daysSinceWeekStart});\n}\n"]}
|