@banzamel/mineralui 1.6.3 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{MAvatar-BVJh6kgW.cjs → MAvatar-CV3xJOmx.cjs} +2 -2
- package/dist/{MAvatar-BVJh6kgW.cjs.map → MAvatar-CV3xJOmx.cjs.map} +1 -1
- package/dist/{MBadge-B4x-Lx7e.cjs → MBadge-BoxsfX_h.cjs} +2 -2
- package/dist/{MBadge-B4x-Lx7e.cjs.map → MBadge-BoxsfX_h.cjs.map} +1 -1
- package/dist/{MButton-DrkVdRDy.cjs → MButton-B9k45kH-.cjs} +2 -2
- package/dist/{MButton-DrkVdRDy.cjs.map → MButton-B9k45kH-.cjs.map} +1 -1
- package/dist/{MCheckbox-C40ESQRe.cjs → MCheckbox-CdDWGVp3.cjs} +2 -2
- package/dist/{MCheckbox-C40ESQRe.cjs.map → MCheckbox-CdDWGVp3.cjs.map} +1 -1
- package/dist/MDataTable-C3v15no3.cjs +2 -0
- package/dist/MDataTable-C3v15no3.cjs.map +1 -0
- package/dist/MDataTable-C_XiTGTF.js +297 -0
- package/dist/MDataTable-C_XiTGTF.js.map +1 -0
- package/dist/{MDrawer-DFkrFrnD.cjs → MDrawer-BtA_Xgj0.cjs} +2 -2
- package/dist/{MDrawer-DFkrFrnD.cjs.map → MDrawer-BtA_Xgj0.cjs.map} +1 -1
- package/dist/{MDropdownMenu-D79Cm5aS.js → MDropdownMenu-BWgf92rJ.js} +5 -5
- package/dist/MDropdownMenu-BWgf92rJ.js.map +1 -0
- package/dist/MDropdownMenu-mGE19gCi.cjs +2 -0
- package/dist/MDropdownMenu-mGE19gCi.cjs.map +1 -0
- package/dist/{MGalleryIllustration-BB3DoCl_.cjs → MGalleryIllustration-D2agVuZM.cjs} +2 -2
- package/dist/{MGalleryIllustration-BB3DoCl_.cjs.map → MGalleryIllustration-D2agVuZM.cjs.map} +1 -1
- package/dist/{MHeading-BhCNoJeW.cjs → MHeading-BQCe_JhE.cjs} +2 -2
- package/dist/{MHeading-BhCNoJeW.cjs.map → MHeading-BQCe_JhE.cjs.map} +1 -1
- package/dist/{MI18nProvider-B2sE0x5D.cjs → MI18nProvider-CqAwaswx.cjs} +2 -2
- package/dist/{MI18nProvider-B2sE0x5D.cjs.map → MI18nProvider-CqAwaswx.cjs.map} +1 -1
- package/dist/{MImage-gwFphZk2.js → MImage-I0LPhcqF.js} +75 -69
- package/dist/MImage-I0LPhcqF.js.map +1 -0
- package/dist/MImage-hnSqIPaC.cjs +2 -0
- package/dist/MImage-hnSqIPaC.cjs.map +1 -0
- package/dist/{MInline-CHrh3PHH.cjs → MInline-FEXWkr71.cjs} +2 -2
- package/dist/{MInline-CHrh3PHH.cjs.map → MInline-FEXWkr71.cjs.map} +1 -1
- package/dist/{MInput-DYqV3-rQ.cjs → MInput-5-alcVsu.cjs} +2 -2
- package/dist/{MInput-DYqV3-rQ.cjs.map → MInput-5-alcVsu.cjs.map} +1 -1
- package/dist/{MInput-bzSwK880.js → MInput-CNSvoRiu.js} +2 -1
- package/dist/{MInput-bzSwK880.js.map → MInput-CNSvoRiu.js.map} +1 -1
- package/dist/{MInputCVC-BHpMHTO5.js → MInputCVC-BgougfgN.js} +3 -3
- package/dist/{MInputCVC-BHpMHTO5.js.map → MInputCVC-BgougfgN.js.map} +1 -1
- package/dist/{MInputCVC-5NkYSxV8.cjs → MInputCVC-CRWp1fYi.cjs} +2 -2
- package/dist/{MInputCVC-5NkYSxV8.cjs.map → MInputCVC-CRWp1fYi.cjs.map} +1 -1
- package/dist/{MInputSearch-Dh4C3Tz5.js → MInputSearch-BwR-BPh2.js} +2 -2
- package/dist/{MInputSearch-Dh4C3Tz5.js.map → MInputSearch-BwR-BPh2.js.map} +1 -1
- package/dist/{MInputSearch-DfoenJIm.cjs → MInputSearch-X9yNPuTf.cjs} +2 -2
- package/dist/{MInputSearch-DfoenJIm.cjs.map → MInputSearch-X9yNPuTf.cjs.map} +1 -1
- package/dist/{MLink-CY45UR_j.cjs → MLink-BakLkpKp.cjs} +2 -2
- package/dist/{MLink-CY45UR_j.cjs.map → MLink-BakLkpKp.cjs.map} +1 -1
- package/dist/{MModal-DT5BBgNZ.cjs → MModal-BYuPCSLG.cjs} +2 -2
- package/dist/{MModal-DT5BBgNZ.cjs.map → MModal-BYuPCSLG.cjs.map} +1 -1
- package/dist/{MModal-BDTAgnrm.js → MModal-K73juXhN.js} +2 -2
- package/dist/{MModal-BDTAgnrm.js.map → MModal-K73juXhN.js.map} +1 -1
- package/dist/{MPagination-CZEJMJzZ.cjs → MPagination-B8BcGks_.cjs} +2 -2
- package/dist/{MPagination-CZEJMJzZ.cjs.map → MPagination-B8BcGks_.cjs.map} +1 -1
- package/dist/{MPagination-CTnaW5AW.js → MPagination-BdBpF3Px.js} +1 -1
- package/dist/{MPagination-CTnaW5AW.js.map → MPagination-BdBpF3Px.js.map} +1 -1
- package/dist/{MPopover-B4IUb9f0.cjs → MPopover-DfEiRuM9.cjs} +2 -2
- package/dist/{MPopover-B4IUb9f0.cjs.map → MPopover-DfEiRuM9.cjs.map} +1 -1
- package/dist/{MPortal-Bi24xTGW.cjs → MPortal-CuBXhhl_.cjs} +2 -2
- package/dist/{MPortal-Bi24xTGW.cjs.map → MPortal-CuBXhhl_.cjs.map} +1 -1
- package/dist/{MQrCode-ByfmG33y.cjs → MQrCode-BXXTLtBP.cjs} +2 -2
- package/dist/{MQrCode-ByfmG33y.cjs.map → MQrCode-BXXTLtBP.cjs.map} +1 -1
- package/dist/{MSkeleton-DGhtNmpI.js → MSkeleton-BP7H_lsX.js} +2 -2
- package/dist/{MSkeleton-DGhtNmpI.js.map → MSkeleton-BP7H_lsX.js.map} +1 -1
- package/dist/{MSkeleton-5j1h9s95.cjs → MSkeleton-QO2sI-Ni.cjs} +2 -2
- package/dist/{MSkeleton-5j1h9s95.cjs.map → MSkeleton-QO2sI-Ni.cjs.map} +1 -1
- package/dist/{MSlider-Ch3VjAJC.cjs → MSlider-fhvfj0ft.cjs} +2 -2
- package/dist/{MSlider-Ch3VjAJC.cjs.map → MSlider-fhvfj0ft.cjs.map} +1 -1
- package/dist/{MSparkline-B6qpt5WM.cjs → MSparkline-CcM1n7Kh.cjs} +2 -2
- package/dist/{MSparkline-B6qpt5WM.cjs.map → MSparkline-CcM1n7Kh.cjs.map} +1 -1
- package/dist/{MStack-Bh-R2opf.cjs → MStack-Dy8Zl6FW.cjs} +2 -2
- package/dist/{MStack-Bh-R2opf.cjs.map → MStack-Dy8Zl6FW.cjs.map} +1 -1
- package/dist/{MSubText-C-70zn0m.cjs → MSubText-C1unzaCF.cjs} +2 -2
- package/dist/{MSubText-C-70zn0m.cjs.map → MSubText-C1unzaCF.cjs.map} +1 -1
- package/dist/{MSurface-DJYSftdM.js → MSurface-f_3vN0sd.js} +1 -1
- package/dist/{MSurface-DJYSftdM.js.map → MSurface-f_3vN0sd.js.map} +1 -1
- package/dist/{MSurface-CpiV1-7f.cjs → MSurface-wVqTsi1m.cjs} +2 -2
- package/dist/{MSurface-CpiV1-7f.cjs.map → MSurface-wVqTsi1m.cjs.map} +1 -1
- package/dist/MTabs-Dg31d-_D.js +89 -0
- package/dist/MTabs-Dg31d-_D.js.map +1 -0
- package/dist/MTabs-DuLqttVp.cjs +2 -0
- package/dist/MTabs-DuLqttVp.cjs.map +1 -0
- package/dist/{MTag-Y4Tswmli.cjs → MTag-CeLhZhqT.cjs} +2 -2
- package/dist/{MTag-Y4Tswmli.cjs.map → MTag-CeLhZhqT.cjs.map} +1 -1
- package/dist/{MText-DEJddMB5.cjs → MText-BbEkc0Ik.cjs} +2 -2
- package/dist/{MText-DEJddMB5.cjs.map → MText-BbEkc0Ik.cjs.map} +1 -1
- package/dist/{MTimeAgo-DxZGVo2Y.cjs → MTimeAgo-Dd0JQRGj.cjs} +2 -2
- package/dist/{MTimeAgo-DxZGVo2Y.cjs.map → MTimeAgo-Dd0JQRGj.cjs.map} +1 -1
- package/dist/{MToggle-C8vYRzpC.cjs → MToggle-BZSwJw_z.cjs} +2 -2
- package/dist/{MToggle-C8vYRzpC.cjs.map → MToggle-BZSwJw_z.cjs.map} +1 -1
- package/dist/{MTooltip-kSTMMpvu.cjs → MTooltip-BE0GcseJ.cjs} +2 -2
- package/dist/{MTooltip-kSTMMpvu.cjs.map → MTooltip-BE0GcseJ.cjs.map} +1 -1
- package/dist/{arduino-Eif5KI8O.js → arduino-5iMB2x4D.js} +1 -1
- package/dist/{arduino-Eif5KI8O.js.map → arduino-5iMB2x4D.js.map} +1 -1
- package/dist/{arduino-CXUo7Bjy.cjs → arduino-C1gw-z1N.cjs} +1 -1
- package/dist/{arduino-CXUo7Bjy.cjs.map → arduino-C1gw-z1N.cjs.map} +1 -1
- package/dist/{bash-CCF_TYbb.js → bash-CNKpaaFe.js} +1 -1
- package/dist/{bash-CCF_TYbb.js.map → bash-CNKpaaFe.js.map} +1 -1
- package/dist/{bash-W4h3o_nx.cjs → bash-wzZkpJC-.cjs} +1 -1
- package/dist/{bash-W4h3o_nx.cjs.map → bash-wzZkpJC-.cjs.map} +1 -1
- package/dist/{c-DVgkp6T3.js → c-BKjXPJPn.js} +1 -1
- package/dist/{c-DVgkp6T3.js.map → c-BKjXPJPn.js.map} +1 -1
- package/dist/{c-Dm60JY-W.cjs → c-BSPjDa0P.cjs} +1 -1
- package/dist/{c-Dm60JY-W.cjs.map → c-BSPjDa0P.cjs.map} +1 -1
- package/dist/{cards-fn61xD_5.js → cards-BYX8bM2l.js} +457 -307
- package/dist/cards-BYX8bM2l.js.map +1 -0
- package/dist/cards-lCx9oEVk.cjs +2 -0
- package/dist/cards-lCx9oEVk.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +3 -3
- package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
- package/dist/components/cards/MCardGrid/MCardGrid.types.d.ts +21 -5
- package/dist/components/cards/MCardTile/MCardTile.d.ts +2 -0
- package/dist/components/cards/MCardTile/MCardTile.types.d.ts +28 -0
- package/dist/components/cards/MCardTile/index.d.ts +2 -0
- package/dist/components/cards/ServiceCardsShared/ServiceCardsShared.d.ts +1 -1
- package/dist/components/cards/ServiceCardsShared/ServiceCardsShared.types.d.ts +1 -3
- package/dist/components/cards/index.d.ts +2 -0
- package/dist/components/data/MCalendarBoard/MCalendarBoard.d.ts +8 -7
- package/dist/components/data/MCalendarBoard/MCalendarBoard.types.d.ts +75 -6
- package/dist/components/data/MCalendarBoard/index.d.ts +2 -2
- package/dist/components/data/MDataTable/MDataTable.d.ts +1 -1
- package/dist/components/data/MDataTable/MDataTable.types.d.ts +23 -0
- package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
- package/dist/components/data/MTreeView/MTreeView.types.d.ts +9 -1
- package/dist/components/data/index.d.ts +2 -2
- package/dist/components/display/MBlur/MBlur.d.ts +2 -0
- package/dist/components/display/MBlur/MBlur.types.d.ts +13 -0
- package/dist/components/display/MBlur/index.d.ts +2 -0
- package/dist/components/display/index.d.ts +2 -0
- package/dist/components/inputs/MInputIBAN/MInputIBAN.types.d.ts +3 -3
- package/dist/components/inputs/MInputPhone/MInputPhone.types.d.ts +2 -0
- package/dist/components/layout/MGrid/MGrid.d.ts +2 -2
- package/dist/components/layout/MGrid/MGrid.types.d.ts +2 -0
- package/dist/components/media/MImage/MImage.d.ts +1 -1
- package/dist/components/media/MImage/MImage.types.d.ts +6 -1
- package/dist/components/media/MMediaLightbox/MMediaLightbox.d.ts +1 -1
- package/dist/components/overlays/MTooltip/MTooltip.types.d.ts +2 -2
- package/dist/{controls-C5PtrGZf.cjs → controls-CZCxbJgq.cjs} +2 -2
- package/dist/{controls-C5PtrGZf.cjs.map → controls-CZCxbJgq.cjs.map} +1 -1
- package/dist/controls.cjs +1 -1
- package/dist/{core-CB9-PTLK.js → core-B8VC-Umz.js} +1 -1
- package/dist/{core-CB9-PTLK.js.map → core-B8VC-Umz.js.map} +1 -1
- package/dist/{core-AKWkE8Bx.cjs → core-w629c4ND.cjs} +1 -1
- package/dist/{core-AKWkE8Bx.cjs.map → core-w629c4ND.cjs.map} +1 -1
- package/dist/{cpp-DyKt1H8n.cjs → cpp-LIcuHkFj.cjs} +1 -1
- package/dist/{cpp-DyKt1H8n.cjs.map → cpp-LIcuHkFj.cjs.map} +1 -1
- package/dist/{cpp-OOenfB17.js → cpp-bNWmO1Au.js} +1 -1
- package/dist/{cpp-OOenfB17.js.map → cpp-bNWmO1Au.js.map} +1 -1
- package/dist/creditCards-D_HwRUBz.cjs +2 -0
- package/dist/creditCards-D_HwRUBz.cjs.map +1 -0
- package/dist/{creditCards-CCysEwry.js → creditCards-D_iWmtG6.js} +14 -8
- package/dist/creditCards-D_iWmtG6.js.map +1 -0
- package/dist/{css-DxVbPJLu.cjs → css-D6fGBtGV.cjs} +1 -1
- package/dist/{css-DxVbPJLu.cjs.map → css-D6fGBtGV.cjs.map} +1 -1
- package/dist/{css-u5LSEAra.js → css-h_5aJA6y.js} +1 -1
- package/dist/{css-u5LSEAra.js.map → css-h_5aJA6y.js.map} +1 -1
- package/dist/data-CcS-eYye.cjs +2 -0
- package/dist/data-CcS-eYye.cjs.map +1 -0
- package/dist/data-DT1ncDx_.js +2997 -0
- package/dist/data-DT1ncDx_.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +3 -3
- package/dist/{display-BafEcBK_.cjs → display-BxVd6MMK.cjs} +3 -3
- package/dist/display-BxVd6MMK.cjs.map +1 -0
- package/dist/{display-Zxj9YHu_.js → display-CtVfcztO.js} +47 -18
- package/dist/display-CtVfcztO.js.map +1 -0
- package/dist/display.cjs +1 -1
- package/dist/display.js +4 -4
- package/dist/dropdowns-BgpcQ9Hq.cjs +2 -0
- package/dist/dropdowns-BgpcQ9Hq.cjs.map +1 -0
- package/dist/{dropdowns-Bw8obCYl.js → dropdowns-C58ur0qF.js} +582 -555
- package/dist/dropdowns-C58ur0qF.js.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/{feedback-Di0SEpRe.cjs → feedback-BJiO6j28.cjs} +2 -2
- package/dist/{feedback-Di0SEpRe.cjs.map → feedback-BJiO6j28.cjs.map} +1 -1
- package/dist/{feedback-8H3bmQw5.js → feedback-q3oO-E_X.js} +5 -5
- package/dist/{feedback-8H3bmQw5.js.map → feedback-q3oO-E_X.js.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +2 -2
- package/dist/{form-BYz99Py5.cjs → form-D7OKrCBM.cjs} +2 -2
- package/dist/{form-BYz99Py5.cjs.map → form-D7OKrCBM.cjs.map} +1 -1
- package/dist/{form-JHlvtP9r.js → form-DIOkVhd9.js} +2 -2
- package/dist/{form-JHlvtP9r.js.map → form-DIOkVhd9.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{frameworkTexts-CvxcWRXp.js → frameworkTexts-Bzd6bn9s.js} +3 -1
- package/dist/frameworkTexts-Bzd6bn9s.js.map +1 -0
- package/dist/frameworkTexts-CJHzJHsg.cjs +2 -0
- package/dist/frameworkTexts-CJHzJHsg.cjs.map +1 -0
- package/dist/i18n/frameworkTexts.d.ts +2 -0
- package/dist/i18n.cjs +1 -1
- package/dist/icons-CfpYxnfg.js.map +1 -1
- package/dist/{icons-DWMgDKgt.cjs → icons-lUQfZ4Jr.cjs} +2 -2
- package/dist/{icons-DWMgDKgt.cjs.map → icons-lUQfZ4Jr.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/illustrations.cjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +43 -42
- package/dist/inputs-DOO1tKK9.cjs +2 -0
- package/dist/inputs-DOO1tKK9.cjs.map +1 -0
- package/dist/{inputs-Bcwd_UTr.js → inputs-Dwjwa_SJ.js} +545 -439
- package/dist/inputs-Dwjwa_SJ.js.map +1 -0
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +5 -5
- package/dist/{javascript-CXjsxb-I.js → javascript-BnTECToz.js} +1 -1
- package/dist/{javascript-CXjsxb-I.js.map → javascript-BnTECToz.js.map} +1 -1
- package/dist/{javascript-CzjCTQxn.cjs → javascript-Oy5hkezl.cjs} +1 -1
- package/dist/{javascript-CzjCTQxn.cjs.map → javascript-Oy5hkezl.cjs.map} +1 -1
- package/dist/{json-9Qq5guN0.cjs → json-BP8eqPWc.cjs} +1 -1
- package/dist/{json-9Qq5guN0.cjs.map → json-BP8eqPWc.cjs.map} +1 -1
- package/dist/{json-CyV5VF8D.js → json-Ci-bDynf.js} +1 -1
- package/dist/{json-CyV5VF8D.js.map → json-Ci-bDynf.js.map} +1 -1
- package/dist/layout-B3S9bvaP.cjs +2 -0
- package/dist/layout-B3S9bvaP.cjs.map +1 -0
- package/dist/{layout-BpEnTocp.js → layout-BqDbW0Qn.js} +265 -347
- package/dist/layout-BqDbW0Qn.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +7 -6
- package/dist/{licensing-ezfo7ZTh.cjs → licensing-Df1Z1rnQ.cjs} +2 -2
- package/dist/{licensing-ezfo7ZTh.cjs.map → licensing-Df1Z1rnQ.cjs.map} +1 -1
- package/dist/{locale-CZyqh3ON.cjs → locale-Ba2yreFR.cjs} +2 -2
- package/dist/{locale-CZyqh3ON.cjs.map → locale-Ba2yreFR.cjs.map} +1 -1
- package/dist/{media-ClgUKDca.cjs → media-C5atCcc6.cjs} +2 -2
- package/dist/{media-ClgUKDca.cjs.map → media-C5atCcc6.cjs.map} +1 -1
- package/dist/{media-C3M0npGW.js → media-DdshnqJ1.js} +3 -3
- package/dist/{media-C3M0npGW.js.map → media-DdshnqJ1.js.map} +1 -1
- package/dist/media.cjs +1 -1
- package/dist/media.js +2 -2
- package/dist/{overlays-DrSGzbbA.cjs → overlays-BC_6IATL.cjs} +2 -2
- package/dist/{overlays-DrSGzbbA.cjs.map → overlays-BC_6IATL.cjs.map} +1 -1
- package/dist/{overlays-CGlqD3rl.js → overlays-zUoV_Jy7.js} +2 -2
- package/dist/{overlays-CGlqD3rl.js.map → overlays-zUoV_Jy7.js.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/{php-Br75m0HU.cjs → php-Cwjc-ZYq.cjs} +1 -1
- package/dist/{php-Br75m0HU.cjs.map → php-Cwjc-ZYq.cjs.map} +1 -1
- package/dist/{php-deNqvHeU.js → php-DJ5j7KZU.js} +1 -1
- package/dist/{php-deNqvHeU.js.map → php-DJ5j7KZU.js.map} +1 -1
- package/dist/primitives.cjs +1 -1
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/{theme-CgS-bND3.cjs → theme-Bb_NAEiZ.cjs} +2 -2
- package/dist/{theme-CgS-bND3.cjs.map → theme-Bb_NAEiZ.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{typescript-jNfCpQvl.js → typescript-DUexJ4gh.js} +1 -1
- package/dist/{typescript-jNfCpQvl.js.map → typescript-DUexJ4gh.js.map} +1 -1
- package/dist/{typescript-CRgqVaw_.cjs → typescript-QKlfKtex.cjs} +1 -1
- package/dist/{typescript-CRgqVaw_.cjs.map → typescript-QKlfKtex.cjs.map} +1 -1
- package/dist/{typography-Zo4Usx9I.cjs → typography-CRKIyR-B.cjs} +2 -2
- package/dist/{typography-Zo4Usx9I.cjs.map → typography-CRKIyR-B.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/{useGhostText-tv1LiSPs.cjs → useGhostText-mibV4s1-.cjs} +2 -2
- package/dist/{useGhostText-tv1LiSPs.cjs.map → useGhostText-mibV4s1-.cjs.map} +1 -1
- package/dist/{useInteractionEffect-D1ZdNbKU.cjs → useInteractionEffect-CtXlbjhC.cjs} +2 -2
- package/dist/{useInteractionEffect-D1ZdNbKU.cjs.map → useInteractionEffect-CtXlbjhC.cjs.map} +1 -1
- package/dist/{useKeyboardNav-CkIlAagq.cjs → useKeyboardNav-CCUoRMgm.cjs} +2 -2
- package/dist/{useKeyboardNav-CkIlAagq.cjs.map → useKeyboardNav-CCUoRMgm.cjs.map} +1 -1
- package/dist/utils/creditCards.d.ts +1 -0
- package/dist/utils/validators.d.ts +2 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +3 -3
- package/dist/{validators-H8tNxb8O.js → validators-D5OCyV2h.js} +23 -20
- package/dist/validators-D5OCyV2h.js.map +1 -0
- package/dist/{validators-BeNTD8mf.cjs → validators-DRhikiAi.cjs} +2 -2
- package/dist/validators-DRhikiAi.cjs.map +1 -0
- package/dist/{xml-C_ksWBRH.cjs → xml-DEtyywwU.cjs} +1 -1
- package/dist/{xml-C_ksWBRH.cjs.map → xml-DEtyywwU.cjs.map} +1 -1
- package/dist/{xml-0Th6YIDv.js → xml-DlZghN7m.js} +1 -1
- package/dist/{xml-0Th6YIDv.js.map → xml-DlZghN7m.js.map} +1 -1
- package/package.json +1 -1
- package/dist/MDataTable-Bx7W-Ari.cjs +0 -2
- package/dist/MDataTable-Bx7W-Ari.cjs.map +0 -1
- package/dist/MDataTable-ByvNQqNP.js +0 -149
- package/dist/MDataTable-ByvNQqNP.js.map +0 -1
- package/dist/MDropdownMenu-BmfXSc46.cjs +0 -2
- package/dist/MDropdownMenu-BmfXSc46.cjs.map +0 -1
- package/dist/MDropdownMenu-D79Cm5aS.js.map +0 -1
- package/dist/MImage-L_zgfWRY.cjs +0 -2
- package/dist/MImage-L_zgfWRY.cjs.map +0 -1
- package/dist/MImage-gwFphZk2.js.map +0 -1
- package/dist/cards-BiYdorB0.cjs +0 -2
- package/dist/cards-BiYdorB0.cjs.map +0 -1
- package/dist/cards-fn61xD_5.js.map +0 -1
- package/dist/creditCards-CCysEwry.js.map +0 -1
- package/dist/creditCards-ljs044xt.cjs +0 -2
- package/dist/creditCards-ljs044xt.cjs.map +0 -1
- package/dist/data-Bw9FSZ80.cjs +0 -2
- package/dist/data-Bw9FSZ80.cjs.map +0 -1
- package/dist/data-CMSIr_Ac.js +0 -2527
- package/dist/data-CMSIr_Ac.js.map +0 -1
- package/dist/display-BafEcBK_.cjs.map +0 -1
- package/dist/display-Zxj9YHu_.js.map +0 -1
- package/dist/dropdowns-Bw8obCYl.js.map +0 -1
- package/dist/dropdowns-DN7j1HhE.cjs +0 -2
- package/dist/dropdowns-DN7j1HhE.cjs.map +0 -1
- package/dist/frameworkTexts-CvxcWRXp.js.map +0 -1
- package/dist/frameworkTexts-abkS5XZK.cjs +0 -2
- package/dist/frameworkTexts-abkS5XZK.cjs.map +0 -1
- package/dist/inputs-Bcwd_UTr.js.map +0 -1
- package/dist/inputs-FP545Yri.cjs +0 -2
- package/dist/inputs-FP545Yri.cjs.map +0 -1
- package/dist/layout-BpEnTocp.js.map +0 -1
- package/dist/layout-rtlHrjDb.cjs +0 -2
- package/dist/layout-rtlHrjDb.cjs.map +0 -1
- package/dist/validators-BeNTD8mf.cjs.map +0 -1
- package/dist/validators-H8tNxb8O.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./icons-lUQfZ4Jr.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./validators-DRhikiAi.cjs`),r=require(`./formatters-CNjg_h7-.cjs`),i=require(`./dateUtils-Dq1vaA-D.cjs`),a=require(`./useGhostText-mibV4s1-.cjs`),o=require(`./useKeyboardNav-CCUoRMgm.cjs`),s=require(`./MPopover-DfEiRuM9.cjs`),c=require(`./MButton-B9k45kH-.cjs`),l=require(`./MCheckbox-CdDWGVp3.cjs`),u=require(`./MTag-CeLhZhqT.cjs`),d=require(`./MInput-5-alcVsu.cjs`),f=require(`./locale-Ba2yreFR.cjs`),p=require(`./frameworkTexts-CJHzJHsg.cjs`);require(`./core-w629c4ND.cjs`);let m=require(`react`),h=require(`react/jsx-runtime`);function g({options:n,value:r,defaultValue:i,onChange:a,multiple:d=!1,searchable:f=!1,placeholder:p=`MSelect...`,disabled:g=!1,name:_,id:ee,variant:te=`outlined`,size:v=`md`,color:y,fullWidth:ne=!1,label:b,helperText:re,errorText:x,error:ie=!1,required:ae=!1,loading:oe=!1,clearable:S=!1,maxHeight:C=300,noOptionsText:w=`No options`,renderOption:se,renderValue:T,className:E,style:D}){let[O,k]=(0,m.useState)(!1),[ce,A]=(0,m.useState)(i??(d?[]:``)),[j,M]=(0,m.useState)(``),le=(0,m.useRef)(null),N=r===void 0?ce:r,P=ie||!!x,F=(0,m.useMemo)(()=>Array.isArray(N)?N:N?[N]:[],[N]),I=(0,m.useMemo)(()=>n.filter(e=>F.includes(e.value)),[n,F]),L=(0,m.useMemo)(()=>{if(!f||!j)return n;let e=j.toLowerCase();return n.filter(t=>t.label.toLowerCase().includes(e))},[n,f,j]),R=(0,m.useMemo)(()=>{let e=new Map;for(let t of L){let n=t.group??``;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[L]),z=L,B=(0,m.useCallback)(e=>{let t=z[e];if(!(!t||t.disabled))if(d){let e=Array.isArray(N)?N:[],n=e.includes(t.value)?e.filter(e=>e!==t.value):[...e,t.value];r===void 0&&A(n),a?.(n)}else r===void 0&&A(t.value),a?.(t.value),k(!1),M(``)},[z,d,N,r,a]),{activeIndex:V,setActiveIndex:H,resetIndex:ue,onKeyDown:U}=o.t({itemCount:z.length,onSelect:B,onClose:()=>{k(!1),M(``)},isOpen:O}),W=(0,m.useCallback)(()=>{g||(k(e=>!e),ue())},[g,ue]),de=(0,m.useCallback)(e=>{e.stopPropagation();let t=d?[]:``;r===void 0&&A(t),a?.(t)},[d,r,a]),fe=(0,m.useMemo)(()=>T&&I.length>0?T(d?I:I[0]):d&&I.length>0?(0,h.jsx)(`span`,{className:`tags`,children:I.map(e=>(0,h.jsx)(u.t,{label:e.label,color:y,size:v,variant:`solid`},e.value))}):!d&&I.length>0?I[0].label:(0,h.jsx)(`span`,{className:`placeholder`,children:p}),[I,d,T,p,y,v]);return(0,h.jsxs)(`div`,{className:t.t(`select`,y&&`color-${y}`,ne&&`full-width`,E),style:D,children:[b&&(0,h.jsx)(`label`,{htmlFor:ee,className:t.t(`field-label`,O&&`focused`,P&&`error`,ae&&`required`),children:b}),(0,h.jsxs)(`div`,{ref:le,className:t.t(`trigger`,`field-${te}`,`field-${v}`,O&&`focused`,P&&`error`,g&&`disabled`),onClick:W,onKeyDown:U,tabIndex:g?-1:0,role:`combobox`,"aria-expanded":O,"aria-haspopup":`listbox`,"aria-invalid":P||void 0,id:ee,children:[(0,h.jsx)(`span`,{className:`value`,children:fe}),oe&&(0,h.jsx)(c.r,{size:`sm`,color:y}),S&&F.length>0&&!oe&&!g&&(0,h.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:de,tabIndex:-1,"aria-label":`Clear selection`,children:(0,h.jsx)(e.Li,{})}),(0,h.jsx)(`span`,{className:t.t(`arrow`,O&&`open`),"aria-hidden":`true`,children:(0,h.jsx)(e.Ni,{})})]}),_&&(0,h.jsx)(`input`,{type:`hidden`,name:_,value:Array.isArray(N)?N.join(`,`):N}),(0,h.jsx)(s.t,{className:`select-popover`,open:O,anchorRef:le,onClose:()=>{k(!1),M(``)},matchWidth:!0,placement:`bottom-start`,children:(0,h.jsxs)(`div`,{style:{maxHeight:C},className:`dropdown`,children:[f&&(0,h.jsx)(`div`,{className:`search-box`,children:(0,h.jsx)(`input`,{type:`text`,className:`search-input`,placeholder:`Search...`,value:j,onChange:e=>{M(e.target.value),H(0)},onKeyDown:U,autoFocus:!0})}),z.length===0?(0,h.jsx)(`div`,{className:`no-options`,children:w}):(0,h.jsx)(`div`,{className:`options-list`,role:`listbox`,children:[...R.entries()].map(([e,n])=>(0,h.jsxs)(`div`,{children:[e&&(0,h.jsx)(`div`,{className:`group-header`,children:e}),n.map(e=>{let n=z.indexOf(e),r=n===V,i=F.includes(e.value);return(0,h.jsxs)(`div`,{className:t.t(`option`,r&&`active`,i&&`selected`,e.disabled&&`disabled`),onClick:()=>!e.disabled&&B(n),onMouseEnter:()=>H(n),role:`option`,"aria-selected":i,"aria-disabled":e.disabled,children:[d&&(0,h.jsx)(l.t,{checked:i,size:`sm`,color:y,clickEffect:`none`,className:`select-check`}),se?se(e,r,i):e.label]},e.value)})]},e))})]})}),(x||re)&&(0,h.jsx)(`div`,{className:`bottom-row`,children:x?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:x}):(0,h.jsx)(`span`,{className:`helper-text`,children:re})})]})}function _(e){return typeof e==`string`?e:String(e)}function ee(e){return typeof e==`string`?e:String(e)}function te(e,t,n){if(!t)return e;let r=t.toLowerCase();return e.filter(e=>n(e).toLowerCase().includes(r))}function v({options:n,value:r,onChange:i,getOptionLabel:l=_,getOptionValue:d=ee,filterOptions:f,multiple:p=!1,debounceMs:g=0,onInputChange:v,loading:y=!1,loadingText:ne=`Loading...`,noOptionsText:b=`No options`,placeholder:re=`Type to search...`,disabled:x=!1,name:ie,id:ae,variant:oe=`outlined`,size:S=`md`,color:C,fullWidth:w=!1,label:se,helperText:T,errorText:E,error:D=!1,required:O=!1,clearable:k=!1,maxHeight:ce=300,renderOption:A,renderTags:j,className:M,style:le}){let[N,P]=(0,m.useState)(!1),[F,I]=(0,m.useState)(``),L=(0,m.useRef)(null),R=(0,m.useRef)(null),z=D||!!E,B=(0,m.useMemo)(()=>r==null?[]:Array.isArray(r)?r.filter(e=>e!=null):[r],[r]),V=(0,m.useMemo)(()=>f?f(n,F):te(n,F,l),[n,F,f,l]),H=a.r(e=>v?.(e),g),ue=(0,m.useCallback)(e=>{I(e.target.value),H(e.target.value),N||P(!0)},[N,H]),U=(0,m.useCallback)(e=>{let t=V[e];if(t)if(p){let e=[...B],n=d(t),r=e.findIndex(e=>d(e)===n);r>=0?e.splice(r,1):e.push(t),i?.(e),I(``),R.current?.focus()}else i?.(t),I(l(t)),P(!1)},[V,p,B,d,l,i]),W=(0,m.useCallback)(e=>{let t=[...B];t.splice(e,1),i?.(p?t:t[0]??``)},[B,i,p]),{activeIndex:de,setActiveIndex:fe,resetIndex:pe,onKeyDown:me}=o.t({itemCount:V.length,onSelect:U,onClose:()=>P(!1),isOpen:N}),G=(0,m.useCallback)(e=>{if(e.key===`Backspace`&&p&&!F&&B.length>0){W(B.length-1);return}me(e)},[F,p,B,me,W]),K=(0,m.useCallback)(e=>{e.stopPropagation(),I(``),i?.(p?[]:``),R.current?.focus()},[p,i]);return(0,h.jsxs)(`div`,{className:t.t(`autocomplete`,C&&`color-${C}`,w&&`full-width`,M),style:le,children:[se&&(0,h.jsx)(`label`,{htmlFor:ae,className:t.t(`field-label`,N&&`focused`,z&&`error`,O&&`required`),children:se}),(0,h.jsxs)(`div`,{ref:L,className:t.t(`input-wrapper`,`field-${oe}`,`field-${S}`,N&&`focused`,z&&`error`,x&&`disabled`),onClick:()=>R.current?.focus(),children:[p&&B.length>0&&(j?j(B,W):(0,h.jsx)(`span`,{className:`tags`,children:B.map((e,t)=>(0,h.jsx)(u.t,{label:l(e),color:C,size:S,variant:`solid`,closable:!0,onClose:()=>W(t)},d(e)))})),(0,h.jsx)(`input`,{ref:R,type:`text`,className:`input`,value:F,onChange:ue,onFocus:()=>{P(!0),pe()},onKeyDown:G,placeholder:B.length>0?``:re,disabled:x,id:ae,"aria-expanded":N,"aria-haspopup":`listbox`,"aria-invalid":z||void 0,autoComplete:`off`}),y&&(0,h.jsx)(c.r,{size:`sm`,color:C}),k&&(B.length>0||F)&&!y&&!x&&(0,h.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:K,tabIndex:-1,children:(0,h.jsx)(e.Li,{})})]}),ie&&(0,h.jsx)(`input`,{type:`hidden`,name:ie,value:B.map(d).join(`,`)}),(0,h.jsx)(s.t,{className:t.t(`autocomplete-popover`,C&&`color-${C}`),open:N&&(V.length>0||y||!!F),anchorRef:L,onClose:()=>P(!1),matchWidth:!0,placement:`bottom-start`,children:(0,h.jsx)(`div`,{style:{maxHeight:ce},className:`dropdown`,children:y?(0,h.jsx)(`div`,{className:`loading-msg`,children:ne}):V.length===0?(0,h.jsx)(`div`,{className:`no-options`,children:b}):(0,h.jsx)(`div`,{className:`options-list`,role:`listbox`,children:V.map((e,n)=>{let r=n===de,i=B.some(t=>d(t)===d(e));return(0,h.jsx)(`div`,{className:t.t(`option`,r&&`active`,i&&`selected`),onClick:()=>U(n),onMouseEnter:()=>fe(n),role:`option`,"aria-selected":i,children:A?A(e,r):l(e)},d(e))})})})}),(E||T)&&(0,h.jsx)(`div`,{className:`bottom-row`,children:E?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:E}):(0,h.jsx)(`span`,{className:`helper-text`,children:T})})]})}var y={primary:`var(--mineral-primary-rgb)`,neutral:`var(--mineral-neutral-rgb)`,success:`var(--mineral-success-rgb)`,error:`var(--mineral-error-rgb)`,warning:`var(--mineral-warning-rgb)`,info:`var(--mineral-info-rgb)`,light:`var(--mineral-light-rgb)`,dark:`var(--mineral-dark-color-rgb)`,news:`var(--mineral-news-rgb)`};function ne(e){return y[e??`primary`]??y.primary}var b=`Date is unavailable`,re=`Invalid time`;function x(e){if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:new Date(e.getTime());let t=new Date(e);return isNaN(t.getTime())?null:t}function ie(e){let t=e.replace(/DD/g,`dd`).replace(/YYYY/g,`yyyy`),n=t.match(/dd|MM|yyyy/g),r=t.match(/[^dMy]/)?.[0],i=r===`/`||r===`.`||r===`-`?r:`.`;switch(n?.join(`/`)){case`MM/dd/yyyy`:return{inputFormat:`MM/DD/YYYY`,separator:i};case`yyyy/MM/dd`:return{inputFormat:`YYYY/MM/DD`,separator:i};default:return{inputFormat:`DD/MM/YYYY`,separator:i}}}function ae(e,t){return e===`12h`?t?`hh:mm:ss AM`:`hh:mm AM`:t?`HH:MM:SS`:`HH:MM`}function oe(e,t,n,r,i,a){return e||(n?`${t} ${a??ae(r,i)}`:t)}function S(e,t){if(!e)return``;let n=i.o(i._(e),t.format);return t.withTime?`${n} ${i.l(e.getHours(),e.getMinutes(),e.getSeconds(),t.showSeconds,t.timeFormat)}`:n}function C(e,t){return e?e.length<=2?e:e.length<=4?`${e.slice(0,2)}:${e.slice(2)}`:t?`${e.slice(0,2)}:${e.slice(2,4)}:${e.slice(4,6)}`:`${e.slice(0,2)}:${e.slice(2,4)}`:``}function w(e){let t=e.toUpperCase().replace(/[^APM]/g,``);return t?t.startsWith(`AM`)?`AM`:t.startsWith(`PM`)?`PM`:t.startsWith(`A`)?`A`:t.startsWith(`P`)?`P`:``:``}function se(e,t){let n=e.trim();if(!n)return{datePart:``,timePart:``};if(!t)return{datePart:n,timePart:``};let r=n.indexOf(` `);return r===-1?{datePart:n,timePart:``}:{datePart:n.slice(0,r).trim(),timePart:n.slice(r+1).trim()}}function T(e,t){let n=e.toUpperCase(),i=r.u(n),a=i.slice(0,8),o=t.withTime?i.slice(8,8+(t.showSeconds?6:4)):``,s=r.i(a,t.inputFormat,t.separator);if(!t.withTime)return{formatted:s,datePart:s,timePart:``};let c=C(o,t.showSeconds),l=t.timeFormat===`12h`?w(n):``,u=`${c}${l?`${c?` `:``}${l}`:``}`.trim();if(!s)return{formatted:u,datePart:``,timePart:u};let d=a.length===8,f=/\s/.test(n.slice(s.length));return{formatted:u||d&&f?`${s} ${u}`:s,datePart:s,timePart:u}}function E(e,t){return e?i.l(e.getHours(),e.getMinutes(),e.getSeconds(),t,`24h`):``}function D(e,t){let{datePart:r,timePart:a}=se(e,t.withTime);if(!r&&!a)return{status:`empty`};let o=n.a(r,{format:t.inputFormat,minDate:t.minDate??void 0,maxDate:t.maxDate??void 0});if(!o.valid)return o.error===`Incomplete date`?{status:`partial`,datePart:r,timePart:a}:{status:`invalid`,datePart:r,timePart:a,result:o};let s=n.i(r,t.inputFormat);return s?t.isDisabled(s)?{status:`invalid`,datePart:r,timePart:a,result:{valid:!1,error:b}}:t.withTime?a?i.g(a,t.timeFormat)?{status:`valid`,datePart:r,timePart:a,value:i.r(s,a,{format:t.timeFormat,showSeconds:t.showSeconds})}:{status:`invalid`,datePart:r,timePart:a,result:{valid:!1,error:re}}:{status:`valid`,datePart:r,timePart:``,value:i.r(s,``,{format:t.timeFormat,showSeconds:t.showSeconds})}:{status:`valid`,datePart:r,timePart:``,value:i._(s)}:{status:`invalid`,datePart:r,timePart:a,result:{valid:!1,error:`Invalid date`}}}function O(e){let t=e.hours>=12?`PM`:`AM`;return{hours:e.hours%12||12,minutes:e.minutes,seconds:e.seconds,meridiem:t}}function k(e,t){return t===`AM`?e===12?0:e:e===12?12:e+12}function ce({value:n,defaultValue:a,onChange:o,format:c=`dd.MM.yyyy`,locale:l,min:u,max:g,disabledDates:_,placeholder:ee,disabled:te=!1,readOnly:v=!1,name:y,id:b,variant:ae=`outlined`,size:C=`md`,color:w,label:se,helperText:ce,errorText:j,error:M=!1,required:le=!1,clearable:N=!1,withTime:P=!1,validateOnBlur:F=!0,validateOnChange:I=!1,onValidationChange:L,timeFormat:R=`24h`,showSeconds:z=!1,minuteStep:B=1,timePlaceholder:V,inline:H=!1,showTodayButton:ue=!0,firstDayOfWeek:U=1,fullWidth:W=!1,className:de,style:fe}){let pe=f.t(l),me=p.r(),{inputFormat:G,separator:K}=(0,m.useMemo)(()=>ie(c),[c]),[he,ge]=(0,m.useState)(!1),[_e,ve]=(0,m.useState)(()=>x(a)),[ye,be]=(0,m.useState)({valid:!0}),[xe,q]=(0,m.useState)(!1),J=n===void 0?_e:x(n),[Se,Ce]=(0,m.useState)(()=>S(J,{format:c,withTime:P,timeFormat:R,showSeconds:z})),[we,Te]=(0,m.useState)(()=>E(J,z)),[Y,Ee]=(0,m.useState)(()=>{let e=J?i._(J):new Date;return new Date(e.getFullYear(),e.getMonth(),1)}),[De,Oe]=(0,m.useState)(`days`),ke=(0,m.useRef)(null),Ae=J?.getTime()??null,je=x(u),Me=x(g),Ne=M||xe&&!ye.valid,Pe=j||(xe&&!ye.valid?ye.error:void 0),Fe=i.u(pe,U),Ie=i.d(pe);(0,m.useEffect)(()=>{if(Ce(S(J,{format:c,withTime:P,timeFormat:R,showSeconds:z})),Te(E(J,z)),J){let e=i._(J);Ee(new Date(e.getFullYear(),e.getMonth(),1))}},[c,Ae,z,R,P]);let X=(0,m.useCallback)(e=>i.f(e,je,Me)?Array.isArray(_)?_.some(t=>i.p(t,e)):typeof _==`function`?_(e):!1:!0,[_,Me,je]),Z=(0,m.useCallback)(e=>{be(e),L?.(e)},[L]),Q=(0,m.useCallback)(e=>{n===void 0&&ve(e),o?.(e)},[o,n]),Le=(0,m.useMemo)(()=>D(Se,{inputFormat:G,minDate:je,maxDate:Me,withTime:P,timeFormat:R,showSeconds:z,isDisabled:X}),[G,Se,X,Me,je,z,R,P]),Re=(0,m.useMemo)(()=>Le.status===`valid`?i._(Le.value):J?i._(J):null,[Le,J]),$=(0,m.useMemo)(()=>P?i.g(Le.status!==`empty`&&Le.timePart?Le.timePart:we||E(J,z),R)??{hours:0,minutes:0,seconds:0}:null,[we,Le,J,z,R,P]),ze=(0,m.useCallback)(e=>{let t=T(e.target.value,{inputFormat:G,separator:K,withTime:P,timeFormat:R,showSeconds:z});Ce(t.formatted),Te(t.timePart);let n=D(t.formatted,{inputFormat:G,minDate:je,maxDate:Me,withTime:P,timeFormat:R,showSeconds:z,isDisabled:X});if(n.status===`empty`){Z({valid:!0}),Q(null);return}if(n.status===`invalid`&&I)Z(n.result);else if(n.status===`valid`){Z({valid:!0}),Ee(new Date(n.value.getFullYear(),n.value.getMonth(),1));let t=z?6:4,i=P?r.u(e.target.value).slice(8).length:0;(!P||i>=t)&&Q(n.value)}},[Q,Z,G,X,Me,je,K,z,R,I,P]),Be=(0,m.useCallback)(()=>{q(!0);let e=D(Se,{inputFormat:G,minDate:je,maxDate:Me,withTime:P,timeFormat:R,showSeconds:z,isDisabled:X});if(e.status===`empty`){Z({valid:!0});return}if(e.status===`partial`){F&&Z({valid:!1,error:`Incomplete date`});return}if(e.status===`invalid`){if(P&&e.result.error===re&&e.datePart){let t=i.l(0,0,0,z,R),n=D(`${e.datePart} ${t}`,{inputFormat:G,minDate:je,maxDate:Me,withTime:P,timeFormat:R,showSeconds:z,isDisabled:X});if(n.status===`valid`){Z({valid:!0}),Ce(S(n.value,{format:c,withTime:P,timeFormat:R,showSeconds:z})),Te(E(n.value,z)),Q(n.value);return}}F&&Z(e.result);return}Z({valid:!0}),Ce(S(e.value,{format:c,withTime:P,timeFormat:R,showSeconds:z})),Te(E(e.value,z)),Q(e.value)},[Q,Z,c,G,Se,X,Me,je,z,R,F,P]),Ve=(0,m.useCallback)(e=>{[`Backspace`,`Delete`,`Tab`,`ArrowLeft`,`ArrowRight`,`Home`,`End`,`Enter`].includes(e.key)||e.ctrlKey||e.metaKey||(P?/^[0-9\s:./-APMapm]$/:/^[0-9./-]$/).test(e.key)||e.preventDefault()},[P]),He=(0,m.useCallback)(()=>{Ce(``),Te(``),q(!1),Z({valid:!0}),Q(null)},[Q,Z]),Ue=(0,m.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!(te||v||H)&&ge(e=>!e)},[te,H,v]),We=(0,m.useCallback)(e=>{if(X(e))return;let t=P?we||i.l(0,0,0,z,R):``,n=P?i.r(e,t,{format:R,showSeconds:z}):i._(e);q(!0),Z({valid:!0}),Te(t),Ce(S(n,{format:c,withTime:P,timeFormat:R,showSeconds:z})),Ee(new Date(e.getFullYear(),e.getMonth(),1)),Q(n),!P&&!H&&ge(!1)},[Q,we,Z,c,H,X,z,R,P]),Ge=(0,m.useCallback)(()=>{let e=i._(new Date);X(e)||We(e)},[We,X]),Ke=(0,m.useMemo)(()=>{if(!P)return[];let e=[],t=R===`12h`?12:23,n=+(R===`12h`);for(let r=n;r<=t;r+=1)e.push(r);return e},[R,P]),qe=(0,m.useMemo)(()=>{if(!P)return[];let e=[];for(let t=0;t<60;t+=B)e.push(t);return e},[B,P]),Je=(0,m.useMemo)(()=>{if(!P||!z)return[];let e=[];for(let t=0;t<60;t+=1)e.push(t);return e},[z,P]),Ye=(0,m.useCallback)((e,t,n=0)=>{let r=i.l(e,t,n,z,R),a=Re;if(q(!0),Te(r),!a){Ce(r);return}let o=i.r(a,r,{format:R,showSeconds:z});Z({valid:!0}),Ce(S(o,{format:c,withTime:P,timeFormat:R,showSeconds:z})),Q(o)},[Q,Re,Z,c,z,R,P]),Xe=(0,m.useCallback)(e=>{Ye(k($?O($).hours:12,e),$?.minutes??0,$?.seconds??0)},[$,Ye]),Ze=(0,m.useMemo)(()=>{let e=Y.getFullYear(),t=Y.getMonth(),n=i.i(e,t),r=i.a(e,t);U===1&&(r=r===0?6:r-1);let a=[],o=t===0?11:t-1,s=t===0?e-1:e,c=i.i(s,o);for(let e=r-1;e>=0;--e)a.push({date:new Date(s,o,c-e),currentMonth:!1});for(let r=1;r<=n;r+=1)a.push({date:new Date(e,t,r),currentMonth:!0});let l=42-a.length,u=t===11?0:t+1,d=t===11?e+1:e;for(let e=1;e<=l;e+=1)a.push({date:new Date(d,u,e),currentMonth:!1});return a},[U,Y]),Qe=i._(new Date),$e=J?i._(J):Re,et=()=>(0,h.jsxs)(`div`,{className:`calendar`,children:[(0,h.jsxs)(`div`,{className:`calendar-header`,children:[(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>Ee(i.t(Y,-1)),"aria-label":me.previousMonth,children:(0,h.jsx)(e.Fi,{})}),(0,h.jsxs)(`button`,{type:`button`,className:`header-title`,onClick:()=>Oe(e=>e===`days`?`months`:`days`),children:[Ie[Y.getMonth()],` `,Y.getFullYear()]}),(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>Ee(i.t(Y,1)),"aria-label":me.nextMonth,children:(0,h.jsx)(e.Pi,{})})]}),De===`days`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`day-names`,children:Fe.map(e=>(0,h.jsx)(`span`,{className:`day-name`,children:e},e))}),(0,h.jsx)(`div`,{className:`day-grid`,children:Ze.map(({date:e,currentMonth:n},r)=>{let a=$e?i.p(e,$e):!1,o=i.p(e,Qe),s=X(e);return(0,h.jsx)(`button`,{type:`button`,className:t.t(`day`,!n&&`other-month`,o&&`today`,a&&`selected`,s&&`disabled`),onClick:()=>We(e),disabled:s,tabIndex:-1,children:e.getDate()},`${e.toISOString()}-${r}`)})})]}):(0,h.jsx)(`div`,{className:`month-grid`,children:Ie.map((e,n)=>(0,h.jsx)(`button`,{type:`button`,className:t.t(`month-cell`,Y.getMonth()===n&&`selected`),onClick:()=>{Ee(new Date(Y.getFullYear(),n,1)),Oe(`days`)},children:e.slice(0,3)},e))}),ue&&(0,h.jsx)(`div`,{className:`footer`,children:(0,h.jsx)(`button`,{type:`button`,className:`today-btn`,onClick:Ge,children:me.today})})]}),tt=()=>{if(!P)return null;let e=$?O($):null;return(0,h.jsxs)(`div`,{className:`date-picker-time-panel`,children:[(0,h.jsx)(`div`,{className:`date-picker-time-header`,children:`Time`}),(0,h.jsxs)(`div`,{className:`date-picker-time-columns`,children:[(0,h.jsx)(A,{items:Ke,selected:R===`12h`?e?.hours:$?.hours,onSelect:t=>Ye(R===`12h`?k(t,e?.meridiem??`AM`):t,$?.minutes??0,$?.seconds??0),label:`Hr`}),(0,h.jsx)(A,{items:qe,selected:$?.minutes,onSelect:e=>Ye($?.hours??0,e,$?.seconds??0),label:`Min`}),z&&(0,h.jsx)(A,{items:Je,selected:$?.seconds,onSelect:e=>Ye($?.hours??0,$?.minutes??0,e),label:`Sec`}),R===`12h`&&(0,h.jsx)(A,{items:[`AM`,`PM`],selected:e?.meridiem,onSelect:Xe,label:`AM/PM`})]})]})},nt=()=>(0,h.jsxs)(`div`,{className:t.t(`date-picker-popover-content`,P&&`with-time`),children:[et(),tt()]}),rt=P?R===`12h`?z?22:19:z?19:16:10,it=oe(ee,c,P,R,z,V);return H?(0,h.jsxs)(`div`,{className:t.t(`date-picker`,w&&`color-${w}`,W&&`full-width`,de),style:fe,children:[(0,h.jsx)(d.t,{value:Se,onChange:ze,onBlur:Be,onKeyDown:Ve,onClear:He,type:`text`,inputMode:P?`text`:`numeric`,autoComplete:`off`,maxLength:rt,placeholder:it,disabled:te,readOnly:v,id:b,variant:ae,size:C,color:w,label:se,helperText:ce,error:Ne,errorText:Pe,required:le,clearable:N,fullWidth:W}),nt(),y&&J&&(0,h.jsx)(`input`,{type:`hidden`,name:y,value:i.s(J,P,z)})]}):(0,h.jsxs)(`div`,{className:t.t(`date-picker`,w&&`color-${w}`,W&&`full-width`,de),style:fe,children:[(0,h.jsx)(`div`,{ref:ke,className:`date-picker-input-anchor`,children:(0,h.jsx)(d.t,{value:Se,onChange:ze,onBlur:Be,onKeyDown:Ve,onClear:He,type:`text`,inputMode:P?`text`:`numeric`,autoComplete:`off`,maxLength:rt,placeholder:it,disabled:te,readOnly:v,id:b,variant:ae,size:C,color:w,label:se,helperText:ce,error:Ne,errorText:Pe,required:le,clearable:N,fullWidth:W,endIcon:(0,h.jsx)(`button`,{type:`button`,className:`date-picker-toggle`,onMouseDown:e=>e.preventDefault(),onClick:Ue,"aria-label":`Open calendar`,disabled:te||v,children:(0,h.jsx)(e.Ti,{})})})}),y&&J&&(0,h.jsx)(`input`,{type:`hidden`,name:y,value:i.s(J,P,z)}),(0,h.jsx)(s.t,{className:`date-picker-popover`,style:{"--color-rgb":ne(w)},open:he,anchorRef:ke,onClose:()=>ge(!1),placement:`bottom-start`,children:nt()})]})}function A({items:e,selected:n,onSelect:r,label:i}){let a=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(n===void 0||!a.current)return;let e=a.current.querySelector(`[data-value="${n}"]`);if(e){let t=a.current;t.scrollTop=e.offsetTop-t.clientHeight/2+e.offsetHeight/2}},[n]);let o=e=>typeof e==`number`?e.toString().padStart(2,`0`):e;return(0,h.jsxs)(`div`,{className:`date-picker-time-column`,children:[(0,h.jsx)(`div`,{className:`date-picker-time-column-label`,children:i}),(0,h.jsx)(`div`,{ref:a,className:`date-picker-time-column-list`,children:e.map(e=>(0,h.jsx)(`button`,{type:`button`,"data-value":e,className:t.t(`date-picker-time-column-item`,e===n&&`selected`),onClick:()=>r(e),children:o(e)},e))})]})}function j(e){let t=e.hours>=12?`PM`:`AM`;return{hours:e.hours%12||12,minutes:e.minutes,seconds:e.seconds,meridiem:t}}function M(e,t){return t===`AM`?e===12?0:e:e===12?12:e+12}function le(e,t,n,r,a){if(a===`24h`)return i.c(e,t,n,r);let o=j({hours:e,minutes:t,seconds:n}),s=`${o.hours.toString().padStart(2,`0`)}:${o.minutes.toString().padStart(2,`0`)}`;return`${r?`${s}:${o.seconds.toString().padStart(2,`0`)}`:s} ${o.meridiem}`}function N(e,t){if(t===`24h`)return i.h(e);let n=e.trim().toUpperCase().match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*(AM|PM)$/);if(n){let e=parseInt(n[1],10),t=parseInt(n[2],10),r=n[3]?parseInt(n[3],10):0,i=n[4];return e<1||e>12||t>59||r>59?null:{hours:M(e,i),minutes:t,seconds:r}}return i.h(e)}function P(e,t){return e.hours===t.hours?e.minutes===t.minutes?e.seconds-t.seconds:e.minutes-t.minutes:e.hours-t.hours}function F(e,t,n){return(!t||P(e,t)>=0)&&(!n||P(e,n)<=0)}function I({value:n,defaultValue:r,onChange:i,format:a=`24h`,showSeconds:o=!1,minuteStep:c=1,min:l,max:u,placeholder:d,disabled:f=!1,readOnly:p=!1,name:g,id:_,variant:ee=`outlined`,size:te=`md`,color:v,label:y,helperText:ne,errorText:b,error:re=!1,required:x=!1,clearable:ie=!1,fullWidth:ae=!1,className:oe,style:S}){let[C,w]=(0,m.useState)(!1),[se,T]=(0,m.useState)(r??``),E=(0,m.useRef)(null),D=n===void 0?se:n,O=re||!!b,k=N(D,a),ce=N(l??``,a),A=N(u??``,a),P=k?j(k):null,I=k?le(k.hours,k.minutes,k.seconds,o,a):D,R=(0,m.useMemo)(()=>{let e=[],t=a===`12h`?12:23,n=+(a===`12h`);for(let r=n;r<=t;r++)e.push(r);return e},[a]),z=(0,m.useMemo)(()=>{let e=[];for(let t=0;t<60;t+=c)e.push(t);return e},[c]),B=(0,m.useMemo)(()=>{if(!o)return[];let e=[];for(let t=0;t<60;t++)e.push(t);return e},[o]),V=(0,m.useCallback)((e,t,n=0)=>F({hours:e,minutes:t,seconds:n},ce,A),[A,ce]),H=(0,m.useCallback)((e,t,r=0)=>{if(!V(e,t,r))return;let s=le(e,t,r,o,a);n===void 0&&T(s),i?.(s)},[a,V,i,o,n]),ue=(0,m.useCallback)(e=>{let t=e.target.value;n===void 0&&T(t)},[n]),U=(0,m.useCallback)(()=>{let e=N(D,a);if(e&&F(e,ce,A)){let t=le(e.hours,e.minutes,e.seconds,o,a);n===void 0&&T(t),i?.(t)}},[D,a,A,ce,i,o,n]),W=(0,m.useCallback)(e=>{let t=P?.hours??12,n=k?.minutes??0,r=k?.seconds??0;H(M(t,e),n,r)},[P?.hours,H,k?.minutes,k?.seconds]),de=(0,m.useCallback)(e=>{e.stopPropagation(),n===void 0&&T(``),i?.(``)},[i,n]);return(0,h.jsxs)(`div`,{className:t.t(`time picker`,v&&`color-${v}`,ae&&`full-width`,oe),style:S,children:[y&&(0,h.jsx)(`label`,{htmlFor:_,className:t.t(`field-label`,C&&`focused`,O&&`error`,x&&`required`),children:y}),(0,h.jsxs)(`div`,{ref:E,className:t.t(`time trigger`,`field-${ee}`,`field-${te}`,C&&`focused`,O&&`error`,f&&`disabled`),onClick:()=>!f&&!p&&w(!0),children:[(0,h.jsx)(`span`,{className:`time icon`,children:(0,h.jsx)(e.wi,{})}),(0,h.jsx)(`input`,{type:`text`,className:`time input`,value:I,onChange:ue,onBlur:U,placeholder:d??(a===`12h`?o?`hh:mm:ss AM`:`hh:mm AM`:o?`HH:MM:SS`:`HH:MM`),disabled:f,readOnly:p,id:_,"aria-invalid":O||void 0}),ie&&D&&!f&&(0,h.jsx)(`button`,{type:`button`,className:`time clear clear-btn-base`,onClick:de,tabIndex:-1,"aria-label":`Clear time`,children:(0,h.jsx)(e.Li,{})})]}),g&&(0,h.jsx)(`input`,{type:`hidden`,name:g,value:I}),(0,h.jsx)(s.t,{className:`time picker popover`,open:C,anchorRef:E,onClose:()=>w(!1),placement:`bottom-start`,children:(0,h.jsxs)(`div`,{className:`time columns`,children:[(0,h.jsx)(L,{items:R,selected:a===`12h`?P?.hours:k?.hours,onSelect:e=>H(a===`12h`?M(e,P?.meridiem??`AM`):e,k?.minutes??0,k?.seconds??0),isDisabled:e=>!V(a===`12h`?M(e,P?.meridiem??`AM`):e,k?.minutes??0,k?.seconds??0),label:`Hr`}),(0,h.jsx)(L,{items:z,selected:k?.minutes,onSelect:e=>H(k?.hours??0,e,k?.seconds??0),isDisabled:e=>!V(k?.hours??0,e,k?.seconds??0),label:`Min`}),o&&(0,h.jsx)(L,{items:B,selected:k?.seconds,onSelect:e=>H(k?.hours??0,k?.minutes??0,e),isDisabled:e=>!V(k?.hours??0,k?.minutes??0,e),label:`Sec`}),a===`12h`&&(0,h.jsx)(L,{items:[`AM`,`PM`],selected:P?.meridiem,onSelect:W,label:`AM/PM`})]})}),(b||ne)&&(0,h.jsx)(`div`,{className:`time bottom`,children:b?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:b}):(0,h.jsx)(`span`,{className:`time helper`,children:ne})})]})}function L({items:e,selected:n,onSelect:r,isDisabled:i,label:a}){let o=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(n===void 0||!o.current)return;let e=o.current.querySelector(`[data-value="${n}"]`);if(e){let t=o.current;t.scrollTop=e.offsetTop-t.clientHeight/2+e.offsetHeight/2}},[n]);let s=e=>typeof e==`number`?e.toString().padStart(2,`0`):e;return(0,h.jsxs)(`div`,{className:`time column`,children:[(0,h.jsx)(`div`,{className:`time column label`,children:a}),(0,h.jsx)(`div`,{ref:o,className:`time column list`,children:e.map(e=>{let a=i?.(e)??!1;return(0,h.jsx)(`button`,{type:`button`,"data-value":e,className:t.t(`time column item`,e===n&&`selected`,a&&`disabled`),onClick:()=>r(e),disabled:a,children:s(e)},e)})})]})}function R(e){if(!e)return null;if(e instanceof Date)return i._(e);let t=new Date(e);return isNaN(t.getTime())?null:i._(t)}function z(e,t){return e.getTime()<=t.getTime()?{start:e,end:t}:{start:t,end:e}}function B(e,t,n){if(!t||!n)return!1;let r=e.getTime();return r>t.getTime()&&r<n.getTime()}function V(e,t,n){return e&&t?`${i.o(e,n)} - ${i.o(t,n)}`:e?`${i.o(e,n)} - ...`:``}function H(e){return new Date(e.getFullYear(),e.getMonth(),1)}function ue(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function U(e){let t=i._(new Date);return t.setDate(t.getDate()-(e-1)),t}function W(e){let t=i._(new Date);return new Date(t.getFullYear(),t.getMonth()-e,t.getDate())}function de(e){let t=i._(new Date),n=new Date(t.getFullYear(),t.getMonth()-1,1);return[{label:e.presets.today,value:{start:t,end:t}},{label:e.presets.days2,value:{start:U(2),end:t}},{label:e.presets.days3,value:{start:U(3),end:t}},{label:e.presets.days7,value:{start:U(7),end:t}},{label:e.presets.days14,value:{start:U(14),end:t}},{label:e.presets.days31,value:{start:U(31),end:t}},{label:e.presets.thisMonth,value:{start:H(t),end:ue(t)}},{label:e.presets.previousMonth,value:{start:H(n),end:ue(n)}},{label:e.presets.months2,value:{start:W(2),end:t}},{label:e.presets.months3,value:{start:W(3),end:t}},{label:e.presets.months6,value:{start:W(6),end:t}},{label:e.presets.year1,value:{start:W(12),end:t}}]}function fe(e,t){let n=e.getFullYear(),r=e.getMonth(),a=i.i(n,r),o=i.a(n,r);t===1&&(o=o===0?6:o-1);let s=[],c=r===0?11:r-1,l=r===0?n-1:n,u=i.i(l,c);for(let e=o-1;e>=0;--e)s.push({date:new Date(l,c,u-e),currentMonth:!1});for(let e=1;e<=a;e+=1)s.push({date:new Date(n,r,e),currentMonth:!0});let d=42-s.length,f=r===11?0:r+1,p=r===11?n+1:n;for(let e=1;e<=d;e+=1)s.push({date:new Date(p,f,e),currentMonth:!1});return s}function pe({value:n,defaultValue:r,onChange:a,format:o=`dd.MM.yyyy`,locale:c,min:l,max:u,disabledDates:d,placeholder:g,disabled:_=!1,readOnly:ee=!1,name:te,id:v,variant:y=`outlined`,size:b=`md`,color:re,label:x,helperText:ie,errorText:ae,error:oe=!1,required:S=!1,clearable:C=!1,inline:w=!1,showTodayButton:se=!0,presets:T=!1,presetsSidebar:E=!1,firstDayOfWeek:D=1,fullWidth:O=!1,allowSameDay:k=!0,className:ce,style:A}){let j=f.t(c),M=n?{start:R(n.start),end:R(n.end)}:null,[le,N]=(0,m.useState)(()=>({start:R(r?.start),end:R(r?.end)})),[P,F]=(0,m.useState)(null),[I,L]=(0,m.useState)(!1),H=(0,m.useRef)(null),ue=M??le,U=ue.start,W=ue.end,pe=R(l),me=R(u),G=oe||!!ae,K=p.i(),he=i.u(j,D),ge=i.d(j),_e=(0,m.useMemo)(()=>T===!0||E&&!T?de(K):Array.isArray(T)?T:[],[T,E,K]),[ve,ye]=(0,m.useState)(()=>{let e=U??new Date;return new Date(e.getFullYear(),e.getMonth(),1)}),be=U?.getTime()??null;(0,m.useEffect)(()=>{if(!be)return;let e=new Date(be);ye(new Date(e.getFullYear(),e.getMonth(),1))},[be]);let xe=(0,m.useCallback)(e=>i.f(e,pe,me)?Array.isArray(d)?d.some(t=>i.p(t,e)):typeof d==`function`?d(e):!1:!0,[d,me,pe]),q=(0,m.useCallback)(e=>{n===void 0&&N(e),a?.(e)},[a,n]),J=(0,m.useCallback)(e=>{if(!xe(e)){if(!U||U&&W){q({start:e,end:null}),F(null);return}!k&&i.p(e,U)||(q(z(U,e)),F(null),w||L(!1))}},[k,q,W,w,xe,U]),Se=(0,m.useCallback)(e=>{e.stopPropagation(),q({start:null,end:null}),F(null)},[q]),Ce=(0,m.useCallback)(()=>{let e=i._(new Date);xe(e)||(q({start:e,end:e}),ye(new Date(e.getFullYear(),e.getMonth(),1)),F(null),w||L(!1))},[q,w,xe]),we=(0,m.useCallback)(e=>{let t=R(e.value.start),n=R(e.value.end);if(!t||!n)return;let r=z(t,n);xe(r.start)||xe(r.end)||(q(r),ye(new Date(r.start.getFullYear(),r.start.getMonth(),1)),F(null),w||L(!1))},[q,w,xe]),Te=U&&!W?P:null,Y=ve,Ee=i.t(ve,1),De=i._(new Date),Oe=(0,m.useMemo)(()=>V(U,W,o),[W,o,U]),ke=(0,m.useMemo)(()=>[Y,Ee].map(e=>({monthDate:e,days:fe(e,D)})),[D,Y,Ee]),Ae=U&&W?`${i.o(U,o)} - ${i.o(W,o)}`:U?`${i.o(U,o)} - ...`:g??K.defaultRangePlaceholder,je=E&&_e.length>0,Me=!E&&_e.length>0,Ne=()=>(0,h.jsx)(`div`,{className:`presets-sidebar`,children:_e.map(e=>(0,h.jsx)(`button`,{type:`button`,className:`preset-sidebar-btn`,onClick:()=>we(e),children:e.label},e.label))}),Pe=()=>(0,h.jsxs)(`div`,{className:`calendar-body`,children:[(0,h.jsxs)(`div`,{className:`calendar-top`,children:[(0,h.jsxs)(`div`,{className:`calendar-caption`,children:[(0,h.jsxs)(`span`,{className:`caption-title`,children:[ge[Y.getMonth()],` `,Y.getFullYear()]}),(0,h.jsx)(`span`,{className:`caption-subtitle`,children:K.rangeSubtitle})]}),(0,h.jsxs)(`div`,{className:`nav-actions`,children:[(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>ye(i.t(ve,-1)),"aria-label":K.previousMonth,children:(0,h.jsx)(e.Fi,{})}),(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>ye(i.t(ve,1)),"aria-label":K.nextMonth,children:(0,h.jsx)(e.Pi,{})})]})]}),Me&&(0,h.jsx)(`div`,{className:`presets`,children:_e.map(e=>(0,h.jsx)(`button`,{type:`button`,className:`preset-btn`,onClick:()=>we(e),children:e.label},e.label))}),(0,h.jsx)(`div`,{className:`months`,children:ke.map(({monthDate:e,days:n})=>(0,h.jsxs)(`div`,{className:`month-panel`,children:[(0,h.jsxs)(`div`,{className:`month-title`,children:[ge[e.getMonth()],` `,e.getFullYear()]}),(0,h.jsx)(`div`,{className:`day-names`,children:he.map(t=>(0,h.jsx)(`span`,{className:`day-name`,children:t},`${e.toISOString()}-${t}`))}),(0,h.jsx)(`div`,{className:`day-grid`,children:n.map(({date:n,currentMonth:r},a)=>{let o=xe(n),s=U?i.p(n,U):!1,c=W?i.p(n,W):!1,l=B(n,U,W),u=!W&&U&&Te?z(U,Te):null,d=u?B(n,u.start,u.end):!1,f=u?i.p(n,u.start)||i.p(n,u.end):!1;return(0,h.jsx)(`button`,{type:`button`,className:t.t(`day`,!r&&`other-month`,i.p(n,De)&&`today`,s&&`range-start selected`,c&&`range-end selected`,l&&`in-range`,d&&!f&&`preview-range`,o&&`disabled`),onClick:()=>J(n),onMouseEnter:()=>U&&!W&&F(n),onFocus:()=>U&&!W&&F(n),disabled:o,tabIndex:-1,children:n.getDate()},`${e.toISOString()}-${a}`)})})]},e.toISOString()))}),(0,h.jsxs)(`div`,{className:`footer`,children:[(0,h.jsx)(`span`,{className:`summary`,children:Ae}),(0,h.jsxs)(`div`,{className:`footer-actions`,children:[C&&(U||W)&&(0,h.jsx)(`button`,{type:`button`,className:`footer-btn`,onClick:e=>{e.preventDefault(),q({start:null,end:null}),F(null)},children:K.clear}),se&&(0,h.jsx)(`button`,{type:`button`,className:`footer-btn`,onClick:Ce,children:K.today})]})]})]}),Fe=()=>(0,h.jsxs)(`div`,{className:t.t(`date-range-calendar`,je&&`with-sidebar`),children:[je&&Ne(),Pe()]});return w?(0,h.jsxs)(`div`,{className:t.t(`date-range-picker`,re&&`color-${re}`,O&&`full-width`,ce),style:A,children:[x&&(0,h.jsx)(`label`,{className:t.t(`field-label`,G&&`error`,S&&`required`),children:x}),Fe()]}):(0,h.jsxs)(`div`,{className:t.t(`date-range-picker`,re&&`color-${re}`,O&&`full-width`,ce),style:A,children:[x&&(0,h.jsx)(`label`,{htmlFor:v,className:t.t(`field-label`,I&&`focused`,G&&`error`,S&&`required`),children:x}),(0,h.jsxs)(`div`,{ref:H,className:t.t(`trigger`,`field-${y}`,`field-${b}`,I&&`focused`,G&&`error`,_&&`disabled`),onClick:()=>!_&&!ee&&L(!0),children:[(0,h.jsx)(`span`,{className:`icon`,children:(0,h.jsx)(e.Ti,{})}),(0,h.jsx)(`input`,{type:`text`,className:`input`,value:Oe,placeholder:g??K.defaultRangePlaceholder,disabled:_,readOnly:!0,id:v,"aria-invalid":G||void 0}),C&&(U||W)&&!_&&(0,h.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:Se,tabIndex:-1,"aria-label":K.clear,children:(0,h.jsx)(e.Li,{})})]}),te&&U&&W&&(0,h.jsx)(`input`,{type:`hidden`,name:te,value:`${U.toISOString().split(`T`)[0]}:${W.toISOString().split(`T`)[0]}`}),(0,h.jsx)(s.t,{className:`date-range-picker-popover`,style:{"--color-rgb":ne(re)},open:I,anchorRef:H,onClose:()=>{L(!1),F(null)},placement:`bottom-start`,children:Fe()}),(ae||ie)&&(0,h.jsx)(`div`,{className:`bottom-row`,children:ae?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:ae}):(0,h.jsx)(`span`,{className:`helper-text`,children:ie})})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return pe}});
|
|
2
|
+
//# sourceMappingURL=dropdowns-BgpcQ9Hq.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdowns-BgpcQ9Hq.cjs","names":[],"sources":["../src/components/dropdowns/MSelect/MSelect.tsx","../src/components/dropdowns/MAutocomplete/MAutocomplete.tsx","../src/utils/colorRgbVar.ts","../src/components/dropdowns/MDatePicker/MDatePicker.tsx","../src/components/dropdowns/MTimePicker/MTimePicker.tsx","../src/components/dropdowns/MDateRangePicker/MDateRangePicker.tsx"],"sourcesContent":["import {useState, useRef, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\nimport type {MSelectProps, MSelectOption} from './MSelect.types'\nimport {MPopover} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport {MCheckbox} from '../../controls'\nimport {MSpinner, MTag} from '../../feedback'\nimport {MChevronDownIcon, MCloseIcon} from '../../../icons'\nimport './MSelect.css'\n\n// Render a selectable list with optional search, grouping and multi-select tags.\nexport function MSelect({\n options,\n value,\n defaultValue,\n onChange,\n multiple = false,\n searchable = false,\n placeholder = 'MSelect...',\n disabled = false,\n name,\n id,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n label,\n helperText,\n errorText,\n error = false,\n required = false,\n loading = false,\n clearable = false,\n maxHeight = 300,\n noOptionsText = 'No options',\n renderOption,\n renderValue,\n className,\n style,\n}: MSelectProps) {\n const [open, setOpen] = useState(false)\n const [internalValue, setInternalValue] = useState<string | string[]>(defaultValue ?? (multiple ? [] : ''))\n const [search, setSearch] = useState('')\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const currentValue = value !== undefined ? value : internalValue\n const hasError = error || !!errorText\n\n // Normalize the public value into a string array for rendering and selection logic.\n const selectedValues = useMemo(() => {\n if (Array.isArray(currentValue)) return currentValue\n return currentValue ? [currentValue] : []\n }, [currentValue])\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selectedValues.includes(o.value)),\n [options, selectedValues]\n )\n\n // Filter options locally when the searchable mode is active.\n const filteredOptions = useMemo(() => {\n if (!searchable || !search) return options\n const lower = search.toLowerCase()\n return options.filter((o) => o.label.toLowerCase().includes(lower))\n }, [options, searchable, search])\n\n // Group options\n // Preserve group headers without changing the flat keyboard navigation index map.\n const groupedOptions = useMemo(() => {\n const groups = new Map<string, MSelectOption[]>()\n for (const opt of filteredOptions) {\n const key = opt.group ?? ''\n if (!groups.has(key)) groups.set(key, [])\n groups.get(key)!.push(opt)\n }\n return groups\n }, [filteredOptions])\n\n const flatFiltered = filteredOptions\n\n // MToggle or replace the current selection depending on the mode.\n const handleSelect = useCallback(\n (index: number) => {\n const opt = flatFiltered[index]\n if (!opt || opt.disabled) return\n\n if (multiple) {\n const arr = Array.isArray(currentValue) ? currentValue : []\n const newVal = arr.includes(opt.value) ? arr.filter((v) => v !== opt.value) : [...arr, opt.value]\n if (value === undefined) setInternalValue(newVal)\n onChange?.(newVal)\n } else {\n if (value === undefined) setInternalValue(opt.value)\n onChange?.(opt.value)\n setOpen(false)\n setSearch('')\n }\n },\n [flatFiltered, multiple, currentValue, value, onChange]\n )\n\n const {activeIndex, setActiveIndex, resetIndex, onKeyDown} = useKeyboardNav({\n itemCount: flatFiltered.length,\n onSelect: handleSelect,\n onClose: () => {\n setOpen(false)\n setSearch('')\n },\n isOpen: open,\n })\n\n // Open the popover and reset keyboard navigation when the trigger is used.\n const handleTriggerClick = useCallback(() => {\n if (disabled) return\n setOpen((v) => !v)\n resetIndex()\n }, [disabled, resetIndex])\n\n // Reset the current selection without closing the outer field wrapper.\n const handleClear = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n const empty = multiple ? [] : ''\n if (value === undefined) setInternalValue(empty)\n onChange?.(empty)\n },\n [multiple, value, onChange]\n )\n\n // Render tags, labels or the placeholder based on the current selection state.\n const displayValue = useMemo(() => {\n if (renderValue && selectedOptions.length > 0) {\n return renderValue(multiple ? selectedOptions : selectedOptions[0])\n }\n if (multiple && selectedOptions.length > 0) {\n return (\n <span className=\"tags\">\n {selectedOptions.map((o) => (\n <MTag key={o.value} label={o.label} color={color} size={size} variant=\"solid\" />\n ))}\n </span>\n )\n }\n if (!multiple && selectedOptions.length > 0) {\n return selectedOptions[0].label\n }\n return <span className=\"placeholder\">{placeholder}</span>\n }, [selectedOptions, multiple, renderValue, placeholder, color, size])\n\n return (\n <div className={cn('select', color && `color-${color}`, fullWidth && 'full-width', className)} style={style}>\n {label && (\n <label\n htmlFor={id}\n className={cn('field-label', open && 'focused', hasError && 'error', required && 'required')}\n >\n {label}\n </label>\n )}\n\n <div\n ref={triggerRef}\n className={cn(\n 'trigger',\n `field-${variant}`,\n `field-${size}`,\n open && 'focused',\n hasError && 'error',\n disabled && 'disabled'\n )}\n onClick={handleTriggerClick}\n onKeyDown={onKeyDown as unknown as React.KeyboardEventHandler}\n tabIndex={disabled ? -1 : 0}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-invalid={hasError || undefined}\n id={id}\n >\n <span className=\"value\">{displayValue}</span>\n\n {loading && <MSpinner size=\"sm\" color={color} />}\n\n {clearable && selectedValues.length > 0 && !loading && !disabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onClick={handleClear}\n tabIndex={-1}\n aria-label=\"Clear selection\"\n >\n <MCloseIcon />\n </button>\n )}\n\n <span className={cn('arrow', open && 'open')} aria-hidden=\"true\">\n <MChevronDownIcon />\n </span>\n </div>\n\n {/* Hidden input for form submission */}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={Array.isArray(currentValue) ? currentValue.join(',') : currentValue}\n />\n )}\n\n <MPopover\n className={'select-popover'}\n open={open}\n anchorRef={triggerRef}\n onClose={() => {\n setOpen(false)\n setSearch('')\n }}\n matchWidth\n placement=\"bottom-start\"\n >\n <div style={{maxHeight}} className=\"dropdown\">\n {searchable && (\n <div className=\"search-box\">\n <input\n type=\"text\"\n className=\"search-input\"\n placeholder=\"Search...\"\n value={search}\n onChange={(e) => {\n setSearch(e.target.value)\n setActiveIndex(0)\n }}\n onKeyDown={onKeyDown as unknown as React.KeyboardEventHandler}\n autoFocus\n />\n </div>\n )}\n\n {flatFiltered.length === 0 ? (\n <div className=\"no-options\">{noOptionsText}</div>\n ) : (\n <div className=\"options-list\" role=\"listbox\">\n {[...groupedOptions.entries()].map(([group, opts]) => (\n <div key={group}>\n {group && <div className=\"group-header\">{group}</div>}\n {opts.map((opt) => {\n const flatIndex = flatFiltered.indexOf(opt)\n const isActive = flatIndex === activeIndex\n const isSelected = selectedValues.includes(opt.value)\n return (\n <div\n key={opt.value}\n className={cn(\n 'option',\n isActive && 'active',\n isSelected && 'selected',\n opt.disabled && 'disabled'\n )}\n onClick={() => !opt.disabled && handleSelect(flatIndex)}\n onMouseEnter={() => setActiveIndex(flatIndex)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled}\n >\n {multiple && (\n <MCheckbox\n checked={isSelected}\n size=\"sm\"\n color={color}\n clickEffect=\"none\"\n className=\"select-check\"\n />\n )}\n {renderOption ? renderOption(opt, isActive, isSelected) : opt.label}\n </div>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n </MPopover>\n\n {(errorText || helperText) && (\n <div className=\"bottom-row\">\n {errorText ? (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n ) : (\n <span className=\"helper-text\">{helperText}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n","import {useState, useRef, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\nimport type {MAutocompleteProps} from './MAutocomplete.types'\nimport {MPopover} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport {useDebouncedCallback} from '../../../utils/useDebounce'\nimport {MSpinner, MTag} from '../../feedback'\nimport {MCloseIcon} from '../../../icons'\nimport './MAutocomplete.css'\n\n// Resolve labels for primitive string options without extra configuration.\nfunction defaultGetLabel<T>(option: T): string {\n if (typeof option === 'string') return option\n return String(option)\n}\n\n// Resolve values for primitive string options without extra configuration.\nfunction defaultGetValue<T>(option: T): string {\n if (typeof option === 'string') return option\n return String(option)\n}\n\n// Apply a basic case-insensitive filter when the caller does not provide one.\nfunction defaultFilter<T>(options: T[], input: string, getLabel: (o: T) => string): T[] {\n if (!input) return options\n const lower = input.toLowerCase()\n return options.filter((o) => getLabel(o).toLowerCase().includes(lower))\n}\n\n// Render a searchable suggestion list with optional multi-tag behavior.\nexport function MAutocomplete<T = string>({\n options,\n value,\n onChange,\n getOptionLabel = defaultGetLabel,\n getOptionValue = defaultGetValue,\n filterOptions,\n multiple = false,\n debounceMs = 0,\n onInputChange,\n loading = false,\n loadingText = 'Loading...',\n noOptionsText = 'No options',\n placeholder = 'Type to search...',\n disabled = false,\n name,\n id,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n label,\n helperText,\n errorText,\n error = false,\n required = false,\n clearable = false,\n maxHeight = 300,\n renderOption,\n renderTags,\n className,\n style,\n}: MAutocompleteProps<T>) {\n const [open, setOpen] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const wrapperRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const hasError = error || !!errorText\n\n // Normalize the public value into an array for tag and selection rendering.\n const selectedValues = useMemo(() => {\n if (value == null) return []\n return Array.isArray(value) ? value.filter((item) => item != null) : [value]\n }, [value])\n\n // Filter suggestions locally unless the caller owns that logic.\n const filtered = useMemo(() => {\n if (filterOptions) return filterOptions(options, inputValue)\n return defaultFilter(options, inputValue, getOptionLabel)\n }, [options, inputValue, filterOptions, getOptionLabel])\n\n const debouncedInputChange = useDebouncedCallback((val: string) => onInputChange?.(val), debounceMs)\n\n // Update the visible query and optionally notify async search logic.\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n debouncedInputChange(e.target.value)\n if (!open) setOpen(true)\n },\n [open, debouncedInputChange]\n )\n\n // Apply a selected option to single or multiple value modes.\n const handleSelect = useCallback(\n (index: number) => {\n const opt = filtered[index]\n if (!opt) return\n\n if (multiple) {\n const arr = [...selectedValues]\n const val = getOptionValue(opt)\n const existIdx = arr.findIndex((v) => getOptionValue(v) === val)\n if (existIdx >= 0) {\n arr.splice(existIdx, 1)\n } else {\n arr.push(opt)\n }\n onChange?.(arr)\n setInputValue('')\n inputRef.current?.focus()\n } else {\n onChange?.(opt)\n setInputValue(getOptionLabel(opt))\n setOpen(false)\n }\n },\n [filtered, multiple, selectedValues, getOptionValue, getOptionLabel, onChange]\n )\n\n // Remove a selected tag by index in multiple mode.\n const handleRemoveTag = useCallback(\n (index: number) => {\n const arr = [...selectedValues]\n arr.splice(index, 1)\n onChange?.(multiple ? arr : (arr[0] ?? ('' as unknown as T)))\n },\n [selectedValues, onChange, multiple]\n )\n\n const {\n activeIndex,\n setActiveIndex,\n resetIndex,\n onKeyDown: navKeyDown,\n } = useKeyboardNav({\n itemCount: filtered.length,\n onSelect: handleSelect,\n onClose: () => setOpen(false),\n isOpen: open,\n })\n\n // Combine tag removal and list navigation.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n // Backspace removes last tag in multiple\n if (e.key === 'Backspace' && multiple && !inputValue && selectedValues.length > 0) {\n handleRemoveTag(selectedValues.length - 1)\n return\n }\n navKeyDown(e as unknown as React.KeyboardEvent)\n },\n [inputValue, multiple, selectedValues, navKeyDown, handleRemoveTag]\n )\n\n // Clear the input query and the selected value(s) together.\n const handleClear = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n setInputValue('')\n onChange?.(multiple ? ([] as unknown as T) : ('' as unknown as T))\n inputRef.current?.focus()\n },\n [multiple, onChange]\n )\n\n return (\n <div\n className={cn('autocomplete', color && `color-${color}`, fullWidth && 'full-width', className)}\n style={style}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn('field-label', open && 'focused', hasError && 'error', required && 'required')}\n >\n {label}\n </label>\n )}\n\n <div\n ref={wrapperRef}\n className={cn(\n 'input-wrapper',\n `field-${variant}`,\n `field-${size}`,\n open && 'focused',\n hasError && 'error',\n disabled && 'disabled'\n )}\n onClick={() => inputRef.current?.focus()}\n >\n {multiple &&\n selectedValues.length > 0 &&\n (renderTags ? (\n renderTags(selectedValues, handleRemoveTag)\n ) : (\n <span className=\"tags\">\n {selectedValues.map((v, i) => (\n <MTag\n key={getOptionValue(v)}\n label={getOptionLabel(v)}\n color={color}\n size={size}\n variant=\"solid\"\n closable\n onClose={() => handleRemoveTag(i)}\n />\n ))}\n </span>\n ))}\n\n <input\n ref={inputRef}\n type=\"text\"\n className=\"input\"\n value={inputValue}\n onChange={handleInputChange}\n onFocus={() => {\n setOpen(true)\n resetIndex()\n }}\n onKeyDown={handleKeyDown}\n placeholder={selectedValues.length > 0 ? '' : placeholder}\n disabled={disabled}\n id={id}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-invalid={hasError || undefined}\n autoComplete=\"off\"\n />\n\n {loading && <MSpinner size=\"sm\" color={color} />}\n\n {clearable && (selectedValues.length > 0 || inputValue) && !loading && !disabled && (\n <button type=\"button\" className=\"clear-btn clear-btn-base\" onClick={handleClear} tabIndex={-1}>\n <MCloseIcon />\n </button>\n )}\n </div>\n\n {name && <input type=\"hidden\" name={name} value={selectedValues.map(getOptionValue).join(',')} />}\n\n <MPopover\n className={cn('autocomplete-popover', color && `color-${color}`)}\n open={open && (filtered.length > 0 || loading || !!inputValue)}\n anchorRef={wrapperRef}\n onClose={() => setOpen(false)}\n matchWidth\n placement=\"bottom-start\"\n >\n <div style={{maxHeight}} className=\"dropdown\">\n {loading ? (\n <div className=\"loading-msg\">{loadingText}</div>\n ) : filtered.length === 0 ? (\n <div className=\"no-options\">{noOptionsText}</div>\n ) : (\n <div className=\"options-list\" role=\"listbox\">\n {filtered.map((opt, i) => {\n const isActive = i === activeIndex\n const isSelected = selectedValues.some((v) => getOptionValue(v) === getOptionValue(opt))\n return (\n <div\n key={getOptionValue(opt)}\n className={cn('option', isActive && 'active', isSelected && 'selected')}\n onClick={() => handleSelect(i)}\n onMouseEnter={() => setActiveIndex(i)}\n role=\"option\"\n aria-selected={isSelected}\n >\n {renderOption ? renderOption(opt, isActive) : getOptionLabel(opt)}\n </div>\n )\n })}\n </div>\n )}\n </div>\n </MPopover>\n\n {(errorText || helperText) && (\n <div className=\"bottom-row\">\n {errorText ? (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n ) : (\n <span className=\"helper-text\">{helperText}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n","const COLOR_MAP: Record<string, string> = {\n primary: 'var(--mineral-primary-rgb)',\n neutral: 'var(--mineral-neutral-rgb)',\n success: 'var(--mineral-success-rgb)',\n error: 'var(--mineral-error-rgb)',\n warning: 'var(--mineral-warning-rgb)',\n info: 'var(--mineral-info-rgb)',\n light: 'var(--mineral-light-rgb)',\n dark: 'var(--mineral-dark-color-rgb)',\n news: 'var(--mineral-news-rgb)',\n}\n\nexport function colorRgbVar(color: string | undefined): string {\n return COLOR_MAP[color ?? 'primary'] ?? COLOR_MAP.primary\n}\n","import {useState, useRef, useCallback, useMemo, useEffect} from 'react'\nimport type * as React from 'react'\nimport type {MDatePickerProps} from './MDatePicker.types'\nimport type {MDateFormat} from '../../inputs'\nimport {MInput} from '../../inputs'\nimport {MPopover} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {useMDatePickerTexts} from '../../../i18n/frameworkTexts'\nimport {useDocumentLocale} from '../../../utils/locale'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {parseDateString, validateDate} from '../../../utils/validators'\nimport {stripNonDigits, formatDateInput} from '../../../utils/formatters'\nimport {colorRgbVar} from '../../../utils/colorRgbVar'\nimport {\n formatDate,\n daysInMonth,\n firstDayOfMonth,\n isSameDay,\n isDateInRange,\n getDayNames,\n getMonthNames,\n addMonths,\n stripTime,\n combineDateAndTime,\n formatHiddenDateValue,\n formatTimeWithFormat,\n parseTimeWithFormat,\n} from '../../../utils/dateUtils'\nimport {\n MCalendarIcon,\n MChevronLeftIcon as ChevronLeftGlyphIcon,\n MChevronRightIcon as ChevronRightGlyphIcon,\n} from '../../../icons'\nimport './MDatePicker.css'\n\nconst DATE_UNAVAILABLE_ERROR = 'Date is unavailable'\nconst INVALID_TIME_ERROR = 'Invalid time'\n\ntype Meridiem = 'AM' | 'PM'\n\ntype MDatePickerInputConfig = {\n inputFormat: MDateFormat\n separator: '/' | '.' | '-'\n}\n\ntype ParsedInputState =\n | {status: 'empty'}\n | {status: 'partial'; datePart: string; timePart: string}\n | {status: 'invalid'; datePart: string; timePart: string; result: ValidationResult}\n | {status: 'valid'; datePart: string; timePart: string; value: Date}\n\nfunction toDate(value: Date | string | undefined): Date | null {\n if (!value) return null\n if (value instanceof Date) return isNaN(value.getTime()) ? null : new Date(value.getTime())\n\n const date = new Date(value)\n return isNaN(date.getTime()) ? null : date\n}\n\nfunction normalizeDatePickerFormat(format: string): MDatePickerInputConfig {\n const normalizedFormat = format.replace(/DD/g, 'dd').replace(/YYYY/g, 'yyyy')\n const tokens = normalizedFormat.match(/dd|MM|yyyy/g)\n const detectedSeparator = normalizedFormat.match(/[^dMy]/)?.[0]\n const separator =\n detectedSeparator === '/' || detectedSeparator === '.' || detectedSeparator === '-' ? detectedSeparator : '.'\n const order = tokens?.join('/')\n\n switch (order) {\n case 'MM/dd/yyyy':\n return {inputFormat: 'MM/DD/YYYY', separator}\n case 'yyyy/MM/dd':\n return {inputFormat: 'YYYY/MM/DD', separator}\n case 'dd/MM/yyyy':\n default:\n return {inputFormat: 'DD/MM/YYYY', separator}\n }\n}\n\nfunction getDefaultTimePlaceholder(format: '24h' | '12h', showSeconds: boolean): string {\n if (format === '12h') {\n return showSeconds ? 'hh:mm:ss AM' : 'hh:mm AM'\n }\n\n return showSeconds ? 'HH:MM:SS' : 'HH:MM'\n}\n\nfunction getInputPlaceholder(\n basePlaceholder: string | undefined,\n dateFormat: string,\n withTime: boolean,\n timeFormat: '24h' | '12h',\n showSeconds: boolean,\n timePlaceholder?: string\n): string {\n if (basePlaceholder) {\n return basePlaceholder\n }\n\n if (!withTime) {\n return dateFormat\n }\n\n return `${dateFormat} ${timePlaceholder ?? getDefaultTimePlaceholder(timeFormat, showSeconds)}`\n}\n\nfunction formatDisplayValue(\n date: Date | null,\n options: {\n format: string\n withTime: boolean\n timeFormat: '24h' | '12h'\n showSeconds: boolean\n }\n): string {\n if (!date) return ''\n\n const datePart = formatDate(stripTime(date), options.format)\n\n if (!options.withTime) {\n return datePart\n }\n\n return `${datePart} ${formatTimeWithFormat(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n options.showSeconds,\n options.timeFormat\n )}`\n}\n\nfunction formatTimeDraft(digits: string, showSeconds: boolean): string {\n if (!digits) return ''\n\n if (digits.length <= 2) return digits\n if (digits.length <= 4) return `${digits.slice(0, 2)}:${digits.slice(2)}`\n if (!showSeconds) return `${digits.slice(0, 2)}:${digits.slice(2, 4)}`\n return `${digits.slice(0, 2)}:${digits.slice(2, 4)}:${digits.slice(4, 6)}`\n}\n\nfunction normalizeMeridiemDraft(value: string): string {\n const letters = value.toUpperCase().replace(/[^APM]/g, '')\n\n if (!letters) return ''\n if (letters.startsWith('AM')) return 'AM'\n if (letters.startsWith('PM')) return 'PM'\n if (letters.startsWith('A')) return 'A'\n if (letters.startsWith('P')) return 'P'\n\n return ''\n}\n\nfunction splitInputValue(value: string, withTime: boolean) {\n const trimmed = value.trim()\n\n if (!trimmed) {\n return {datePart: '', timePart: ''}\n }\n\n if (!withTime) {\n return {datePart: trimmed, timePart: ''}\n }\n\n const firstSpaceIndex = trimmed.indexOf(' ')\n\n if (firstSpaceIndex === -1) {\n return {datePart: trimmed, timePart: ''}\n }\n\n return {\n datePart: trimmed.slice(0, firstSpaceIndex).trim(),\n timePart: trimmed.slice(firstSpaceIndex + 1).trim(),\n }\n}\n\nfunction formatTypedInput(\n rawValue: string,\n options: {\n inputFormat: MDateFormat\n separator: '/' | '.' | '-'\n withTime: boolean\n timeFormat: '24h' | '12h'\n showSeconds: boolean\n }\n) {\n const normalizedValue = rawValue.toUpperCase()\n const digits = stripNonDigits(normalizedValue)\n const dateDigits = digits.slice(0, 8)\n const timeDigits = options.withTime ? digits.slice(8, 8 + (options.showSeconds ? 6 : 4)) : ''\n const datePart = formatDateInput(dateDigits, options.inputFormat, options.separator)\n\n if (!options.withTime) {\n return {formatted: datePart, datePart, timePart: ''}\n }\n\n const timeBase = formatTimeDraft(timeDigits, options.showSeconds)\n const meridiem = options.timeFormat === '12h' ? normalizeMeridiemDraft(normalizedValue) : ''\n const timePart = `${timeBase}${meridiem ? `${timeBase ? ' ' : ''}${meridiem}` : ''}`.trim()\n\n if (!datePart) {\n return {formatted: timePart, datePart: '', timePart}\n }\n\n // Preserve the space delimiter once the date is complete so the user can keep typing the time.\n const dateComplete = dateDigits.length === 8\n const userTypedSpaceAfterDate = /\\s/.test(normalizedValue.slice(datePart.length))\n const showSpace = timePart || (dateComplete && userTypedSpaceAfterDate)\n\n return {\n formatted: showSpace ? `${datePart} ${timePart}` : datePart,\n datePart,\n timePart,\n }\n}\n\nfunction getTimeDraftFromDate(date: Date | null, showSeconds: boolean): string {\n if (!date) return ''\n return formatTimeWithFormat(date.getHours(), date.getMinutes(), date.getSeconds(), showSeconds, '24h')\n}\n\nfunction parseInputValue(\n value: string,\n options: {\n inputFormat: MDateFormat\n minDate: Date | null\n maxDate: Date | null\n withTime: boolean\n timeFormat: '24h' | '12h'\n showSeconds: boolean\n isDisabled: (date: Date) => boolean\n }\n): ParsedInputState {\n const {datePart, timePart} = splitInputValue(value, options.withTime)\n\n if (!datePart && !timePart) {\n return {status: 'empty'}\n }\n\n const validation = validateDate(datePart, {\n format: options.inputFormat,\n minDate: options.minDate ?? undefined,\n maxDate: options.maxDate ?? undefined,\n })\n\n if (!validation.valid) {\n return validation.error === 'Incomplete date'\n ? {status: 'partial', datePart, timePart}\n : {status: 'invalid', datePart, timePart, result: validation}\n }\n\n const parsedDate = parseDateString(datePart, options.inputFormat)\n\n if (!parsedDate) {\n return {status: 'invalid', datePart, timePart, result: {valid: false, error: 'Invalid date'}}\n }\n\n if (options.isDisabled(parsedDate)) {\n return {status: 'invalid', datePart, timePart, result: {valid: false, error: DATE_UNAVAILABLE_ERROR}}\n }\n\n if (!options.withTime) {\n return {status: 'valid', datePart, timePart: '', value: stripTime(parsedDate)}\n }\n\n if (!timePart) {\n return {\n status: 'valid',\n datePart,\n timePart: '',\n value: combineDateAndTime(parsedDate, '', {format: options.timeFormat, showSeconds: options.showSeconds}),\n }\n }\n\n const parsedTime = parseTimeWithFormat(timePart, options.timeFormat)\n\n if (!parsedTime) {\n return {status: 'invalid', datePart, timePart, result: {valid: false, error: INVALID_TIME_ERROR}}\n }\n\n return {\n status: 'valid',\n datePart,\n timePart,\n value: combineDateAndTime(parsedDate, timePart, {format: options.timeFormat, showSeconds: options.showSeconds}),\n }\n}\n\nfunction to12HourParts(value: {hours: number; minutes: number; seconds: number}) {\n const meridiem: Meridiem = value.hours >= 12 ? 'PM' : 'AM'\n const hours = value.hours % 12 || 12\n return {hours, minutes: value.minutes, seconds: value.seconds, meridiem}\n}\n\nfunction to24HourValue(hours: number, meridiem: Meridiem): number {\n if (meridiem === 'AM') {\n return hours === 12 ? 0 : hours\n }\n\n return hours === 12 ? 12 : hours + 12\n}\n\nexport function MDatePicker({\n value,\n defaultValue,\n onChange,\n format = 'dd.MM.yyyy',\n locale: localeOverride,\n min,\n max,\n disabledDates,\n placeholder,\n disabled = false,\n readOnly = false,\n name,\n id,\n variant = 'outlined',\n size = 'md',\n color,\n label,\n helperText,\n errorText,\n error = false,\n required = false,\n clearable = false,\n withTime = false,\n validateOnBlur = true,\n validateOnChange = false,\n onValidationChange,\n timeFormat = '24h',\n showSeconds = false,\n minuteStep = 1,\n timePlaceholder,\n inline = false,\n showTodayButton = true,\n firstDayOfWeek = 1,\n fullWidth = false,\n className,\n style,\n}: MDatePickerProps) {\n const locale = useDocumentLocale(localeOverride)\n const texts = useMDatePickerTexts()\n const {inputFormat, separator} = useMemo(() => normalizeDatePickerFormat(format), [format])\n const [open, setOpen] = useState(false)\n const [internalValue, setInternalValue] = useState<Date | null>(() => toDate(defaultValue))\n const [validationState, setValidationState] = useState<ValidationResult>({valid: true})\n const [touched, setTouched] = useState(false)\n const selectedValue = value !== undefined ? toDate(value) : internalValue\n const [inputValue, setInputValue] = useState(() =>\n formatDisplayValue(selectedValue, {format, withTime, timeFormat, showSeconds})\n )\n const [draftTimeValue, setDraftTimeValue] = useState(() => getTimeDraftFromDate(selectedValue, showSeconds))\n const [viewDate, setViewDate] = useState(() => {\n const baseDate = selectedValue ? stripTime(selectedValue) : new Date()\n return new Date(baseDate.getFullYear(), baseDate.getMonth(), 1)\n })\n const [viewMode, setViewMode] = useState<'days' | 'months'>('days')\n const anchorRef = useRef<HTMLDivElement>(null)\n const selectedValueKey = selectedValue?.getTime() ?? null\n const minDate = toDate(min)\n const maxDate = toDate(max)\n const hasError = error || (touched && !validationState.valid)\n const resolvedErrorText = errorText || (touched && !validationState.valid ? validationState.error : undefined)\n const dayNames = getDayNames(locale, firstDayOfWeek)\n const monthNames = getMonthNames(locale)\n\n useEffect(() => {\n setInputValue(formatDisplayValue(selectedValue, {format, withTime, timeFormat, showSeconds}))\n setDraftTimeValue(getTimeDraftFromDate(selectedValue, showSeconds))\n if (selectedValue) {\n const normalizedDate = stripTime(selectedValue)\n setViewDate(new Date(normalizedDate.getFullYear(), normalizedDate.getMonth(), 1))\n }\n }, [format, selectedValueKey, showSeconds, timeFormat, withTime])\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (!isDateInRange(date, minDate, maxDate)) return true\n if (Array.isArray(disabledDates)) {\n return disabledDates.some((disabledDate) => isSameDay(disabledDate, date))\n }\n if (typeof disabledDates === 'function') {\n return disabledDates(date)\n }\n return false\n },\n [disabledDates, maxDate, minDate]\n )\n\n const emitValidation = useCallback(\n (result: ValidationResult) => {\n setValidationState(result)\n onValidationChange?.(result)\n },\n [onValidationChange]\n )\n\n const commitValue = useCallback(\n (nextValue: Date | null) => {\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onChange?.(nextValue)\n },\n [onChange, value]\n )\n\n const parsedInputState = useMemo(\n () =>\n parseInputValue(inputValue, {\n inputFormat,\n minDate,\n maxDate,\n withTime,\n timeFormat,\n showSeconds,\n isDisabled,\n }),\n [inputFormat, inputValue, isDisabled, maxDate, minDate, showSeconds, timeFormat, withTime]\n )\n\n const currentDateForPanel = useMemo(() => {\n if (parsedInputState.status === 'valid') {\n return stripTime(parsedInputState.value)\n }\n\n return selectedValue ? stripTime(selectedValue) : null\n }, [parsedInputState, selectedValue])\n\n const currentTimeForPanel = useMemo(() => {\n if (!withTime) return null\n\n const timeSource =\n parsedInputState.status !== 'empty' && parsedInputState.timePart\n ? parsedInputState.timePart\n : draftTimeValue || getTimeDraftFromDate(selectedValue, showSeconds)\n\n return parseTimeWithFormat(timeSource, timeFormat) ?? {hours: 0, minutes: 0, seconds: 0}\n }, [draftTimeValue, parsedInputState, selectedValue, showSeconds, timeFormat, withTime])\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextTyped = formatTypedInput(event.target.value, {\n inputFormat,\n separator,\n withTime,\n timeFormat,\n showSeconds,\n })\n\n setInputValue(nextTyped.formatted)\n setDraftTimeValue(nextTyped.timePart)\n\n const nextParsedState = parseInputValue(nextTyped.formatted, {\n inputFormat,\n minDate,\n maxDate,\n withTime,\n timeFormat,\n showSeconds,\n isDisabled,\n })\n\n if (nextParsedState.status === 'empty') {\n emitValidation({valid: true})\n commitValue(null)\n return\n }\n\n if (nextParsedState.status === 'invalid' && validateOnChange) {\n emitValidation(nextParsedState.result)\n } else if (nextParsedState.status === 'valid') {\n emitValidation({valid: true})\n setViewDate(new Date(nextParsedState.value.getFullYear(), nextParsedState.value.getMonth(), 1))\n // Hold the commit until the time is fully typed so the formatter doesn't pad\n // partial minutes/seconds (e.g. \"21:3\" → \"21:03\") and overwrite the cursor while typing.\n // Blur falls back to 00:00 via the INVALID_TIME_ERROR retry if the user never finishes.\n const requiredTimeDigits = showSeconds ? 6 : 4\n const typedTimeDigits = withTime ? stripNonDigits(event.target.value).slice(8).length : 0\n const timeComplete = !withTime || typedTimeDigits >= requiredTimeDigits\n if (timeComplete) {\n commitValue(nextParsedState.value)\n }\n }\n },\n [\n commitValue,\n emitValidation,\n inputFormat,\n isDisabled,\n maxDate,\n minDate,\n separator,\n showSeconds,\n timeFormat,\n validateOnChange,\n withTime,\n ]\n )\n\n const handleInputBlur = useCallback(() => {\n setTouched(true)\n\n const nextParsedState = parseInputValue(inputValue, {\n inputFormat,\n minDate,\n maxDate,\n withTime,\n timeFormat,\n showSeconds,\n isDisabled,\n })\n\n if (nextParsedState.status === 'empty') {\n emitValidation({valid: true})\n return\n }\n\n if (nextParsedState.status === 'partial') {\n if (validateOnBlur) {\n emitValidation({valid: false, error: 'Incomplete date'})\n }\n return\n }\n\n if (nextParsedState.status === 'invalid') {\n // Out-of-range time entry (e.g. 48:69) clamps to 00:00 on blur instead of staying invalid.\n if (withTime && nextParsedState.result.error === INVALID_TIME_ERROR && nextParsedState.datePart) {\n const fallbackTimePart = formatTimeWithFormat(0, 0, 0, showSeconds, timeFormat)\n const retry = parseInputValue(`${nextParsedState.datePart} ${fallbackTimePart}`, {\n inputFormat,\n minDate,\n maxDate,\n withTime,\n timeFormat,\n showSeconds,\n isDisabled,\n })\n\n if (retry.status === 'valid') {\n emitValidation({valid: true})\n setInputValue(formatDisplayValue(retry.value, {format, withTime, timeFormat, showSeconds}))\n setDraftTimeValue(getTimeDraftFromDate(retry.value, showSeconds))\n commitValue(retry.value)\n return\n }\n }\n\n if (validateOnBlur) {\n emitValidation(nextParsedState.result)\n }\n return\n }\n\n emitValidation({valid: true})\n setInputValue(formatDisplayValue(nextParsedState.value, {format, withTime, timeFormat, showSeconds}))\n setDraftTimeValue(getTimeDraftFromDate(nextParsedState.value, showSeconds))\n commitValue(nextParsedState.value)\n }, [\n commitValue,\n emitValidation,\n format,\n inputFormat,\n inputValue,\n isDisabled,\n maxDate,\n minDate,\n showSeconds,\n timeFormat,\n validateOnBlur,\n withTime,\n ])\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'Enter'].includes(event.key)) {\n return\n }\n\n if (event.ctrlKey || event.metaKey) {\n return\n }\n\n const allowCharacter = withTime ? /^[0-9\\s:./-APMapm]$/ : /^[0-9./-]$/\n\n if (!allowCharacter.test(event.key)) {\n event.preventDefault()\n }\n },\n [withTime]\n )\n\n const handleClear = useCallback(() => {\n setInputValue('')\n setDraftTimeValue('')\n setTouched(false)\n emitValidation({valid: true})\n commitValue(null)\n }, [commitValue, emitValidation])\n\n const handleTogglePopover = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (disabled || readOnly || inline) return\n\n setOpen((current) => !current)\n },\n [disabled, inline, readOnly]\n )\n\n const handleSelectDate = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return\n\n const nextTime = withTime ? draftTimeValue || formatTimeWithFormat(0, 0, 0, showSeconds, timeFormat) : ''\n const nextValue = withTime\n ? combineDateAndTime(date, nextTime, {format: timeFormat, showSeconds})\n : stripTime(date)\n\n setTouched(true)\n emitValidation({valid: true})\n setDraftTimeValue(nextTime)\n setInputValue(formatDisplayValue(nextValue, {format, withTime, timeFormat, showSeconds}))\n setViewDate(new Date(date.getFullYear(), date.getMonth(), 1))\n commitValue(nextValue)\n\n if (!withTime && !inline) {\n setOpen(false)\n }\n },\n [commitValue, draftTimeValue, emitValidation, format, inline, isDisabled, showSeconds, timeFormat, withTime]\n )\n\n const handleToday = useCallback(() => {\n const today = stripTime(new Date())\n\n if (isDisabled(today)) return\n\n handleSelectDate(today)\n }, [handleSelectDate, isDisabled])\n\n const hours = useMemo(() => {\n if (!withTime) return []\n\n const items: number[] = []\n const maxHour = timeFormat === '12h' ? 12 : 23\n const startHour = timeFormat === '12h' ? 1 : 0\n\n for (let index = startHour; index <= maxHour; index += 1) {\n items.push(index)\n }\n\n return items\n }, [timeFormat, withTime])\n\n const minutes = useMemo(() => {\n if (!withTime) return []\n\n const items: number[] = []\n\n for (let index = 0; index < 60; index += minuteStep) {\n items.push(index)\n }\n\n return items\n }, [minuteStep, withTime])\n\n const seconds = useMemo(() => {\n if (!withTime || !showSeconds) return []\n\n const items: number[] = []\n\n for (let index = 0; index < 60; index += 1) {\n items.push(index)\n }\n\n return items\n }, [showSeconds, withTime])\n\n const handleTimeSelection = useCallback(\n (hoursValue: number, minutesValue: number, secondsValue: number = 0) => {\n const formattedTime = formatTimeWithFormat(hoursValue, minutesValue, secondsValue, showSeconds, timeFormat)\n const nextDate = currentDateForPanel\n\n setTouched(true)\n setDraftTimeValue(formattedTime)\n\n if (!nextDate) {\n setInputValue(formattedTime)\n return\n }\n\n const nextValue = combineDateAndTime(nextDate, formattedTime, {format: timeFormat, showSeconds})\n\n emitValidation({valid: true})\n setInputValue(formatDisplayValue(nextValue, {format, withTime, timeFormat, showSeconds}))\n commitValue(nextValue)\n },\n [commitValue, currentDateForPanel, emitValidation, format, showSeconds, timeFormat, withTime]\n )\n\n const handleMeridiemChange = useCallback(\n (meridiem: Meridiem) => {\n const currentHours = currentTimeForPanel ? to12HourParts(currentTimeForPanel).hours : 12\n const nextHours = to24HourValue(currentHours, meridiem)\n\n handleTimeSelection(nextHours, currentTimeForPanel?.minutes ?? 0, currentTimeForPanel?.seconds ?? 0)\n },\n [currentTimeForPanel, handleTimeSelection]\n )\n\n const calendarDays = useMemo(() => {\n const year = viewDate.getFullYear()\n const month = viewDate.getMonth()\n const totalDays = daysInMonth(year, month)\n let startDay = firstDayOfMonth(year, month)\n\n if (firstDayOfWeek === 1) {\n startDay = startDay === 0 ? 6 : startDay - 1\n }\n\n const days: Array<{date: Date; currentMonth: boolean}> = []\n const prevMonth = month === 0 ? 11 : month - 1\n const prevYear = month === 0 ? year - 1 : year\n const prevDays = daysInMonth(prevYear, prevMonth)\n\n for (let index = startDay - 1; index >= 0; index -= 1) {\n days.push({date: new Date(prevYear, prevMonth, prevDays - index), currentMonth: false})\n }\n\n for (let day = 1; day <= totalDays; day += 1) {\n days.push({date: new Date(year, month, day), currentMonth: true})\n }\n\n const remaining = 42 - days.length\n const nextMonth = month === 11 ? 0 : month + 1\n const nextYear = month === 11 ? year + 1 : year\n\n for (let day = 1; day <= remaining; day += 1) {\n days.push({date: new Date(nextYear, nextMonth, day), currentMonth: false})\n }\n\n return days\n }, [firstDayOfWeek, viewDate])\n\n const today = stripTime(new Date())\n const selectedDate = selectedValue ? stripTime(selectedValue) : currentDateForPanel\n\n const renderCalendar = () => (\n <div className=\"calendar\">\n <div className=\"calendar-header\">\n <button\n type=\"button\"\n className=\"nav-btn\"\n onClick={() => setViewDate(addMonths(viewDate, -1))}\n aria-label={texts.previousMonth}\n >\n <ChevronLeftGlyphIcon />\n </button>\n <button\n type=\"button\"\n className=\"header-title\"\n onClick={() => setViewMode((current) => (current === 'days' ? 'months' : 'days'))}\n >\n {monthNames[viewDate.getMonth()]} {viewDate.getFullYear()}\n </button>\n <button\n type=\"button\"\n className=\"nav-btn\"\n onClick={() => setViewDate(addMonths(viewDate, 1))}\n aria-label={texts.nextMonth}\n >\n <ChevronRightGlyphIcon />\n </button>\n </div>\n\n {viewMode === 'days' ? (\n <>\n <div className=\"day-names\">\n {dayNames.map((dayName) => (\n <span key={dayName} className=\"day-name\">\n {dayName}\n </span>\n ))}\n </div>\n\n <div className=\"day-grid\">\n {calendarDays.map(({date, currentMonth}, index) => {\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false\n const isToday = isSameDay(date, today)\n const disabledDay = isDisabled(date)\n\n return (\n <button\n key={`${date.toISOString()}-${index}`}\n type=\"button\"\n className={cn(\n 'day',\n !currentMonth && 'other-month',\n isToday && 'today',\n isSelected && 'selected',\n disabledDay && 'disabled'\n )}\n onClick={() => handleSelectDate(date)}\n disabled={disabledDay}\n tabIndex={-1}\n >\n {date.getDate()}\n </button>\n )\n })}\n </div>\n </>\n ) : (\n <div className=\"month-grid\">\n {monthNames.map((monthName, index) => (\n <button\n key={monthName}\n type=\"button\"\n className={cn('month-cell', viewDate.getMonth() === index && 'selected')}\n onClick={() => {\n setViewDate(new Date(viewDate.getFullYear(), index, 1))\n setViewMode('days')\n }}\n >\n {monthName.slice(0, 3)}\n </button>\n ))}\n </div>\n )}\n\n {showTodayButton && (\n <div className=\"footer\">\n <button type=\"button\" className=\"today-btn\" onClick={handleToday}>\n {texts.today}\n </button>\n </div>\n )}\n </div>\n )\n\n const renderTimePanel = () => {\n if (!withTime) return null\n\n const displayTime = currentTimeForPanel ? to12HourParts(currentTimeForPanel) : null\n\n return (\n <div className=\"date-picker-time-panel\">\n <div className=\"date-picker-time-header\">Time</div>\n <div className=\"date-picker-time-columns\">\n <TimeColumn\n items={hours}\n selected={timeFormat === '12h' ? displayTime?.hours : currentTimeForPanel?.hours}\n onSelect={(hoursValue) =>\n handleTimeSelection(\n timeFormat === '12h'\n ? to24HourValue(hoursValue, displayTime?.meridiem ?? 'AM')\n : hoursValue,\n currentTimeForPanel?.minutes ?? 0,\n currentTimeForPanel?.seconds ?? 0\n )\n }\n label=\"Hr\"\n />\n <TimeColumn\n items={minutes}\n selected={currentTimeForPanel?.minutes}\n onSelect={(minutesValue) =>\n handleTimeSelection(\n currentTimeForPanel?.hours ?? 0,\n minutesValue,\n currentTimeForPanel?.seconds ?? 0\n )\n }\n label=\"Min\"\n />\n {showSeconds && (\n <TimeColumn\n items={seconds}\n selected={currentTimeForPanel?.seconds}\n onSelect={(secondsValue) =>\n handleTimeSelection(\n currentTimeForPanel?.hours ?? 0,\n currentTimeForPanel?.minutes ?? 0,\n secondsValue\n )\n }\n label=\"Sec\"\n />\n )}\n {timeFormat === '12h' && (\n <TimeColumn\n items={['AM', 'PM']}\n selected={displayTime?.meridiem}\n onSelect={handleMeridiemChange}\n label=\"AM/PM\"\n />\n )}\n </div>\n </div>\n )\n }\n\n const renderPopoverContent = () => (\n <div className={cn('date-picker-popover-content', withTime && 'with-time')}>\n {renderCalendar()}\n {renderTimePanel()}\n </div>\n )\n\n const maxLength = withTime ? (timeFormat === '12h' ? (showSeconds ? 22 : 19) : showSeconds ? 19 : 16) : 10\n const inputPlaceholder = getInputPlaceholder(\n placeholder,\n format,\n withTime,\n timeFormat,\n showSeconds,\n timePlaceholder\n )\n\n if (inline) {\n return (\n <div\n className={cn('date-picker', color && `color-${color}`, fullWidth && 'full-width', className)}\n style={style}\n >\n <MInput\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n onClear={handleClear}\n type=\"text\"\n inputMode={withTime ? 'text' : 'numeric'}\n autoComplete=\"off\"\n maxLength={maxLength}\n placeholder={inputPlaceholder}\n disabled={disabled}\n readOnly={readOnly}\n id={id}\n variant={variant}\n size={size}\n color={color}\n label={label}\n helperText={helperText}\n error={hasError}\n errorText={resolvedErrorText}\n required={required}\n clearable={clearable}\n fullWidth={fullWidth}\n />\n {renderPopoverContent()}\n {name && selectedValue && (\n <input\n type=\"hidden\"\n name={name}\n value={formatHiddenDateValue(selectedValue, withTime, showSeconds)}\n />\n )}\n </div>\n )\n }\n\n return (\n <div\n className={cn('date-picker', color && `color-${color}`, fullWidth && 'full-width', className)}\n style={style}\n >\n <div ref={anchorRef} className=\"date-picker-input-anchor\">\n <MInput\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n onClear={handleClear}\n type=\"text\"\n inputMode={withTime ? 'text' : 'numeric'}\n autoComplete=\"off\"\n maxLength={maxLength}\n placeholder={inputPlaceholder}\n disabled={disabled}\n readOnly={readOnly}\n id={id}\n variant={variant}\n size={size}\n color={color}\n label={label}\n helperText={helperText}\n error={hasError}\n errorText={resolvedErrorText}\n required={required}\n clearable={clearable}\n fullWidth={fullWidth}\n endIcon={\n <button\n type=\"button\"\n className=\"date-picker-toggle\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleTogglePopover}\n aria-label=\"Open calendar\"\n disabled={disabled || readOnly}\n >\n <MCalendarIcon />\n </button>\n }\n />\n </div>\n\n {name && selectedValue && (\n <input type=\"hidden\" name={name} value={formatHiddenDateValue(selectedValue, withTime, showSeconds)} />\n )}\n\n <MPopover\n className=\"date-picker-popover\"\n style={{'--color-rgb': colorRgbVar(color)} as React.CSSProperties}\n open={open}\n anchorRef={anchorRef}\n onClose={() => setOpen(false)}\n placement=\"bottom-start\"\n >\n {renderPopoverContent()}\n </MPopover>\n </div>\n )\n}\n\nfunction TimeColumn<T extends number | Meridiem>({\n items,\n selected,\n onSelect,\n label,\n}: {\n items: T[]\n selected?: T\n onSelect: (value: T) => void\n label: string\n}) {\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (selected === undefined || !listRef.current) return\n\n const element = listRef.current.querySelector(`[data-value=\"${selected}\"]`) as HTMLElement | null\n\n if (element) {\n const list = listRef.current\n list.scrollTop = element.offsetTop - list.clientHeight / 2 + element.offsetHeight / 2\n }\n }, [selected])\n\n const renderValue = (value: T) => (typeof value === 'number' ? value.toString().padStart(2, '0') : value)\n\n return (\n <div className=\"date-picker-time-column\">\n <div className=\"date-picker-time-column-label\">{label}</div>\n <div ref={listRef} className=\"date-picker-time-column-list\">\n {items.map((item) => (\n <button\n key={item}\n type=\"button\"\n data-value={item}\n className={cn('date-picker-time-column-item', item === selected && 'selected')}\n onClick={() => onSelect(item)}\n >\n {renderValue(item)}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import {useState, useRef, useCallback, useMemo, useEffect} from 'react'\nimport type * as React from 'react'\nimport type {MTimePickerProps} from './MTimePicker.types'\nimport {MPopover} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {MClockIcon, MCloseIcon} from '../../../icons'\nimport {formatTime, parseTime} from '../../../utils/dateUtils'\nimport './MTimePicker.css'\n\ntype ParsedTimeValue = {hours: number; minutes: number; seconds: number}\ntype Meridiem = 'AM' | 'PM'\n\nfunction to12HourParts(value: ParsedTimeValue) {\n const meridiem: Meridiem = value.hours >= 12 ? 'PM' : 'AM'\n const hours = value.hours % 12 || 12\n return {hours, minutes: value.minutes, seconds: value.seconds, meridiem}\n}\n\nfunction to24HourValue(hours: number, meridiem: Meridiem): number {\n if (meridiem === 'AM') {\n return hours === 12 ? 0 : hours\n }\n return hours === 12 ? 12 : hours + 12\n}\n\nfunction formatTimeValue(\n hours: number,\n minutes: number,\n seconds: number,\n showSeconds: boolean,\n format: '24h' | '12h'\n): string {\n if (format === '24h') {\n return formatTime(hours, minutes, seconds, showSeconds)\n }\n\n const parts = to12HourParts({hours, minutes, seconds})\n const base = `${parts.hours.toString().padStart(2, '0')}:${parts.minutes.toString().padStart(2, '0')}`\n const withSeconds = showSeconds ? `${base}:${parts.seconds.toString().padStart(2, '0')}` : base\n return `${withSeconds} ${parts.meridiem}`\n}\n\nfunction parseTimeValue(value: string, format: '24h' | '12h'): ParsedTimeValue | null {\n if (format === '24h') {\n return parseTime(value)\n }\n\n const normalized = value.trim().toUpperCase()\n const match = normalized.match(/^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM)$/)\n if (match) {\n const hours = parseInt(match[1], 10)\n const minutes = parseInt(match[2], 10)\n const seconds = match[3] ? parseInt(match[3], 10) : 0\n const meridiem = match[4] as Meridiem\n\n if (hours < 1 || hours > 12 || minutes > 59 || seconds > 59) {\n return null\n }\n\n return {hours: to24HourValue(hours, meridiem), minutes, seconds}\n }\n\n return parseTime(value)\n}\n\n// Compare time tuples so min/max checks can stay string-format agnostic.\nfunction compareTimeParts(\n left: {hours: number; minutes: number; seconds: number},\n right: {hours: number; minutes: number; seconds: number}\n): number {\n if (left.hours !== right.hours) return left.hours - right.hours\n if (left.minutes !== right.minutes) return left.minutes - right.minutes\n return left.seconds - right.seconds\n}\n\n// Check whether a time falls within optional min and max boundaries.\nfunction isTimeInRange(\n value: {hours: number; minutes: number; seconds: number},\n min?: {hours: number; minutes: number; seconds: number} | null,\n max?: {hours: number; minutes: number; seconds: number} | null\n): boolean {\n return (!min || compareTimeParts(value, min) >= 0) && (!max || compareTimeParts(value, max) <= 0)\n}\n\n// Render a time input backed by scrollable hour, minute and second columns.\nexport function MTimePicker({\n value,\n defaultValue,\n onChange,\n format = '24h',\n showSeconds = false,\n minuteStep = 1,\n min,\n max,\n placeholder,\n disabled = false,\n readOnly = false,\n name,\n id,\n variant = 'outlined',\n size = 'md',\n color,\n label,\n helperText,\n errorText,\n error = false,\n required = false,\n clearable = false,\n fullWidth = false,\n className,\n style,\n}: MTimePickerProps) {\n const [open, setOpen] = useState(false)\n const [internalValue, setInternalValue] = useState(defaultValue ?? '')\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const currentValue = value !== undefined ? value : internalValue\n const hasError = error || !!errorText\n const parsed = parseTimeValue(currentValue, format)\n const minTime = parseTimeValue(min ?? '', format)\n const maxTime = parseTimeValue(max ?? '', format)\n const displayTime = parsed ? to12HourParts(parsed) : null\n const displayValue = parsed\n ? formatTimeValue(parsed.hours, parsed.minutes, parsed.seconds, showSeconds, format)\n : currentValue\n\n // Build the visible hour list based on the selected time format.\n const hours = useMemo(() => {\n const items: number[] = []\n const maxHour = format === '12h' ? 12 : 23\n const startHour = format === '12h' ? 1 : 0\n for (let index = startHour; index <= maxHour; index++) {\n items.push(index)\n }\n return items\n }, [format])\n\n // Build the minute list using the configured step size.\n const minutes = useMemo(() => {\n const items: number[] = []\n for (let index = 0; index < 60; index += minuteStep) {\n items.push(index)\n }\n return items\n }, [minuteStep])\n\n // Build the seconds list only when the picker exposes seconds.\n const seconds = useMemo(() => {\n if (!showSeconds) return []\n const items: number[] = []\n for (let index = 0; index < 60; index++) {\n items.push(index)\n }\n return items\n }, [showSeconds])\n\n // Reuse range validation for list rendering and direct text input.\n const isSelectable = useCallback(\n (hoursValue: number, minutesValue: number, secondsValue: number = 0) => {\n return isTimeInRange({hours: hoursValue, minutes: minutesValue, seconds: secondsValue}, minTime, maxTime)\n },\n [maxTime, minTime]\n )\n\n // Apply the selected time and keep uncontrolled usage in sync.\n const handleSelect = useCallback(\n (hoursValue: number, minutesValue: number, secondsValue: number = 0) => {\n if (!isSelectable(hoursValue, minutesValue, secondsValue)) return\n const time = formatTimeValue(hoursValue, minutesValue, secondsValue, showSeconds, format)\n if (value === undefined) setInternalValue(time)\n onChange?.(time)\n },\n [format, isSelectable, onChange, showSeconds, value]\n )\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const raw = event.target.value\n if (value === undefined) setInternalValue(raw)\n },\n [value]\n )\n\n // Normalize manual input once the user leaves the field.\n const handleInputBlur = useCallback(() => {\n const nextValue = parseTimeValue(currentValue, format)\n if (nextValue && isTimeInRange(nextValue, minTime, maxTime)) {\n const time = formatTimeValue(nextValue.hours, nextValue.minutes, nextValue.seconds, showSeconds, format)\n if (value === undefined) setInternalValue(time)\n onChange?.(time)\n }\n }, [currentValue, format, maxTime, minTime, onChange, showSeconds, value])\n\n const handleMeridiemChange = useCallback(\n (meridiem: Meridiem) => {\n const currentHours = displayTime?.hours ?? 12\n const minutesValue = parsed?.minutes ?? 0\n const secondsValue = parsed?.seconds ?? 0\n const nextHours = to24HourValue(currentHours, meridiem)\n handleSelect(nextHours, minutesValue, secondsValue)\n },\n [displayTime?.hours, handleSelect, parsed?.minutes, parsed?.seconds]\n )\n\n // Clear the current time without closing the trigger first.\n const handleClear = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation()\n if (value === undefined) setInternalValue('')\n onChange?.('')\n },\n [onChange, value]\n )\n\n return (\n <div\n className={cn('time picker', color && `color-${color}`, fullWidth && 'full-width', className)}\n style={style}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn('field-label', open && 'focused', hasError && 'error', required && 'required')}\n >\n {label}\n </label>\n )}\n\n <div\n ref={triggerRef}\n className={cn(\n 'time trigger',\n `field-${variant}`,\n `field-${size}`,\n open && 'focused',\n hasError && 'error',\n disabled && 'disabled'\n )}\n onClick={() => !disabled && !readOnly && setOpen(true)}\n >\n <span className=\"time icon\">\n <MClockIcon />\n </span>\n <input\n type=\"text\"\n className=\"time input\"\n value={displayValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n placeholder={\n placeholder ??\n (format === '12h'\n ? showSeconds\n ? 'hh:mm:ss AM'\n : 'hh:mm AM'\n : showSeconds\n ? 'HH:MM:SS'\n : 'HH:MM')\n }\n disabled={disabled}\n readOnly={readOnly}\n id={id}\n aria-invalid={hasError || undefined}\n />\n {clearable && currentValue && !disabled && (\n <button\n type=\"button\"\n className=\"time clear clear-btn-base\"\n onClick={handleClear}\n tabIndex={-1}\n aria-label=\"Clear time\"\n >\n <MCloseIcon />\n </button>\n )}\n </div>\n\n {name && <input type=\"hidden\" name={name} value={displayValue} />}\n\n <MPopover\n className=\"time picker popover\"\n open={open}\n anchorRef={triggerRef}\n onClose={() => setOpen(false)}\n placement=\"bottom-start\"\n >\n <div className=\"time columns\">\n <TimeColumn\n items={hours}\n selected={format === '12h' ? displayTime?.hours : parsed?.hours}\n onSelect={(hoursValue) =>\n handleSelect(\n format === '12h'\n ? to24HourValue(hoursValue, displayTime?.meridiem ?? 'AM')\n : hoursValue,\n parsed?.minutes ?? 0,\n parsed?.seconds ?? 0\n )\n }\n isDisabled={(hoursValue) =>\n !isSelectable(\n format === '12h'\n ? to24HourValue(hoursValue, displayTime?.meridiem ?? 'AM')\n : hoursValue,\n parsed?.minutes ?? 0,\n parsed?.seconds ?? 0\n )\n }\n label=\"Hr\"\n />\n <TimeColumn\n items={minutes}\n selected={parsed?.minutes}\n onSelect={(minutesValue) =>\n handleSelect(parsed?.hours ?? 0, minutesValue, parsed?.seconds ?? 0)\n }\n isDisabled={(minutesValue) =>\n !isSelectable(parsed?.hours ?? 0, minutesValue, parsed?.seconds ?? 0)\n }\n label=\"Min\"\n />\n {showSeconds && (\n <TimeColumn\n items={seconds}\n selected={parsed?.seconds}\n onSelect={(secondsValue) =>\n handleSelect(parsed?.hours ?? 0, parsed?.minutes ?? 0, secondsValue)\n }\n isDisabled={(secondsValue) =>\n !isSelectable(parsed?.hours ?? 0, parsed?.minutes ?? 0, secondsValue)\n }\n label=\"Sec\"\n />\n )}\n {format === '12h' && (\n <TimeColumn\n items={['AM', 'PM']}\n selected={displayTime?.meridiem}\n onSelect={handleMeridiemChange}\n label=\"AM/PM\"\n />\n )}\n </div>\n </MPopover>\n\n {(errorText || helperText) && (\n <div className=\"time bottom\">\n {errorText ? (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n ) : (\n <span className=\"time helper\">{helperText}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n\n// Render one scrollable time column and keep the selected value centered.\nfunction TimeColumn<T extends number | Meridiem>({\n items,\n selected,\n onSelect,\n isDisabled,\n label,\n}: {\n items: T[]\n selected?: T\n onSelect: (value: T) => void\n isDisabled?: (value: T) => boolean\n label: string\n}) {\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (selected === undefined || !listRef.current) return\n const element = listRef.current.querySelector(`[data-value=\"${selected}\"]`) as HTMLElement | null\n if (element) {\n const list = listRef.current\n list.scrollTop = element.offsetTop - list.clientHeight / 2 + element.offsetHeight / 2\n }\n }, [selected])\n\n const renderValue = (value: T) => (typeof value === 'number' ? value.toString().padStart(2, '0') : value)\n\n return (\n <div className=\"time column\">\n <div className=\"time column label\">{label}</div>\n <div ref={listRef} className=\"time column list\">\n {items.map((item) => {\n const disabled = isDisabled?.(item) ?? false\n return (\n <button\n key={item}\n type=\"button\"\n data-value={item}\n className={cn('time column item', item === selected && 'selected', disabled && 'disabled')}\n onClick={() => onSelect(item)}\n disabled={disabled}\n >\n {renderValue(item)}\n </button>\n )\n })}\n </div>\n </div>\n )\n}\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport {MPopover} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {useMDateRangePickerTexts} from '../../../i18n/frameworkTexts'\nimport {useDocumentLocale} from '../../../utils/locale'\nimport {MCalendarIcon, MChevronLeftIcon, MChevronRightIcon, MCloseIcon} from '../../../icons'\nimport {\n addMonths,\n daysInMonth,\n firstDayOfMonth,\n formatDate,\n getDayNames,\n getMonthNames,\n isDateInRange,\n isSameDay,\n stripTime,\n} from '../../../utils/dateUtils'\nimport type {MDateRangePickerProps, MDateRangePreset} from './MDateRangePicker.types'\nimport {colorRgbVar} from '../../../utils/colorRgbVar'\nimport './MDateRangePicker.css'\n\nfunction toDate(value: Date | string | null | undefined): Date | null {\n if (!value) return null\n if (value instanceof Date) return stripTime(value)\n const date = new Date(value)\n return isNaN(date.getTime()) ? null : stripTime(date)\n}\n\nfunction sortRange(start: Date, end: Date) {\n return start.getTime() <= end.getTime() ? {start, end} : {start: end, end: start}\n}\n\nfunction isBetween(date: Date, start: Date | null, end: Date | null) {\n if (!start || !end) return false\n const time = date.getTime()\n return time > start.getTime() && time < end.getTime()\n}\n\nfunction formatRangeLabel(start: Date | null, end: Date | null, format: string) {\n if (start && end) {\n return `${formatDate(start, format)} - ${formatDate(end, format)}`\n }\n\n if (start) {\n return `${formatDate(start, format)} - ...`\n }\n\n return ''\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0)\n}\n\nfunction daysAgo(days: number): Date {\n const date = stripTime(new Date())\n date.setDate(date.getDate() - (days - 1))\n return date\n}\n\nfunction monthsAgo(months: number): Date {\n const today = stripTime(new Date())\n return new Date(today.getFullYear(), today.getMonth() - months, today.getDate())\n}\n\nfunction getDefaultPresets(texts: ReturnType<typeof useMDateRangePickerTexts>): MDateRangePreset[] {\n const today = stripTime(new Date())\n const previousMonthDate = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n\n return [\n {label: texts.presets.today, value: {start: today, end: today}},\n {label: texts.presets.days2, value: {start: daysAgo(2), end: today}},\n {label: texts.presets.days3, value: {start: daysAgo(3), end: today}},\n {label: texts.presets.days7, value: {start: daysAgo(7), end: today}},\n {label: texts.presets.days14, value: {start: daysAgo(14), end: today}},\n {label: texts.presets.days31, value: {start: daysAgo(31), end: today}},\n {label: texts.presets.thisMonth, value: {start: startOfMonth(today), end: endOfMonth(today)}},\n {\n label: texts.presets.previousMonth,\n value: {start: startOfMonth(previousMonthDate), end: endOfMonth(previousMonthDate)},\n },\n {label: texts.presets.months2, value: {start: monthsAgo(2), end: today}},\n {label: texts.presets.months3, value: {start: monthsAgo(3), end: today}},\n {label: texts.presets.months6, value: {start: monthsAgo(6), end: today}},\n {label: texts.presets.year1, value: {start: monthsAgo(12), end: today}},\n ]\n}\n\nfunction buildCalendarDays(viewDate: Date, firstDayOfWeek: 0 | 1) {\n const year = viewDate.getFullYear()\n const month = viewDate.getMonth()\n const totalDays = daysInMonth(year, month)\n let startDay = firstDayOfMonth(year, month)\n\n if (firstDayOfWeek === 1) {\n startDay = startDay === 0 ? 6 : startDay - 1\n }\n\n const days = [] as Array<{date: Date; currentMonth: boolean}>\n\n const previousMonth = month === 0 ? 11 : month - 1\n const previousYear = month === 0 ? year - 1 : year\n const previousMonthDays = daysInMonth(previousYear, previousMonth)\n\n for (let index = startDay - 1; index >= 0; index -= 1) {\n days.push({date: new Date(previousYear, previousMonth, previousMonthDays - index), currentMonth: false})\n }\n\n for (let day = 1; day <= totalDays; day += 1) {\n days.push({date: new Date(year, month, day), currentMonth: true})\n }\n\n const remaining = 42 - days.length\n const nextMonth = month === 11 ? 0 : month + 1\n const nextYear = month === 11 ? year + 1 : year\n\n for (let day = 1; day <= remaining; day += 1) {\n days.push({date: new Date(nextYear, nextMonth, day), currentMonth: false})\n }\n\n return days\n}\n\n// Render a single control for start and end date selection inside one calendar popover.\nexport function MDateRangePicker({\n value,\n defaultValue,\n onChange,\n format = 'dd.MM.yyyy',\n locale: localeOverride,\n min,\n max,\n disabledDates,\n placeholder,\n disabled = false,\n readOnly = false,\n name,\n id,\n variant = 'outlined',\n size = 'md',\n color,\n label,\n helperText,\n errorText,\n error = false,\n required = false,\n clearable = false,\n inline = false,\n showTodayButton = true,\n presets = false,\n presetsSidebar = false,\n firstDayOfWeek = 1,\n fullWidth = false,\n allowSameDay = true,\n className,\n style,\n}: MDateRangePickerProps) {\n const locale = useDocumentLocale(localeOverride)\n const controlledRange = value\n ? {\n start: toDate(value.start),\n end: toDate(value.end),\n }\n : null\n const [internalRange, setInternalRange] = useState(() => ({\n start: toDate(defaultValue?.start),\n end: toDate(defaultValue?.end),\n }))\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null)\n const [open, setOpen] = useState(false)\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const selectedRange = controlledRange ?? internalRange\n const startDate = selectedRange.start\n const endDate = selectedRange.end\n const minDate = toDate(min)\n const maxDate = toDate(max)\n const hasError = error || !!errorText\n const texts = useMDateRangePickerTexts()\n const dayNames = getDayNames(locale, firstDayOfWeek)\n const monthNames = getMonthNames(locale)\n const availablePresets = useMemo(() => {\n if (presets === true || (presetsSidebar && !presets)) {\n return getDefaultPresets(texts)\n }\n\n if (Array.isArray(presets)) {\n return presets\n }\n\n return []\n }, [presets, presetsSidebar, texts])\n\n const [viewDate, setViewDate] = useState(() => {\n const baseDate = startDate ?? new Date()\n return new Date(baseDate.getFullYear(), baseDate.getMonth(), 1)\n })\n\n const startTime = startDate?.getTime() ?? null\n useEffect(() => {\n if (!startTime) return\n const d = new Date(startTime)\n setViewDate(new Date(d.getFullYear(), d.getMonth(), 1))\n }, [startTime])\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (!isDateInRange(date, minDate, maxDate)) return true\n if (Array.isArray(disabledDates)) {\n return disabledDates.some((disabledDate) => isSameDay(disabledDate, date))\n }\n if (typeof disabledDates === 'function') {\n return disabledDates(date)\n }\n return false\n },\n [disabledDates, maxDate, minDate]\n )\n\n const commitRange = useCallback(\n (nextRange: {start: Date | null; end: Date | null}) => {\n if (value === undefined) {\n setInternalRange(nextRange)\n }\n onChange?.(nextRange)\n },\n [onChange, value]\n )\n\n const handleDayClick = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return\n\n if (!startDate || (startDate && endDate)) {\n commitRange({start: date, end: null})\n setHoveredDate(null)\n return\n }\n\n if (!allowSameDay && isSameDay(date, startDate)) {\n return\n }\n\n const orderedRange = sortRange(startDate, date)\n commitRange(orderedRange)\n setHoveredDate(null)\n\n if (!inline) {\n setOpen(false)\n }\n },\n [allowSameDay, commitRange, endDate, inline, isDisabled, startDate]\n )\n\n const handleClear = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation()\n commitRange({start: null, end: null})\n setHoveredDate(null)\n },\n [commitRange]\n )\n\n const handleToday = useCallback(() => {\n const today = stripTime(new Date())\n if (isDisabled(today)) return\n commitRange({start: today, end: today})\n setViewDate(new Date(today.getFullYear(), today.getMonth(), 1))\n setHoveredDate(null)\n if (!inline) {\n setOpen(false)\n }\n }, [commitRange, inline, isDisabled])\n\n const handlePresetClick = useCallback(\n (preset: MDateRangePreset) => {\n const start = toDate(preset.value.start)\n const end = toDate(preset.value.end)\n\n if (!start || !end) {\n return\n }\n\n const orderedRange = sortRange(start, end)\n\n if (isDisabled(orderedRange.start) || isDisabled(orderedRange.end)) {\n return\n }\n\n commitRange(orderedRange)\n setViewDate(new Date(orderedRange.start.getFullYear(), orderedRange.start.getMonth(), 1))\n setHoveredDate(null)\n\n if (!inline) {\n setOpen(false)\n }\n },\n [commitRange, inline, isDisabled]\n )\n\n const previewEnd = startDate && !endDate ? hoveredDate : null\n const firstMonth = viewDate\n const secondMonth = addMonths(viewDate, 1)\n const today = stripTime(new Date())\n\n const displayValue = useMemo(() => formatRangeLabel(startDate, endDate, format), [endDate, format, startDate])\n\n const calendarMonths = useMemo(\n () =>\n [firstMonth, secondMonth].map((monthDate) => ({\n monthDate,\n days: buildCalendarDays(monthDate, firstDayOfWeek),\n })),\n [firstDayOfWeek, firstMonth, secondMonth]\n )\n\n const summaryText =\n startDate && endDate\n ? `${formatDate(startDate, format)} - ${formatDate(endDate, format)}`\n : startDate\n ? `${formatDate(startDate, format)} - ...`\n : (placeholder ?? texts.defaultRangePlaceholder)\n\n const showSidebar = presetsSidebar && availablePresets.length > 0\n const showInlinePresets = !presetsSidebar && availablePresets.length > 0\n\n const renderPresetsSidebar = () => (\n <div className=\"presets-sidebar\">\n {availablePresets.map((preset) => (\n <button\n key={preset.label}\n type=\"button\"\n className=\"preset-sidebar-btn\"\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </button>\n ))}\n </div>\n )\n\n const renderCalendarContent = () => (\n <div className=\"calendar-body\">\n <div className=\"calendar-top\">\n <div className=\"calendar-caption\">\n <span className=\"caption-title\">\n {monthNames[firstMonth.getMonth()]} {firstMonth.getFullYear()}\n </span>\n <span className=\"caption-subtitle\">{texts.rangeSubtitle}</span>\n </div>\n <div className=\"nav-actions\">\n <button\n type=\"button\"\n className=\"nav-btn\"\n onClick={() => setViewDate(addMonths(viewDate, -1))}\n aria-label={texts.previousMonth}\n >\n <MChevronLeftIcon />\n </button>\n <button\n type=\"button\"\n className=\"nav-btn\"\n onClick={() => setViewDate(addMonths(viewDate, 1))}\n aria-label={texts.nextMonth}\n >\n <MChevronRightIcon />\n </button>\n </div>\n </div>\n\n {showInlinePresets && (\n <div className=\"presets\">\n {availablePresets.map((preset) => (\n <button\n key={preset.label}\n type=\"button\"\n className=\"preset-btn\"\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </button>\n ))}\n </div>\n )}\n\n <div className=\"months\">\n {calendarMonths.map(({monthDate, days}) => (\n <div key={monthDate.toISOString()} className=\"month-panel\">\n <div className=\"month-title\">\n {monthNames[monthDate.getMonth()]} {monthDate.getFullYear()}\n </div>\n <div className=\"day-names\">\n {dayNames.map((dayName) => (\n <span key={`${monthDate.toISOString()}-${dayName}`} className=\"day-name\">\n {dayName}\n </span>\n ))}\n </div>\n <div className=\"day-grid\">\n {days.map(({date, currentMonth}, index) => {\n const disabledDay = isDisabled(date)\n const selectedStart = startDate ? isSameDay(date, startDate) : false\n const selectedEnd = endDate ? isSameDay(date, endDate) : false\n const inRange = isBetween(date, startDate, endDate)\n const previewRangeData =\n !endDate && startDate && previewEnd ? sortRange(startDate, previewEnd) : null\n const previewRange = previewRangeData\n ? isBetween(date, previewRangeData.start, previewRangeData.end)\n : false\n const previewEdge = previewRangeData\n ? isSameDay(date, previewRangeData.start) || isSameDay(date, previewRangeData.end)\n : false\n\n return (\n <button\n key={`${monthDate.toISOString()}-${index}`}\n type=\"button\"\n className={cn(\n 'day',\n !currentMonth && 'other-month',\n isSameDay(date, today) && 'today',\n selectedStart && 'range-start selected',\n selectedEnd && 'range-end selected',\n inRange && 'in-range',\n previewRange && !previewEdge && 'preview-range',\n disabledDay && 'disabled'\n )}\n onClick={() => handleDayClick(date)}\n onMouseEnter={() => startDate && !endDate && setHoveredDate(date)}\n onFocus={() => startDate && !endDate && setHoveredDate(date)}\n disabled={disabledDay}\n tabIndex={-1}\n >\n {date.getDate()}\n </button>\n )\n })}\n </div>\n </div>\n ))}\n </div>\n\n <div className=\"footer\">\n <span className=\"summary\">{summaryText}</span>\n <div className=\"footer-actions\">\n {clearable && (startDate || endDate) && (\n <button\n type=\"button\"\n className=\"footer-btn\"\n onClick={(event) => {\n event.preventDefault()\n commitRange({start: null, end: null})\n setHoveredDate(null)\n }}\n >\n {texts.clear}\n </button>\n )}\n {showTodayButton && (\n <button type=\"button\" className=\"footer-btn\" onClick={handleToday}>\n {texts.today}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n\n const renderCalendar = () => (\n <div className={cn('date-range-calendar', showSidebar && 'with-sidebar')}>\n {showSidebar && renderPresetsSidebar()}\n {renderCalendarContent()}\n </div>\n )\n\n if (inline) {\n return (\n <div\n className={cn('date-range-picker', color && `color-${color}`, fullWidth && 'full-width', className)}\n style={style}\n >\n {label && (\n <label className={cn('field-label', hasError && 'error', required && 'required')}>{label}</label>\n )}\n {renderCalendar()}\n </div>\n )\n }\n\n return (\n <div\n className={cn('date-range-picker', color && `color-${color}`, fullWidth && 'full-width', className)}\n style={style}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn('field-label', open && 'focused', hasError && 'error', required && 'required')}\n >\n {label}\n </label>\n )}\n\n <div\n ref={triggerRef}\n className={cn(\n 'trigger',\n `field-${variant}`,\n `field-${size}`,\n open && 'focused',\n hasError && 'error',\n disabled && 'disabled'\n )}\n onClick={() => !disabled && !readOnly && setOpen(true)}\n >\n <span className=\"icon\">\n <MCalendarIcon />\n </span>\n <input\n type=\"text\"\n className=\"input\"\n value={displayValue}\n placeholder={placeholder ?? texts.defaultRangePlaceholder}\n disabled={disabled}\n readOnly\n id={id}\n aria-invalid={hasError || undefined}\n />\n {clearable && (startDate || endDate) && !disabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onClick={handleClear}\n tabIndex={-1}\n aria-label={texts.clear}\n >\n <MCloseIcon />\n </button>\n )}\n </div>\n\n {name && startDate && endDate && (\n <input\n type=\"hidden\"\n name={name}\n value={`${startDate.toISOString().split('T')[0]}:${endDate.toISOString().split('T')[0]}`}\n />\n )}\n\n <MPopover\n className={'date-range-picker-popover'}\n style={{'--color-rgb': colorRgbVar(color)} as React.CSSProperties}\n open={open}\n anchorRef={triggerRef}\n onClose={() => {\n setOpen(false)\n setHoveredDate(null)\n }}\n placement=\"bottom-start\"\n >\n {renderCalendar()}\n </MPopover>\n\n {(errorText || helperText) && (\n <div className=\"bottom-row\">\n {errorText ? (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n ) : (\n <span className=\"helper-text\">{helperText}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|