erp-pro-ui 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.cjs +1 -1
- package/dist/accordion.mjs +1 -1
- package/dist/alert.cjs +1 -1
- package/dist/alert.mjs +1 -1
- package/dist/animated-content.cjs +1 -1
- package/dist/animated-content.mjs +1 -1
- package/dist/ascii-text.cjs +1 -1
- package/dist/ascii-text.mjs +1 -1
- package/dist/background-gradient-animation.cjs +1 -1
- package/dist/background-gradient-animation.mjs +1 -1
- package/dist/button-hover-border-gradient.cjs +1 -1
- package/dist/button-hover-border-gradient.mjs +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.mjs +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.mjs +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.mjs +1 -1
- package/dist/carousel.cjs +1 -1
- package/dist/carousel.mjs +1 -1
- package/dist/catalog.cjs +7 -0
- package/dist/catalog.cjs.map +1 -1
- package/dist/catalog.d.ts +13 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.mjs +7 -0
- package/dist/catalog.mjs.map +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.mjs +1 -1
- package/dist/chip.cjs +1 -1
- package/dist/chip.mjs +1 -1
- package/dist/chroma-grid.cjs +1 -1
- package/dist/chroma-grid.mjs +1 -1
- package/dist/chunks/{Drawer-Y0_sJni5.mjs → Drawer-BhTTQV8Q.mjs} +2 -2
- package/dist/chunks/{Drawer-Y0_sJni5.mjs.map → Drawer-BhTTQV8Q.mjs.map} +1 -1
- package/dist/chunks/{Drawer-D72Xi2Gq.cjs → Drawer-C_DLqrus.cjs} +2 -3
- package/dist/chunks/{Drawer-D72Xi2Gq.cjs.map → Drawer-C_DLqrus.cjs.map} +1 -1
- package/dist/chunks/{DropdownMenu-BQ4WlaGp.mjs → DropdownMenu-B18BI5l7.mjs} +2 -2
- package/dist/chunks/{DropdownMenu-BQ4WlaGp.mjs.map → DropdownMenu-B18BI5l7.mjs.map} +1 -1
- package/dist/chunks/{DropdownMenu-yh04burS.cjs → DropdownMenu-CEmlmX7P.cjs} +2 -3
- package/dist/chunks/{DropdownMenu-yh04burS.cjs.map → DropdownMenu-CEmlmX7P.cjs.map} +1 -1
- package/dist/chunks/{HoverBorderGradient-DEtm3owk.mjs → HoverBorderGradient-CGKcviEd.mjs} +2 -2
- package/dist/chunks/{HoverBorderGradient-DEtm3owk.mjs.map → HoverBorderGradient-CGKcviEd.mjs.map} +1 -1
- package/dist/chunks/{HoverBorderGradient-DMMyr2L3.cjs → HoverBorderGradient-DTKasFZO.cjs} +2 -3
- package/dist/chunks/{HoverBorderGradient-DMMyr2L3.cjs.map → HoverBorderGradient-DTKasFZO.cjs.map} +1 -1
- package/dist/chunks/{SunToMoonButton-BOKHzC1H.mjs → SunToMoonButton-DIMK53fW.mjs} +2 -2
- package/dist/chunks/{SunToMoonButton-BOKHzC1H.mjs.map → SunToMoonButton-DIMK53fW.mjs.map} +1 -1
- package/dist/chunks/{SunToMoonButton-gX4Kk_5B.cjs → SunToMoonButton-DUuIqw22.cjs} +2 -3
- package/dist/chunks/{SunToMoonButton-gX4Kk_5B.cjs.map → SunToMoonButton-DUuIqw22.cjs.map} +1 -1
- package/dist/chunks/{Tooltip-nnaiqJTT.cjs → Tooltip-1yPGRJ2Q.cjs} +1 -2
- package/dist/chunks/{Tooltip-nnaiqJTT.cjs.map → Tooltip-1yPGRJ2Q.cjs.map} +1 -1
- package/dist/chunks/{Tooltip-LbOKP__2.mjs → Tooltip-CEj-I4JO.mjs} +1 -1
- package/dist/chunks/{Tooltip-LbOKP__2.mjs.map → Tooltip-CEj-I4JO.mjs.map} +1 -1
- package/dist/chunks/{accordion-CLcjNX_X.mjs → accordion-Cf-Q3rec.mjs} +2 -2
- package/dist/chunks/{accordion-CLcjNX_X.mjs.map → accordion-Cf-Q3rec.mjs.map} +1 -1
- package/dist/chunks/{accordion-Bj3Sj0mC.cjs → accordion-X4PNqWkW.cjs} +2 -3
- package/dist/chunks/{accordion-Bj3Sj0mC.cjs.map → accordion-X4PNqWkW.cjs.map} +1 -1
- package/dist/chunks/{alert-BBA4Sh4e.cjs → alert-BEMULPIi.cjs} +2 -3
- package/dist/chunks/{alert-BBA4Sh4e.cjs.map → alert-BEMULPIi.cjs.map} +1 -1
- package/dist/chunks/{alert-oUz79MGc.mjs → alert-GImBqaCY.mjs} +2 -2
- package/dist/chunks/{alert-oUz79MGc.mjs.map → alert-GImBqaCY.mjs.map} +1 -1
- package/dist/chunks/{animated-content-CiNJLgbq.mjs → animated-content-Bp-Yt0_7.mjs} +1 -1
- package/dist/chunks/{animated-content-CiNJLgbq.mjs.map → animated-content-Bp-Yt0_7.mjs.map} +1 -1
- package/dist/chunks/{animated-content-B3wbiWQI.cjs → animated-content-tSHXDZq2.cjs} +1 -2
- package/dist/chunks/{animated-content-B3wbiWQI.cjs.map → animated-content-tSHXDZq2.cjs.map} +1 -1
- package/dist/chunks/{ascii-text-KwVE41Hw.cjs → ascii-text-Ctua6ucZ.cjs} +2 -2
- package/dist/chunks/{ascii-text-KwVE41Hw.cjs.map → ascii-text-Ctua6ucZ.cjs.map} +1 -1
- package/dist/chunks/{ascii-text-C6JegLhP.mjs → ascii-text-QyP7JU7g.mjs} +1 -1
- package/dist/chunks/{ascii-text-C6JegLhP.mjs.map → ascii-text-QyP7JU7g.mjs.map} +1 -1
- package/dist/chunks/{background-gradient-animation-CTc2ZR74.mjs → background-gradient-animation-CZUD_aq2.mjs} +2 -2
- package/dist/chunks/{background-gradient-animation-CTc2ZR74.mjs.map → background-gradient-animation-CZUD_aq2.mjs.map} +1 -1
- package/dist/chunks/{background-gradient-animation-1LZY3DYT.cjs → background-gradient-animation-PvM0i88k.cjs} +2 -3
- package/dist/chunks/{background-gradient-animation-1LZY3DYT.cjs.map → background-gradient-animation-PvM0i88k.cjs.map} +1 -1
- package/dist/chunks/{button-IDShmQqA.mjs → button-CAU9ej3h.mjs} +2 -2
- package/dist/chunks/{button-IDShmQqA.mjs.map → button-CAU9ej3h.mjs.map} +1 -1
- package/dist/chunks/{button-uD87K76W.cjs → button-D2ZYmVda.cjs} +2 -3
- package/dist/chunks/{button-uD87K76W.cjs.map → button-D2ZYmVda.cjs.map} +1 -1
- package/dist/chunks/{button-hover-border-gradient-DGZqd8je.cjs → button-hover-border-gradient-D12Zjmd3.cjs} +2 -3
- package/dist/chunks/{button-hover-border-gradient-DGZqd8je.cjs.map → button-hover-border-gradient-D12Zjmd3.cjs.map} +1 -1
- package/dist/chunks/{button-hover-border-gradient-B2ebbDek.mjs → button-hover-border-gradient-VNEg4V0o.mjs} +2 -2
- package/dist/chunks/{button-hover-border-gradient-B2ebbDek.mjs.map → button-hover-border-gradient-VNEg4V0o.mjs.map} +1 -1
- package/dist/chunks/calendar-BlUhssD4.mjs +203 -0
- package/dist/chunks/calendar-BlUhssD4.mjs.map +1 -0
- package/dist/chunks/calendar-CdKKhdx5.cjs +208 -0
- package/dist/chunks/calendar-CdKKhdx5.cjs.map +1 -0
- package/dist/chunks/{card-Cuud0jIt.cjs → card-C_Qr7E6E.cjs} +1 -2
- package/dist/chunks/{card-Cuud0jIt.cjs.map → card-C_Qr7E6E.cjs.map} +1 -1
- package/dist/chunks/{card-DNeC6jqk.mjs → card-DYHDNCPK.mjs} +1 -1
- package/dist/chunks/{card-DNeC6jqk.mjs.map → card-DYHDNCPK.mjs.map} +1 -1
- package/dist/chunks/{carousel-xHkrV_pt.cjs → carousel-DtOJEbEU.cjs} +4 -5
- package/dist/chunks/{carousel-xHkrV_pt.cjs.map → carousel-DtOJEbEU.cjs.map} +1 -1
- package/dist/chunks/{carousel-Dpe5QLJK.mjs → carousel-eeqWZZHE.mjs} +4 -4
- package/dist/chunks/{carousel-Dpe5QLJK.mjs.map → carousel-eeqWZZHE.mjs.map} +1 -1
- package/dist/chunks/{chartStyles-BADmRKZo.cjs → chartStyles-2mTluDoo.cjs} +1 -1
- package/dist/chunks/{chartStyles-BADmRKZo.cjs.map → chartStyles-2mTluDoo.cjs.map} +1 -1
- package/dist/chunks/{chartStyles-DPXgYmGn.mjs → chartStyles-DrHVYS5N.mjs} +1 -1
- package/dist/chunks/{chartStyles-DPXgYmGn.mjs.map → chartStyles-DrHVYS5N.mjs.map} +1 -1
- package/dist/chunks/{charts-COx3IbI2.cjs → charts-DMu4zp8j.cjs} +4 -4
- package/dist/chunks/{charts-COx3IbI2.cjs.map → charts-DMu4zp8j.cjs.map} +1 -1
- package/dist/chunks/{charts-C-KQ3Nk5.mjs → charts-DlskmT1J.mjs} +3 -3
- package/dist/chunks/{charts-C-KQ3Nk5.mjs.map → charts-DlskmT1J.mjs.map} +1 -1
- package/dist/chunks/{checkbox-Y04NlzB8.mjs → checkbox-D7EJQbqC.mjs} +1 -1
- package/dist/chunks/{checkbox-Y04NlzB8.mjs.map → checkbox-D7EJQbqC.mjs.map} +1 -1
- package/dist/chunks/{checkbox-CDknzh89.cjs → checkbox-Lw2UqyNE.cjs} +1 -2
- package/dist/chunks/{checkbox-CDknzh89.cjs.map → checkbox-Lw2UqyNE.cjs.map} +1 -1
- package/dist/chunks/{chip-sfQlzrbo.cjs → chip-D5i9VT9O.cjs} +4 -5
- package/dist/chunks/{chip-sfQlzrbo.cjs.map → chip-D5i9VT9O.cjs.map} +1 -1
- package/dist/chunks/{chip-B3j6R6sO.mjs → chip-DBlSQcqR.mjs} +4 -4
- package/dist/chunks/{chip-B3j6R6sO.mjs.map → chip-DBlSQcqR.mjs.map} +1 -1
- package/dist/chunks/{chroma-grid-Bp55pKEm.cjs → chroma-grid-CTDtdFUm.cjs} +2 -3
- package/dist/chunks/{chroma-grid-Bp55pKEm.cjs.map → chroma-grid-CTDtdFUm.cjs.map} +1 -1
- package/dist/chunks/{chroma-grid-BHS9qAn_.mjs → chroma-grid-DuLTfGVP.mjs} +2 -2
- package/dist/chunks/{chroma-grid-BHS9qAn_.mjs.map → chroma-grid-DuLTfGVP.mjs.map} +1 -1
- package/dist/chunks/{color-palette-Duud5Iqq.cjs → color-palette-DQQ9UV0N.cjs} +2 -2
- package/dist/chunks/{color-palette-Duud5Iqq.cjs.map → color-palette-DQQ9UV0N.cjs.map} +1 -1
- package/dist/chunks/{color-palette-D9Qlw2Cx.mjs → color-palette-G1HUXWJP.mjs} +1 -1
- package/dist/chunks/{color-palette-D9Qlw2Cx.mjs.map → color-palette-G1HUXWJP.mjs.map} +1 -1
- package/dist/chunks/{combobox-C3a2iogC.cjs → combobox-CkNzH1YV.cjs} +6 -6
- package/dist/chunks/{combobox-C3a2iogC.cjs.map → combobox-CkNzH1YV.cjs.map} +1 -1
- package/dist/chunks/{combobox-neBItbtz.mjs → combobox-xNmFFHd6.mjs} +5 -5
- package/dist/chunks/{combobox-neBItbtz.mjs.map → combobox-xNmFFHd6.mjs.map} +1 -1
- package/dist/chunks/dashboard-cards-Bww66_5K.cjs +6570 -0
- package/dist/chunks/dashboard-cards-Bww66_5K.cjs.map +1 -0
- package/dist/chunks/dashboard-cards-lnifLEyj.mjs +6385 -0
- package/dist/chunks/dashboard-cards-lnifLEyj.mjs.map +1 -0
- package/dist/chunks/{data-table-BZEiSZI2.cjs → data-table-BCVbzkLo.cjs} +16 -17
- package/dist/chunks/{data-table-BZEiSZI2.cjs.map → data-table-BCVbzkLo.cjs.map} +1 -1
- package/dist/chunks/{data-table-EfGKkerd.mjs → data-table-C25KHEn4.mjs} +14 -15
- package/dist/chunks/{data-table-EfGKkerd.mjs.map → data-table-C25KHEn4.mjs.map} +1 -1
- package/dist/chunks/date-picker--cqsgsIV.mjs +587 -0
- package/dist/chunks/date-picker--cqsgsIV.mjs.map +1 -0
- package/dist/chunks/date-picker-BJQdFyqr.cjs +592 -0
- package/dist/chunks/date-picker-BJQdFyqr.cjs.map +1 -0
- package/dist/chunks/{dialog-B60BjJz0.mjs → dialog-BHIeG3Sg.mjs} +3 -3
- package/dist/chunks/{dialog-B60BjJz0.mjs.map → dialog-BHIeG3Sg.mjs.map} +1 -1
- package/dist/chunks/{dialog-i9LdkXmF.cjs → dialog-CLKU0cXX.cjs} +3 -4
- package/dist/chunks/{dialog-i9LdkXmF.cjs.map → dialog-CLKU0cXX.cjs.map} +1 -1
- package/dist/chunks/draggable-grid-2L_eHKfp.cjs +245 -0
- package/dist/chunks/draggable-grid-2L_eHKfp.cjs.map +1 -0
- package/dist/chunks/draggable-grid-IuCMSOsE.mjs +240 -0
- package/dist/chunks/draggable-grid-IuCMSOsE.mjs.map +1 -0
- package/dist/chunks/{event-calendar-BbFOUDov.mjs → event-calendar-CO2doGJW.mjs} +11 -11
- package/dist/chunks/{event-calendar-BbFOUDov.mjs.map → event-calendar-CO2doGJW.mjs.map} +1 -1
- package/dist/chunks/{event-calendar-Bljd_7PI.cjs → event-calendar-CvficOuV.cjs} +11 -12
- package/dist/chunks/{event-calendar-Bljd_7PI.cjs.map → event-calendar-CvficOuV.cjs.map} +1 -1
- package/dist/chunks/{form-DGwdlSW2.cjs → form-DARN6jtX.cjs} +1 -2
- package/dist/chunks/{form-DGwdlSW2.cjs.map → form-DARN6jtX.cjs.map} +1 -1
- package/dist/chunks/{form-CDc9UM3r.mjs → form-DNuFklNR.mjs} +1 -1
- package/dist/chunks/{form-CDc9UM3r.mjs.map → form-DNuFklNR.mjs.map} +1 -1
- package/dist/chunks/{gradual-blur-BNYVlqb1.cjs → gradual-blur-BBLbpXD4.cjs} +2 -3
- package/dist/chunks/{gradual-blur-BNYVlqb1.cjs.map → gradual-blur-BBLbpXD4.cjs.map} +1 -1
- package/dist/chunks/{gradual-blur-Bw2KNmXb.mjs → gradual-blur-BPx2MSWI.mjs} +2 -2
- package/dist/chunks/{gradual-blur-Bw2KNmXb.mjs.map → gradual-blur-BPx2MSWI.mjs.map} +1 -1
- package/dist/chunks/{hover-card-G66SUyjq.mjs → hover-card-BkVHGXz6.mjs} +1 -1
- package/dist/chunks/{hover-card-G66SUyjq.mjs.map → hover-card-BkVHGXz6.mjs.map} +1 -1
- package/dist/chunks/{hover-card-Dp6Y2h2J.cjs → hover-card-DwZFtu8w.cjs} +1 -2
- package/dist/chunks/{hover-card-Dp6Y2h2J.cjs.map → hover-card-DwZFtu8w.cjs.map} +1 -1
- package/dist/chunks/{icons-ub9iu-JG.cjs → icons-Ci8yEvvF.cjs} +48 -2
- package/dist/chunks/icons-Ci8yEvvF.cjs.map +1 -0
- package/dist/chunks/{icons-JzMKLygv.mjs → icons-CkVHNbbN.mjs} +43 -2
- package/dist/chunks/icons-CkVHNbbN.mjs.map +1 -0
- package/dist/chunks/{input-CRc3MKb_.mjs → input-B-XSdnfh.mjs} +4 -4
- package/dist/chunks/{input-CRc3MKb_.mjs.map → input-B-XSdnfh.mjs.map} +1 -1
- package/dist/chunks/{input-DMTwz27q.cjs → input-EH7x0pQY.cjs} +4 -5
- package/dist/chunks/{input-DMTwz27q.cjs.map → input-EH7x0pQY.cjs.map} +1 -1
- package/dist/chunks/{label-Bc_r54NU.mjs → label-CcsncrKQ.mjs} +1 -1
- package/dist/chunks/{label-Bc_r54NU.mjs.map → label-CcsncrKQ.mjs.map} +1 -1
- package/dist/chunks/{label-B5Ugq0Nk.cjs → label-Du-5H7wd.cjs} +1 -2
- package/dist/chunks/{label-B5Ugq0Nk.cjs.map → label-Du-5H7wd.cjs.map} +1 -1
- package/dist/chunks/{loading-ll2L6lc7.mjs → loading-2Lh_355V.mjs} +2 -2
- package/dist/chunks/{loading-ll2L6lc7.mjs.map → loading-2Lh_355V.mjs.map} +1 -1
- package/dist/chunks/{loading-DZKJc3e7.cjs → loading-DeGHTDO2.cjs} +2 -3
- package/dist/chunks/{loading-DZKJc3e7.cjs.map → loading-DeGHTDO2.cjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-C_8sxaiL.mjs → multi-select-combobox-BOdKmPj2.mjs} +4 -4
- package/dist/chunks/{multi-select-combobox-C_8sxaiL.mjs.map → multi-select-combobox-BOdKmPj2.mjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-CFJGq1hn.cjs → multi-select-combobox-PPYRcaPg.cjs} +5 -5
- package/dist/chunks/{multi-select-combobox-CFJGq1hn.cjs.map → multi-select-combobox-PPYRcaPg.cjs.map} +1 -1
- package/dist/chunks/{otp-input-BpcTJOmU.mjs → otp-input--_itTXaL.mjs} +1 -1
- package/dist/chunks/{otp-input-BpcTJOmU.mjs.map → otp-input--_itTXaL.mjs.map} +1 -1
- package/dist/chunks/{otp-input-B5-tuc0q.cjs → otp-input-Dgw_47Z7.cjs} +1 -2
- package/dist/chunks/{otp-input-B5-tuc0q.cjs.map → otp-input-Dgw_47Z7.cjs.map} +1 -1
- package/dist/chunks/{overlay-DzE_GyYf.cjs → overlay-15EzdrIu.cjs} +1 -2
- package/dist/chunks/{overlay-DzE_GyYf.cjs.map → overlay-15EzdrIu.cjs.map} +1 -1
- package/dist/chunks/{overlay-CG1dMYtO.mjs → overlay-BMbhF-EC.mjs} +1 -1
- package/dist/chunks/{overlay-CG1dMYtO.mjs.map → overlay-BMbhF-EC.mjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-_o1T1HLO.cjs → password-strength-meter-Be1c-dnK.cjs} +2 -3
- package/dist/chunks/{password-strength-meter-_o1T1HLO.cjs.map → password-strength-meter-Be1c-dnK.cjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-CH6uQAuK.mjs → password-strength-meter-Q1Qr-4tz.mjs} +2 -2
- package/dist/chunks/{password-strength-meter-CH6uQAuK.mjs.map → password-strength-meter-Q1Qr-4tz.mjs.map} +1 -1
- package/dist/chunks/{progress-bar-FfdFVvTT.cjs → progress-bar-BsnX079N.cjs} +3 -3
- package/dist/chunks/{progress-bar-FfdFVvTT.cjs.map → progress-bar-BsnX079N.cjs.map} +1 -1
- package/dist/chunks/{progress-bar-BAvRSW1b.mjs → progress-bar-l5WpbpZf.mjs} +2 -2
- package/dist/chunks/{progress-bar-BAvRSW1b.mjs.map → progress-bar-l5WpbpZf.mjs.map} +1 -1
- package/dist/chunks/{radio-BMOnxnUS.mjs → radio-B94_TGtz.mjs} +2 -2
- package/dist/chunks/{radio-BMOnxnUS.mjs.map → radio-B94_TGtz.mjs.map} +1 -1
- package/dist/chunks/{radio-wagafWwx.cjs → radio-W_NiS_dO.cjs} +2 -3
- package/dist/chunks/{radio-wagafWwx.cjs.map → radio-W_NiS_dO.cjs.map} +1 -1
- package/dist/chunks/{select-zFFyNmlY.cjs → select-C5lkcrSB.cjs} +5 -6
- package/dist/chunks/{select-zFFyNmlY.cjs.map → select-C5lkcrSB.cjs.map} +1 -1
- package/dist/chunks/{select--DeSgPdn.mjs → select-DnSSxddm.mjs} +5 -5
- package/dist/chunks/{select--DeSgPdn.mjs.map → select-DnSSxddm.mjs.map} +1 -1
- package/dist/chunks/{sidebar-oemmRzCL.mjs → sidebar-C3Sx87wD.mjs} +10 -11
- package/dist/chunks/{sidebar-oemmRzCL.mjs.map → sidebar-C3Sx87wD.mjs.map} +1 -1
- package/dist/chunks/{sidebar-Cq7UbKJT.cjs → sidebar-DDRWkz5k.cjs} +10 -12
- package/dist/chunks/{sidebar-Cq7UbKJT.cjs.map → sidebar-DDRWkz5k.cjs.map} +1 -1
- package/dist/chunks/{skeleton-DWvVc17T.cjs → skeleton-B2u9c1xJ.cjs} +2 -3
- package/dist/chunks/{skeleton-DWvVc17T.cjs.map → skeleton-B2u9c1xJ.cjs.map} +1 -1
- package/dist/chunks/{skeleton-BsDMlWZG.mjs → skeleton-DVAlrOq2.mjs} +2 -2
- package/dist/chunks/{skeleton-BsDMlWZG.mjs.map → skeleton-DVAlrOq2.mjs.map} +1 -1
- package/dist/chunks/{spinners-DlMcokJa.mjs → spinners-BQtIp2ov.mjs} +2 -2
- package/dist/chunks/{spinners-DlMcokJa.mjs.map → spinners-BQtIp2ov.mjs.map} +1 -1
- package/dist/chunks/{spinners-DBAJliAj.cjs → spinners-BiebALzS.cjs} +2 -3
- package/dist/chunks/{spinners-DBAJliAj.cjs.map → spinners-BiebALzS.cjs.map} +1 -1
- package/dist/chunks/{splash-cursor-CQ6_HwHV.cjs → splash-cursor-8b7ORB2k.cjs} +2 -3
- package/dist/chunks/{splash-cursor-CQ6_HwHV.cjs.map → splash-cursor-8b7ORB2k.cjs.map} +1 -1
- package/dist/chunks/{splash-cursor-Bb7LSzaO.mjs → splash-cursor-CeZffMed.mjs} +2 -2
- package/dist/chunks/{splash-cursor-Bb7LSzaO.mjs.map → splash-cursor-CeZffMed.mjs.map} +1 -1
- package/dist/chunks/{spotlight-card-COfSD7ns.cjs → spotlight-card-BQjp7hO1.cjs} +2 -3
- package/dist/chunks/{spotlight-card-COfSD7ns.cjs.map → spotlight-card-BQjp7hO1.cjs.map} +1 -1
- package/dist/chunks/{spotlight-card-Bs0iiSLc.mjs → spotlight-card-DiPtBCAK.mjs} +2 -2
- package/dist/chunks/{spotlight-card-Bs0iiSLc.mjs.map → spotlight-card-DiPtBCAK.mjs.map} +1 -1
- package/dist/chunks/{stepper-CTteR-Kj.cjs → stepper-BuhQfQTH.cjs} +5 -6
- package/dist/chunks/{stepper-CTteR-Kj.cjs.map → stepper-BuhQfQTH.cjs.map} +1 -1
- package/dist/chunks/{stepper-B9NdZ6ZV.mjs → stepper-CVNcexxq.mjs} +5 -5
- package/dist/chunks/{stepper-B9NdZ6ZV.mjs.map → stepper-CVNcexxq.mjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-lt-1vmWm.cjs → sun-to-moon-button-BzYGFhrg.cjs} +4 -5
- package/dist/chunks/{sun-to-moon-button-lt-1vmWm.cjs.map → sun-to-moon-button-BzYGFhrg.cjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-DWHDpP5B.mjs → sun-to-moon-button-CRXBMFZb.mjs} +4 -4
- package/dist/chunks/{sun-to-moon-button-DWHDpP5B.mjs.map → sun-to-moon-button-CRXBMFZb.mjs.map} +1 -1
- package/dist/chunks/{switch-BbFl5b4t.cjs → switch-CEoT3MgX.cjs} +1 -2
- package/dist/chunks/{switch-BbFl5b4t.cjs.map → switch-CEoT3MgX.cjs.map} +1 -1
- package/dist/chunks/{switch--68scepb.mjs → switch-DUnNe4xP.mjs} +1 -1
- package/dist/chunks/{switch--68scepb.mjs.map → switch-DUnNe4xP.mjs.map} +1 -1
- package/dist/chunks/{textarea-U_JeSWI3.cjs → textarea-Bschfj24.cjs} +2 -3
- package/dist/chunks/{textarea-U_JeSWI3.cjs.map → textarea-Bschfj24.cjs.map} +1 -1
- package/dist/chunks/{textarea-CEj9voUJ.mjs → textarea-CfeKo5HA.mjs} +2 -2
- package/dist/chunks/{textarea-CEj9voUJ.mjs.map → textarea-CfeKo5HA.mjs.map} +1 -1
- package/dist/chunks/{theme-koPrLKQv.mjs → theme-BXML6jHE.mjs} +1 -1
- package/dist/chunks/{theme-koPrLKQv.mjs.map → theme-BXML6jHE.mjs.map} +1 -1
- package/dist/chunks/{theme-D6B-FaoE.cjs → theme-BzTaXYZ8.cjs} +1 -2
- package/dist/chunks/{theme-D6B-FaoE.cjs.map → theme-BzTaXYZ8.cjs.map} +1 -1
- package/dist/chunks/{toast-CyY8VZN7.mjs → toast-D1W0BvoH.mjs} +2 -2
- package/dist/chunks/{toast-CyY8VZN7.mjs.map → toast-D1W0BvoH.mjs.map} +1 -1
- package/dist/chunks/{toast-2yq4Q7-q.cjs → toast-DL8svc6q.cjs} +2 -3
- package/dist/chunks/{toast-2yq4Q7-q.cjs.map → toast-DL8svc6q.cjs.map} +1 -1
- package/dist/chunks/{truncated-text-CswjmrHZ.cjs → truncated-text-D0t4atw5.cjs} +3 -3
- package/dist/chunks/{truncated-text-CswjmrHZ.cjs.map → truncated-text-D0t4atw5.cjs.map} +1 -1
- package/dist/chunks/{truncated-text-DUYTW1KP.mjs → truncated-text-DIkg-8Vo.mjs} +2 -2
- package/dist/chunks/{truncated-text-DUYTW1KP.mjs.map → truncated-text-DIkg-8Vo.mjs.map} +1 -1
- package/dist/chunks/{typography-CFIiYk1d.cjs → typography-C5fYwhp2.cjs} +3 -3
- package/dist/chunks/{typography-CFIiYk1d.cjs.map → typography-C5fYwhp2.cjs.map} +1 -1
- package/dist/chunks/{typography-DHE9sUZ8.mjs → typography-Czi7t5y4.mjs} +2 -2
- package/dist/chunks/{typography-DHE9sUZ8.mjs.map → typography-Czi7t5y4.mjs.map} +1 -1
- package/dist/chunks/{utils-LRbEQHYs.cjs → utils-CoA0q63n.cjs} +84 -4
- package/dist/chunks/utils-CoA0q63n.cjs.map +1 -0
- package/dist/chunks/{utils-7S0u48mU.mjs → utils-Dc7j29ec.mjs} +84 -4
- package/dist/chunks/utils-Dc7j29ec.mjs.map +1 -0
- package/dist/color-palette.cjs +1 -1
- package/dist/color-palette.mjs +1 -1
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.mjs +1 -1
- package/dist/components/data-display/dashboard-cards/AIFeatureAdoptionCard.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/AIFeatureAdoptionCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/AIInsightsCard.d.ts +30 -0
- package/dist/components/data-display/dashboard-cards/AIInsightsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/AcquisitionChannelCard.d.ts +24 -0
- package/dist/components/data-display/dashboard-cards/AcquisitionChannelCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/BarBreakdownCard.d.ts +49 -0
- package/dist/components/data-display/dashboard-cards/BarBreakdownCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/CustomerLifecycleCard.d.ts +24 -0
- package/dist/components/data-display/dashboard-cards/CustomerLifecycleCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts +111 -2
- package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts.map +1 -1
- package/dist/components/data-display/dashboard-cards/FinancialPLCard.d.ts +78 -0
- package/dist/components/data-display/dashboard-cards/FinancialPLCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/InventoryCards.d.ts +44 -0
- package/dist/components/data-display/dashboard-cards/InventoryCards.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/PaymentSummaryCard.d.ts +45 -0
- package/dist/components/data-display/dashboard-cards/PaymentSummaryCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SalesHeatmapCard.d.ts +36 -0
- package/dist/components/data-display/dashboard-cards/SalesHeatmapCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SeatUtilizationCard.d.ts +22 -0
- package/dist/components/data-display/dashboard-cards/SeatUtilizationCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SubscriptionHealthCard.d.ts +23 -0
- package/dist/components/data-display/dashboard-cards/SubscriptionHealthCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/ToolUsageOverviewCard.d.ts +22 -0
- package/dist/components/data-display/dashboard-cards/ToolUsageOverviewCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopPlansCard.d.ts +23 -0
- package/dist/components/data-display/dashboard-cards/TopPlansCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopSellingItemsCard.d.ts +42 -0
- package/dist/components/data-display/dashboard-cards/TopSellingItemsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopToolsCard.d.ts +22 -0
- package/dist/components/data-display/dashboard-cards/TopToolsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLCardHeader.d.ts +63 -0
- package/dist/components/data-display/dashboard-cards/_PLCardHeader.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLCharts.d.ts +33 -0
- package/dist/components/data-display/dashboard-cards/_PLCharts.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLKpiStrip.d.ts +11 -0
- package/dist/components/data-display/dashboard-cards/_PLKpiStrip.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLOverview.d.ts +9 -0
- package/dist/components/data-display/dashboard-cards/_PLOverview.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_TabTooltip.d.ts +8 -0
- package/dist/components/data-display/dashboard-cards/_TabTooltip.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/index.d.ts +32 -1
- package/dist/components/data-display/dashboard-cards/index.d.ts.map +1 -1
- package/dist/components/forms/calendar/Calendar.d.ts +1 -1
- package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
- package/dist/components/forms/calendar/types.d.ts +6 -0
- package/dist/components/forms/calendar/types.d.ts.map +1 -1
- package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
- package/dist/components/layout/draggable-grid/DraggableGrid.d.ts +20 -0
- package/dist/components/layout/draggable-grid/DraggableGrid.d.ts.map +1 -0
- package/dist/components/layout/draggable-grid/index.d.ts +3 -0
- package/dist/components/layout/draggable-grid/index.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/DashboardSidebarShell.d.ts.map +1 -1
- package/dist/dashboard-cards.cjs +16 -1
- package/dist/dashboard-cards.mjs +2 -2
- package/dist/data-table.cjs +1 -1
- package/dist/data-table.mjs +1 -1
- package/dist/date-picker.cjs +1 -1
- package/dist/date-picker.mjs +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.mjs +1 -1
- package/dist/docs.cjs +13 -0
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.mjs +13 -0
- package/dist/docs.mjs.map +1 -1
- package/dist/draggable-grid.cjs +3 -0
- package/dist/draggable-grid.d.ts +2 -0
- package/dist/draggable-grid.mjs +2 -0
- package/dist/drawer.cjs +1 -1
- package/dist/drawer.mjs +1 -1
- package/dist/event-calendar.cjs +1 -1
- package/dist/event-calendar.mjs +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +1 -1
- package/dist/gradual-blur.cjs +1 -1
- package/dist/gradual-blur.mjs +1 -1
- package/dist/hover-border-gradient.cjs +1 -1
- package/dist/hover-border-gradient.mjs +1 -1
- package/dist/hover-card.cjs +1 -1
- package/dist/hover-card.mjs +1 -1
- package/dist/icons.cjs +2 -3
- package/dist/icons.mjs +1 -2
- package/dist/index.cjs +71 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +55 -55
- package/dist/index.mjs.map +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.mjs +1 -1
- package/dist/label.cjs +1 -1
- package/dist/label.mjs +1 -1
- package/dist/loading.cjs +1 -1
- package/dist/loading.mjs +1 -1
- package/dist/multi-select-combobox.cjs +1 -1
- package/dist/multi-select-combobox.mjs +1 -1
- package/dist/otp-input.cjs +1 -1
- package/dist/otp-input.mjs +1 -1
- package/dist/password-strength-meter.cjs +1 -1
- package/dist/password-strength-meter.mjs +1 -1
- package/dist/progress-bar.cjs +1 -1
- package/dist/progress-bar.mjs +1 -1
- package/dist/radio.cjs +1 -1
- package/dist/radio.mjs +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.mjs +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.mjs +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.mjs +1 -1
- package/dist/spinners.cjs +1 -1
- package/dist/spinners.mjs +1 -1
- package/dist/splash-cursor.cjs +1 -1
- package/dist/splash-cursor.mjs +1 -1
- package/dist/spotlight-card.cjs +1 -1
- package/dist/spotlight-card.mjs +1 -1
- package/dist/stepper.cjs +1 -1
- package/dist/stepper.mjs +1 -1
- package/dist/sun-to-moon-button.cjs +2 -2
- package/dist/sun-to-moon-button.mjs +2 -2
- package/dist/switch.cjs +1 -1
- package/dist/switch.mjs +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.mjs +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.mjs +1 -1
- package/dist/toast.cjs +1 -1
- package/dist/toast.mjs +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.mjs +1 -1
- package/dist/truncated-text.cjs +1 -1
- package/dist/truncated-text.mjs +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.mjs +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +34 -13
- package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs +0 -51
- package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs.map +0 -1
- package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs +0 -45
- package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs.map +0 -1
- package/dist/chunks/calendar-DCkikZYb.cjs +0 -184
- package/dist/chunks/calendar-DCkikZYb.cjs.map +0 -1
- package/dist/chunks/calendar-FxAmm_ao.mjs +0 -178
- package/dist/chunks/calendar-FxAmm_ao.mjs.map +0 -1
- package/dist/chunks/dashboard-cards-BnPt0gDW.mjs +0 -2428
- package/dist/chunks/dashboard-cards-BnPt0gDW.mjs.map +0 -1
- package/dist/chunks/dashboard-cards-DNWJPKRu.cjs +0 -2524
- package/dist/chunks/dashboard-cards-DNWJPKRu.cjs.map +0 -1
- package/dist/chunks/date-picker-3IDSmb9Z.mjs +0 -228
- package/dist/chunks/date-picker-3IDSmb9Z.mjs.map +0 -1
- package/dist/chunks/date-picker-_EVYpGga.cjs +0 -234
- package/dist/chunks/date-picker-_EVYpGga.cjs.map +0 -1
- package/dist/chunks/icons-JzMKLygv.mjs.map +0 -1
- package/dist/chunks/icons-ub9iu-JG.cjs.map +0 -1
- package/dist/chunks/utils-7S0u48mU.mjs.map +0 -1
- package/dist/chunks/utils-LRbEQHYs.cjs.map +0 -1
- /package/dist/chunks/{chunk-B_GkZjkl.cjs → chunk-D6vf50IK.cjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-calendar-BbFOUDov.mjs","names":[],"sources":["../../src/components/data-display/event-calendar/calendarUtils.ts","../../src/components/data-display/event-calendar/MiniCalendarPicker.tsx","../../src/components/data-display/event-calendar/types.ts","../../src/components/data-display/event-calendar/EventFilterList.tsx","../../src/components/data-display/event-calendar/CalendarSidebar.tsx","../../src/components/data-display/event-calendar/CalendarHeader.tsx","../../src/components/data-display/event-calendar/EventPill.tsx","../../src/components/data-display/event-calendar/views/MonthView.tsx","../../src/components/data-display/event-calendar/views/WeekView.tsx","../../src/components/data-display/event-calendar/views/DayView.tsx","../../src/components/data-display/event-calendar/views/ListView.tsx","../../src/components/data-display/event-calendar/AddEventPanel.tsx","../../src/components/data-display/event-calendar/EventDetailDrawer.tsx","../../src/components/data-display/event-calendar/EventCalendar.tsx"],"sourcesContent":["import type { CalendarEvent } from './types';\n\nexport const GRID_START_HOUR = 6;\nexport const GRID_END_HOUR = 22;\nexport const HOUR_HEIGHT_PX = 80;\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isToday(date: Date): boolean {\n return isSameDay(date, new Date());\n}\n\nexport function addDays(date: Date, n: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + n);\n return d;\n}\n\nexport function addMonths(date: Date, n: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + n);\n return d;\n}\n\nexport function addWeeks(date: Date, n: number): Date {\n return addDays(date, n * 7);\n}\n\nexport function startOfWeek(date: Date): Date {\n const d = new Date(date);\n d.setDate(d.getDate() - d.getDay());\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0, 23, 59, 59, 999);\n}\n\nexport function getMonthGridDays(date: Date): Date[] {\n const first = startOfMonth(date);\n const gridStart = startOfWeek(first);\n return Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));\n}\n\nexport function getWeekDays(date: Date): Date[] {\n const sunday = startOfWeek(date);\n return Array.from({ length: 7 }, (_, i) => addDays(sunday, i));\n}\n\nexport function getEventsForDay(events: CalendarEvent[], day: Date): CalendarEvent[] {\n const dayStart = new Date(day);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(day);\n dayEnd.setHours(23, 59, 59, 999);\n return events.filter((e) => e.start <= dayEnd && e.end >= dayStart);\n}\n\nexport function formatMonthYear(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n}\n\nexport function formatWeekRange(date: Date): string {\n const days = getWeekDays(date);\n const start = days[0]!;\n const end = days[6]!;\n const startStr = start.toLocaleDateString('en-US', { month: 'long', day: 'numeric' });\n const endStr =\n start.getMonth() === end.getMonth()\n ? end.getDate().toString()\n : end.toLocaleDateString('en-US', { month: 'long', day: 'numeric' });\n return `${startStr}–${endStr}, ${end.getFullYear()}`;\n}\n\nexport function formatDayFull(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\n}\n\nexport function formatShortDate(date: Date): string {\n return `${date.getMonth() + 1}/${date.getDate()}`;\n}\n\nexport function formatHour(h: number): string {\n if (h === 0) return '12AM';\n if (h === 12) return '12PM';\n return h < 12 ? `${h}AM` : `${h - 12}PM`;\n}\n\nexport function formatTime(date: Date): string {\n let h = date.getHours();\n const m = date.getMinutes();\n const ampm = h >= 12 ? 'pm' : 'am';\n h = h % 12 || 12;\n const mm = m.toString().padStart(2, '0');\n return `${h}:${mm}${ampm}`;\n}\n\nexport function formatListDate(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\n}\n\nexport function formatListDayName(date: Date): string {\n return date.toLocaleDateString('en-US', { weekday: 'long' });\n}\n\nexport function generateId(): string {\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n}\n\nexport function getEventTopPx(event: CalendarEvent): number {\n const startH = event.start.getHours() + event.start.getMinutes() / 60;\n return (startH - GRID_START_HOUR) * HOUR_HEIGHT_PX;\n}\n\nexport function getEventHeightPx(event: CalendarEvent): number {\n const startH = event.start.getHours() + event.start.getMinutes() / 60;\n const endH = event.end.getHours() + event.end.getMinutes() / 60;\n const clampedEnd = Math.min(endH, GRID_END_HOUR);\n const clampedStart = Math.max(startH, GRID_START_HOUR);\n return Math.max((clampedEnd - clampedStart) * HOUR_HEIGHT_PX, 20);\n}\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../forms/button';\nimport { mergeClassNames } from '../../../utils';\n\nimport { getMonthGridDays, isSameDay, isToday, addMonths } from './calendarUtils';\n\ninterface MiniCalendarPickerProps {\n currentDate: Date;\n onDateChange: (d: Date) => void;\n onMonthChange: (d: Date) => void;\n}\n\nconst DAY_CHARS = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n\nconst ChevronLeft = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n);\n\nexport const MiniCalendarPicker: FC<MiniCalendarPickerProps> = ({\n currentDate,\n onDateChange,\n onMonthChange,\n}) => {\n const days = getMonthGridDays(currentDate);\n const monthLabel = currentDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n\n return (\n <div className=\"select-none\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-xs font-semibold text-ds-1\">{monthLabel}</span>\n <div className=\"flex gap-0.5\">\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-6 w-6 p-0! hover:opacity-100\"\n aria-label=\"Previous month\"\n onClick={() => onMonthChange(addMonths(currentDate, -1))}\n >\n <ChevronLeft />\n </Button>\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-6 w-6 p-0! hover:opacity-100\"\n aria-label=\"Next month\"\n onClick={() => onMonthChange(addMonths(currentDate, 1))}\n >\n <ChevronRight />\n </Button>\n </div>\n </div>\n\n <div className=\"mb-1 grid grid-cols-7\">\n {DAY_CHARS.map((c, i) => (\n <div key={i} className=\"py-0.5 text-center text-[10px] font-medium text-ds-3\">\n {c}\n </div>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7 gap-y-0.5\">\n {days.map((day, i) => {\n const isCurrentMonth = day.getMonth() === currentDate.getMonth();\n const today = isToday(day);\n const selected = isSameDay(day, currentDate);\n return (\n <Button\n key={i}\n variant=\"tertiary\"\n aria-label={day.toDateString()}\n onClick={() => onDateChange(day)}\n className={mergeClassNames(\n 'mx-auto h-6 w-6 rounded-full p-0! text-[10px] hover:opacity-100',\n today ? 'bg-ds-accent! text-ds-on-accent! font-bold' : '',\n !today && selected ? 'bg-ds-surface-3! text-ds-1! font-medium' : '',\n !today && !selected && isCurrentMonth ? 'text-ds-2 hover:bg-ds-surface-3' : '',\n !today && !selected && !isCurrentMonth ? 'text-ds-3 opacity-50' : '',\n )}\n >\n {day.getDate()}\n </Button>\n );\n })}\n </div>\n </div>\n );\n};\n","export type CalendarView = 'month' | 'week' | 'day' | 'list';\nexport type EventLabel = 'personal' | 'business' | 'family' | 'holiday' | 'etc';\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n start: Date;\n end: Date;\n allDay: boolean;\n label: EventLabel;\n url?: string;\n guests?: string;\n location?: string;\n description?: string;\n}\n\nexport interface EventCalendarProps {\n initialEvents?: CalendarEvent[];\n initialView?: CalendarView;\n initialDate?: Date;\n onEventAdd?: (event: CalendarEvent) => void;\n onEventUpdate?: (event: CalendarEvent) => void;\n onEventDelete?: (id: string) => void;\n className?: string;\n}\n\nexport const EVENT_LABEL_CONFIG = {\n personal: { display: 'Personal', color: 'var(--ds-color-danger)', bg: 'var(--ds-color-danger-subtle)' },\n business: { display: 'Business', color: 'var(--ds-color-accent)', bg: 'var(--ds-color-accent-subtle)' },\n family: { display: 'Family', color: 'var(--ds-color-warning)', bg: 'var(--ds-color-warning-subtle)' },\n holiday: { display: 'Holiday', color: 'var(--ds-color-success)', bg: 'var(--ds-color-success-subtle)' },\n etc: { display: 'ETC', color: 'var(--ds-color-info)', bg: 'var(--ds-color-info-subtle)' },\n} as const;\n\nexport const ALL_LABELS: EventLabel[] = ['personal', 'business', 'family', 'holiday', 'etc'];\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Checkbox } from '../../forms/checkbox';\n\nimport { EVENT_LABEL_CONFIG, ALL_LABELS } from './types';\nimport type { EventLabel } from './types';\n\ninterface EventFilterListProps {\n activeLabels: EventLabel[];\n onChange: (labels: EventLabel[]) => void;\n}\n\nconst LABEL_COLOR: Record<EventLabel, string> = {\n personal: 'red',\n business: 'primary',\n family: 'yellow',\n holiday: 'green',\n etc: 'teal',\n};\n\nexport const EventFilterList: FC<EventFilterListProps> = ({ activeLabels, onChange }) => {\n const allActive = activeLabels.length === ALL_LABELS.length;\n\n const toggleAll = () => {\n onChange(allActive ? [] : [...ALL_LABELS]);\n };\n\n const toggleLabel = (label: EventLabel) => {\n if (activeLabels.includes(label)) {\n onChange(activeLabels.filter((l) => l !== label));\n } else {\n onChange([...activeLabels, label]);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-2.5\">\n <Checkbox\n checked={allActive}\n onChange={toggleAll}\n label=\"View all\"\n color=\"primary\"\n />\n {ALL_LABELS.map((label) => {\n const cfg = EVENT_LABEL_CONFIG[label];\n return (\n <Checkbox\n key={label}\n checked={activeLabels.includes(label)}\n onChange={() => toggleLabel(label)}\n label={cfg.display}\n color={LABEL_COLOR[label]}\n />\n );\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../forms/button';\n\nimport { MiniCalendarPicker } from './MiniCalendarPicker';\nimport { EventFilterList } from './EventFilterList';\nimport type { EventLabel } from './types';\n\nexport interface CalendarSidebarProps {\n currentDate: Date;\n onDateChange: (d: Date) => void;\n onMonthChange: (d: Date) => void;\n activeLabels: EventLabel[];\n onFiltersChange: (labels: EventLabel[]) => void;\n onAddEvent: () => void;\n}\n\nexport const CalendarSidebarContent: FC<CalendarSidebarProps> = ({\n currentDate,\n onDateChange,\n onMonthChange,\n activeLabels,\n onFiltersChange,\n onAddEvent,\n}) => (\n <div className=\"flex flex-col gap-5\">\n <Button\n variant=\"primary\"\n className=\"w-full\"\n onClick={onAddEvent}\n aria-label=\"Add new event\"\n >\n + Add Event\n </Button>\n\n <MiniCalendarPicker\n currentDate={currentDate}\n onDateChange={onDateChange}\n onMonthChange={onMonthChange}\n />\n\n <div>\n <h3 className=\"mb-3 text-xs font-semibold uppercase tracking-wider text-ds-3\">\n Event Filters\n </h3>\n <EventFilterList activeLabels={activeLabels} onChange={onFiltersChange} />\n </div>\n </div>\n);\n\nexport const CalendarSidebar: FC<CalendarSidebarProps> = (props) => (\n <aside className=\"hidden w-[280px] shrink-0 flex-col border-e border-ds-border-3 bg-ds-surface-1 p-4 lg:flex\">\n <CalendarSidebarContent {...props} />\n </aside>\n);\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../forms/button';\nimport { mergeClassNames } from '../../../utils';\n\nimport {\n formatMonthYear,\n formatWeekRange,\n formatDayFull,\n} from './calendarUtils';\nimport type { CalendarView } from './types';\n\ninterface CalendarHeaderProps {\n view: CalendarView;\n currentDate: Date;\n onPrev: () => void;\n onNext: () => void;\n onViewChange: (v: CalendarView) => void;\n onSidebarToggle?: () => void;\n}\n\nconst VIEWS: { value: CalendarView; label: string }[] = [\n { value: 'month', label: 'Month' },\n { value: 'week', label: 'Week' },\n { value: 'day', label: 'Day' },\n { value: 'list', label: 'List' },\n];\n\nfunction getTitle(view: CalendarView, date: Date): string {\n if (view === 'month' || view === 'list') return formatMonthYear(date);\n if (view === 'week') return formatWeekRange(date);\n return formatDayFull(date);\n}\n\nconst ChevronLeft = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n);\n\nconst MenuIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n);\n\nexport const CalendarHeader: FC<CalendarHeaderProps> = ({\n view,\n currentDate,\n onPrev,\n onNext,\n onViewChange,\n onSidebarToggle,\n}) => (\n <header className=\"flex items-center justify-between border-b border-ds-border-3 bg-ds-surface-1 px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n {onSidebarToggle && (\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"h-8 w-8 p-0! hover:opacity-100 lg:hidden\"\n aria-label=\"Toggle calendar sidebar\"\n onClick={onSidebarToggle}\n >\n <MenuIcon />\n </Button>\n )}\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"h-8 w-8 p-0! hover:opacity-100\"\n aria-label=\"Previous period\"\n onClick={onPrev}\n >\n <ChevronLeft />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"h-8 w-8 p-0! hover:opacity-100\"\n aria-label=\"Next period\"\n onClick={onNext}\n >\n <ChevronRight />\n </Button>\n <h2 className=\"ms-1 text-base font-semibold text-ds-1\">\n {getTitle(view, currentDate)}\n </h2>\n </div>\n\n <div className=\"flex rounded-lg border border-ds-border-2 bg-ds-surface-2 p-0.5\" role=\"tablist\" aria-label=\"Calendar view\">\n {VIEWS.map(({ value, label }) => (\n <Button\n key={value}\n variant=\"tertiary\"\n size=\"small\"\n role=\"tab\"\n aria-selected={view === value}\n onClick={() => onViewChange(value)}\n className={mergeClassNames(\n 'rounded-md px-3 py-1.5 text-xs font-medium hover:opacity-100',\n view === value\n ? 'bg-ds-surface-1 text-ds-1 shadow-1'\n : 'text-ds-3 hover:text-ds-2',\n )}\n >\n {label}\n </Button>\n ))}\n </div>\n </header>\n);\n","\"use client\";\n\nimport type { FC, KeyboardEvent } from 'react';\n\nimport { Tooltip } from '../../overlays/tooltip/Tooltip';\nimport { TruncatedText } from '../../typography/truncated-text/TruncatedText';\n\nimport { formatDayFull, formatTime } from './calendarUtils';\nimport { EVENT_LABEL_CONFIG } from './types';\nimport type { CalendarEvent } from './types';\n\ninterface EventPillProps {\n event: CalendarEvent;\n compact?: boolean;\n onDoubleClick?: (event: CalendarEvent) => void;\n}\n\nexport const EventPill: FC<EventPillProps> = ({ event, compact = false, onDoubleClick }) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n const timeStr = event.allDay\n ? 'All day'\n : `${formatTime(event.start)} – ${formatTime(event.end)}`;\n\n const tooltipContent = (\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"font-semibold leading-snug text-ds-1\">{event.title}</span>\n <div className=\"flex items-center gap-1.5\">\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: cfg.color }}\n aria-hidden=\"true\"\n />\n <span className=\"text-xs text-ds-2\">{cfg.display}</span>\n </div>\n <span className=\"text-xs text-ds-3\">{formatDayFull(event.start)}</span>\n <span className=\"text-xs text-ds-3\">{timeStr}</span>\n {event.location && <span className=\"text-xs text-ds-3\">{event.location}</span>}\n </div>\n );\n\n return (\n <Tooltip content={tooltipContent} position=\"top\" delayShow={500} wrapperClassName=\"w-full min-w-0\">\n <div\n className={`w-full min-w-0 cursor-pointer select-none rounded font-medium leading-none ${\n compact ? 'px-1.5 py-1 text-[11px]' : 'px-2 py-1.5 text-xs'\n }`}\n style={{ backgroundColor: cfg.bg, color: cfg.color }}\n role=\"button\"\n tabIndex={0}\n aria-label={`${event.title} – ${cfg.display}`}\n onClick={(e) => e.stopPropagation()}\n onDoubleClick={(e) => {\n e.stopPropagation();\n onDoubleClick?.(event);\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter') onDoubleClick?.(event);\n }}\n >\n <TruncatedText showTitleOnHover={false}>{event.title}</TruncatedText>\n </div>\n </Tooltip>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../../forms/button';\nimport { mergeClassNames } from '../../../../utils';\n\nimport { getMonthGridDays, getEventsForDay, isToday } from '../calendarUtils';\nimport { EventPill } from '../EventPill';\nimport type { CalendarEvent } from '../types';\n\ninterface MonthViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onDayClick: (d: Date) => void;\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nconst DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nexport const MonthView: FC<MonthViewProps> = ({ currentDate, events, onDayClick, onEventDoubleClick }) => {\n const days = getMonthGridDays(currentDate);\n const currentMonth = currentDate.getMonth();\n\n return (\n <div className=\"flex flex-1 flex-col overflow-auto\">\n <div className=\"grid grid-cols-7 border-b border-ds-border-3\">\n {DAY_NAMES.map((name) => (\n <div\n key={name}\n className=\"py-2 text-center text-xs font-medium uppercase tracking-wide text-ds-3\"\n >\n {name}\n </div>\n ))}\n </div>\n\n <div className=\"grid flex-1 grid-cols-7 grid-rows-6\">\n {days.map((day, i) => {\n const inMonth = day.getMonth() === currentMonth;\n const today = isToday(day);\n const dayEvents = getEventsForDay(events, day);\n const visible = dayEvents.slice(0, 2);\n const overflow = dayEvents.length - visible.length;\n\n return (\n <Button\n key={i}\n variant=\"tertiary\"\n aria-label={day.toDateString()}\n onClick={() => onDayClick(day)}\n className={mergeClassNames(\n 'flex flex-col items-start gap-1 rounded-none border-b border-e border-ds-border-3 p-1.5 text-start hover:bg-ds-surface-2 hover:opacity-100',\n today ? 'bg-ds-surface-2' : '',\n )}\n >\n <span\n className={mergeClassNames(\n 'self-end flex h-6 w-6 items-center justify-center rounded-full text-xs font-medium leading-none',\n today\n ? 'bg-ds-accent text-ds-on-accent font-bold'\n : inMonth\n ? 'text-ds-2'\n : 'text-ds-3 opacity-50',\n )}\n >\n {day.getDate()}\n </span>\n\n <div className=\"flex w-full min-h-0 flex-col gap-0.5\">\n {visible.map((event) => (\n <EventPill key={event.id} event={event} compact onDoubleClick={onEventDoubleClick} />\n ))}\n {overflow > 0 && (\n <span className=\"px-1 text-[10px] text-ds-3\">+{overflow} more</span>\n )}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { mergeClassNames } from '../../../../utils';\n\nimport {\n getWeekDays,\n getEventsForDay,\n isSameDay,\n isToday,\n formatShortDate,\n formatHour,\n getEventTopPx,\n getEventHeightPx,\n GRID_START_HOUR,\n GRID_END_HOUR,\n HOUR_HEIGHT_PX,\n} from '../calendarUtils';\nimport { EventPill } from '../EventPill';\nimport { EVENT_LABEL_CONFIG } from '../types';\nimport type { CalendarEvent } from '../types';\n\ninterface WeekViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nconst HOURS = Array.from({ length: GRID_END_HOUR - GRID_START_HOUR }, (_, i) => GRID_START_HOUR + i);\nconst DAY_ABBR = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nexport const WeekView: FC<WeekViewProps> = ({ currentDate, events, onEventDoubleClick }) => {\n const weekDays = getWeekDays(currentDate);\n\n return (\n <div className=\"flex flex-col flex-1 overflow-hidden\">\n {/* Column headers */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px repeat(7, 1fr)' }}>\n <div className=\"border-e border-ds-border-3\" />\n {weekDays.map((day) => {\n const today = isToday(day);\n return (\n <div\n key={day.toISOString()}\n className={mergeClassNames(\n 'flex flex-col items-center py-2 text-xs font-medium border-e border-ds-border-3 last:border-e-0',\n today ? 'bg-ds-accent-subtle/30 text-ds-accent' : 'text-ds-3',\n )}\n >\n <span>{DAY_ABBR[day.getDay()]}</span>\n <span className={mergeClassNames(\n 'mt-0.5 flex h-6 w-6 items-center justify-center rounded-full font-semibold',\n today ? 'bg-ds-accent text-ds-on-accent' : 'text-ds-2',\n )}>\n {formatShortDate(day).split('/')[1]}\n </span>\n </div>\n );\n })}\n </div>\n\n {/* All-Day row */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px repeat(7, 1fr)', minHeight: 40 }}>\n <div className=\"flex items-center justify-end pe-2 text-[10px] text-ds-3 border-e border-ds-border-3\">All-day</div>\n {weekDays.map((day) => {\n const allDayEvents = getEventsForDay(events, day).filter((e) => e.allDay);\n return (\n <div key={day.toISOString()} className=\"flex flex-col gap-0.5 p-0.5 border-e border-ds-border-3 last:border-e-0\">\n {allDayEvents.map((e) => <EventPill key={e.id} event={e} compact onDoubleClick={onEventDoubleClick} />)}\n </div>\n );\n })}\n </div>\n\n {/* Time grid */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"grid relative\" style={{ gridTemplateColumns: '56px repeat(7, 1fr)', height: HOURS.length * HOUR_HEIGHT_PX }}>\n {/* Hour labels */}\n <div className=\"relative border-e border-ds-border-3\">\n {HOURS.map((h) => (\n <div key={h} className=\"absolute w-full flex justify-end pe-2\" style={{ top: (h - GRID_START_HOUR) * HOUR_HEIGHT_PX - 8 }}>\n <span className=\"text-[10px] text-ds-3\">{formatHour(h)}</span>\n </div>\n ))}\n </div>\n\n {/* Day columns */}\n {weekDays.map((day) => {\n const today = isToday(day);\n const timedEvents = getEventsForDay(events, day).filter((e) => !e.allDay);\n return (\n <div\n key={day.toISOString()}\n className={mergeClassNames(\n 'relative border-e border-ds-border-3 last:border-e-0',\n today ? 'bg-ds-accent-subtle/20' : '',\n )}\n >\n {HOURS.map((h) => (\n <div\n key={h}\n className=\"border-t border-ds-border-3/50\"\n style={{ height: HOUR_HEIGHT_PX }}\n />\n ))}\n {timedEvents.map((event) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n return (\n <div\n key={event.id}\n className=\"absolute inset-x-0.5 cursor-pointer overflow-hidden rounded px-1.5 py-1 text-xs font-medium leading-tight select-none\"\n style={{\n top: getEventTopPx(event),\n height: getEventHeightPx(event),\n backgroundColor: cfg.bg,\n color: cfg.color,\n }}\n title={event.title}\n onDoubleClick={() => onEventDoubleClick?.(event)}\n >\n {event.title}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { getEventsForDay, formatHour, getEventTopPx, getEventHeightPx, GRID_START_HOUR, GRID_END_HOUR, HOUR_HEIGHT_PX } from '../calendarUtils';\nimport { EVENT_LABEL_CONFIG } from '../types';\nimport type { CalendarEvent } from '../types';\n\ninterface DayViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nconst HOURS = Array.from({ length: GRID_END_HOUR - GRID_START_HOUR }, (_, i) => GRID_START_HOUR + i);\n\nexport const DayView: FC<DayViewProps> = ({ currentDate, events, onEventDoubleClick }) => {\n const dayName = currentDate.toLocaleDateString('en-US', { weekday: 'long' });\n const allDayEvents = getEventsForDay(events, currentDate).filter((e) => e.allDay);\n const timedEvents = getEventsForDay(events, currentDate).filter((e) => !e.allDay);\n\n return (\n <div className=\"flex flex-col flex-1 overflow-hidden\">\n {/* Column header */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px 1fr' }}>\n <div className=\"border-e border-ds-border-3\" />\n <div className=\"flex flex-col items-center py-2 text-xs font-medium text-ds-accent bg-ds-accent-subtle/30\">\n <span>{dayName}</span>\n <span className=\"mt-0.5 flex h-6 w-6 items-center justify-center rounded-full bg-ds-accent text-ds-on-accent font-semibold\">\n {currentDate.getDate()}\n </span>\n </div>\n </div>\n\n {/* All-Day row */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px 1fr', minHeight: 40 }}>\n <div className=\"flex items-center justify-end pe-2 text-[10px] text-ds-3 border-e border-ds-border-3\">\n All-day\n </div>\n <div className=\"flex flex-col gap-0.5 p-1\">\n {allDayEvents.map((e) => (\n <div\n key={e.id}\n className=\"cursor-pointer truncate rounded px-2 py-1 text-xs font-medium select-none\"\n style={{ backgroundColor: EVENT_LABEL_CONFIG[e.label].bg, color: EVENT_LABEL_CONFIG[e.label].color }}\n title={e.title}\n onDoubleClick={() => onEventDoubleClick?.(e)}\n >\n {e.title}\n </div>\n ))}\n </div>\n </div>\n\n {/* Time grid */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"grid relative\" style={{ gridTemplateColumns: '56px 1fr', height: HOURS.length * HOUR_HEIGHT_PX }}>\n {/* Hour labels */}\n <div className=\"relative border-e border-ds-border-3\">\n {HOURS.map((h) => (\n <div key={h} className=\"absolute w-full flex justify-end pe-2\" style={{ top: (h - GRID_START_HOUR) * HOUR_HEIGHT_PX - 8 }}>\n <span className=\"text-[10px] text-ds-3\">{formatHour(h)}</span>\n </div>\n ))}\n </div>\n\n {/* Day column */}\n <div className=\"relative bg-ds-accent-subtle/20\">\n {HOURS.map((h) => (\n <div key={h} className=\"border-t border-ds-border-3/50\" style={{ height: HOUR_HEIGHT_PX }} />\n ))}\n {timedEvents.map((event) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n return (\n <div\n key={event.id}\n className=\"absolute inset-x-1 cursor-pointer overflow-hidden rounded px-2 py-1 text-xs font-medium leading-tight select-none\"\n style={{\n top: getEventTopPx(event),\n height: getEventHeightPx(event),\n backgroundColor: cfg.bg,\n color: cfg.color,\n }}\n title={event.title}\n onDoubleClick={() => onEventDoubleClick?.(event)}\n >\n {event.title}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport {\n startOfMonth,\n endOfMonth,\n isSameDay,\n formatListDate,\n formatListDayName,\n formatTime,\n} from '../calendarUtils';\nimport { EVENT_LABEL_CONFIG } from '../types';\nimport type { CalendarEvent } from '../types';\n\ninterface ListViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nexport const ListView: FC<ListViewProps> = ({ currentDate, events, onEventDoubleClick }) => {\n const monthStart = startOfMonth(currentDate);\n const monthEnd = endOfMonth(currentDate);\n\n const monthEvents = events\n .filter((e) => e.start <= monthEnd && e.end >= monthStart)\n .sort((a, b) => a.start.getTime() - b.start.getTime());\n\n // Group by day\n const groups: { day: Date; events: CalendarEvent[] }[] = [];\n for (const event of monthEvents) {\n const existing = groups.find((g) => isSameDay(g.day, event.start));\n if (existing) {\n existing.events.push(event);\n } else {\n groups.push({ day: event.start, events: [event] });\n }\n }\n\n if (groups.length === 0) {\n return (\n <div className=\"flex flex-1 items-center justify-center text-sm text-ds-3\">\n No events this month\n </div>\n );\n }\n\n return (\n <div className=\"flex-1 overflow-y-auto\">\n {groups.map(({ day, events: dayEvents }) => (\n <div key={day.toISOString()}>\n {/* Date header */}\n <div className=\"flex items-center justify-between bg-ds-surface-2 px-4 py-2 border-b border-ds-border-3\">\n <span className=\"text-sm font-semibold text-ds-1\">{formatListDate(day)}</span>\n <span className=\"text-xs font-medium text-ds-3\">{formatListDayName(day)}</span>\n </div>\n\n {/* Events */}\n {dayEvents.map((event) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n const timeLabel = event.allDay\n ? 'all-day'\n : `${formatTime(event.start)}–${formatTime(event.end)}`;\n return (\n <div\n key={event.id}\n className=\"flex cursor-pointer select-none items-center gap-3 border-b border-ds-border-3 px-4 py-3 transition-colors hover:bg-ds-surface-2\"\n onDoubleClick={() => onEventDoubleClick?.(event)}\n title=\"Double-click to view details\"\n >\n <span className=\"w-28 shrink-0 text-xs text-ds-3\">{timeLabel}</span>\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: cfg.color }}\n aria-hidden=\"true\"\n />\n <span className=\"truncate text-sm text-ds-1\">{event.title}</span>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n","\"use client\";\n\nimport { type FC, useEffect, useState } from 'react';\n\nimport { Button } from '../../forms/button';\nimport { Input } from '../../forms/input';\nimport { Select } from '../../forms/select';\nimport { Switch } from '../../forms/switch';\nimport { Textarea } from '../../forms/textarea';\nimport { Drawer } from '../../overlays/drawer/Drawer';\n\nimport { generateId } from './calendarUtils';\nimport { EVENT_LABEL_CONFIG, ALL_LABELS } from './types';\nimport type { CalendarEvent, EventLabel } from './types';\n\ninterface AddEventPanelProps {\n isOpen: boolean;\n onClose: () => void;\n onSubmit: (event: CalendarEvent) => void;\n initialDate?: Date;\n}\n\nfunction toDateInput(d: Date): string {\n return d.toISOString().split('T')[0] ?? '';\n}\n\nconst labelOptions = ALL_LABELS.map((l) => ({\n value: l,\n label: EVENT_LABEL_CONFIG[l].display,\n}));\n\nexport const AddEventPanel: FC<AddEventPanelProps> = ({ isOpen, onClose, onSubmit, initialDate }) => {\n const [title, setTitle] = useState('');\n const [label, setLabel] = useState<EventLabel>('personal');\n const [startDate, setStartDate] = useState('');\n const [endDate, setEndDate] = useState('');\n const [allDay, setAllDay] = useState(true);\n const [url, setUrl] = useState('');\n const [guests, setGuests] = useState('');\n const [location, setLocation] = useState('');\n const [description, setDescription] = useState('');\n\n useEffect(() => {\n if (isOpen) {\n const today = initialDate ?? new Date();\n setTitle('');\n setLabel('personal');\n setStartDate(toDateInput(today));\n setEndDate(toDateInput(today));\n setAllDay(true);\n setUrl('');\n setGuests('');\n setLocation('');\n setDescription('');\n }\n }, [isOpen, initialDate]);\n\n const handleSubmit = () => {\n if (!title.trim()) return;\n const start = new Date(startDate);\n const end = new Date(endDate);\n end.setHours(23, 59, 59, 999);\n const event: CalendarEvent = {\n id: generateId(),\n title: title.trim(),\n start,\n end,\n allDay,\n label,\n url: url.trim() || undefined,\n guests: guests.trim() || undefined,\n location: location.trim() || undefined,\n description: description.trim() || undefined,\n };\n onSubmit(event);\n };\n\n return (\n <Drawer\n open={isOpen}\n onOpenChange={(o) => { if (!o) onClose(); }}\n title=\"Add Event\"\n position=\"right\"\n footer={\n <div className=\"flex gap-2\">\n <Button variant=\"primary\" className=\"flex-1\" onClick={handleSubmit} disabled={!title.trim()}>\n Submit\n </Button>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n </div>\n }\n >\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Title</label>\n <Input placeholder=\"Meeting with Jane\" value={title} onChange={(e) => setTitle(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Label</label>\n <Select\n options={labelOptions}\n value={label}\n onChange={(e) => setLabel(e.target.value as EventLabel)}\n placeholder=\"Select Event Label\"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Start date</label>\n <Input type=\"date\" value={startDate} onChange={(e) => setStartDate(e.target.value)} />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">End date</label>\n <Input type=\"date\" value={endDate} onChange={(e) => setEndDate(e.target.value)} />\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium text-ds-2\">All day</span>\n <Switch checked={allDay} onChange={(e) => setAllDay(e.target.checked)} aria-label=\"All day event\" />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Event URL</label>\n <Input placeholder=\"https://event.com/meeting\" value={url} onChange={(e) => setUrl(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Guests</label>\n <Input placeholder=\"Select guests\" value={guests} onChange={(e) => setGuests(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Location</label>\n <Input placeholder=\"Meeting room\" value={location} onChange={(e) => setLocation(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Description</label>\n <Textarea\n placeholder=\"Add description\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n className=\"h-24 resize-none\"\n />\n </div>\n </div>\n </Drawer>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Drawer } from '../../overlays/drawer/Drawer';\n\nimport { formatDayFull, formatTime } from './calendarUtils';\nimport { EVENT_LABEL_CONFIG } from './types';\nimport type { CalendarEvent } from './types';\n\ninterface EventDetailDrawerProps {\n event: CalendarEvent | null;\n open: boolean;\n onClose: () => void;\n}\n\nexport const EventDetailDrawer: FC<EventDetailDrawerProps> = ({ event, open, onClose }) => {\n if (!event) return null;\n const cfg = EVENT_LABEL_CONFIG[event.label];\n const timeStr = event.allDay\n ? 'All day'\n : `${formatTime(event.start)} – ${formatTime(event.end)}`;\n\n return (\n <Drawer\n open={open}\n onOpenChange={(o) => { if (!o) onClose(); }}\n title={event.title}\n position=\"right\"\n >\n <div className=\"flex flex-col gap-5\">\n <span\n className=\"inline-flex w-fit items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold\"\n style={{ backgroundColor: cfg.bg, color: cfg.color }}\n >\n <span className=\"h-1.5 w-1.5 rounded-full\" style={{ backgroundColor: cfg.color }} aria-hidden=\"true\" />\n {cfg.display}\n </span>\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Date</p>\n <p className=\"text-sm text-ds-1\">{formatDayFull(event.start)}</p>\n </div>\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Time</p>\n <p className=\"text-sm text-ds-1\">{timeStr}</p>\n </div>\n\n {event.location && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Location</p>\n <p className=\"text-sm text-ds-1\">{event.location}</p>\n </div>\n )}\n\n {event.guests && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Guests</p>\n <p className=\"text-sm text-ds-1\">{event.guests}</p>\n </div>\n )}\n\n {event.url && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Event URL</p>\n <p className=\"break-all text-sm text-ds-accent\">{event.url}</p>\n </div>\n )}\n\n {event.description && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Description</p>\n <p className=\"text-sm leading-relaxed text-ds-2\">{event.description}</p>\n </div>\n )}\n </div>\n </Drawer>\n );\n};\n","\"use client\";\n\nimport { useState } from 'react';\n\nimport { Drawer } from '../../overlays/drawer/Drawer';\nimport { mergeClassNames } from '../../../utils';\n\nimport { addDays, addMonths, addWeeks } from './calendarUtils';\nimport { CalendarSidebar, CalendarSidebarContent } from './CalendarSidebar';\nimport { CalendarHeader } from './CalendarHeader';\nimport { MonthView } from './views/MonthView';\nimport { WeekView } from './views/WeekView';\nimport { DayView } from './views/DayView';\nimport { ListView } from './views/ListView';\nimport { AddEventPanel } from './AddEventPanel';\nimport { EventDetailDrawer } from './EventDetailDrawer';\nimport { ALL_LABELS } from './types';\nimport type { CalendarEvent, CalendarView, EventLabel, EventCalendarProps } from './types';\n\nexport const EventCalendar = ({\n initialEvents = [],\n initialView = 'month',\n initialDate,\n onEventAdd,\n className,\n}: EventCalendarProps) => {\n const [view, setView] = useState<CalendarView>(initialView);\n const [currentDate, setCurrentDate] = useState<Date>(initialDate ?? new Date());\n const [events, setEvents] = useState<CalendarEvent[]>(initialEvents);\n const [activeLabels, setActiveLabels] = useState<EventLabel[]>([...ALL_LABELS]);\n const [isAddPanelOpen, setIsAddPanelOpen] = useState(false);\n const [isSidebarDrawerOpen, setIsSidebarDrawerOpen] = useState(false);\n const [selectedEvent, setSelectedEvent] = useState<CalendarEvent | null>(null);\n const [isEventDrawerOpen, setIsEventDrawerOpen] = useState(false);\n\n const handlePrev = () => {\n if (view === 'month' || view === 'list') setCurrentDate((d) => addMonths(d, -1));\n else if (view === 'week') setCurrentDate((d) => addWeeks(d, -1));\n else setCurrentDate((d) => addDays(d, -1));\n };\n\n const handleNext = () => {\n if (view === 'month' || view === 'list') setCurrentDate((d) => addMonths(d, 1));\n else if (view === 'week') setCurrentDate((d) => addWeeks(d, 1));\n else setCurrentDate((d) => addDays(d, 1));\n };\n\n const handleEventSubmit = (event: CalendarEvent) => {\n setEvents((prev) => [...prev, event]);\n onEventAdd?.(event);\n setIsAddPanelOpen(false);\n };\n\n const handleEventDoubleClick = (event: CalendarEvent) => {\n setSelectedEvent(event);\n setIsEventDrawerOpen(true);\n };\n\n const filteredEvents = events.filter((e) => activeLabels.includes(e.label));\n\n const handleDayClick = (day: Date) => {\n setCurrentDate(day);\n setView('day');\n };\n\n const sidebarProps = {\n currentDate,\n onDateChange: (d: Date) => setCurrentDate(d),\n onMonthChange: (d: Date) => setCurrentDate(d),\n activeLabels,\n onFiltersChange: setActiveLabels,\n onAddEvent: () => {\n setIsSidebarDrawerOpen(false);\n setIsAddPanelOpen(true);\n },\n };\n\n return (\n <div className={mergeClassNames('flex h-full overflow-hidden rounded-xl border border-ds-border-3 bg-ds-surface-1', className)}>\n {/* Inline sidebar — hidden on mobile, visible on lg+ */}\n <CalendarSidebar {...sidebarProps} />\n\n {/* Sidebar Drawer — mobile only */}\n <Drawer\n open={isSidebarDrawerOpen}\n onOpenChange={setIsSidebarDrawerOpen}\n title=\"Calendar\"\n position=\"left\"\n >\n <CalendarSidebarContent {...sidebarProps} />\n </Drawer>\n\n <main className=\"flex flex-1 flex-col overflow-hidden\">\n <CalendarHeader\n view={view}\n currentDate={currentDate}\n onPrev={handlePrev}\n onNext={handleNext}\n onViewChange={setView}\n onSidebarToggle={() => setIsSidebarDrawerOpen(true)}\n />\n\n {view === 'month' && (\n <MonthView\n currentDate={currentDate}\n events={filteredEvents}\n onDayClick={handleDayClick}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n {view === 'week' && (\n <WeekView\n currentDate={currentDate}\n events={filteredEvents}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n {view === 'day' && (\n <DayView\n currentDate={currentDate}\n events={filteredEvents}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n {view === 'list' && (\n <ListView\n currentDate={currentDate}\n events={filteredEvents}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n </main>\n\n <AddEventPanel\n isOpen={isAddPanelOpen}\n onClose={() => setIsAddPanelOpen(false)}\n onSubmit={handleEventSubmit}\n initialDate={currentDate}\n />\n\n <EventDetailDrawer\n event={selectedEvent}\n open={isEventDrawerOpen}\n onClose={() => setIsEventDrawerOpen(false)}\n />\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-calendar-CO2doGJW.mjs","names":[],"sources":["../../src/components/data-display/event-calendar/calendarUtils.ts","../../src/components/data-display/event-calendar/MiniCalendarPicker.tsx","../../src/components/data-display/event-calendar/types.ts","../../src/components/data-display/event-calendar/EventFilterList.tsx","../../src/components/data-display/event-calendar/CalendarSidebar.tsx","../../src/components/data-display/event-calendar/CalendarHeader.tsx","../../src/components/data-display/event-calendar/EventPill.tsx","../../src/components/data-display/event-calendar/views/MonthView.tsx","../../src/components/data-display/event-calendar/views/WeekView.tsx","../../src/components/data-display/event-calendar/views/DayView.tsx","../../src/components/data-display/event-calendar/views/ListView.tsx","../../src/components/data-display/event-calendar/AddEventPanel.tsx","../../src/components/data-display/event-calendar/EventDetailDrawer.tsx","../../src/components/data-display/event-calendar/EventCalendar.tsx"],"sourcesContent":["import type { CalendarEvent } from './types';\n\nexport const GRID_START_HOUR = 6;\nexport const GRID_END_HOUR = 22;\nexport const HOUR_HEIGHT_PX = 80;\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isToday(date: Date): boolean {\n return isSameDay(date, new Date());\n}\n\nexport function addDays(date: Date, n: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + n);\n return d;\n}\n\nexport function addMonths(date: Date, n: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + n);\n return d;\n}\n\nexport function addWeeks(date: Date, n: number): Date {\n return addDays(date, n * 7);\n}\n\nexport function startOfWeek(date: Date): Date {\n const d = new Date(date);\n d.setDate(d.getDate() - d.getDay());\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0, 23, 59, 59, 999);\n}\n\nexport function getMonthGridDays(date: Date): Date[] {\n const first = startOfMonth(date);\n const gridStart = startOfWeek(first);\n return Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));\n}\n\nexport function getWeekDays(date: Date): Date[] {\n const sunday = startOfWeek(date);\n return Array.from({ length: 7 }, (_, i) => addDays(sunday, i));\n}\n\nexport function getEventsForDay(events: CalendarEvent[], day: Date): CalendarEvent[] {\n const dayStart = new Date(day);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(day);\n dayEnd.setHours(23, 59, 59, 999);\n return events.filter((e) => e.start <= dayEnd && e.end >= dayStart);\n}\n\nexport function formatMonthYear(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n}\n\nexport function formatWeekRange(date: Date): string {\n const days = getWeekDays(date);\n const start = days[0]!;\n const end = days[6]!;\n const startStr = start.toLocaleDateString('en-US', { month: 'long', day: 'numeric' });\n const endStr =\n start.getMonth() === end.getMonth()\n ? end.getDate().toString()\n : end.toLocaleDateString('en-US', { month: 'long', day: 'numeric' });\n return `${startStr}–${endStr}, ${end.getFullYear()}`;\n}\n\nexport function formatDayFull(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\n}\n\nexport function formatShortDate(date: Date): string {\n return `${date.getMonth() + 1}/${date.getDate()}`;\n}\n\nexport function formatHour(h: number): string {\n if (h === 0) return '12AM';\n if (h === 12) return '12PM';\n return h < 12 ? `${h}AM` : `${h - 12}PM`;\n}\n\nexport function formatTime(date: Date): string {\n let h = date.getHours();\n const m = date.getMinutes();\n const ampm = h >= 12 ? 'pm' : 'am';\n h = h % 12 || 12;\n const mm = m.toString().padStart(2, '0');\n return `${h}:${mm}${ampm}`;\n}\n\nexport function formatListDate(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\n}\n\nexport function formatListDayName(date: Date): string {\n return date.toLocaleDateString('en-US', { weekday: 'long' });\n}\n\nexport function generateId(): string {\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n}\n\nexport function getEventTopPx(event: CalendarEvent): number {\n const startH = event.start.getHours() + event.start.getMinutes() / 60;\n return (startH - GRID_START_HOUR) * HOUR_HEIGHT_PX;\n}\n\nexport function getEventHeightPx(event: CalendarEvent): number {\n const startH = event.start.getHours() + event.start.getMinutes() / 60;\n const endH = event.end.getHours() + event.end.getMinutes() / 60;\n const clampedEnd = Math.min(endH, GRID_END_HOUR);\n const clampedStart = Math.max(startH, GRID_START_HOUR);\n return Math.max((clampedEnd - clampedStart) * HOUR_HEIGHT_PX, 20);\n}\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../forms/button';\nimport { mergeClassNames } from '../../../utils';\n\nimport { getMonthGridDays, isSameDay, isToday, addMonths } from './calendarUtils';\n\ninterface MiniCalendarPickerProps {\n currentDate: Date;\n onDateChange: (d: Date) => void;\n onMonthChange: (d: Date) => void;\n}\n\nconst DAY_CHARS = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n\nconst ChevronLeft = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n);\n\nexport const MiniCalendarPicker: FC<MiniCalendarPickerProps> = ({\n currentDate,\n onDateChange,\n onMonthChange,\n}) => {\n const days = getMonthGridDays(currentDate);\n const monthLabel = currentDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n\n return (\n <div className=\"select-none\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-xs font-semibold text-ds-1\">{monthLabel}</span>\n <div className=\"flex gap-0.5\">\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-6 w-6 p-0! hover:opacity-100\"\n aria-label=\"Previous month\"\n onClick={() => onMonthChange(addMonths(currentDate, -1))}\n >\n <ChevronLeft />\n </Button>\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-6 w-6 p-0! hover:opacity-100\"\n aria-label=\"Next month\"\n onClick={() => onMonthChange(addMonths(currentDate, 1))}\n >\n <ChevronRight />\n </Button>\n </div>\n </div>\n\n <div className=\"mb-1 grid grid-cols-7\">\n {DAY_CHARS.map((c, i) => (\n <div key={i} className=\"py-0.5 text-center text-[10px] font-medium text-ds-3\">\n {c}\n </div>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7 gap-y-0.5\">\n {days.map((day, i) => {\n const isCurrentMonth = day.getMonth() === currentDate.getMonth();\n const today = isToday(day);\n const selected = isSameDay(day, currentDate);\n return (\n <Button\n key={i}\n variant=\"tertiary\"\n aria-label={day.toDateString()}\n onClick={() => onDateChange(day)}\n className={mergeClassNames(\n 'mx-auto h-6 w-6 rounded-full p-0! text-[10px] hover:opacity-100',\n today ? 'bg-ds-accent! text-ds-on-accent! font-bold' : '',\n !today && selected ? 'bg-ds-surface-3! text-ds-1! font-medium' : '',\n !today && !selected && isCurrentMonth ? 'text-ds-2 hover:bg-ds-surface-3' : '',\n !today && !selected && !isCurrentMonth ? 'text-ds-3 opacity-50' : '',\n )}\n >\n {day.getDate()}\n </Button>\n );\n })}\n </div>\n </div>\n );\n};\n","export type CalendarView = 'month' | 'week' | 'day' | 'list';\nexport type EventLabel = 'personal' | 'business' | 'family' | 'holiday' | 'etc';\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n start: Date;\n end: Date;\n allDay: boolean;\n label: EventLabel;\n url?: string;\n guests?: string;\n location?: string;\n description?: string;\n}\n\nexport interface EventCalendarProps {\n initialEvents?: CalendarEvent[];\n initialView?: CalendarView;\n initialDate?: Date;\n onEventAdd?: (event: CalendarEvent) => void;\n onEventUpdate?: (event: CalendarEvent) => void;\n onEventDelete?: (id: string) => void;\n className?: string;\n}\n\nexport const EVENT_LABEL_CONFIG = {\n personal: { display: 'Personal', color: 'var(--ds-color-danger)', bg: 'var(--ds-color-danger-subtle)' },\n business: { display: 'Business', color: 'var(--ds-color-accent)', bg: 'var(--ds-color-accent-subtle)' },\n family: { display: 'Family', color: 'var(--ds-color-warning)', bg: 'var(--ds-color-warning-subtle)' },\n holiday: { display: 'Holiday', color: 'var(--ds-color-success)', bg: 'var(--ds-color-success-subtle)' },\n etc: { display: 'ETC', color: 'var(--ds-color-info)', bg: 'var(--ds-color-info-subtle)' },\n} as const;\n\nexport const ALL_LABELS: EventLabel[] = ['personal', 'business', 'family', 'holiday', 'etc'];\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Checkbox } from '../../forms/checkbox';\n\nimport { EVENT_LABEL_CONFIG, ALL_LABELS } from './types';\nimport type { EventLabel } from './types';\n\ninterface EventFilterListProps {\n activeLabels: EventLabel[];\n onChange: (labels: EventLabel[]) => void;\n}\n\nconst LABEL_COLOR: Record<EventLabel, string> = {\n personal: 'red',\n business: 'primary',\n family: 'yellow',\n holiday: 'green',\n etc: 'teal',\n};\n\nexport const EventFilterList: FC<EventFilterListProps> = ({ activeLabels, onChange }) => {\n const allActive = activeLabels.length === ALL_LABELS.length;\n\n const toggleAll = () => {\n onChange(allActive ? [] : [...ALL_LABELS]);\n };\n\n const toggleLabel = (label: EventLabel) => {\n if (activeLabels.includes(label)) {\n onChange(activeLabels.filter((l) => l !== label));\n } else {\n onChange([...activeLabels, label]);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-2.5\">\n <Checkbox\n checked={allActive}\n onChange={toggleAll}\n label=\"View all\"\n color=\"primary\"\n />\n {ALL_LABELS.map((label) => {\n const cfg = EVENT_LABEL_CONFIG[label];\n return (\n <Checkbox\n key={label}\n checked={activeLabels.includes(label)}\n onChange={() => toggleLabel(label)}\n label={cfg.display}\n color={LABEL_COLOR[label]}\n />\n );\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../forms/button';\n\nimport { MiniCalendarPicker } from './MiniCalendarPicker';\nimport { EventFilterList } from './EventFilterList';\nimport type { EventLabel } from './types';\n\nexport interface CalendarSidebarProps {\n currentDate: Date;\n onDateChange: (d: Date) => void;\n onMonthChange: (d: Date) => void;\n activeLabels: EventLabel[];\n onFiltersChange: (labels: EventLabel[]) => void;\n onAddEvent: () => void;\n}\n\nexport const CalendarSidebarContent: FC<CalendarSidebarProps> = ({\n currentDate,\n onDateChange,\n onMonthChange,\n activeLabels,\n onFiltersChange,\n onAddEvent,\n}) => (\n <div className=\"flex flex-col gap-5\">\n <Button\n variant=\"primary\"\n className=\"w-full\"\n onClick={onAddEvent}\n aria-label=\"Add new event\"\n >\n + Add Event\n </Button>\n\n <MiniCalendarPicker\n currentDate={currentDate}\n onDateChange={onDateChange}\n onMonthChange={onMonthChange}\n />\n\n <div>\n <h3 className=\"mb-3 text-xs font-semibold uppercase tracking-wider text-ds-3\">\n Event Filters\n </h3>\n <EventFilterList activeLabels={activeLabels} onChange={onFiltersChange} />\n </div>\n </div>\n);\n\nexport const CalendarSidebar: FC<CalendarSidebarProps> = (props) => (\n <aside className=\"hidden w-[280px] shrink-0 flex-col border-e border-ds-border-3 bg-ds-surface-1 p-4 lg:flex\">\n <CalendarSidebarContent {...props} />\n </aside>\n);\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../forms/button';\nimport { mergeClassNames } from '../../../utils';\n\nimport {\n formatMonthYear,\n formatWeekRange,\n formatDayFull,\n} from './calendarUtils';\nimport type { CalendarView } from './types';\n\ninterface CalendarHeaderProps {\n view: CalendarView;\n currentDate: Date;\n onPrev: () => void;\n onNext: () => void;\n onViewChange: (v: CalendarView) => void;\n onSidebarToggle?: () => void;\n}\n\nconst VIEWS: { value: CalendarView; label: string }[] = [\n { value: 'month', label: 'Month' },\n { value: 'week', label: 'Week' },\n { value: 'day', label: 'Day' },\n { value: 'list', label: 'List' },\n];\n\nfunction getTitle(view: CalendarView, date: Date): string {\n if (view === 'month' || view === 'list') return formatMonthYear(date);\n if (view === 'week') return formatWeekRange(date);\n return formatDayFull(date);\n}\n\nconst ChevronLeft = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n);\n\nconst MenuIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n);\n\nexport const CalendarHeader: FC<CalendarHeaderProps> = ({\n view,\n currentDate,\n onPrev,\n onNext,\n onViewChange,\n onSidebarToggle,\n}) => (\n <header className=\"flex items-center justify-between border-b border-ds-border-3 bg-ds-surface-1 px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n {onSidebarToggle && (\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"h-8 w-8 p-0! hover:opacity-100 lg:hidden\"\n aria-label=\"Toggle calendar sidebar\"\n onClick={onSidebarToggle}\n >\n <MenuIcon />\n </Button>\n )}\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"h-8 w-8 p-0! hover:opacity-100\"\n aria-label=\"Previous period\"\n onClick={onPrev}\n >\n <ChevronLeft />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"h-8 w-8 p-0! hover:opacity-100\"\n aria-label=\"Next period\"\n onClick={onNext}\n >\n <ChevronRight />\n </Button>\n <h2 className=\"ms-1 text-base font-semibold text-ds-1\">\n {getTitle(view, currentDate)}\n </h2>\n </div>\n\n <div className=\"flex rounded-lg border border-ds-border-2 bg-ds-surface-2 p-0.5\" role=\"tablist\" aria-label=\"Calendar view\">\n {VIEWS.map(({ value, label }) => (\n <Button\n key={value}\n variant=\"tertiary\"\n size=\"small\"\n role=\"tab\"\n aria-selected={view === value}\n onClick={() => onViewChange(value)}\n className={mergeClassNames(\n 'rounded-md px-3 py-1.5 text-xs font-medium hover:opacity-100',\n view === value\n ? 'bg-ds-surface-1 text-ds-1 shadow-1'\n : 'text-ds-3 hover:text-ds-2',\n )}\n >\n {label}\n </Button>\n ))}\n </div>\n </header>\n);\n","\"use client\";\n\nimport type { FC, KeyboardEvent } from 'react';\n\nimport { Tooltip } from '../../overlays/tooltip/Tooltip';\nimport { TruncatedText } from '../../typography/truncated-text/TruncatedText';\n\nimport { formatDayFull, formatTime } from './calendarUtils';\nimport { EVENT_LABEL_CONFIG } from './types';\nimport type { CalendarEvent } from './types';\n\ninterface EventPillProps {\n event: CalendarEvent;\n compact?: boolean;\n onDoubleClick?: (event: CalendarEvent) => void;\n}\n\nexport const EventPill: FC<EventPillProps> = ({ event, compact = false, onDoubleClick }) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n const timeStr = event.allDay\n ? 'All day'\n : `${formatTime(event.start)} – ${formatTime(event.end)}`;\n\n const tooltipContent = (\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"font-semibold leading-snug text-ds-1\">{event.title}</span>\n <div className=\"flex items-center gap-1.5\">\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: cfg.color }}\n aria-hidden=\"true\"\n />\n <span className=\"text-xs text-ds-2\">{cfg.display}</span>\n </div>\n <span className=\"text-xs text-ds-3\">{formatDayFull(event.start)}</span>\n <span className=\"text-xs text-ds-3\">{timeStr}</span>\n {event.location && <span className=\"text-xs text-ds-3\">{event.location}</span>}\n </div>\n );\n\n return (\n <Tooltip content={tooltipContent} position=\"top\" delayShow={500} wrapperClassName=\"w-full min-w-0\">\n <div\n className={`w-full min-w-0 cursor-pointer select-none rounded font-medium leading-none ${\n compact ? 'px-1.5 py-1 text-[11px]' : 'px-2 py-1.5 text-xs'\n }`}\n style={{ backgroundColor: cfg.bg, color: cfg.color }}\n role=\"button\"\n tabIndex={0}\n aria-label={`${event.title} – ${cfg.display}`}\n onClick={(e) => e.stopPropagation()}\n onDoubleClick={(e) => {\n e.stopPropagation();\n onDoubleClick?.(event);\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter') onDoubleClick?.(event);\n }}\n >\n <TruncatedText showTitleOnHover={false}>{event.title}</TruncatedText>\n </div>\n </Tooltip>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Button } from '../../../forms/button';\nimport { mergeClassNames } from '../../../../utils';\n\nimport { getMonthGridDays, getEventsForDay, isToday } from '../calendarUtils';\nimport { EventPill } from '../EventPill';\nimport type { CalendarEvent } from '../types';\n\ninterface MonthViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onDayClick: (d: Date) => void;\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nconst DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nexport const MonthView: FC<MonthViewProps> = ({ currentDate, events, onDayClick, onEventDoubleClick }) => {\n const days = getMonthGridDays(currentDate);\n const currentMonth = currentDate.getMonth();\n\n return (\n <div className=\"flex flex-1 flex-col overflow-auto\">\n <div className=\"grid grid-cols-7 border-b border-ds-border-3\">\n {DAY_NAMES.map((name) => (\n <div\n key={name}\n className=\"py-2 text-center text-xs font-medium uppercase tracking-wide text-ds-3\"\n >\n {name}\n </div>\n ))}\n </div>\n\n <div className=\"grid flex-1 grid-cols-7 grid-rows-6\">\n {days.map((day, i) => {\n const inMonth = day.getMonth() === currentMonth;\n const today = isToday(day);\n const dayEvents = getEventsForDay(events, day);\n const visible = dayEvents.slice(0, 2);\n const overflow = dayEvents.length - visible.length;\n\n return (\n <Button\n key={i}\n variant=\"tertiary\"\n aria-label={day.toDateString()}\n onClick={() => onDayClick(day)}\n className={mergeClassNames(\n 'flex flex-col items-start gap-1 rounded-none border-b border-e border-ds-border-3 p-1.5 text-start hover:bg-ds-surface-2 hover:opacity-100',\n today ? 'bg-ds-surface-2' : '',\n )}\n >\n <span\n className={mergeClassNames(\n 'self-end flex h-6 w-6 items-center justify-center rounded-full text-xs font-medium leading-none',\n today\n ? 'bg-ds-accent text-ds-on-accent font-bold'\n : inMonth\n ? 'text-ds-2'\n : 'text-ds-3 opacity-50',\n )}\n >\n {day.getDate()}\n </span>\n\n <div className=\"flex w-full min-h-0 flex-col gap-0.5\">\n {visible.map((event) => (\n <EventPill key={event.id} event={event} compact onDoubleClick={onEventDoubleClick} />\n ))}\n {overflow > 0 && (\n <span className=\"px-1 text-[10px] text-ds-3\">+{overflow} more</span>\n )}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { mergeClassNames } from '../../../../utils';\n\nimport {\n getWeekDays,\n getEventsForDay,\n isSameDay,\n isToday,\n formatShortDate,\n formatHour,\n getEventTopPx,\n getEventHeightPx,\n GRID_START_HOUR,\n GRID_END_HOUR,\n HOUR_HEIGHT_PX,\n} from '../calendarUtils';\nimport { EventPill } from '../EventPill';\nimport { EVENT_LABEL_CONFIG } from '../types';\nimport type { CalendarEvent } from '../types';\n\ninterface WeekViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nconst HOURS = Array.from({ length: GRID_END_HOUR - GRID_START_HOUR }, (_, i) => GRID_START_HOUR + i);\nconst DAY_ABBR = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nexport const WeekView: FC<WeekViewProps> = ({ currentDate, events, onEventDoubleClick }) => {\n const weekDays = getWeekDays(currentDate);\n\n return (\n <div className=\"flex flex-col flex-1 overflow-hidden\">\n {/* Column headers */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px repeat(7, 1fr)' }}>\n <div className=\"border-e border-ds-border-3\" />\n {weekDays.map((day) => {\n const today = isToday(day);\n return (\n <div\n key={day.toISOString()}\n className={mergeClassNames(\n 'flex flex-col items-center py-2 text-xs font-medium border-e border-ds-border-3 last:border-e-0',\n today ? 'bg-ds-accent-subtle/30 text-ds-accent' : 'text-ds-3',\n )}\n >\n <span>{DAY_ABBR[day.getDay()]}</span>\n <span className={mergeClassNames(\n 'mt-0.5 flex h-6 w-6 items-center justify-center rounded-full font-semibold',\n today ? 'bg-ds-accent text-ds-on-accent' : 'text-ds-2',\n )}>\n {formatShortDate(day).split('/')[1]}\n </span>\n </div>\n );\n })}\n </div>\n\n {/* All-Day row */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px repeat(7, 1fr)', minHeight: 40 }}>\n <div className=\"flex items-center justify-end pe-2 text-[10px] text-ds-3 border-e border-ds-border-3\">All-day</div>\n {weekDays.map((day) => {\n const allDayEvents = getEventsForDay(events, day).filter((e) => e.allDay);\n return (\n <div key={day.toISOString()} className=\"flex flex-col gap-0.5 p-0.5 border-e border-ds-border-3 last:border-e-0\">\n {allDayEvents.map((e) => <EventPill key={e.id} event={e} compact onDoubleClick={onEventDoubleClick} />)}\n </div>\n );\n })}\n </div>\n\n {/* Time grid */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"grid relative\" style={{ gridTemplateColumns: '56px repeat(7, 1fr)', height: HOURS.length * HOUR_HEIGHT_PX }}>\n {/* Hour labels */}\n <div className=\"relative border-e border-ds-border-3\">\n {HOURS.map((h) => (\n <div key={h} className=\"absolute w-full flex justify-end pe-2\" style={{ top: (h - GRID_START_HOUR) * HOUR_HEIGHT_PX - 8 }}>\n <span className=\"text-[10px] text-ds-3\">{formatHour(h)}</span>\n </div>\n ))}\n </div>\n\n {/* Day columns */}\n {weekDays.map((day) => {\n const today = isToday(day);\n const timedEvents = getEventsForDay(events, day).filter((e) => !e.allDay);\n return (\n <div\n key={day.toISOString()}\n className={mergeClassNames(\n 'relative border-e border-ds-border-3 last:border-e-0',\n today ? 'bg-ds-accent-subtle/20' : '',\n )}\n >\n {HOURS.map((h) => (\n <div\n key={h}\n className=\"border-t border-ds-border-3/50\"\n style={{ height: HOUR_HEIGHT_PX }}\n />\n ))}\n {timedEvents.map((event) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n return (\n <div\n key={event.id}\n className=\"absolute inset-x-0.5 cursor-pointer overflow-hidden rounded px-1.5 py-1 text-xs font-medium leading-tight select-none\"\n style={{\n top: getEventTopPx(event),\n height: getEventHeightPx(event),\n backgroundColor: cfg.bg,\n color: cfg.color,\n }}\n title={event.title}\n onDoubleClick={() => onEventDoubleClick?.(event)}\n >\n {event.title}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { getEventsForDay, formatHour, getEventTopPx, getEventHeightPx, GRID_START_HOUR, GRID_END_HOUR, HOUR_HEIGHT_PX } from '../calendarUtils';\nimport { EVENT_LABEL_CONFIG } from '../types';\nimport type { CalendarEvent } from '../types';\n\ninterface DayViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nconst HOURS = Array.from({ length: GRID_END_HOUR - GRID_START_HOUR }, (_, i) => GRID_START_HOUR + i);\n\nexport const DayView: FC<DayViewProps> = ({ currentDate, events, onEventDoubleClick }) => {\n const dayName = currentDate.toLocaleDateString('en-US', { weekday: 'long' });\n const allDayEvents = getEventsForDay(events, currentDate).filter((e) => e.allDay);\n const timedEvents = getEventsForDay(events, currentDate).filter((e) => !e.allDay);\n\n return (\n <div className=\"flex flex-col flex-1 overflow-hidden\">\n {/* Column header */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px 1fr' }}>\n <div className=\"border-e border-ds-border-3\" />\n <div className=\"flex flex-col items-center py-2 text-xs font-medium text-ds-accent bg-ds-accent-subtle/30\">\n <span>{dayName}</span>\n <span className=\"mt-0.5 flex h-6 w-6 items-center justify-center rounded-full bg-ds-accent text-ds-on-accent font-semibold\">\n {currentDate.getDate()}\n </span>\n </div>\n </div>\n\n {/* All-Day row */}\n <div className=\"grid border-b border-ds-border-3\" style={{ gridTemplateColumns: '56px 1fr', minHeight: 40 }}>\n <div className=\"flex items-center justify-end pe-2 text-[10px] text-ds-3 border-e border-ds-border-3\">\n All-day\n </div>\n <div className=\"flex flex-col gap-0.5 p-1\">\n {allDayEvents.map((e) => (\n <div\n key={e.id}\n className=\"cursor-pointer truncate rounded px-2 py-1 text-xs font-medium select-none\"\n style={{ backgroundColor: EVENT_LABEL_CONFIG[e.label].bg, color: EVENT_LABEL_CONFIG[e.label].color }}\n title={e.title}\n onDoubleClick={() => onEventDoubleClick?.(e)}\n >\n {e.title}\n </div>\n ))}\n </div>\n </div>\n\n {/* Time grid */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"grid relative\" style={{ gridTemplateColumns: '56px 1fr', height: HOURS.length * HOUR_HEIGHT_PX }}>\n {/* Hour labels */}\n <div className=\"relative border-e border-ds-border-3\">\n {HOURS.map((h) => (\n <div key={h} className=\"absolute w-full flex justify-end pe-2\" style={{ top: (h - GRID_START_HOUR) * HOUR_HEIGHT_PX - 8 }}>\n <span className=\"text-[10px] text-ds-3\">{formatHour(h)}</span>\n </div>\n ))}\n </div>\n\n {/* Day column */}\n <div className=\"relative bg-ds-accent-subtle/20\">\n {HOURS.map((h) => (\n <div key={h} className=\"border-t border-ds-border-3/50\" style={{ height: HOUR_HEIGHT_PX }} />\n ))}\n {timedEvents.map((event) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n return (\n <div\n key={event.id}\n className=\"absolute inset-x-1 cursor-pointer overflow-hidden rounded px-2 py-1 text-xs font-medium leading-tight select-none\"\n style={{\n top: getEventTopPx(event),\n height: getEventHeightPx(event),\n backgroundColor: cfg.bg,\n color: cfg.color,\n }}\n title={event.title}\n onDoubleClick={() => onEventDoubleClick?.(event)}\n >\n {event.title}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport {\n startOfMonth,\n endOfMonth,\n isSameDay,\n formatListDate,\n formatListDayName,\n formatTime,\n} from '../calendarUtils';\nimport { EVENT_LABEL_CONFIG } from '../types';\nimport type { CalendarEvent } from '../types';\n\ninterface ListViewProps {\n currentDate: Date;\n events: CalendarEvent[];\n onEventDoubleClick?: (event: CalendarEvent) => void;\n}\n\nexport const ListView: FC<ListViewProps> = ({ currentDate, events, onEventDoubleClick }) => {\n const monthStart = startOfMonth(currentDate);\n const monthEnd = endOfMonth(currentDate);\n\n const monthEvents = events\n .filter((e) => e.start <= monthEnd && e.end >= monthStart)\n .sort((a, b) => a.start.getTime() - b.start.getTime());\n\n // Group by day\n const groups: { day: Date; events: CalendarEvent[] }[] = [];\n for (const event of monthEvents) {\n const existing = groups.find((g) => isSameDay(g.day, event.start));\n if (existing) {\n existing.events.push(event);\n } else {\n groups.push({ day: event.start, events: [event] });\n }\n }\n\n if (groups.length === 0) {\n return (\n <div className=\"flex flex-1 items-center justify-center text-sm text-ds-3\">\n No events this month\n </div>\n );\n }\n\n return (\n <div className=\"flex-1 overflow-y-auto\">\n {groups.map(({ day, events: dayEvents }) => (\n <div key={day.toISOString()}>\n {/* Date header */}\n <div className=\"flex items-center justify-between bg-ds-surface-2 px-4 py-2 border-b border-ds-border-3\">\n <span className=\"text-sm font-semibold text-ds-1\">{formatListDate(day)}</span>\n <span className=\"text-xs font-medium text-ds-3\">{formatListDayName(day)}</span>\n </div>\n\n {/* Events */}\n {dayEvents.map((event) => {\n const cfg = EVENT_LABEL_CONFIG[event.label];\n const timeLabel = event.allDay\n ? 'all-day'\n : `${formatTime(event.start)}–${formatTime(event.end)}`;\n return (\n <div\n key={event.id}\n className=\"flex cursor-pointer select-none items-center gap-3 border-b border-ds-border-3 px-4 py-3 transition-colors hover:bg-ds-surface-2\"\n onDoubleClick={() => onEventDoubleClick?.(event)}\n title=\"Double-click to view details\"\n >\n <span className=\"w-28 shrink-0 text-xs text-ds-3\">{timeLabel}</span>\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: cfg.color }}\n aria-hidden=\"true\"\n />\n <span className=\"truncate text-sm text-ds-1\">{event.title}</span>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n","\"use client\";\n\nimport { type FC, useEffect, useState } from 'react';\n\nimport { Button } from '../../forms/button';\nimport { Input } from '../../forms/input';\nimport { Select } from '../../forms/select';\nimport { Switch } from '../../forms/switch';\nimport { Textarea } from '../../forms/textarea';\nimport { Drawer } from '../../overlays/drawer/Drawer';\n\nimport { generateId } from './calendarUtils';\nimport { EVENT_LABEL_CONFIG, ALL_LABELS } from './types';\nimport type { CalendarEvent, EventLabel } from './types';\n\ninterface AddEventPanelProps {\n isOpen: boolean;\n onClose: () => void;\n onSubmit: (event: CalendarEvent) => void;\n initialDate?: Date;\n}\n\nfunction toDateInput(d: Date): string {\n return d.toISOString().split('T')[0] ?? '';\n}\n\nconst labelOptions = ALL_LABELS.map((l) => ({\n value: l,\n label: EVENT_LABEL_CONFIG[l].display,\n}));\n\nexport const AddEventPanel: FC<AddEventPanelProps> = ({ isOpen, onClose, onSubmit, initialDate }) => {\n const [title, setTitle] = useState('');\n const [label, setLabel] = useState<EventLabel>('personal');\n const [startDate, setStartDate] = useState('');\n const [endDate, setEndDate] = useState('');\n const [allDay, setAllDay] = useState(true);\n const [url, setUrl] = useState('');\n const [guests, setGuests] = useState('');\n const [location, setLocation] = useState('');\n const [description, setDescription] = useState('');\n\n useEffect(() => {\n if (isOpen) {\n const today = initialDate ?? new Date();\n setTitle('');\n setLabel('personal');\n setStartDate(toDateInput(today));\n setEndDate(toDateInput(today));\n setAllDay(true);\n setUrl('');\n setGuests('');\n setLocation('');\n setDescription('');\n }\n }, [isOpen, initialDate]);\n\n const handleSubmit = () => {\n if (!title.trim()) return;\n const start = new Date(startDate);\n const end = new Date(endDate);\n end.setHours(23, 59, 59, 999);\n const event: CalendarEvent = {\n id: generateId(),\n title: title.trim(),\n start,\n end,\n allDay,\n label,\n url: url.trim() || undefined,\n guests: guests.trim() || undefined,\n location: location.trim() || undefined,\n description: description.trim() || undefined,\n };\n onSubmit(event);\n };\n\n return (\n <Drawer\n open={isOpen}\n onOpenChange={(o) => { if (!o) onClose(); }}\n title=\"Add Event\"\n position=\"right\"\n footer={\n <div className=\"flex gap-2\">\n <Button variant=\"primary\" className=\"flex-1\" onClick={handleSubmit} disabled={!title.trim()}>\n Submit\n </Button>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n </div>\n }\n >\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Title</label>\n <Input placeholder=\"Meeting with Jane\" value={title} onChange={(e) => setTitle(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Label</label>\n <Select\n options={labelOptions}\n value={label}\n onChange={(e) => setLabel(e.target.value as EventLabel)}\n placeholder=\"Select Event Label\"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Start date</label>\n <Input type=\"date\" value={startDate} onChange={(e) => setStartDate(e.target.value)} />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">End date</label>\n <Input type=\"date\" value={endDate} onChange={(e) => setEndDate(e.target.value)} />\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium text-ds-2\">All day</span>\n <Switch checked={allDay} onChange={(e) => setAllDay(e.target.checked)} aria-label=\"All day event\" />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Event URL</label>\n <Input placeholder=\"https://event.com/meeting\" value={url} onChange={(e) => setUrl(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Guests</label>\n <Input placeholder=\"Select guests\" value={guests} onChange={(e) => setGuests(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Location</label>\n <Input placeholder=\"Meeting room\" value={location} onChange={(e) => setLocation(e.target.value)} />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-ds-2\">Description</label>\n <Textarea\n placeholder=\"Add description\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n className=\"h-24 resize-none\"\n />\n </div>\n </div>\n </Drawer>\n );\n};\n","\"use client\";\n\nimport type { FC } from 'react';\n\nimport { Drawer } from '../../overlays/drawer/Drawer';\n\nimport { formatDayFull, formatTime } from './calendarUtils';\nimport { EVENT_LABEL_CONFIG } from './types';\nimport type { CalendarEvent } from './types';\n\ninterface EventDetailDrawerProps {\n event: CalendarEvent | null;\n open: boolean;\n onClose: () => void;\n}\n\nexport const EventDetailDrawer: FC<EventDetailDrawerProps> = ({ event, open, onClose }) => {\n if (!event) return null;\n const cfg = EVENT_LABEL_CONFIG[event.label];\n const timeStr = event.allDay\n ? 'All day'\n : `${formatTime(event.start)} – ${formatTime(event.end)}`;\n\n return (\n <Drawer\n open={open}\n onOpenChange={(o) => { if (!o) onClose(); }}\n title={event.title}\n position=\"right\"\n >\n <div className=\"flex flex-col gap-5\">\n <span\n className=\"inline-flex w-fit items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold\"\n style={{ backgroundColor: cfg.bg, color: cfg.color }}\n >\n <span className=\"h-1.5 w-1.5 rounded-full\" style={{ backgroundColor: cfg.color }} aria-hidden=\"true\" />\n {cfg.display}\n </span>\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Date</p>\n <p className=\"text-sm text-ds-1\">{formatDayFull(event.start)}</p>\n </div>\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Time</p>\n <p className=\"text-sm text-ds-1\">{timeStr}</p>\n </div>\n\n {event.location && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Location</p>\n <p className=\"text-sm text-ds-1\">{event.location}</p>\n </div>\n )}\n\n {event.guests && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Guests</p>\n <p className=\"text-sm text-ds-1\">{event.guests}</p>\n </div>\n )}\n\n {event.url && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Event URL</p>\n <p className=\"break-all text-sm text-ds-accent\">{event.url}</p>\n </div>\n )}\n\n {event.description && (\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-xs font-semibold uppercase tracking-wider text-ds-3\">Description</p>\n <p className=\"text-sm leading-relaxed text-ds-2\">{event.description}</p>\n </div>\n )}\n </div>\n </Drawer>\n );\n};\n","\"use client\";\n\nimport { useState } from 'react';\n\nimport { Drawer } from '../../overlays/drawer/Drawer';\nimport { mergeClassNames } from '../../../utils';\n\nimport { addDays, addMonths, addWeeks } from './calendarUtils';\nimport { CalendarSidebar, CalendarSidebarContent } from './CalendarSidebar';\nimport { CalendarHeader } from './CalendarHeader';\nimport { MonthView } from './views/MonthView';\nimport { WeekView } from './views/WeekView';\nimport { DayView } from './views/DayView';\nimport { ListView } from './views/ListView';\nimport { AddEventPanel } from './AddEventPanel';\nimport { EventDetailDrawer } from './EventDetailDrawer';\nimport { ALL_LABELS } from './types';\nimport type { CalendarEvent, CalendarView, EventLabel, EventCalendarProps } from './types';\n\nexport const EventCalendar = ({\n initialEvents = [],\n initialView = 'month',\n initialDate,\n onEventAdd,\n className,\n}: EventCalendarProps) => {\n const [view, setView] = useState<CalendarView>(initialView);\n const [currentDate, setCurrentDate] = useState<Date>(initialDate ?? new Date());\n const [events, setEvents] = useState<CalendarEvent[]>(initialEvents);\n const [activeLabels, setActiveLabels] = useState<EventLabel[]>([...ALL_LABELS]);\n const [isAddPanelOpen, setIsAddPanelOpen] = useState(false);\n const [isSidebarDrawerOpen, setIsSidebarDrawerOpen] = useState(false);\n const [selectedEvent, setSelectedEvent] = useState<CalendarEvent | null>(null);\n const [isEventDrawerOpen, setIsEventDrawerOpen] = useState(false);\n\n const handlePrev = () => {\n if (view === 'month' || view === 'list') setCurrentDate((d) => addMonths(d, -1));\n else if (view === 'week') setCurrentDate((d) => addWeeks(d, -1));\n else setCurrentDate((d) => addDays(d, -1));\n };\n\n const handleNext = () => {\n if (view === 'month' || view === 'list') setCurrentDate((d) => addMonths(d, 1));\n else if (view === 'week') setCurrentDate((d) => addWeeks(d, 1));\n else setCurrentDate((d) => addDays(d, 1));\n };\n\n const handleEventSubmit = (event: CalendarEvent) => {\n setEvents((prev) => [...prev, event]);\n onEventAdd?.(event);\n setIsAddPanelOpen(false);\n };\n\n const handleEventDoubleClick = (event: CalendarEvent) => {\n setSelectedEvent(event);\n setIsEventDrawerOpen(true);\n };\n\n const filteredEvents = events.filter((e) => activeLabels.includes(e.label));\n\n const handleDayClick = (day: Date) => {\n setCurrentDate(day);\n setView('day');\n };\n\n const sidebarProps = {\n currentDate,\n onDateChange: (d: Date) => setCurrentDate(d),\n onMonthChange: (d: Date) => setCurrentDate(d),\n activeLabels,\n onFiltersChange: setActiveLabels,\n onAddEvent: () => {\n setIsSidebarDrawerOpen(false);\n setIsAddPanelOpen(true);\n },\n };\n\n return (\n <div className={mergeClassNames('flex h-full overflow-hidden rounded-xl border border-ds-border-3 bg-ds-surface-1', className)}>\n {/* Inline sidebar — hidden on mobile, visible on lg+ */}\n <CalendarSidebar {...sidebarProps} />\n\n {/* Sidebar Drawer — mobile only */}\n <Drawer\n open={isSidebarDrawerOpen}\n onOpenChange={setIsSidebarDrawerOpen}\n title=\"Calendar\"\n position=\"left\"\n >\n <CalendarSidebarContent {...sidebarProps} />\n </Drawer>\n\n <main className=\"flex flex-1 flex-col overflow-hidden\">\n <CalendarHeader\n view={view}\n currentDate={currentDate}\n onPrev={handlePrev}\n onNext={handleNext}\n onViewChange={setView}\n onSidebarToggle={() => setIsSidebarDrawerOpen(true)}\n />\n\n {view === 'month' && (\n <MonthView\n currentDate={currentDate}\n events={filteredEvents}\n onDayClick={handleDayClick}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n {view === 'week' && (\n <WeekView\n currentDate={currentDate}\n events={filteredEvents}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n {view === 'day' && (\n <DayView\n currentDate={currentDate}\n events={filteredEvents}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n {view === 'list' && (\n <ListView\n currentDate={currentDate}\n events={filteredEvents}\n onEventDoubleClick={handleEventDoubleClick}\n />\n )}\n </main>\n\n <AddEventPanel\n isOpen={isAddPanelOpen}\n onClose={() => setIsAddPanelOpen(false)}\n onSubmit={handleEventSubmit}\n initialDate={currentDate}\n />\n\n <EventDetailDrawer\n event={selectedEvent}\n open={isEventDrawerOpen}\n onClose={() => setIsEventDrawerOpen(false)}\n />\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
require("./
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const require_textarea = require("./textarea-U_JeSWI3.cjs");
|
|
1
|
+
const require_utils = require("./utils-CoA0q63n.cjs");
|
|
2
|
+
const require_truncated_text = require("./truncated-text-D0t4atw5.cjs");
|
|
3
|
+
const require_button = require("./button-D2ZYmVda.cjs");
|
|
4
|
+
const require_select = require("./select-C5lkcrSB.cjs");
|
|
5
|
+
const require_Tooltip = require("./Tooltip-1yPGRJ2Q.cjs");
|
|
6
|
+
const require_Drawer = require("./Drawer-C_DLqrus.cjs");
|
|
7
|
+
const require_checkbox = require("./checkbox-Lw2UqyNE.cjs");
|
|
8
|
+
const require_input = require("./input-EH7x0pQY.cjs");
|
|
9
|
+
const require_switch = require("./switch-CEoT3MgX.cjs");
|
|
10
|
+
const require_textarea = require("./textarea-Bschfj24.cjs");
|
|
12
11
|
let react = require("react");
|
|
13
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
14
13
|
function isSameDay(a, b) {
|
|
@@ -1206,4 +1205,4 @@ Object.defineProperty(exports, "EventCalendar", {
|
|
|
1206
1205
|
}
|
|
1207
1206
|
});
|
|
1208
1207
|
|
|
1209
|
-
//# sourceMappingURL=event-calendar-
|
|
1208
|
+
//# sourceMappingURL=event-calendar-CvficOuV.cjs.map
|