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":"button-hover-border-gradient-
|
|
1
|
+
{"version":3,"file":"button-hover-border-gradient-VNEg4V0o.mjs","names":[],"sources":["../../src/components/effects/button-hover-border-gradient/ButtonHoverBorderGradient.tsx"],"sourcesContent":["import { HoverBorderGradient } from \"../hover-border-gradient/HoverBorderGradient\";\n\ninterface ButtonHoverBorderGradientProps {\n children?: React.ReactNode;\n}\n\nexport const ButtonHoverBorderGradient: React.FC<\n ButtonHoverBorderGradientProps\n> = ({ children, ...props }) => {\n return (\n <div className=\"m-40 flex justify-center text-center\" {...props}>\n <HoverBorderGradient\n containerClassName=\"rounded\"\n className=\"flex items-center space-x-2 bg-ds-surface-1 text-ds-1\"\n >\n {children}\n </HoverBorderGradient>\n </div>\n );\n};\n"],"mappings":";;;AAMA,IAAa,6BAER,EAAE,UAAU,GAAG,YAAY;CAC9B,OACE,oBAAC,OAAD;EAAK,WAAU;EAAuC,GAAI;YACxD,oBAAC,qBAAD;GACE,oBAAmB;GACnB,WAAU;GAET;EACkB,CAAA;CAClB,CAAA;AAET"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { n as mergeClassNames } from "./utils-Dc7j29ec.mjs";
|
|
2
|
+
import { t as Select } from "./select-DnSSxddm.mjs";
|
|
3
|
+
import { useMemo, useState } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/forms/calendar/Calendar.tsx
|
|
6
|
+
var DAY_NAMES = [
|
|
7
|
+
"SUN",
|
|
8
|
+
"MON",
|
|
9
|
+
"TUE",
|
|
10
|
+
"WED",
|
|
11
|
+
"THU",
|
|
12
|
+
"FRI",
|
|
13
|
+
"SAT"
|
|
14
|
+
];
|
|
15
|
+
var monthOptions = Array.from({ length: 12 }, (_, i) => new Date(2026, i, 1).toLocaleString(void 0, { month: "long" })).map((label, i) => ({
|
|
16
|
+
label,
|
|
17
|
+
value: String(i)
|
|
18
|
+
}));
|
|
19
|
+
function getDaysInMonth(month, year) {
|
|
20
|
+
const firstDay = new Date(year, month, 1);
|
|
21
|
+
const lastDay = new Date(year, month + 1, 0);
|
|
22
|
+
const days = [];
|
|
23
|
+
for (let i = 0; i < firstDay.getDay(); i++) days.push(null);
|
|
24
|
+
for (let d = 1; d <= lastDay.getDate(); d++) days.push(new Date(year, month, d));
|
|
25
|
+
while (days.length % 7 !== 0) days.push(null);
|
|
26
|
+
return days;
|
|
27
|
+
}
|
|
28
|
+
function isSameDay(a, b) {
|
|
29
|
+
if (!a || !b) return false;
|
|
30
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
31
|
+
}
|
|
32
|
+
function normalizeRange(r) {
|
|
33
|
+
return {
|
|
34
|
+
start: r?.start ?? null,
|
|
35
|
+
end: r?.end ?? null
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var Calendar = ({ value = null, range, selectionMode = "single", onSelect, onRangeSelect, month, year, onMonthChange, footer, className = "", showNav = true, hoverDate, onHoverDate }) => {
|
|
39
|
+
const today = /* @__PURE__ */ new Date();
|
|
40
|
+
const [internalMonth, setInternalMonth] = useState(month ?? today.getMonth());
|
|
41
|
+
const [internalYear, setInternalYear] = useState(year ?? today.getFullYear());
|
|
42
|
+
const [internalRange, setInternalRange] = useState(normalizeRange(range));
|
|
43
|
+
const currentMonth = month ?? internalMonth;
|
|
44
|
+
const currentYear = year ?? internalYear;
|
|
45
|
+
const currentRange = range ? normalizeRange(range) : internalRange;
|
|
46
|
+
const yearOptions = useMemo(() => {
|
|
47
|
+
const end = Math.max((/* @__PURE__ */ new Date()).getFullYear() + 10, currentYear + 5);
|
|
48
|
+
return Array.from({ length: end - 1980 + 1 }, (_, i) => ({
|
|
49
|
+
label: String(end - i),
|
|
50
|
+
value: String(end - i)
|
|
51
|
+
}));
|
|
52
|
+
}, [currentYear]);
|
|
53
|
+
const setDisplayedMonth = (m, y) => {
|
|
54
|
+
if (month === void 0) setInternalMonth(m);
|
|
55
|
+
if (year === void 0) setInternalYear(y);
|
|
56
|
+
onMonthChange?.(m, y);
|
|
57
|
+
};
|
|
58
|
+
const updateMonth = (offset) => {
|
|
59
|
+
const d = new Date(currentYear, currentMonth + offset, 1);
|
|
60
|
+
setDisplayedMonth(d.getMonth(), d.getFullYear());
|
|
61
|
+
};
|
|
62
|
+
const days = useMemo(() => getDaysInMonth(currentMonth, currentYear), [currentMonth, currentYear]);
|
|
63
|
+
const effectiveEnd = selectionMode === "range" && currentRange.start && !currentRange.end ? hoverDate ?? null : currentRange.end;
|
|
64
|
+
const rangeMin = currentRange.start && effectiveEnd ? Math.min(currentRange.start.getTime(), effectiveEnd.getTime()) : null;
|
|
65
|
+
const rangeMax = currentRange.start && effectiveEnd ? Math.max(currentRange.start.getTime(), effectiveEnd.getTime()) : null;
|
|
66
|
+
const isInRange = (date) => {
|
|
67
|
+
if (!date || rangeMin === null || rangeMax === null) return false;
|
|
68
|
+
const t = date.getTime();
|
|
69
|
+
return t > rangeMin && t < rangeMax;
|
|
70
|
+
};
|
|
71
|
+
const handleSelect = (date) => {
|
|
72
|
+
if (selectionMode === "range") {
|
|
73
|
+
const existing = currentRange;
|
|
74
|
+
let next;
|
|
75
|
+
if (!existing.start || existing.end) next = {
|
|
76
|
+
start: date,
|
|
77
|
+
end: null
|
|
78
|
+
};
|
|
79
|
+
else if (date.getTime() < existing.start.getTime()) next = {
|
|
80
|
+
start: date,
|
|
81
|
+
end: existing.start
|
|
82
|
+
};
|
|
83
|
+
else next = {
|
|
84
|
+
start: existing.start,
|
|
85
|
+
end: date
|
|
86
|
+
};
|
|
87
|
+
if (!range) setInternalRange(next);
|
|
88
|
+
onRangeSelect?.(next);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
onSelect?.(date);
|
|
92
|
+
};
|
|
93
|
+
const handleKeyDown = (e) => {
|
|
94
|
+
if (e.key === "PageUp") {
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
updateMonth(e.shiftKey ? -12 : -1);
|
|
97
|
+
} else if (e.key === "PageDown") {
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
updateMonth(e.shiftKey ? 12 : 1);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
103
|
+
className: mergeClassNames("w-[320px] max-w-[calc(100vw-1.5rem)] rounded-lg border border-ds-border-2 bg-ds-surface-1/95 p-4 shadow-xl backdrop-blur-xl outline-none", className),
|
|
104
|
+
tabIndex: -1,
|
|
105
|
+
onKeyDown: handleKeyDown,
|
|
106
|
+
children: [
|
|
107
|
+
showNav && /* @__PURE__ */ jsxs("div", {
|
|
108
|
+
className: "mb-4 flex items-center gap-2",
|
|
109
|
+
children: [
|
|
110
|
+
/* @__PURE__ */ jsx("button", {
|
|
111
|
+
type: "button",
|
|
112
|
+
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1",
|
|
113
|
+
onClick: () => updateMonth(-1),
|
|
114
|
+
"aria-label": "Previous month",
|
|
115
|
+
children: "←"
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ jsxs("div", {
|
|
118
|
+
className: "grid flex-1 grid-cols-[minmax(0,1fr)_6rem] gap-2",
|
|
119
|
+
children: [/* @__PURE__ */ jsx(Select, {
|
|
120
|
+
name: "calendar-month-select",
|
|
121
|
+
value: String(currentMonth),
|
|
122
|
+
onChange: (e) => setDisplayedMonth(Number(e.target.value), currentYear),
|
|
123
|
+
options: monthOptions,
|
|
124
|
+
containerClassName: "min-w-0",
|
|
125
|
+
triggerClassName: "font-medium",
|
|
126
|
+
dropdownClassName: "start-0 end-auto min-w-full w-max",
|
|
127
|
+
optionClassName: "justify-start",
|
|
128
|
+
placeholder: "Month",
|
|
129
|
+
size: "compact",
|
|
130
|
+
selectionIndicator: "none",
|
|
131
|
+
"aria-label": "Select month"
|
|
132
|
+
}), /* @__PURE__ */ jsx(Select, {
|
|
133
|
+
name: "calendar-year-select",
|
|
134
|
+
value: String(currentYear),
|
|
135
|
+
onChange: (e) => setDisplayedMonth(currentMonth, Number(e.target.value)),
|
|
136
|
+
options: yearOptions,
|
|
137
|
+
containerClassName: "min-w-0",
|
|
138
|
+
triggerClassName: "font-medium",
|
|
139
|
+
dropdownClassName: "start-auto end-0 min-w-full w-max",
|
|
140
|
+
optionClassName: "justify-start",
|
|
141
|
+
placeholder: "Year",
|
|
142
|
+
size: "compact",
|
|
143
|
+
selectionIndicator: "none",
|
|
144
|
+
"aria-label": "Select year"
|
|
145
|
+
})]
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ jsx("button", {
|
|
148
|
+
type: "button",
|
|
149
|
+
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1",
|
|
150
|
+
onClick: () => updateMonth(1),
|
|
151
|
+
"aria-label": "Next month",
|
|
152
|
+
children: "→"
|
|
153
|
+
})
|
|
154
|
+
]
|
|
155
|
+
}),
|
|
156
|
+
/* @__PURE__ */ jsx("div", {
|
|
157
|
+
className: "mb-1 grid grid-cols-7",
|
|
158
|
+
children: DAY_NAMES.map((d) => /* @__PURE__ */ jsx("div", {
|
|
159
|
+
className: "flex h-8 items-center justify-center text-[10px] font-semibold text-ds-3",
|
|
160
|
+
children: d
|
|
161
|
+
}, d))
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ jsx("div", {
|
|
164
|
+
className: "grid grid-cols-7",
|
|
165
|
+
onMouseLeave: () => onHoverDate?.(null),
|
|
166
|
+
children: days.map((date, index) => {
|
|
167
|
+
if (!date) return /* @__PURE__ */ jsx("span", { className: "h-10" }, `empty-${index}`);
|
|
168
|
+
const isSelected = selectionMode === "single" && isSameDay(date, value);
|
|
169
|
+
const isToday = isSameDay(date, today);
|
|
170
|
+
const inRange = selectionMode === "range" && isInRange(date);
|
|
171
|
+
const normStart = rangeMin !== null ? new Date(rangeMin) : null;
|
|
172
|
+
const normEnd = rangeMax !== null ? new Date(rangeMax) : null;
|
|
173
|
+
const isRangeStart = selectionMode === "range" && isSameDay(date, normStart);
|
|
174
|
+
const isRangeEnd = selectionMode === "range" && isSameDay(date, normEnd);
|
|
175
|
+
const isSingleDay = isRangeStart && isRangeEnd;
|
|
176
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
177
|
+
className: "relative flex h-10 items-center justify-center",
|
|
178
|
+
children: [
|
|
179
|
+
inRange && /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 h-8 w-full -translate-y-1/2 bg-ds-accent-subtle" }),
|
|
180
|
+
isRangeStart && !isSingleDay && /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 left-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle" }),
|
|
181
|
+
isRangeEnd && !isSingleDay && /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 right-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle" }),
|
|
182
|
+
/* @__PURE__ */ jsx("button", {
|
|
183
|
+
type: "button",
|
|
184
|
+
className: mergeClassNames("relative z-10 flex h-8 w-8 items-center justify-center rounded-full text-sm transition-colors", isSelected || isRangeStart || isRangeEnd ? "bg-ds-accent font-semibold text-ds-on-accent" : inRange ? "text-ds-1 hover:bg-ds-accent/20" : isToday ? "font-semibold text-ds-accent hover:bg-ds-surface-3" : "text-ds-2 hover:bg-ds-surface-3 hover:text-ds-1"),
|
|
185
|
+
onClick: () => handleSelect(date),
|
|
186
|
+
onMouseEnter: () => onHoverDate?.(date),
|
|
187
|
+
children: date.getDate()
|
|
188
|
+
})
|
|
189
|
+
]
|
|
190
|
+
}, date.toISOString());
|
|
191
|
+
})
|
|
192
|
+
}),
|
|
193
|
+
footer ? /* @__PURE__ */ jsx("div", {
|
|
194
|
+
className: "mt-4",
|
|
195
|
+
children: footer
|
|
196
|
+
}) : null
|
|
197
|
+
]
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
//#endregion
|
|
201
|
+
export { Calendar as t };
|
|
202
|
+
|
|
203
|
+
//# sourceMappingURL=calendar-BlUhssD4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-BlUhssD4.mjs","names":[],"sources":["../../src/components/forms/calendar/Calendar.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\n\nimport { Select } from \"../select\";\nimport { mergeClassNames } from \"../../../utils\";\n\nimport type { CalendarProps } from \"./types\";\n\nconst DAY_NAMES = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\nconst monthNames = Array.from({ length: 12 }, (_, i) =>\n new Date(2026, i, 1).toLocaleString(undefined, { month: \"long\" }),\n);\nconst monthOptions = monthNames.map((label, i) => ({ label, value: String(i) }));\n\nfunction getDaysInMonth(month: number, year: number): Array<Date | null> {\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const days: Array<Date | null> = [];\n\n for (let i = 0; i < firstDay.getDay(); i++) days.push(null);\n for (let d = 1; d <= lastDay.getDate(); d++) days.push(new Date(year, month, d));\n while (days.length % 7 !== 0) days.push(null);\n\n return days;\n}\n\nfunction isSameDay(a: Date | null, b: Date | null) {\n if (!a || !b) return false;\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction normalizeRange(r?: { start: Date | null; end: Date | null }) {\n return { start: r?.start ?? null, end: r?.end ?? null };\n}\n\nexport const Calendar = ({\n value = null,\n range,\n selectionMode = \"single\",\n onSelect,\n onRangeSelect,\n month,\n year,\n onMonthChange,\n footer,\n className = \"\",\n showNav = true,\n hoverDate,\n onHoverDate,\n}: CalendarProps) => {\n const today = new Date();\n const [internalMonth, setInternalMonth] = useState(month ?? today.getMonth());\n const [internalYear, setInternalYear] = useState(year ?? today.getFullYear());\n const [internalRange, setInternalRange] = useState(normalizeRange(range));\n\n const currentMonth = month ?? internalMonth;\n const currentYear = year ?? internalYear;\n const currentRange = range ? normalizeRange(range) : internalRange;\n\n const yearOptions = useMemo(() => {\n const end = Math.max(new Date().getFullYear() + 10, currentYear + 5);\n return Array.from({ length: end - 1980 + 1 }, (_, i) => ({\n label: String(end - i),\n value: String(end - i),\n }));\n }, [currentYear]);\n\n const setDisplayedMonth = (m: number, y: number) => {\n if (month === undefined) setInternalMonth(m);\n if (year === undefined) setInternalYear(y);\n onMonthChange?.(m, y);\n };\n\n const updateMonth = (offset: number) => {\n const d = new Date(currentYear, currentMonth + offset, 1);\n setDisplayedMonth(d.getMonth(), d.getFullYear());\n };\n\n const days = useMemo(\n () => getDaysInMonth(currentMonth, currentYear),\n [currentMonth, currentYear],\n );\n\n // When only start is selected, use hoverDate as preview end\n const effectiveEnd =\n selectionMode === \"range\" && currentRange.start && !currentRange.end\n ? (hoverDate ?? null)\n : currentRange.end;\n\n const rangeMin = currentRange.start && effectiveEnd\n ? Math.min(currentRange.start.getTime(), effectiveEnd.getTime())\n : null;\n const rangeMax = currentRange.start && effectiveEnd\n ? Math.max(currentRange.start.getTime(), effectiveEnd.getTime())\n : null;\n\n const isInRange = (date: Date | null) => {\n if (!date || rangeMin === null || rangeMax === null) return false;\n const t = date.getTime();\n return t > rangeMin && t < rangeMax;\n };\n\n const handleSelect = (date: Date) => {\n if (selectionMode === \"range\") {\n const existing = currentRange;\n let next: { start: Date | null; end: Date | null };\n\n if (!existing.start || existing.end) {\n next = { start: date, end: null };\n } else if (date.getTime() < existing.start.getTime()) {\n next = { start: date, end: existing.start };\n } else {\n next = { start: existing.start, end: date };\n }\n\n if (!range) setInternalRange(next);\n onRangeSelect?.(next);\n return;\n }\n onSelect?.(date);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"PageUp\") {\n e.preventDefault();\n updateMonth(e.shiftKey ? -12 : -1);\n } else if (e.key === \"PageDown\") {\n e.preventDefault();\n updateMonth(e.shiftKey ? 12 : 1);\n }\n };\n\n return (\n <div\n className={mergeClassNames(\n \"w-[320px] max-w-[calc(100vw-1.5rem)] rounded-lg border border-ds-border-2 bg-ds-surface-1/95 p-4 shadow-xl backdrop-blur-xl outline-none\",\n className,\n )}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n >\n {showNav && (\n <div className=\"mb-4 flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1\"\n onClick={() => updateMonth(-1)}\n aria-label=\"Previous month\"\n >\n ←\n </button>\n\n <div className=\"grid flex-1 grid-cols-[minmax(0,1fr)_6rem] gap-2\">\n <Select\n name=\"calendar-month-select\"\n value={String(currentMonth)}\n onChange={(e) => setDisplayedMonth(Number(e.target.value), currentYear)}\n options={monthOptions}\n containerClassName=\"min-w-0\"\n triggerClassName=\"font-medium\"\n dropdownClassName=\"start-0 end-auto min-w-full w-max\"\n optionClassName=\"justify-start\"\n placeholder=\"Month\"\n size=\"compact\"\n selectionIndicator=\"none\"\n aria-label=\"Select month\"\n />\n <Select\n name=\"calendar-year-select\"\n value={String(currentYear)}\n onChange={(e) => setDisplayedMonth(currentMonth, Number(e.target.value))}\n options={yearOptions}\n containerClassName=\"min-w-0\"\n triggerClassName=\"font-medium\"\n dropdownClassName=\"start-auto end-0 min-w-full w-max\"\n optionClassName=\"justify-start\"\n placeholder=\"Year\"\n size=\"compact\"\n selectionIndicator=\"none\"\n aria-label=\"Select year\"\n />\n </div>\n\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1\"\n onClick={() => updateMonth(1)}\n aria-label=\"Next month\"\n >\n →\n </button>\n </div>\n )}\n\n {/* Day-name headers */}\n <div className=\"mb-1 grid grid-cols-7\">\n {DAY_NAMES.map((d) => (\n <div key={d} className=\"flex h-8 items-center justify-center text-[10px] font-semibold text-ds-3\">\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid — no gap so range band is continuous */}\n <div className=\"grid grid-cols-7\" onMouseLeave={() => onHoverDate?.(null)}>\n {days.map((date, index) => {\n if (!date) return <span key={`empty-${index}`} className=\"h-10\" />;\n\n const isSelected = selectionMode === \"single\" && isSameDay(date, value);\n const isToday = isSameDay(date, today);\n const inRange = selectionMode === \"range\" && isInRange(date);\n\n // Normalise start/end so start ≤ end (handles backward drag)\n const normStart = rangeMin !== null ? new Date(rangeMin) : null;\n const normEnd = rangeMax !== null ? new Date(rangeMax) : null;\n\n const isRangeStart = selectionMode === \"range\" && isSameDay(date, normStart);\n const isRangeEnd = selectionMode === \"range\" && isSameDay(date, normEnd);\n const isSingleDay = isRangeStart && isRangeEnd;\n const isActive = isSelected || isRangeStart || isRangeEnd;\n\n return (\n <div key={date.toISOString()} className=\"relative flex h-10 items-center justify-center\">\n\n {/* Range band — full width for in-range, half-width at endpoints */}\n {inRange && (\n <div className=\"absolute top-1/2 h-8 w-full -translate-y-1/2 bg-ds-accent-subtle\" />\n )}\n {isRangeStart && !isSingleDay && (\n <div className=\"absolute top-1/2 left-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle\" />\n )}\n {isRangeEnd && !isSingleDay && (\n <div className=\"absolute top-1/2 right-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle\" />\n )}\n\n <button\n type=\"button\"\n className={mergeClassNames(\n \"relative z-10 flex h-8 w-8 items-center justify-center rounded-full text-sm transition-colors\",\n isActive\n ? \"bg-ds-accent font-semibold text-ds-on-accent\"\n : inRange\n ? \"text-ds-1 hover:bg-ds-accent/20\"\n : isToday\n ? \"font-semibold text-ds-accent hover:bg-ds-surface-3\"\n : \"text-ds-2 hover:bg-ds-surface-3 hover:text-ds-1\",\n )}\n onClick={() => handleSelect(date)}\n onMouseEnter={() => onHoverDate?.(date)}\n >\n {date.getDate()}\n </button>\n </div>\n );\n })}\n </div>\n\n {footer ? <div className=\"mt-4\">{footer}</div> : null}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
const require_utils = require("./utils-CoA0q63n.cjs");
|
|
2
|
+
const require_select = require("./select-C5lkcrSB.cjs");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
//#region src/components/forms/calendar/Calendar.tsx
|
|
6
|
+
var DAY_NAMES = [
|
|
7
|
+
"SUN",
|
|
8
|
+
"MON",
|
|
9
|
+
"TUE",
|
|
10
|
+
"WED",
|
|
11
|
+
"THU",
|
|
12
|
+
"FRI",
|
|
13
|
+
"SAT"
|
|
14
|
+
];
|
|
15
|
+
var monthOptions = Array.from({ length: 12 }, (_, i) => new Date(2026, i, 1).toLocaleString(void 0, { month: "long" })).map((label, i) => ({
|
|
16
|
+
label,
|
|
17
|
+
value: String(i)
|
|
18
|
+
}));
|
|
19
|
+
function getDaysInMonth(month, year) {
|
|
20
|
+
const firstDay = new Date(year, month, 1);
|
|
21
|
+
const lastDay = new Date(year, month + 1, 0);
|
|
22
|
+
const days = [];
|
|
23
|
+
for (let i = 0; i < firstDay.getDay(); i++) days.push(null);
|
|
24
|
+
for (let d = 1; d <= lastDay.getDate(); d++) days.push(new Date(year, month, d));
|
|
25
|
+
while (days.length % 7 !== 0) days.push(null);
|
|
26
|
+
return days;
|
|
27
|
+
}
|
|
28
|
+
function isSameDay(a, b) {
|
|
29
|
+
if (!a || !b) return false;
|
|
30
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
31
|
+
}
|
|
32
|
+
function normalizeRange(r) {
|
|
33
|
+
return {
|
|
34
|
+
start: r?.start ?? null,
|
|
35
|
+
end: r?.end ?? null
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var Calendar = ({ value = null, range, selectionMode = "single", onSelect, onRangeSelect, month, year, onMonthChange, footer, className = "", showNav = true, hoverDate, onHoverDate }) => {
|
|
39
|
+
const today = /* @__PURE__ */ new Date();
|
|
40
|
+
const [internalMonth, setInternalMonth] = (0, react.useState)(month ?? today.getMonth());
|
|
41
|
+
const [internalYear, setInternalYear] = (0, react.useState)(year ?? today.getFullYear());
|
|
42
|
+
const [internalRange, setInternalRange] = (0, react.useState)(normalizeRange(range));
|
|
43
|
+
const currentMonth = month ?? internalMonth;
|
|
44
|
+
const currentYear = year ?? internalYear;
|
|
45
|
+
const currentRange = range ? normalizeRange(range) : internalRange;
|
|
46
|
+
const yearOptions = (0, react.useMemo)(() => {
|
|
47
|
+
const end = Math.max((/* @__PURE__ */ new Date()).getFullYear() + 10, currentYear + 5);
|
|
48
|
+
return Array.from({ length: end - 1980 + 1 }, (_, i) => ({
|
|
49
|
+
label: String(end - i),
|
|
50
|
+
value: String(end - i)
|
|
51
|
+
}));
|
|
52
|
+
}, [currentYear]);
|
|
53
|
+
const setDisplayedMonth = (m, y) => {
|
|
54
|
+
if (month === void 0) setInternalMonth(m);
|
|
55
|
+
if (year === void 0) setInternalYear(y);
|
|
56
|
+
onMonthChange?.(m, y);
|
|
57
|
+
};
|
|
58
|
+
const updateMonth = (offset) => {
|
|
59
|
+
const d = new Date(currentYear, currentMonth + offset, 1);
|
|
60
|
+
setDisplayedMonth(d.getMonth(), d.getFullYear());
|
|
61
|
+
};
|
|
62
|
+
const days = (0, react.useMemo)(() => getDaysInMonth(currentMonth, currentYear), [currentMonth, currentYear]);
|
|
63
|
+
const effectiveEnd = selectionMode === "range" && currentRange.start && !currentRange.end ? hoverDate ?? null : currentRange.end;
|
|
64
|
+
const rangeMin = currentRange.start && effectiveEnd ? Math.min(currentRange.start.getTime(), effectiveEnd.getTime()) : null;
|
|
65
|
+
const rangeMax = currentRange.start && effectiveEnd ? Math.max(currentRange.start.getTime(), effectiveEnd.getTime()) : null;
|
|
66
|
+
const isInRange = (date) => {
|
|
67
|
+
if (!date || rangeMin === null || rangeMax === null) return false;
|
|
68
|
+
const t = date.getTime();
|
|
69
|
+
return t > rangeMin && t < rangeMax;
|
|
70
|
+
};
|
|
71
|
+
const handleSelect = (date) => {
|
|
72
|
+
if (selectionMode === "range") {
|
|
73
|
+
const existing = currentRange;
|
|
74
|
+
let next;
|
|
75
|
+
if (!existing.start || existing.end) next = {
|
|
76
|
+
start: date,
|
|
77
|
+
end: null
|
|
78
|
+
};
|
|
79
|
+
else if (date.getTime() < existing.start.getTime()) next = {
|
|
80
|
+
start: date,
|
|
81
|
+
end: existing.start
|
|
82
|
+
};
|
|
83
|
+
else next = {
|
|
84
|
+
start: existing.start,
|
|
85
|
+
end: date
|
|
86
|
+
};
|
|
87
|
+
if (!range) setInternalRange(next);
|
|
88
|
+
onRangeSelect?.(next);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
onSelect?.(date);
|
|
92
|
+
};
|
|
93
|
+
const handleKeyDown = (e) => {
|
|
94
|
+
if (e.key === "PageUp") {
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
updateMonth(e.shiftKey ? -12 : -1);
|
|
97
|
+
} else if (e.key === "PageDown") {
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
updateMonth(e.shiftKey ? 12 : 1);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
103
|
+
className: require_utils.mergeClassNames("w-[320px] max-w-[calc(100vw-1.5rem)] rounded-lg border border-ds-border-2 bg-ds-surface-1/95 p-4 shadow-xl backdrop-blur-xl outline-none", className),
|
|
104
|
+
tabIndex: -1,
|
|
105
|
+
onKeyDown: handleKeyDown,
|
|
106
|
+
children: [
|
|
107
|
+
showNav && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
108
|
+
className: "mb-4 flex items-center gap-2",
|
|
109
|
+
children: [
|
|
110
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
111
|
+
type: "button",
|
|
112
|
+
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1",
|
|
113
|
+
onClick: () => updateMonth(-1),
|
|
114
|
+
"aria-label": "Previous month",
|
|
115
|
+
children: "←"
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
118
|
+
className: "grid flex-1 grid-cols-[minmax(0,1fr)_6rem] gap-2",
|
|
119
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.Select, {
|
|
120
|
+
name: "calendar-month-select",
|
|
121
|
+
value: String(currentMonth),
|
|
122
|
+
onChange: (e) => setDisplayedMonth(Number(e.target.value), currentYear),
|
|
123
|
+
options: monthOptions,
|
|
124
|
+
containerClassName: "min-w-0",
|
|
125
|
+
triggerClassName: "font-medium",
|
|
126
|
+
dropdownClassName: "start-0 end-auto min-w-full w-max",
|
|
127
|
+
optionClassName: "justify-start",
|
|
128
|
+
placeholder: "Month",
|
|
129
|
+
size: "compact",
|
|
130
|
+
selectionIndicator: "none",
|
|
131
|
+
"aria-label": "Select month"
|
|
132
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.Select, {
|
|
133
|
+
name: "calendar-year-select",
|
|
134
|
+
value: String(currentYear),
|
|
135
|
+
onChange: (e) => setDisplayedMonth(currentMonth, Number(e.target.value)),
|
|
136
|
+
options: yearOptions,
|
|
137
|
+
containerClassName: "min-w-0",
|
|
138
|
+
triggerClassName: "font-medium",
|
|
139
|
+
dropdownClassName: "start-auto end-0 min-w-full w-max",
|
|
140
|
+
optionClassName: "justify-start",
|
|
141
|
+
placeholder: "Year",
|
|
142
|
+
size: "compact",
|
|
143
|
+
selectionIndicator: "none",
|
|
144
|
+
"aria-label": "Select year"
|
|
145
|
+
})]
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
148
|
+
type: "button",
|
|
149
|
+
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1",
|
|
150
|
+
onClick: () => updateMonth(1),
|
|
151
|
+
"aria-label": "Next month",
|
|
152
|
+
children: "→"
|
|
153
|
+
})
|
|
154
|
+
]
|
|
155
|
+
}),
|
|
156
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
157
|
+
className: "mb-1 grid grid-cols-7",
|
|
158
|
+
children: DAY_NAMES.map((d) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
159
|
+
className: "flex h-8 items-center justify-center text-[10px] font-semibold text-ds-3",
|
|
160
|
+
children: d
|
|
161
|
+
}, d))
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
164
|
+
className: "grid grid-cols-7",
|
|
165
|
+
onMouseLeave: () => onHoverDate?.(null),
|
|
166
|
+
children: days.map((date, index) => {
|
|
167
|
+
if (!date) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "h-10" }, `empty-${index}`);
|
|
168
|
+
const isSelected = selectionMode === "single" && isSameDay(date, value);
|
|
169
|
+
const isToday = isSameDay(date, today);
|
|
170
|
+
const inRange = selectionMode === "range" && isInRange(date);
|
|
171
|
+
const normStart = rangeMin !== null ? new Date(rangeMin) : null;
|
|
172
|
+
const normEnd = rangeMax !== null ? new Date(rangeMax) : null;
|
|
173
|
+
const isRangeStart = selectionMode === "range" && isSameDay(date, normStart);
|
|
174
|
+
const isRangeEnd = selectionMode === "range" && isSameDay(date, normEnd);
|
|
175
|
+
const isSingleDay = isRangeStart && isRangeEnd;
|
|
176
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
177
|
+
className: "relative flex h-10 items-center justify-center",
|
|
178
|
+
children: [
|
|
179
|
+
inRange && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-1/2 h-8 w-full -translate-y-1/2 bg-ds-accent-subtle" }),
|
|
180
|
+
isRangeStart && !isSingleDay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-1/2 left-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle" }),
|
|
181
|
+
isRangeEnd && !isSingleDay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-1/2 right-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle" }),
|
|
182
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
183
|
+
type: "button",
|
|
184
|
+
className: require_utils.mergeClassNames("relative z-10 flex h-8 w-8 items-center justify-center rounded-full text-sm transition-colors", isSelected || isRangeStart || isRangeEnd ? "bg-ds-accent font-semibold text-ds-on-accent" : inRange ? "text-ds-1 hover:bg-ds-accent/20" : isToday ? "font-semibold text-ds-accent hover:bg-ds-surface-3" : "text-ds-2 hover:bg-ds-surface-3 hover:text-ds-1"),
|
|
185
|
+
onClick: () => handleSelect(date),
|
|
186
|
+
onMouseEnter: () => onHoverDate?.(date),
|
|
187
|
+
children: date.getDate()
|
|
188
|
+
})
|
|
189
|
+
]
|
|
190
|
+
}, date.toISOString());
|
|
191
|
+
})
|
|
192
|
+
}),
|
|
193
|
+
footer ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
194
|
+
className: "mt-4",
|
|
195
|
+
children: footer
|
|
196
|
+
}) : null
|
|
197
|
+
]
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
//#endregion
|
|
201
|
+
Object.defineProperty(exports, "Calendar", {
|
|
202
|
+
enumerable: true,
|
|
203
|
+
get: function() {
|
|
204
|
+
return Calendar;
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
//# sourceMappingURL=calendar-CdKKhdx5.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-CdKKhdx5.cjs","names":[],"sources":["../../src/components/forms/calendar/Calendar.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\n\nimport { Select } from \"../select\";\nimport { mergeClassNames } from \"../../../utils\";\n\nimport type { CalendarProps } from \"./types\";\n\nconst DAY_NAMES = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\nconst monthNames = Array.from({ length: 12 }, (_, i) =>\n new Date(2026, i, 1).toLocaleString(undefined, { month: \"long\" }),\n);\nconst monthOptions = monthNames.map((label, i) => ({ label, value: String(i) }));\n\nfunction getDaysInMonth(month: number, year: number): Array<Date | null> {\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const days: Array<Date | null> = [];\n\n for (let i = 0; i < firstDay.getDay(); i++) days.push(null);\n for (let d = 1; d <= lastDay.getDate(); d++) days.push(new Date(year, month, d));\n while (days.length % 7 !== 0) days.push(null);\n\n return days;\n}\n\nfunction isSameDay(a: Date | null, b: Date | null) {\n if (!a || !b) return false;\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction normalizeRange(r?: { start: Date | null; end: Date | null }) {\n return { start: r?.start ?? null, end: r?.end ?? null };\n}\n\nexport const Calendar = ({\n value = null,\n range,\n selectionMode = \"single\",\n onSelect,\n onRangeSelect,\n month,\n year,\n onMonthChange,\n footer,\n className = \"\",\n showNav = true,\n hoverDate,\n onHoverDate,\n}: CalendarProps) => {\n const today = new Date();\n const [internalMonth, setInternalMonth] = useState(month ?? today.getMonth());\n const [internalYear, setInternalYear] = useState(year ?? today.getFullYear());\n const [internalRange, setInternalRange] = useState(normalizeRange(range));\n\n const currentMonth = month ?? internalMonth;\n const currentYear = year ?? internalYear;\n const currentRange = range ? normalizeRange(range) : internalRange;\n\n const yearOptions = useMemo(() => {\n const end = Math.max(new Date().getFullYear() + 10, currentYear + 5);\n return Array.from({ length: end - 1980 + 1 }, (_, i) => ({\n label: String(end - i),\n value: String(end - i),\n }));\n }, [currentYear]);\n\n const setDisplayedMonth = (m: number, y: number) => {\n if (month === undefined) setInternalMonth(m);\n if (year === undefined) setInternalYear(y);\n onMonthChange?.(m, y);\n };\n\n const updateMonth = (offset: number) => {\n const d = new Date(currentYear, currentMonth + offset, 1);\n setDisplayedMonth(d.getMonth(), d.getFullYear());\n };\n\n const days = useMemo(\n () => getDaysInMonth(currentMonth, currentYear),\n [currentMonth, currentYear],\n );\n\n // When only start is selected, use hoverDate as preview end\n const effectiveEnd =\n selectionMode === \"range\" && currentRange.start && !currentRange.end\n ? (hoverDate ?? null)\n : currentRange.end;\n\n const rangeMin = currentRange.start && effectiveEnd\n ? Math.min(currentRange.start.getTime(), effectiveEnd.getTime())\n : null;\n const rangeMax = currentRange.start && effectiveEnd\n ? Math.max(currentRange.start.getTime(), effectiveEnd.getTime())\n : null;\n\n const isInRange = (date: Date | null) => {\n if (!date || rangeMin === null || rangeMax === null) return false;\n const t = date.getTime();\n return t > rangeMin && t < rangeMax;\n };\n\n const handleSelect = (date: Date) => {\n if (selectionMode === \"range\") {\n const existing = currentRange;\n let next: { start: Date | null; end: Date | null };\n\n if (!existing.start || existing.end) {\n next = { start: date, end: null };\n } else if (date.getTime() < existing.start.getTime()) {\n next = { start: date, end: existing.start };\n } else {\n next = { start: existing.start, end: date };\n }\n\n if (!range) setInternalRange(next);\n onRangeSelect?.(next);\n return;\n }\n onSelect?.(date);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"PageUp\") {\n e.preventDefault();\n updateMonth(e.shiftKey ? -12 : -1);\n } else if (e.key === \"PageDown\") {\n e.preventDefault();\n updateMonth(e.shiftKey ? 12 : 1);\n }\n };\n\n return (\n <div\n className={mergeClassNames(\n \"w-[320px] max-w-[calc(100vw-1.5rem)] rounded-lg border border-ds-border-2 bg-ds-surface-1/95 p-4 shadow-xl backdrop-blur-xl outline-none\",\n className,\n )}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n >\n {showNav && (\n <div className=\"mb-4 flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1\"\n onClick={() => updateMonth(-1)}\n aria-label=\"Previous month\"\n >\n ←\n </button>\n\n <div className=\"grid flex-1 grid-cols-[minmax(0,1fr)_6rem] gap-2\">\n <Select\n name=\"calendar-month-select\"\n value={String(currentMonth)}\n onChange={(e) => setDisplayedMonth(Number(e.target.value), currentYear)}\n options={monthOptions}\n containerClassName=\"min-w-0\"\n triggerClassName=\"font-medium\"\n dropdownClassName=\"start-0 end-auto min-w-full w-max\"\n optionClassName=\"justify-start\"\n placeholder=\"Month\"\n size=\"compact\"\n selectionIndicator=\"none\"\n aria-label=\"Select month\"\n />\n <Select\n name=\"calendar-year-select\"\n value={String(currentYear)}\n onChange={(e) => setDisplayedMonth(currentMonth, Number(e.target.value))}\n options={yearOptions}\n containerClassName=\"min-w-0\"\n triggerClassName=\"font-medium\"\n dropdownClassName=\"start-auto end-0 min-w-full w-max\"\n optionClassName=\"justify-start\"\n placeholder=\"Year\"\n size=\"compact\"\n selectionIndicator=\"none\"\n aria-label=\"Select year\"\n />\n </div>\n\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1\"\n onClick={() => updateMonth(1)}\n aria-label=\"Next month\"\n >\n →\n </button>\n </div>\n )}\n\n {/* Day-name headers */}\n <div className=\"mb-1 grid grid-cols-7\">\n {DAY_NAMES.map((d) => (\n <div key={d} className=\"flex h-8 items-center justify-center text-[10px] font-semibold text-ds-3\">\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid — no gap so range band is continuous */}\n <div className=\"grid grid-cols-7\" onMouseLeave={() => onHoverDate?.(null)}>\n {days.map((date, index) => {\n if (!date) return <span key={`empty-${index}`} className=\"h-10\" />;\n\n const isSelected = selectionMode === \"single\" && isSameDay(date, value);\n const isToday = isSameDay(date, today);\n const inRange = selectionMode === \"range\" && isInRange(date);\n\n // Normalise start/end so start ≤ end (handles backward drag)\n const normStart = rangeMin !== null ? new Date(rangeMin) : null;\n const normEnd = rangeMax !== null ? new Date(rangeMax) : null;\n\n const isRangeStart = selectionMode === \"range\" && isSameDay(date, normStart);\n const isRangeEnd = selectionMode === \"range\" && isSameDay(date, normEnd);\n const isSingleDay = isRangeStart && isRangeEnd;\n const isActive = isSelected || isRangeStart || isRangeEnd;\n\n return (\n <div key={date.toISOString()} className=\"relative flex h-10 items-center justify-center\">\n\n {/* Range band — full width for in-range, half-width at endpoints */}\n {inRange && (\n <div className=\"absolute top-1/2 h-8 w-full -translate-y-1/2 bg-ds-accent-subtle\" />\n )}\n {isRangeStart && !isSingleDay && (\n <div className=\"absolute top-1/2 left-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle\" />\n )}\n {isRangeEnd && !isSingleDay && (\n <div className=\"absolute top-1/2 right-1/2 h-8 w-1/2 -translate-y-1/2 bg-ds-accent-subtle\" />\n )}\n\n <button\n type=\"button\"\n className={mergeClassNames(\n \"relative z-10 flex h-8 w-8 items-center justify-center rounded-full text-sm transition-colors\",\n isActive\n ? \"bg-ds-accent font-semibold text-ds-on-accent\"\n : inRange\n ? \"text-ds-1 hover:bg-ds-accent/20\"\n : isToday\n ? \"font-semibold text-ds-accent hover:bg-ds-surface-3\"\n : \"text-ds-2 hover:bg-ds-surface-3 hover:text-ds-1\",\n )}\n onClick={() => handleSelect(date)}\n onMouseEnter={() => onHoverDate?.(date)}\n >\n {date.getDate()}\n </button>\n </div>\n );\n })}\n </div>\n\n {footer ? <div className=\"mt-4\">{footer}</div> : null}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require("./chunk-B_GkZjkl.cjs");
|
|
2
1
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
3
2
|
//#region src/components/data-display/card/Card.tsx
|
|
4
3
|
var Card = ({ title, description }) => {
|
|
@@ -27,4 +26,4 @@ Object.defineProperty(exports, "Card", {
|
|
|
27
26
|
}
|
|
28
27
|
});
|
|
29
28
|
|
|
30
|
-
//# sourceMappingURL=card-
|
|
29
|
+
//# sourceMappingURL=card-C_Qr7E6E.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-
|
|
1
|
+
{"version":3,"file":"card-C_Qr7E6E.cjs","names":[],"sources":["../../src/components/data-display/card/Card.tsx"],"sourcesContent":["import type { CardProps } from \"./types\";\n\nexport const Card = ({ title, description }: CardProps) => {\n return (\n <div className=\"ui\">\n <div className=\"backdrop-blur-xl bg-ds-surface-1/85 border border-ds-border-2 rounded-lg shadow-lg overflow-hidden sm:max-w-xs lg:max-w-sm xl:max-w-md\">\n <div className=\"px-6 py-4\">\n <h2 className=\"text-ds-1 font-bold text-xl mb-2\">{title}</h2>\n <p className=\"text-ds-2 bg-transparent border-none rounded-none font-sans text-base\">\n {description}\n </p>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":";;AAEA,IAAa,QAAQ,EAAE,OAAO,kBAA6B;CACzD,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAoC;IAAU,CAAA,GAC5D,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV;IACA,CAAA,CACA;;EACF,CAAA;CACF,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-
|
|
1
|
+
{"version":3,"file":"card-DYHDNCPK.mjs","names":[],"sources":["../../src/components/data-display/card/Card.tsx"],"sourcesContent":["import type { CardProps } from \"./types\";\n\nexport const Card = ({ title, description }: CardProps) => {\n return (\n <div className=\"ui\">\n <div className=\"backdrop-blur-xl bg-ds-surface-1/85 border border-ds-border-2 rounded-lg shadow-lg overflow-hidden sm:max-w-xs lg:max-w-sm xl:max-w-md\">\n <div className=\"px-6 py-4\">\n <h2 className=\"text-ds-1 font-bold text-xl mb-2\">{title}</h2>\n <p className=\"text-ds-2 bg-transparent border-none rounded-none font-sans text-base\">\n {description}\n </p>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":";;AAEA,IAAa,QAAQ,EAAE,OAAO,kBAA6B;CACzD,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,OAAD;GAAK,WAAU;aACb,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,MAAD;KAAI,WAAU;eAAoC;IAAU,CAAA,GAC5D,oBAAC,KAAD;KAAG,WAAU;eACV;IACA,CAAA,CACA;;EACF,CAAA;CACF,CAAA;AAET"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
require("./
|
|
2
|
-
const
|
|
3
|
-
const require_icons = require("./icons-ub9iu-JG.cjs");
|
|
1
|
+
const require_utils = require("./utils-CoA0q63n.cjs");
|
|
2
|
+
const require_icons = require("./icons-Ci8yEvvF.cjs");
|
|
4
3
|
let react = require("react");
|
|
5
4
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
5
|
let framer_motion = require("framer-motion");
|
|
@@ -189,7 +188,7 @@ var Carousel = ({ items, className, autoPlay = 0, showArrows = true, showDots =
|
|
|
189
188
|
}, [goNext, goPrev]);
|
|
190
189
|
const handleDragEnd = (_event, info) => {
|
|
191
190
|
const threshold = 50;
|
|
192
|
-
if (info.offset.x < -
|
|
191
|
+
if (info.offset.x < -50) goNext();
|
|
193
192
|
else if (info.offset.x > threshold) goPrev();
|
|
194
193
|
};
|
|
195
194
|
const currentItem = items[currentIndex];
|
|
@@ -310,4 +309,4 @@ Object.defineProperty(exports, "Carousel", {
|
|
|
310
309
|
}
|
|
311
310
|
});
|
|
312
311
|
|
|
313
|
-
//# sourceMappingURL=carousel-
|
|
312
|
+
//# sourceMappingURL=carousel-DtOJEbEU.cjs.map
|