@banzamel/mineralui 1.0.2 → 1.0.4
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 +55 -22
- package/dist/{MArrowDownIcon-BslRpwqk.js → MArrowDownIcon-BcKSgdTY.js} +1 -1
- package/dist/{MArrowDownIcon-BslRpwqk.js.map → MArrowDownIcon-BcKSgdTY.js.map} +1 -1
- package/dist/{MArrowDownIcon-DjLz-A0I.cjs → MArrowDownIcon-C8EAODgv.cjs} +1 -1
- package/dist/{MArrowDownIcon-DjLz-A0I.cjs.map → MArrowDownIcon-C8EAODgv.cjs.map} +1 -1
- package/dist/MArrowUpDownIcon-CW_PWr7Q.cjs +2 -0
- package/dist/MArrowUpDownIcon-CW_PWr7Q.cjs.map +1 -0
- package/dist/MArrowUpDownIcon-DukXemVA.js +19 -0
- package/dist/MArrowUpDownIcon-DukXemVA.js.map +1 -0
- package/dist/{MArrowUpIcon-CjLbBZOW.cjs → MArrowUpIcon-DWV_HYrz.cjs} +1 -1
- package/dist/{MArrowUpIcon-CjLbBZOW.cjs.map → MArrowUpIcon-DWV_HYrz.cjs.map} +1 -1
- package/dist/{MArrowUpIcon-CudFd1sD.js → MArrowUpIcon-Dan-4hs8.js} +1 -1
- package/dist/{MArrowUpIcon-CudFd1sD.js.map → MArrowUpIcon-Dan-4hs8.js.map} +1 -1
- package/dist/{MAvatar-B_YPaZt9.js → MAvatar-Blh5pfSO.js} +4 -4
- package/dist/{MAvatar-B_YPaZt9.js.map → MAvatar-Blh5pfSO.js.map} +1 -1
- package/dist/{MAvatar-lzW37S2c.cjs → MAvatar-DMM1CsdO.cjs} +2 -2
- package/dist/{MAvatar-lzW37S2c.cjs.map → MAvatar-DMM1CsdO.cjs.map} +1 -1
- package/dist/{MBadge-lezDpe-x.cjs → MBadge-Babyr1R9.cjs} +2 -2
- package/dist/{MBadge-lezDpe-x.cjs.map → MBadge-Babyr1R9.cjs.map} +1 -1
- package/dist/{MBadge-jh7HI3jR.js → MBadge-BjZX0MIC.js} +2 -2
- package/dist/{MBadge-jh7HI3jR.js.map → MBadge-BjZX0MIC.js.map} +1 -1
- package/dist/MBrandMoreIcons-ClUq3DXO.js +873 -0
- package/dist/MBrandMoreIcons-ClUq3DXO.js.map +1 -0
- package/dist/MBrandMoreIcons-Xxf9FaIx.cjs +2 -0
- package/dist/MBrandMoreIcons-Xxf9FaIx.cjs.map +1 -0
- package/dist/{MButton-BIWj6T2J.js → MButton-33EzpGvQ.js} +3 -3
- package/dist/{MButton-BIWj6T2J.js.map → MButton-33EzpGvQ.js.map} +1 -1
- package/dist/{MButton-DOtMjOTz.cjs → MButton-C_WTyNvw.cjs} +2 -2
- package/dist/{MButton-DOtMjOTz.cjs.map → MButton-C_WTyNvw.cjs.map} +1 -1
- package/dist/{MCalendarIcon-CgFKAojj.cjs → MCalendarIcon-4PilFCrR.cjs} +1 -1
- package/dist/{MCalendarIcon-CgFKAojj.cjs.map → MCalendarIcon-4PilFCrR.cjs.map} +1 -1
- package/dist/{MCalendarIcon-Csj_JV9i.js → MCalendarIcon-DXx62vjV.js} +1 -1
- package/dist/{MCalendarIcon-Csj_JV9i.js.map → MCalendarIcon-DXx62vjV.js.map} +1 -1
- package/dist/MChatIcon-CnDOfqkO.js +102 -0
- package/dist/MChatIcon-CnDOfqkO.js.map +1 -0
- package/dist/MChatIcon-DX-u8_6S.cjs +2 -0
- package/dist/MChatIcon-DX-u8_6S.cjs.map +1 -0
- package/dist/MCheckIcon-DQumT4HX.js +15 -0
- package/dist/MCheckIcon-DQumT4HX.js.map +1 -0
- package/dist/MCheckIcon-ck_21ybZ.cjs +2 -0
- package/dist/MCheckIcon-ck_21ybZ.cjs.map +1 -0
- package/dist/{MCheckbox-Vbr4IhEn.cjs → MCheckbox-BhtJDdip.cjs} +2 -2
- package/dist/{MCheckbox-Vbr4IhEn.cjs.map → MCheckbox-BhtJDdip.cjs.map} +1 -1
- package/dist/{MCheckbox-DhDggBnO.js → MCheckbox-CugP7F6H.js} +3 -3
- package/dist/{MCheckbox-DhDggBnO.js.map → MCheckbox-CugP7F6H.js.map} +1 -1
- package/dist/{MChevronDownIcon-CPXk51nE.js → MChevronDownIcon-D3yTpzni.js} +1 -1
- package/dist/{MChevronDownIcon-CPXk51nE.js.map → MChevronDownIcon-D3yTpzni.js.map} +1 -1
- package/dist/{MChevronDownIcon-CE25HFYo.cjs → MChevronDownIcon-DCMmxkRt.cjs} +1 -1
- package/dist/{MChevronDownIcon-CE25HFYo.cjs.map → MChevronDownIcon-DCMmxkRt.cjs.map} +1 -1
- package/dist/{MChevronRightIcon-QbfE-b7g.cjs → MChevronRightIcon-BC08M6g8.cjs} +1 -1
- package/dist/{MChevronRightIcon-QbfE-b7g.cjs.map → MChevronRightIcon-BC08M6g8.cjs.map} +1 -1
- package/dist/{MChevronRightIcon-BozfuNpv.js → MChevronRightIcon-CXs8IHiV.js} +1 -1
- package/dist/{MChevronRightIcon-BozfuNpv.js.map → MChevronRightIcon-CXs8IHiV.js.map} +1 -1
- package/dist/{MClockIcon-2NNldTuA.cjs → MClockIcon-C-zYY2A0.cjs} +1 -1
- package/dist/{MClockIcon-2NNldTuA.cjs.map → MClockIcon-C-zYY2A0.cjs.map} +1 -1
- package/dist/{MClockIcon-D4K6fmV9.js → MClockIcon-DefFl5ks.js} +1 -1
- package/dist/{MClockIcon-D4K6fmV9.js.map → MClockIcon-DefFl5ks.js.map} +1 -1
- package/dist/{MCloseIcon-BKH33Q51.cjs → MCloseIcon-6cfw9trj.cjs} +1 -1
- package/dist/{MCloseIcon-BKH33Q51.cjs.map → MCloseIcon-6cfw9trj.cjs.map} +1 -1
- package/dist/{MCloseIcon-BQv01JOS.js → MCloseIcon-lDH3Vc10.js} +1 -1
- package/dist/{MCloseIcon-BQv01JOS.js.map → MCloseIcon-lDH3Vc10.js.map} +1 -1
- package/dist/MCookieBootstrap-Ct5mIm5P.cjs +2 -0
- package/dist/MCookieBootstrap-Ct5mIm5P.cjs.map +1 -0
- package/dist/MCookieBootstrap-DEEHYxXi.js +437 -0
- package/dist/MCookieBootstrap-DEEHYxXi.js.map +1 -0
- package/dist/MDataTable--pUkQHAv.js +151 -0
- package/dist/MDataTable--pUkQHAv.js.map +1 -0
- package/dist/MDataTable-8ZhnWhqW.cjs +2 -0
- package/dist/MDataTable-8ZhnWhqW.cjs.map +1 -0
- package/dist/MDrawer-00BvU8Dn.js +122 -0
- package/dist/MDrawer-00BvU8Dn.js.map +1 -0
- package/dist/MDrawer-FYS50FtQ.cjs +2 -0
- package/dist/MDrawer-FYS50FtQ.cjs.map +1 -0
- package/dist/MDropdownMenu-BLBdToIz.cjs +2 -0
- package/dist/MDropdownMenu-BLBdToIz.cjs.map +1 -0
- package/dist/MDropdownMenu-BgOiM5yr.js +152 -0
- package/dist/MDropdownMenu-BgOiM5yr.js.map +1 -0
- package/dist/MEllipsisVerticalIcon-C87B9UQK.cjs +2 -0
- package/dist/MEllipsisVerticalIcon-C87B9UQK.cjs.map +1 -0
- package/dist/MEllipsisVerticalIcon-CNn1AQ8W.js +37 -0
- package/dist/MEllipsisVerticalIcon-CNn1AQ8W.js.map +1 -0
- package/dist/{MFileExtIcons-H7zvI8AL.js → MFileExtIcons-BoG3GPxg.js} +1 -1
- package/dist/{MFileExtIcons-H7zvI8AL.js.map → MFileExtIcons-BoG3GPxg.js.map} +1 -1
- package/dist/{MFileExtIcons-DzACx_eM.cjs → MFileExtIcons-DH9oZPpf.cjs} +1 -1
- package/dist/{MFileExtIcons-DzACx_eM.cjs.map → MFileExtIcons-DH9oZPpf.cjs.map} +1 -1
- package/dist/MImage-CKrjXRmf.js +49 -0
- package/dist/MImage-CKrjXRmf.js.map +1 -0
- package/dist/MImage-f854avZS.cjs +2 -0
- package/dist/MImage-f854avZS.cjs.map +1 -0
- package/dist/{MInput-DYEAqxod.js → MInput-BUCcLWSI.js} +6 -6
- package/dist/{MInput-DYEAqxod.js.map → MInput-BUCcLWSI.js.map} +1 -1
- package/dist/{MInput-CjsJRLaz.cjs → MInput-CQ3MqKsk.cjs} +2 -2
- package/dist/{MInput-CjsJRLaz.cjs.map → MInput-CQ3MqKsk.cjs.map} +1 -1
- package/dist/{MInputSearch-CrVrpYsR.js → MInputSearch-BeXUh4lz.js} +4 -4
- package/dist/{MInputSearch-CrVrpYsR.js.map → MInputSearch-BeXUh4lz.js.map} +1 -1
- package/dist/{MInputSearch-CQZ-ccri.cjs → MInputSearch-Dt79qbZg.cjs} +2 -2
- package/dist/{MInputSearch-CQZ-ccri.cjs.map → MInputSearch-Dt79qbZg.cjs.map} +1 -1
- package/dist/{MLink-CAaK6SOG.cjs → MLink-CVN-Vll4.cjs} +2 -2
- package/dist/{MLink-CAaK6SOG.cjs.map → MLink-CVN-Vll4.cjs.map} +1 -1
- package/dist/{MLink-BfRaT8NU.js → MLink-DH4vk7O5.js} +2 -2
- package/dist/{MLink-BfRaT8NU.js.map → MLink-DH4vk7O5.js.map} +1 -1
- package/dist/{MMenuIcon-TZ9iJAXz.cjs → MMenuIcon-Brpitjq1.cjs} +1 -1
- package/dist/{MMenuIcon-TZ9iJAXz.cjs.map → MMenuIcon-Brpitjq1.cjs.map} +1 -1
- package/dist/{MMenuIcon-B13EvS3i.js → MMenuIcon-idfVpVQD.js} +1 -1
- package/dist/{MMenuIcon-B13EvS3i.js.map → MMenuIcon-idfVpVQD.js.map} +1 -1
- package/dist/MModal-BQvk1KKc.cjs +2 -0
- package/dist/MModal-BQvk1KKc.cjs.map +1 -0
- package/dist/MModal-D1Knn-bg.js +69 -0
- package/dist/MModal-D1Knn-bg.js.map +1 -0
- package/dist/MPagination-Bu84ZlVh.cjs +2 -0
- package/dist/MPagination-Bu84ZlVh.cjs.map +1 -0
- package/dist/MPagination-CbkRMnL1.js +147 -0
- package/dist/MPagination-CbkRMnL1.js.map +1 -0
- package/dist/MPhoneIcon-efl6BqwU.js +38 -0
- package/dist/MPhoneIcon-efl6BqwU.js.map +1 -0
- package/dist/MPhoneIcon-lgC9DH5a.cjs +2 -0
- package/dist/MPhoneIcon-lgC9DH5a.cjs.map +1 -0
- package/dist/{MPopover-BE73Iock.cjs → MPopover-BXPkE575.cjs} +2 -2
- package/dist/{MPopover-BE73Iock.cjs.map → MPopover-BXPkE575.cjs.map} +1 -1
- package/dist/{MPopover-C7ZJz7Uj.js → MPopover-DKBdLfrw.js} +3 -3
- package/dist/{MPopover-C7ZJz7Uj.js.map → MPopover-DKBdLfrw.js.map} +1 -1
- package/dist/{MPortal-d1mwLhwx.cjs → MPortal-BysJLuEi.cjs} +1 -1
- package/dist/{MPortal-d1mwLhwx.cjs.map → MPortal-BysJLuEi.cjs.map} +1 -1
- package/dist/{MPortal-BzordRff.js → MPortal-CbpNkzfC.js} +1 -1
- package/dist/{MPortal-BzordRff.js.map → MPortal-CbpNkzfC.js.map} +1 -1
- package/dist/MProtectIcon-BPYP06QD.cjs +2 -0
- package/dist/MProtectIcon-BPYP06QD.cjs.map +1 -0
- package/dist/{MBoltIcon-B1P4i_X4.js → MProtectIcon-BTtMmrib.js} +11 -29
- package/dist/MProtectIcon-BTtMmrib.js.map +1 -0
- package/dist/MQrCode-AttGRC6v.js +416 -0
- package/dist/MQrCode-AttGRC6v.js.map +1 -0
- package/dist/MQrCode-CbUPPd4S.cjs +2 -0
- package/dist/MQrCode-CbUPPd4S.cjs.map +1 -0
- package/dist/{MSearchIcon-Bb-f5JdO.cjs → MSearchIcon-BakfEJQd.cjs} +1 -1
- package/dist/{MSearchIcon-Bb-f5JdO.cjs.map → MSearchIcon-BakfEJQd.cjs.map} +1 -1
- package/dist/{MSearchIcon-COQaC0mk.js → MSearchIcon-Dlg4Og8t.js} +1 -1
- package/dist/{MSearchIcon-COQaC0mk.js.map → MSearchIcon-Dlg4Og8t.js.map} +1 -1
- package/dist/MSkeleton-B5jZNFOG.cjs +2 -0
- package/dist/MSkeleton-B5jZNFOG.cjs.map +1 -0
- package/dist/MSkeleton-BL4C5FkH.js +98 -0
- package/dist/MSkeleton-BL4C5FkH.js.map +1 -0
- package/dist/{MSlider-KyOhqE6d.js → MSlider-D5ckYDop.js} +2 -2
- package/dist/{MSlider-KyOhqE6d.js.map → MSlider-D5ckYDop.js.map} +1 -1
- package/dist/{MSlider-VFCviEUW.cjs → MSlider-vD6Sla2p.cjs} +2 -2
- package/dist/{MSlider-VFCviEUW.cjs.map → MSlider-vD6Sla2p.cjs.map} +1 -1
- package/dist/MSparkline-DjcDtnZH.js +207 -0
- package/dist/MSparkline-DjcDtnZH.js.map +1 -0
- package/dist/MSparkline-U-XaDvpV.cjs +2 -0
- package/dist/MSparkline-U-XaDvpV.cjs.map +1 -0
- package/dist/{MStack-SPM68IMq.cjs → MStack-BvFI0AFv.cjs} +2 -2
- package/dist/{MStack-SPM68IMq.cjs.map → MStack-BvFI0AFv.cjs.map} +1 -1
- package/dist/{MStack-CQLO9e-3.js → MStack-DhdMFSUL.js} +4 -4
- package/dist/{MStack-CQLO9e-3.js.map → MStack-DhdMFSUL.js.map} +1 -1
- package/dist/{MStarFillIcon-w67ZD64c.js → MStarFillIcon-CGyQPFi8.js} +1 -1
- package/dist/{MStarFillIcon-w67ZD64c.js.map → MStarFillIcon-CGyQPFi8.js.map} +1 -1
- package/dist/{MStarFillIcon-B2H1b7mD.cjs → MStarFillIcon-DJHfl_Qy.cjs} +1 -1
- package/dist/{MStarFillIcon-B2H1b7mD.cjs.map → MStarFillIcon-DJHfl_Qy.cjs.map} +1 -1
- package/dist/MSubText-CfWNytoK.cjs +2 -0
- package/dist/MSubText-CfWNytoK.cjs.map +1 -0
- package/dist/MSubText-uvcBr9Ba.js +15 -0
- package/dist/MSubText-uvcBr9Ba.js.map +1 -0
- package/dist/MSuccessIcon-CatQ4FmG.cjs +2 -0
- package/dist/MSuccessIcon-CatQ4FmG.cjs.map +1 -0
- package/dist/MSuccessIcon-D3GrOvye.js +33 -0
- package/dist/MSuccessIcon-D3GrOvye.js.map +1 -0
- package/dist/MSurface-DlcK6Bre.js +39 -0
- package/dist/MSurface-DlcK6Bre.js.map +1 -0
- package/dist/MSurface-qcGLaTIK.cjs +2 -0
- package/dist/MSurface-qcGLaTIK.cjs.map +1 -0
- package/dist/{MTag-CXAmy8tJ.cjs → MTag-BMi1GS7v.cjs} +2 -2
- package/dist/{MTag-CXAmy8tJ.cjs.map → MTag-BMi1GS7v.cjs.map} +1 -1
- package/dist/{MTag-BbIqugpb.js → MTag-Cor8ZIW3.js} +4 -4
- package/dist/{MTag-BbIqugpb.js.map → MTag-Cor8ZIW3.js.map} +1 -1
- package/dist/MText-C0FdseW1.js +57 -0
- package/dist/MText-C0FdseW1.js.map +1 -0
- package/dist/MText-OV0ihtQ6.cjs +2 -0
- package/dist/MText-OV0ihtQ6.cjs.map +1 -0
- package/dist/MTimeAgo-BOXKcDYN.cjs +2 -0
- package/dist/MTimeAgo-BOXKcDYN.cjs.map +1 -0
- package/dist/MTimeAgo-DrDs52Y1.js +51 -0
- package/dist/MTimeAgo-DrDs52Y1.js.map +1 -0
- package/dist/MToggle-B7cKH5Tl.js +48 -0
- package/dist/MToggle-B7cKH5Tl.js.map +1 -0
- package/dist/MToggle-Hheo-jfZ.cjs +2 -0
- package/dist/MToggle-Hheo-jfZ.cjs.map +1 -0
- package/dist/{MTooltip-CKS_zgzR.js → MTooltip-D3xuZ5kG.js} +3 -3
- package/dist/{MTooltip-CKS_zgzR.js.map → MTooltip-D3xuZ5kG.js.map} +1 -1
- package/dist/{MTooltip-CXXYU-j1.cjs → MTooltip-DzwZ637q.cjs} +2 -2
- package/dist/{MTooltip-CXXYU-j1.cjs.map → MTooltip-DzwZ637q.cjs.map} +1 -1
- package/dist/{MZoomInIcon-CK2aJhDg.js → MZoomInIcon-BEdmglk6.js} +11 -46
- package/dist/MZoomInIcon-BEdmglk6.js.map +1 -0
- package/dist/MZoomInIcon-dhRm7zT6.cjs +2 -0
- package/dist/MZoomInIcon-dhRm7zT6.cjs.map +1 -0
- package/dist/cards-CKCr-GuJ.js +934 -0
- package/dist/cards-CKCr-GuJ.js.map +1 -0
- package/dist/cards-yPK4lBAA.cjs +2 -0
- package/dist/cards-yPK4lBAA.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +3 -3
- package/dist/{cn-B_veu23e.js → cn-DZLxql0l.js} +1 -1
- package/dist/{cn-B_veu23e.js.map → cn-DZLxql0l.js.map} +1 -1
- package/dist/{cn-CpRt8Xjj.cjs → cn-SOcVdnX6.cjs} +1 -1
- package/dist/{cn-CpRt8Xjj.cjs.map → cn-SOcVdnX6.cjs.map} +1 -1
- package/dist/components/cards/MCardBusiness/MCardBusiness.d.ts +2 -0
- package/dist/components/cards/MCardBusiness/MCardBusiness.types.d.ts +37 -0
- package/dist/components/cards/MCardBusiness/index.d.ts +4 -0
- package/dist/components/cards/MCardFinance/MCardFinance.d.ts +2 -0
- package/dist/components/cards/MCardFinance/MCardFinance.types.d.ts +16 -0
- package/dist/components/cards/MCardFinance/index.d.ts +4 -0
- package/dist/components/cards/index.d.ts +8 -0
- package/dist/components/data/MCalendarBoard/MCalendarBoard.d.ts +7 -0
- package/dist/components/data/MCalendarBoard/MCalendarBoard.types.d.ts +117 -0
- package/dist/components/data/MCalendarBoard/index.d.ts +4 -0
- package/dist/components/data/MChart/MAreaChart.d.ts +2 -0
- package/dist/components/data/MChart/MBarChart.d.ts +2 -0
- package/dist/components/data/MChart/MChart.d.ts +2 -0
- package/dist/components/data/MChart/MChart.types.d.ts +95 -0
- package/dist/components/data/MChart/MLineChart.d.ts +2 -0
- package/dist/components/data/MChart/MPieChart.d.ts +2 -0
- package/dist/components/data/MChart/charts/MAreaChart.d.ts +27 -0
- package/dist/components/data/MChart/charts/MBarChart.d.ts +26 -0
- package/dist/components/data/MChart/charts/MLineChart.d.ts +26 -0
- package/dist/components/data/MChart/charts/MPieChart.d.ts +19 -0
- package/dist/components/data/MChart/index.d.ts +5 -0
- package/dist/components/data/MChart/parts/ChartAxis.d.ts +13 -0
- package/dist/components/data/MChart/parts/ChartDefs.d.ts +1 -0
- package/dist/components/data/MChart/parts/ChartGrid.d.ts +10 -0
- package/dist/components/data/MChart/parts/ChartLegend.d.ts +9 -0
- package/dist/components/data/MChart/parts/ChartTooltip.d.ts +7 -0
- package/dist/components/data/MChart/utils/formats.d.ts +3 -0
- package/dist/components/data/MChart/utils/paths.d.ts +10 -0
- package/dist/components/data/MChart/utils/scales.d.ts +7 -0
- package/dist/components/data/MChat/MChat.d.ts +2 -0
- package/dist/components/data/MChat/MChat.types.d.ts +77 -0
- package/dist/components/data/MChat/MChatBody.d.ts +2 -0
- package/dist/components/data/MChat/MChatContext.d.ts +6 -0
- package/dist/components/data/MChat/MChatConversationItem.d.ts +2 -0
- package/dist/components/data/MChat/MChatConversationList.d.ts +2 -0
- package/dist/components/data/MChat/MChatHeader.d.ts +2 -0
- package/dist/components/data/MChat/MChatInput.d.ts +2 -0
- package/dist/components/data/MChat/MChatMessage.d.ts +2 -0
- package/dist/components/data/MChat/MChatTypingIndicator.d.ts +2 -0
- package/dist/components/data/MChat/emojis.d.ts +2 -0
- package/dist/components/data/MChat/index.d.ts +9 -0
- package/dist/components/data/MFileManager/MFileManager.d.ts +2 -0
- package/dist/components/data/MFileManager/MFileManager.types.d.ts +70 -0
- package/dist/components/data/MFileManager/index.d.ts +4 -0
- package/dist/components/data/MSparkline/MSparkline.d.ts +2 -0
- package/dist/components/data/MSparkline/MSparkline.types.d.ts +15 -0
- package/dist/components/data/MSparkline/index.d.ts +2 -0
- package/dist/components/data/index.d.ts +20 -0
- package/dist/components/display/MQrCode/MQrCode.d.ts +2 -0
- package/dist/components/display/MQrCode/MQrCode.types.d.ts +11 -0
- package/dist/components/display/MQrCode/index.d.ts +4 -0
- package/dist/components/display/MStepper/MStepper.d.ts +3 -0
- package/dist/components/display/MStepper/MStepper.types.d.ts +20 -0
- package/dist/components/display/MStepper/index.d.ts +2 -0
- package/dist/components/display/MTimeline/MTimeline.d.ts +3 -0
- package/dist/components/display/MTimeline/MTimeline.types.d.ts +16 -0
- package/dist/components/display/MTimeline/index.d.ts +2 -0
- package/dist/components/display/index.d.ts +12 -0
- package/dist/components/feedback/MCookie/MCookieBanner/MCookieBanner.d.ts +3 -0
- package/dist/components/feedback/MCookie/MCookieBanner/MCookieBanner.types.d.ts +27 -0
- package/dist/components/feedback/MCookie/MCookieBanner/index.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.d.ts +6 -0
- package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.types.d.ts +90 -0
- package/dist/components/feedback/MCookie/MCookieBootstrap/index.d.ts +3 -0
- package/dist/components/feedback/MCookie/MCookieConsent/MCookieConsent.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieConsent/MCookieConsent.types.d.ts +11 -0
- package/dist/components/feedback/MCookie/MCookieConsent/index.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.defaults.d.ts +9 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.inventory.d.ts +6 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.storage.d.ts +11 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.types.d.ts +95 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsentContext.d.ts +4 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsentProvider.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieConsentProvider/index.d.ts +3 -0
- package/dist/components/feedback/MCookie/MCookieDeclaration/MCookieDeclaration.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieDeclaration/MCookieDeclaration.types.d.ts +18 -0
- package/dist/components/feedback/MCookie/MCookieDeclaration/index.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookiePreferences/MCookiePreferences.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookiePreferences/MCookiePreferences.types.d.ts +25 -0
- package/dist/components/feedback/MCookie/MCookiePreferences/index.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieTrigger/MCookieTrigger.d.ts +2 -0
- package/dist/components/feedback/MCookie/MCookieTrigger/MCookieTrigger.types.d.ts +7 -0
- package/dist/components/feedback/MCookie/MCookieTrigger/index.d.ts +2 -0
- package/dist/components/feedback/MCookie/index.d.ts +16 -0
- package/dist/components/feedback/index.d.ts +1 -0
- package/dist/components/layout/MTopbar/MTopbar.d.ts +2 -0
- package/dist/components/layout/MTopbar/MTopbar.types.d.ts +36 -0
- package/dist/components/layout/MTopbar/index.d.ts +2 -0
- package/dist/components/layout/index.d.ts +4 -0
- package/dist/components/media/MAvatarStack/MAvatarStack.d.ts +2 -0
- package/dist/components/media/MAvatarStack/MAvatarStack.types.d.ts +14 -0
- package/dist/components/media/MAvatarStack/index.d.ts +2 -0
- package/dist/components/media/MMasonry/MMasonry.d.ts +2 -0
- package/dist/components/media/MMasonry/MMasonry.types.d.ts +7 -0
- package/dist/components/media/MMasonry/index.d.ts +2 -0
- package/dist/components/media/MMasonryItem/MMasonryItem.d.ts +2 -0
- package/dist/components/media/MMasonryItem/MMasonryItem.types.d.ts +14 -0
- package/dist/components/media/MMasonryItem/index.d.ts +2 -0
- package/dist/components/media/MShowcaseCarousel/MShowcaseCarousel.d.ts +2 -0
- package/dist/components/media/MShowcaseCarousel/MShowcaseCarousel.types.d.ts +19 -0
- package/dist/components/media/MShowcaseCarousel/index.d.ts +2 -0
- package/dist/components/media/MShowcaseCarouselItem/MShowcaseCarouselItem.d.ts +2 -0
- package/dist/components/media/MShowcaseCarouselItem/MShowcaseCarouselItem.types.d.ts +18 -0
- package/dist/components/media/MShowcaseCarouselItem/index.d.ts +2 -0
- package/dist/components/media/index.d.ts +16 -0
- package/dist/controls-DEEbLT5o.cjs +2 -0
- package/dist/controls-DEEbLT5o.cjs.map +1 -0
- package/dist/{controls-1nIh1Ih1.js → controls-IsOBNxW0.js} +33 -74
- package/dist/controls-IsOBNxW0.js.map +1 -0
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +6 -5
- package/dist/cookie-consent-bootstrap.cjs +2 -0
- package/dist/cookie-consent-bootstrap.cjs.map +1 -0
- package/dist/cookie-consent-bootstrap.d.ts +1 -0
- package/dist/cookie-consent-bootstrap.js +93 -0
- package/dist/cookie-consent-bootstrap.js.map +1 -0
- package/dist/{creditCards-BVKi47yn.cjs → creditCards-BjHGqAFx.cjs} +1 -1
- package/dist/{creditCards-BVKi47yn.cjs.map → creditCards-BjHGqAFx.cjs.map} +1 -1
- package/dist/{creditCards-Bk9rsMJf.js → creditCards-CoZpbB1e.js} +1 -1
- package/dist/{creditCards-Bk9rsMJf.js.map → creditCards-CoZpbB1e.js.map} +1 -1
- package/dist/data-BEH7TbuW.cjs +2 -0
- package/dist/data-BEH7TbuW.cjs.map +1 -0
- package/dist/data-Bp3Fd2Al.js +2529 -0
- package/dist/data-Bp3Fd2Al.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +4 -2
- package/dist/{dateUtils-BYfEWGkb.js → dateUtils-BOsYyWde.js} +1 -1
- package/dist/{dateUtils-BYfEWGkb.js.map → dateUtils-BOsYyWde.js.map} +1 -1
- package/dist/{dateUtils-5jacfR5Q.cjs → dateUtils-xSfrXjbY.cjs} +1 -1
- package/dist/{dateUtils-5jacfR5Q.cjs.map → dateUtils-xSfrXjbY.cjs.map} +1 -1
- package/dist/display-B0Db8pF3.js +468 -0
- package/dist/display-B0Db8pF3.js.map +1 -0
- package/dist/display-DmB5CZYB.cjs +2 -0
- package/dist/display-DmB5CZYB.cjs.map +1 -0
- package/dist/display.cjs +1 -1
- package/dist/display.js +4 -3
- package/dist/dropdowns-BkBtQP4v.js +1689 -0
- package/dist/dropdowns-BkBtQP4v.js.map +1 -0
- package/dist/dropdowns-CD2myl19.cjs +2 -0
- package/dist/dropdowns-CD2myl19.cjs.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-CuPBnCOw.cjs +2 -0
- package/dist/feedback-CuPBnCOw.cjs.map +1 -0
- package/dist/feedback-QP7-6I7O.js +1013 -0
- package/dist/feedback-QP7-6I7O.js.map +1 -0
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +7 -6
- package/dist/{form-DFx61JJJ.cjs → form-BQ6-ieVC.cjs} +2 -2
- package/dist/{form-DFx61JJJ.cjs.map → form-BQ6-ieVC.cjs.map} +1 -1
- package/dist/{form-C7T4heU2.js → form-JanaUHTQ.js} +2 -2
- package/dist/{form-C7T4heU2.js.map → form-JanaUHTQ.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formatters-bW67hwbX.cjs → formatters-BIijIfCB.cjs} +1 -1
- package/dist/{formatters-bW67hwbX.cjs.map → formatters-BIijIfCB.cjs.map} +1 -1
- package/dist/{formatters-qn3Mj74v.js → formatters-DMI5QqhS.js} +1 -1
- package/dist/{formatters-qn3Mj74v.js.map → formatters-DMI5QqhS.js.map} +1 -1
- package/dist/frameworkTexts-5_DBGFFg.js +115 -0
- package/dist/frameworkTexts-5_DBGFFg.js.map +1 -0
- package/dist/frameworkTexts-CwSSRPWS.cjs +2 -0
- package/dist/frameworkTexts-CwSSRPWS.cjs.map +1 -0
- package/dist/icons/MIconV2.d.ts +7 -0
- package/dist/icons/MIconV2Glyph.d.ts +11 -0
- package/dist/icons/MIconV2Scenes.d.ts +40 -0
- package/dist/icons/glyphs/MCalendarIconV2.d.ts +2 -0
- package/dist/icons/glyphs/MChartIconV2.d.ts +2 -0
- package/dist/icons/glyphs/MFlagIconsV2.d.ts +19 -0
- package/dist/icons/glyphs/MHomeIconV2.d.ts +2 -0
- package/dist/icons/glyphs/MNavigationIconsV2.d.ts +14 -0
- package/dist/icons/glyphs/MSearchIconV2.d.ts +2 -0
- package/dist/icons/glyphs/MSettingsIconV2.d.ts +2 -0
- package/dist/icons/glyphs/MUserIconV2.d.ts +2 -0
- package/dist/icons/index.d.ts +12 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.entry-LwjwnjE2.cjs +2 -0
- package/dist/icons.entry-LwjwnjE2.cjs.map +1 -0
- package/dist/{icons.entry-CbJp27gc.js → icons.entry-txsQqMvb.js} +1663 -985
- package/dist/icons.entry-txsQqMvb.js.map +1 -0
- package/dist/icons.js +22 -17
- package/dist/illustrations.cjs +1 -1
- package/dist/{illustrations.entry-CaBqXBpd.js → illustrations.entry-C0rSNpF1.js} +2 -2
- package/dist/{illustrations.entry-CaBqXBpd.js.map → illustrations.entry-C0rSNpF1.js.map} +1 -1
- package/dist/{illustrations.entry-D5StzALw.cjs → illustrations.entry-DtMxssXq.cjs} +2 -2
- package/dist/{illustrations.entry-D5StzALw.cjs.map → illustrations.entry-DtMxssXq.cjs.map} +1 -1
- package/dist/illustrations.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +74 -60
- package/dist/inputs-BRjbpf9P.cjs +2 -0
- package/dist/{inputs-6TRTzH12.cjs.map → inputs-BRjbpf9P.cjs.map} +1 -1
- package/dist/{inputs-Bd_5Xg49.js → inputs-DFoD2MMX.js} +193 -191
- package/dist/{inputs-Bd_5Xg49.js.map → inputs-DFoD2MMX.js.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +3 -3
- package/dist/layout-BWhQ1VXM.cjs +2 -0
- package/dist/layout-BWhQ1VXM.cjs.map +1 -0
- package/dist/layout-yIAZ4bP6.js +819 -0
- package/dist/layout-yIAZ4bP6.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +5 -5
- package/dist/{layoutProps-CAv0VWdN.cjs → layoutProps-CZ-XhpIX.cjs} +1 -1
- package/dist/{layoutProps-CAv0VWdN.cjs.map → layoutProps-CZ-XhpIX.cjs.map} +1 -1
- package/dist/{layoutProps-D8exMwKp.js → layoutProps-DUPQsWy9.js} +1 -1
- package/dist/{layoutProps-D8exMwKp.js.map → layoutProps-DUPQsWy9.js.map} +1 -1
- package/dist/licensing-CMLexRJk.cjs +2 -0
- package/dist/licensing-CMLexRJk.cjs.map +1 -0
- package/dist/licensing-SQAMYrOI.js +105 -0
- package/dist/licensing-SQAMYrOI.js.map +1 -0
- package/dist/{locale-BJucQij_.js → locale-Crzgecoe.js} +1 -1
- package/dist/{locale-BJucQij_.js.map → locale-Crzgecoe.js.map} +1 -1
- package/dist/{locale-CjYHLr1l.cjs → locale-DpCe_7mG.cjs} +1 -1
- package/dist/{locale-CjYHLr1l.cjs.map → locale-DpCe_7mG.cjs.map} +1 -1
- package/dist/media-D0KRmTG_.cjs +2 -0
- package/dist/media-D0KRmTG_.cjs.map +1 -0
- package/dist/media-DWG2uW1h.js +406 -0
- package/dist/media-DWG2uW1h.js.map +1 -0
- package/dist/media.cjs +1 -1
- package/dist/media.js +4 -3
- package/dist/overlays-CROlfKrR.cjs +2 -0
- package/dist/overlays-CROlfKrR.cjs.map +1 -0
- package/dist/overlays-DQOnI2NS.js +186 -0
- package/dist/overlays-DQOnI2NS.js.map +1 -0
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +6 -4
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.js +2 -2
- package/dist/{relativeTime-FdokPH7W.js → relativeTime-3dGgniAK.js} +1 -1
- package/dist/{relativeTime-FdokPH7W.js.map → relativeTime-3dGgniAK.js.map} +1 -1
- package/dist/{relativeTime-oubkDkrk.cjs → relativeTime-D5qYOJVu.cjs} +1 -1
- package/dist/{relativeTime-oubkDkrk.cjs.map → relativeTime-D5qYOJVu.cjs.map} +1 -1
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/typography-CCkJaTzp.js +40 -0
- package/dist/typography-CCkJaTzp.js.map +1 -0
- package/dist/typography-CtITQOAU.cjs +2 -0
- package/dist/typography-CtITQOAU.cjs.map +1 -0
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +5 -4
- package/dist/{useGhostText-BrRYBrV_.cjs → useGhostText-CL1kSB_V.cjs} +1 -1
- package/dist/{useGhostText-BrRYBrV_.cjs.map → useGhostText-CL1kSB_V.cjs.map} +1 -1
- package/dist/{useGhostText-BpSSyl8G.js → useGhostText-Zq3iktss.js} +1 -1
- package/dist/{useGhostText-BpSSyl8G.js.map → useGhostText-Zq3iktss.js.map} +1 -1
- package/dist/{useInteractionEffect-BaJeiUns.cjs → useInteractionEffect-BLehDk91.cjs} +1 -1
- package/dist/{useInteractionEffect-BaJeiUns.cjs.map → useInteractionEffect-BLehDk91.cjs.map} +1 -1
- package/dist/{useInteractionEffect-B5_UpgTt.js → useInteractionEffect-Dfqq8lGO.js} +1 -1
- package/dist/{useInteractionEffect-B5_UpgTt.js.map → useInteractionEffect-Dfqq8lGO.js.map} +1 -1
- package/dist/{useKeyboardNav-DJtFz7Fx.cjs → useKeyboardNav-DBeCcTmg.cjs} +1 -1
- package/dist/{useKeyboardNav-DJtFz7Fx.cjs.map → useKeyboardNav-DBeCcTmg.cjs.map} +1 -1
- package/dist/{useKeyboardNav-CmUKtJag.js → useKeyboardNav-DXvrPrx9.js} +1 -1
- package/dist/{useKeyboardNav-CmUKtJag.js.map → useKeyboardNav-DXvrPrx9.js.map} +1 -1
- package/dist/{useReveal-D1YuWN9z.cjs → useReveal-CdIoh0Rk.cjs} +1 -1
- package/dist/{useReveal-D1YuWN9z.cjs.map → useReveal-CdIoh0Rk.cjs.map} +1 -1
- package/dist/{useReveal-BB9OaMDU.js → useReveal-DzskFHKb.js} +1 -1
- package/dist/{useReveal-BB9OaMDU.js.map → useReveal-DzskFHKb.js.map} +1 -1
- package/dist/utils/licensing.d.ts +78 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +11 -11
- package/dist/{validators-CA-TznrL.cjs → validators-CyDTl6cC.cjs} +1 -1
- package/dist/{validators-CA-TznrL.cjs.map → validators-CyDTl6cC.cjs.map} +1 -1
- package/dist/{validators-CAahqOcq.js → validators-ljBWrIca.js} +1 -1
- package/dist/{validators-CAahqOcq.js.map → validators-ljBWrIca.js.map} +1 -1
- package/package.json +29 -6
- package/dist/MBoltIcon-B1P4i_X4.js.map +0 -1
- package/dist/MBoltIcon-DB6JHWMo.cjs +0 -2
- package/dist/MBoltIcon-DB6JHWMo.cjs.map +0 -1
- package/dist/MCard-BBBA2UVf.cjs +0 -2
- package/dist/MCard-BBBA2UVf.cjs.map +0 -1
- package/dist/MCard-ViJ2Lf73.js +0 -65
- package/dist/MCard-ViJ2Lf73.js.map +0 -1
- package/dist/MDropdownMenu-BcRbNfoR.js +0 -186
- package/dist/MDropdownMenu-BcRbNfoR.js.map +0 -1
- package/dist/MDropdownMenu-DOxSG00i.cjs +0 -2
- package/dist/MDropdownMenu-DOxSG00i.cjs.map +0 -1
- package/dist/MFolderOpenIcon-35Lmw91g.cjs +0 -2
- package/dist/MFolderOpenIcon-35Lmw91g.cjs.map +0 -1
- package/dist/MFolderOpenIcon-DFahkqXu.js +0 -31
- package/dist/MFolderOpenIcon-DFahkqXu.js.map +0 -1
- package/dist/MPagination-C8txsdB6.cjs +0 -2
- package/dist/MPagination-C8txsdB6.cjs.map +0 -1
- package/dist/MPagination-RupoyjxR.js +0 -113
- package/dist/MPagination-RupoyjxR.js.map +0 -1
- package/dist/MRating-0-_XBF-T.js +0 -38
- package/dist/MRating-0-_XBF-T.js.map +0 -1
- package/dist/MRating-B-fQMZ8c.cjs +0 -2
- package/dist/MRating-B-fQMZ8c.cjs.map +0 -1
- package/dist/MSkeleton-7YJwDcvl.cjs +0 -2
- package/dist/MSkeleton-7YJwDcvl.cjs.map +0 -1
- package/dist/MSkeleton-QQ57uNaL.js +0 -39
- package/dist/MSkeleton-QQ57uNaL.js.map +0 -1
- package/dist/MSortIcon-3mD9vpMX.cjs +0 -2
- package/dist/MSortIcon-3mD9vpMX.cjs.map +0 -1
- package/dist/MSortIcon-DGHyltKa.js +0 -84
- package/dist/MSortIcon-DGHyltKa.js.map +0 -1
- package/dist/MText-BxAcAs-j.cjs +0 -2
- package/dist/MText-BxAcAs-j.cjs.map +0 -1
- package/dist/MText-CzceD0k5.js +0 -43
- package/dist/MText-CzceD0k5.js.map +0 -1
- package/dist/MZoomInIcon-BcpTfzRD.cjs +0 -2
- package/dist/MZoomInIcon-BcpTfzRD.cjs.map +0 -1
- package/dist/MZoomInIcon-CK2aJhDg.js.map +0 -1
- package/dist/cards-Bw7aZCIy.cjs +0 -2
- package/dist/cards-Bw7aZCIy.cjs.map +0 -1
- package/dist/cards-CYzgOCG5.js +0 -613
- package/dist/cards-CYzgOCG5.js.map +0 -1
- package/dist/controls-1nIh1Ih1.js.map +0 -1
- package/dist/controls-2pkUWkOa.cjs +0 -2
- package/dist/controls-2pkUWkOa.cjs.map +0 -1
- package/dist/data-BGEuiFne.cjs +0 -2
- package/dist/data-BGEuiFne.cjs.map +0 -1
- package/dist/data-CYb66BuD.js +0 -423
- package/dist/data-CYb66BuD.js.map +0 -1
- package/dist/display-BEw4iW6N.js +0 -416
- package/dist/display-BEw4iW6N.js.map +0 -1
- package/dist/display-BVeaSZDJ.cjs +0 -2
- package/dist/display-BVeaSZDJ.cjs.map +0 -1
- package/dist/dropdowns-CsUSxR0u.cjs +0 -2
- package/dist/dropdowns-CsUSxR0u.cjs.map +0 -1
- package/dist/dropdowns-DiEsLPoq.js +0 -1729
- package/dist/dropdowns-DiEsLPoq.js.map +0 -1
- package/dist/feedback-BOPPNYr5.js +0 -217
- package/dist/feedback-BOPPNYr5.js.map +0 -1
- package/dist/feedback-vTRXpBZw.cjs +0 -2
- package/dist/feedback-vTRXpBZw.cjs.map +0 -1
- package/dist/icons.entry-BBIBT_e2.cjs +0 -2
- package/dist/icons.entry-BBIBT_e2.cjs.map +0 -1
- package/dist/icons.entry-CbJp27gc.js.map +0 -1
- package/dist/inputs-6TRTzH12.cjs +0 -2
- package/dist/layout-DgxSN0QV.js +0 -698
- package/dist/layout-DgxSN0QV.js.map +0 -1
- package/dist/layout-DsxgXjK_.cjs +0 -2
- package/dist/layout-DsxgXjK_.cjs.map +0 -1
- package/dist/licensing-C80xLz-j.cjs +0 -2
- package/dist/licensing-C80xLz-j.cjs.map +0 -1
- package/dist/licensing-DsWLXZiM.js +0 -28
- package/dist/licensing-DsWLXZiM.js.map +0 -1
- package/dist/media-V8oypokY.js +0 -171
- package/dist/media-V8oypokY.js.map +0 -1
- package/dist/media-uvYa5r3D.cjs +0 -2
- package/dist/media-uvYa5r3D.cjs.map +0 -1
- package/dist/overlays-BjO2sRrU.cjs +0 -2
- package/dist/overlays-BjO2sRrU.cjs.map +0 -1
- package/dist/overlays-DnMM32yB.js +0 -360
- package/dist/overlays-DnMM32yB.js.map +0 -1
- package/dist/typography-Bcn3mZPw.js +0 -63
- package/dist/typography-Bcn3mZPw.js.map +0 -1
- package/dist/typography-Cy_-zrZI.cjs +0 -2
- package/dist/typography-Cy_-zrZI.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdowns-BkBtQP4v.js","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('trigger', `field-${variant}`, `field-${size}`, open && 'focused', hasError && 'error', disabled && 'disabled')}\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 = 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(date: Date | null, options: {\n format: string\n withTime: boolean\n timeFormat: '24h' | '12h'\n showSeconds: boolean\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 return {\n formatted: timePart ? `${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 commitValue(nextParsedState.value)\n setViewDate(new Date(nextParsedState.value.getFullYear(), nextParsedState.value.getMonth(), 1))\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 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((event: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'Enter'].includes(event.key)\n ) {\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 }, [withTime])\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\n ? draftTimeValue || formatTimeWithFormat(0, 0, 0, showSeconds, timeFormat)\n : ''\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(placeholder, format, withTime, timeFormat, showSeconds, timePlaceholder)\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 type=\"hidden\" name={name} value={formatHiddenDateValue(selectedValue, withTime, showSeconds)} />\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 && <label className={cn('field-label', hasError && 'error', required && 'required')}>{label}</label>}\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('trigger', `field-${variant}`, `field-${size}`, open && 'focused', hasError && 'error', disabled && 'disabled')}\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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./MCloseIcon-6cfw9trj.cjs`),t=require(`./MChevronRightIcon-BC08M6g8.cjs`),n=require(`./MChevronDownIcon-DCMmxkRt.cjs`),r=require(`./MCalendarIcon-4PilFCrR.cjs`),i=require(`./MClockIcon-C-zYY2A0.cjs`),a=require(`./cn-SOcVdnX6.cjs`),o=require(`./validators-CyDTl6cC.cjs`),s=require(`./formatters-BIijIfCB.cjs`),c=require(`./dateUtils-xSfrXjbY.cjs`),l=require(`./useGhostText-CL1kSB_V.cjs`),u=require(`./useKeyboardNav-DBeCcTmg.cjs`),ee=require(`./MPopover-BXPkE575.cjs`),d=require(`./MButton-C_WTyNvw.cjs`),f=require(`./MTag-BMi1GS7v.cjs`),te=require(`./locale-DpCe_7mG.cjs`),ne=require(`./MInput-CQ3MqKsk.cjs`),re=require(`./frameworkTexts-CwSSRPWS.cjs`),p=require(`./MCheckbox-BhtJDdip.cjs`);let m=require(`react`),h=require(`react/jsx-runtime`);function ie({options:t,value:r,defaultValue:i,onChange:o,multiple:s=!1,searchable:c=!1,placeholder:l=`MSelect...`,disabled:te=!1,name:ne,id:re,variant:ie=`outlined`,size:g=`md`,color:_,fullWidth:ae=!1,label:oe,helperText:v,errorText:se,error:y=!1,required:ce=!1,loading:b=!1,clearable:le=!1,maxHeight:ue=300,noOptionsText:de=`No options`,renderOption:x,renderValue:S,className:C,style:w}){let[T,E]=(0,m.useState)(!1),[D,O]=(0,m.useState)(i??(s?[]:``)),[k,A]=(0,m.useState)(``),j=(0,m.useRef)(null),M=r===void 0?D:r,N=y||!!se,P=(0,m.useMemo)(()=>Array.isArray(M)?M:M?[M]:[],[M]),F=(0,m.useMemo)(()=>t.filter(e=>P.includes(e.value)),[t,P]),I=(0,m.useMemo)(()=>{if(!c||!k)return t;let e=k.toLowerCase();return t.filter(t=>t.label.toLowerCase().includes(e))},[t,c,k]),L=(0,m.useMemo)(()=>{let e=new Map;for(let t of I){let n=t.group??``;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[I]),R=I,z=(0,m.useCallback)(e=>{let t=R[e];if(!(!t||t.disabled))if(s){let e=Array.isArray(M)?M:[],n=e.includes(t.value)?e.filter(e=>e!==t.value):[...e,t.value];r===void 0&&O(n),o?.(n)}else r===void 0&&O(t.value),o?.(t.value),E(!1),A(``)},[R,s,M,r,o]),{activeIndex:B,setActiveIndex:V,resetIndex:H,onKeyDown:fe}=u.t({itemCount:R.length,onSelect:z,onClose:()=>{E(!1),A(``)},isOpen:T}),U=(0,m.useCallback)(()=>{te||(E(e=>!e),H())},[te,H]),W=(0,m.useCallback)(e=>{e.stopPropagation();let t=s?[]:``;r===void 0&&O(t),o?.(t)},[s,r,o]),G=(0,m.useMemo)(()=>S&&F.length>0?S(s?F:F[0]):s&&F.length>0?(0,h.jsx)(`span`,{className:`tags`,children:F.map(e=>(0,h.jsx)(f.t,{label:e.label,color:_,size:g,variant:`solid`},e.value))}):!s&&F.length>0?F[0].label:(0,h.jsx)(`span`,{className:`placeholder`,children:l}),[F,s,S,l,_,g]);return(0,h.jsxs)(`div`,{className:a.t(`select`,_&&`color-${_}`,ae&&`full-width`,C),style:w,children:[oe&&(0,h.jsx)(`label`,{htmlFor:re,className:a.t(`field-label`,T&&`focused`,N&&`error`,ce&&`required`),children:oe}),(0,h.jsxs)(`div`,{ref:j,className:a.t(`trigger`,`field-${ie}`,`field-${g}`,T&&`focused`,N&&`error`,te&&`disabled`),onClick:U,onKeyDown:fe,tabIndex:te?-1:0,role:`combobox`,"aria-expanded":T,"aria-haspopup":`listbox`,"aria-invalid":N||void 0,id:re,children:[(0,h.jsx)(`span`,{className:`value`,children:G}),b&&(0,h.jsx)(d.r,{size:`sm`,color:_}),le&&P.length>0&&!b&&!te&&(0,h.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:W,tabIndex:-1,"aria-label":`Clear selection`,children:(0,h.jsx)(e.t,{})}),(0,h.jsx)(`span`,{className:a.t(`arrow`,T&&`open`),"aria-hidden":`true`,children:(0,h.jsx)(n.t,{})})]}),ne&&(0,h.jsx)(`input`,{type:`hidden`,name:ne,value:Array.isArray(M)?M.join(`,`):M}),(0,h.jsx)(ee.t,{className:`select-popover`,open:T,anchorRef:j,onClose:()=>{E(!1),A(``)},matchWidth:!0,placement:`bottom-start`,children:(0,h.jsxs)(`div`,{style:{maxHeight:ue},className:`dropdown`,children:[c&&(0,h.jsx)(`div`,{className:`search-box`,children:(0,h.jsx)(`input`,{type:`text`,className:`search-input`,placeholder:`Search...`,value:k,onChange:e=>{A(e.target.value),V(0)},onKeyDown:fe,autoFocus:!0})}),R.length===0?(0,h.jsx)(`div`,{className:`no-options`,children:de}):(0,h.jsx)(`div`,{className:`options-list`,role:`listbox`,children:[...L.entries()].map(([e,t])=>(0,h.jsxs)(`div`,{children:[e&&(0,h.jsx)(`div`,{className:`group-header`,children:e}),t.map(e=>{let t=R.indexOf(e),n=t===B,r=P.includes(e.value);return(0,h.jsxs)(`div`,{className:a.t(`option`,n&&`active`,r&&`selected`,e.disabled&&`disabled`),onClick:()=>!e.disabled&&z(t),onMouseEnter:()=>V(t),role:`option`,"aria-selected":r,"aria-disabled":e.disabled,children:[s&&(0,h.jsx)(p.t,{checked:r,size:`sm`,color:_,clickEffect:`none`,className:`select-check`}),x?x(e,n,r):e.label]},e.value)})]},e))})]})}),(se||v)&&(0,h.jsx)(`div`,{className:`bottom-row`,children:se?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:se}):(0,h.jsx)(`span`,{className:`helper-text`,children:v})})]})}function g(e){return typeof e==`string`?e:String(e)}function _(e){return typeof e==`string`?e:String(e)}function ae(e,t,n){if(!t)return e;let r=t.toLowerCase();return e.filter(e=>n(e).toLowerCase().includes(r))}function oe({options:t,value:n,onChange:r,getOptionLabel:i=g,getOptionValue:o=_,filterOptions:s,multiple:c=!1,debounceMs:te=0,onInputChange:ne,loading:re=!1,loadingText:p=`Loading...`,noOptionsText:ie=`No options`,placeholder:oe=`Type to search...`,disabled:v=!1,name:se,id:y,variant:ce=`outlined`,size:b=`md`,color:le,fullWidth:ue=!1,label:de,helperText:x,errorText:S,error:C=!1,required:w=!1,clearable:T=!1,maxHeight:E=300,renderOption:D,renderTags:O,className:k,style:A}){let[j,M]=(0,m.useState)(!1),[N,P]=(0,m.useState)(``),F=(0,m.useRef)(null),I=(0,m.useRef)(null),L=C||!!S,R=(0,m.useMemo)(()=>n==null?[]:Array.isArray(n)?n.filter(e=>e!=null):[n],[n]),z=(0,m.useMemo)(()=>s?s(t,N):ae(t,N,i),[t,N,s,i]),B=l.r(e=>ne?.(e),te),V=(0,m.useCallback)(e=>{P(e.target.value),B(e.target.value),j||M(!0)},[j,B]),H=(0,m.useCallback)(e=>{let t=z[e];if(t)if(c){let e=[...R],n=o(t),i=e.findIndex(e=>o(e)===n);i>=0?e.splice(i,1):e.push(t),r?.(e),P(``),I.current?.focus()}else r?.(t),P(i(t)),M(!1)},[z,c,R,o,i,r]),fe=(0,m.useCallback)(e=>{let t=[...R];t.splice(e,1),r?.(c?t:t[0]??``)},[R,r,c]),{activeIndex:U,setActiveIndex:W,resetIndex:G,onKeyDown:K}=u.t({itemCount:z.length,onSelect:H,onClose:()=>M(!1),isOpen:j}),pe=(0,m.useCallback)(e=>{if(e.key===`Backspace`&&c&&!N&&R.length>0){fe(R.length-1);return}K(e)},[N,c,R,K,fe]),me=(0,m.useCallback)(e=>{e.stopPropagation(),P(``),r?.(c?[]:``),I.current?.focus()},[c,r]);return(0,h.jsxs)(`div`,{className:a.t(`autocomplete`,le&&`color-${le}`,ue&&`full-width`,k),style:A,children:[de&&(0,h.jsx)(`label`,{htmlFor:y,className:a.t(`field-label`,j&&`focused`,L&&`error`,w&&`required`),children:de}),(0,h.jsxs)(`div`,{ref:F,className:a.t(`input-wrapper`,`field-${ce}`,`field-${b}`,j&&`focused`,L&&`error`,v&&`disabled`),onClick:()=>I.current?.focus(),children:[c&&R.length>0&&(O?O(R,fe):(0,h.jsx)(`span`,{className:`tags`,children:R.map((e,t)=>(0,h.jsx)(f.t,{label:i(e),color:le,size:b,variant:`solid`,closable:!0,onClose:()=>fe(t)},o(e)))})),(0,h.jsx)(`input`,{ref:I,type:`text`,className:`input`,value:N,onChange:V,onFocus:()=>{M(!0),G()},onKeyDown:pe,placeholder:R.length>0?``:oe,disabled:v,id:y,"aria-expanded":j,"aria-haspopup":`listbox`,"aria-invalid":L||void 0,autoComplete:`off`}),re&&(0,h.jsx)(d.r,{size:`sm`,color:le}),T&&(R.length>0||N)&&!re&&!v&&(0,h.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:me,tabIndex:-1,children:(0,h.jsx)(e.t,{})})]}),se&&(0,h.jsx)(`input`,{type:`hidden`,name:se,value:R.map(o).join(`,`)}),(0,h.jsx)(ee.t,{className:a.t(`autocomplete-popover`,le&&`color-${le}`),open:j&&(z.length>0||re||!!N),anchorRef:F,onClose:()=>M(!1),matchWidth:!0,placement:`bottom-start`,children:(0,h.jsx)(`div`,{style:{maxHeight:E},className:`dropdown`,children:re?(0,h.jsx)(`div`,{className:`loading-msg`,children:p}):z.length===0?(0,h.jsx)(`div`,{className:`no-options`,children:ie}):(0,h.jsx)(`div`,{className:`options-list`,role:`listbox`,children:z.map((e,t)=>{let n=t===U,r=R.some(t=>o(t)===o(e));return(0,h.jsx)(`div`,{className:a.t(`option`,n&&`active`,r&&`selected`),onClick:()=>H(t),onMouseEnter:()=>W(t),role:`option`,"aria-selected":r,children:D?D(e,n):i(e)},o(e))})})})}),(S||x)&&(0,h.jsx)(`div`,{className:`bottom-row`,children:S?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:S}):(0,h.jsx)(`span`,{className:`helper-text`,children:x})})]})}var v={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 se(e){return v[e??`primary`]??v.primary}var y=`Date is unavailable`,ce=`Invalid time`;function b(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 le(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 ue(e,t){return e===`12h`?t?`hh:mm:ss AM`:`hh:mm AM`:t?`HH:MM:SS`:`HH:MM`}function de(e,t,n,r,i,a){return e||(n?`${t} ${a??ue(r,i)}`:t)}function x(e,t){if(!e)return``;let n=c.o(c._(e),t.format);return t.withTime?`${n} ${c.l(e.getHours(),e.getMinutes(),e.getSeconds(),t.showSeconds,t.timeFormat)}`:n}function S(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 C(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 w(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(),r=s.u(n),i=r.slice(0,8),a=t.withTime?r.slice(8,8+(t.showSeconds?6:4)):``,o=s.i(i,t.inputFormat,t.separator);if(!t.withTime)return{formatted:o,datePart:o,timePart:``};let c=S(a,t.showSeconds),l=t.timeFormat===`12h`?C(n):``,u=`${c}${l?`${c?` `:``}${l}`:``}`.trim();return o?{formatted:u?`${o} ${u}`:o,datePart:o,timePart:u}:{formatted:u,datePart:``,timePart:u}}function E(e,t){return e?c.l(e.getHours(),e.getMinutes(),e.getSeconds(),t,`24h`):``}function D(e,t){let{datePart:n,timePart:r}=w(e,t.withTime);if(!n&&!r)return{status:`empty`};let i=o.r(n,{format:t.inputFormat,minDate:t.minDate??void 0,maxDate:t.maxDate??void 0});if(!i.valid)return i.error===`Incomplete date`?{status:`partial`,datePart:n,timePart:r}:{status:`invalid`,datePart:n,timePart:r,result:i};let a=o.n(n,t.inputFormat);return a?t.isDisabled(a)?{status:`invalid`,datePart:n,timePart:r,result:{valid:!1,error:y}}:t.withTime?r?c.g(r,t.timeFormat)?{status:`valid`,datePart:n,timePart:r,value:c.r(a,r,{format:t.timeFormat,showSeconds:t.showSeconds})}:{status:`invalid`,datePart:n,timePart:r,result:{valid:!1,error:ce}}:{status:`valid`,datePart:n,timePart:``,value:c.r(a,``,{format:t.timeFormat,showSeconds:t.showSeconds})}:{status:`valid`,datePart:n,timePart:``,value:c._(a)}:{status:`invalid`,datePart:n,timePart:r,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 A({value:e,defaultValue:n,onChange:i,format:o=`dd.MM.yyyy`,locale:s,min:l,max:u,disabledDates:d,placeholder:f,disabled:p=!1,readOnly:ie=!1,name:g,id:_,variant:ae=`outlined`,size:oe=`md`,color:v,label:y,helperText:ce,errorText:ue,error:S=!1,required:C=!1,clearable:w=!1,withTime:A=!1,validateOnBlur:M=!0,validateOnChange:N=!1,onValidationChange:P,timeFormat:F=`24h`,showSeconds:I=!1,minuteStep:L=1,timePlaceholder:R,inline:z=!1,showTodayButton:B=!0,firstDayOfWeek:V=1,fullWidth:H=!1,className:fe,style:U}){let W=te.t(s),G=re.r(),{inputFormat:K,separator:pe}=(0,m.useMemo)(()=>le(o),[o]),[me,he]=(0,m.useState)(!1),[q,ge]=(0,m.useState)(()=>b(n)),[_e,ve]=(0,m.useState)({valid:!0}),[ye,be]=(0,m.useState)(!1),J=e===void 0?q:b(e),[Y,X]=(0,m.useState)(()=>x(J,{format:o,withTime:A,timeFormat:F,showSeconds:I})),[xe,Se]=(0,m.useState)(()=>E(J,I)),[Ce,we]=(0,m.useState)(()=>{let e=J?c._(J):new Date;return new Date(e.getFullYear(),e.getMonth(),1)}),[Te,Ee]=(0,m.useState)(`days`),De=(0,m.useRef)(null),Oe=J?.getTime()??null,ke=b(l),Ae=b(u),je=S||ye&&!_e.valid,Me=ue||(ye&&!_e.valid?_e.error:void 0),Ne=c.u(W,V),Pe=c.d(W);(0,m.useEffect)(()=>{if(X(x(J,{format:o,withTime:A,timeFormat:F,showSeconds:I})),Se(E(J,I)),J){let e=c._(J);we(new Date(e.getFullYear(),e.getMonth(),1))}},[o,Oe,I,F,A]);let Z=(0,m.useCallback)(e=>c.f(e,ke,Ae)?Array.isArray(d)?d.some(t=>c.p(t,e)):typeof d==`function`?d(e):!1:!0,[d,Ae,ke]),Q=(0,m.useCallback)(e=>{ve(e),P?.(e)},[P]),Fe=(0,m.useCallback)(t=>{e===void 0&&ge(t),i?.(t)},[i,e]),Ie=(0,m.useMemo)(()=>D(Y,{inputFormat:K,minDate:ke,maxDate:Ae,withTime:A,timeFormat:F,showSeconds:I,isDisabled:Z}),[K,Y,Z,Ae,ke,I,F,A]),Le=(0,m.useMemo)(()=>Ie.status===`valid`?c._(Ie.value):J?c._(J):null,[Ie,J]),$=(0,m.useMemo)(()=>A?c.g(Ie.status!==`empty`&&Ie.timePart?Ie.timePart:xe||E(J,I),F)??{hours:0,minutes:0,seconds:0}:null,[xe,Ie,J,I,F,A]),Re=(0,m.useCallback)(e=>{let t=T(e.target.value,{inputFormat:K,separator:pe,withTime:A,timeFormat:F,showSeconds:I});X(t.formatted),Se(t.timePart);let n=D(t.formatted,{inputFormat:K,minDate:ke,maxDate:Ae,withTime:A,timeFormat:F,showSeconds:I,isDisabled:Z});if(n.status===`empty`){Q({valid:!0}),Fe(null);return}n.status===`invalid`&&N?Q(n.result):n.status===`valid`&&(Q({valid:!0}),Fe(n.value),we(new Date(n.value.getFullYear(),n.value.getMonth(),1)))},[Fe,Q,K,Z,Ae,ke,pe,I,F,N,A]),ze=(0,m.useCallback)(()=>{be(!0);let e=D(Y,{inputFormat:K,minDate:ke,maxDate:Ae,withTime:A,timeFormat:F,showSeconds:I,isDisabled:Z});if(e.status===`empty`){Q({valid:!0});return}if(e.status===`partial`){M&&Q({valid:!1,error:`Incomplete date`});return}if(e.status===`invalid`){M&&Q(e.result);return}Q({valid:!0}),X(x(e.value,{format:o,withTime:A,timeFormat:F,showSeconds:I})),Se(E(e.value,I)),Fe(e.value)},[Fe,Q,o,K,Y,Z,Ae,ke,I,F,M,A]),Be=(0,m.useCallback)(e=>{[`Backspace`,`Delete`,`Tab`,`ArrowLeft`,`ArrowRight`,`Home`,`End`,`Enter`].includes(e.key)||e.ctrlKey||e.metaKey||(A?/^[0-9\s:./-APMapm]$/:/^[0-9./-]$/).test(e.key)||e.preventDefault()},[A]),Ve=(0,m.useCallback)(()=>{X(``),Se(``),be(!1),Q({valid:!0}),Fe(null)},[Fe,Q]),He=(0,m.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!(p||ie||z)&&he(e=>!e)},[p,z,ie]),Ue=(0,m.useCallback)(e=>{if(Z(e))return;let t=A?xe||c.l(0,0,0,I,F):``,n=A?c.r(e,t,{format:F,showSeconds:I}):c._(e);be(!0),Q({valid:!0}),Se(t),X(x(n,{format:o,withTime:A,timeFormat:F,showSeconds:I})),we(new Date(e.getFullYear(),e.getMonth(),1)),Fe(n),!A&&!z&&he(!1)},[Fe,xe,Q,o,z,Z,I,F,A]),We=(0,m.useCallback)(()=>{let e=c._(new Date);Z(e)||Ue(e)},[Ue,Z]),Ge=(0,m.useMemo)(()=>{if(!A)return[];let e=[],t=F===`12h`?12:23,n=+(F===`12h`);for(let r=n;r<=t;r+=1)e.push(r);return e},[F,A]),Ke=(0,m.useMemo)(()=>{if(!A)return[];let e=[];for(let t=0;t<60;t+=L)e.push(t);return e},[L,A]),qe=(0,m.useMemo)(()=>{if(!A||!I)return[];let e=[];for(let t=0;t<60;t+=1)e.push(t);return e},[I,A]),Je=(0,m.useCallback)((e,t,n=0)=>{let r=c.l(e,t,n,I,F),i=Le;if(be(!0),Se(r),!i){X(r);return}let a=c.r(i,r,{format:F,showSeconds:I});Q({valid:!0}),X(x(a,{format:o,withTime:A,timeFormat:F,showSeconds:I})),Fe(a)},[Fe,Le,Q,o,I,F,A]),Ye=(0,m.useCallback)(e=>{Je(k($?O($).hours:12,e),$?.minutes??0,$?.seconds??0)},[$,Je]),Xe=(0,m.useMemo)(()=>{let e=Ce.getFullYear(),t=Ce.getMonth(),n=c.i(e,t),r=c.a(e,t);V===1&&(r=r===0?6:r-1);let i=[],a=t===0?11:t-1,o=t===0?e-1:e,s=c.i(o,a);for(let e=r-1;e>=0;--e)i.push({date:new Date(o,a,s-e),currentMonth:!1});for(let r=1;r<=n;r+=1)i.push({date:new Date(e,t,r),currentMonth:!0});let l=42-i.length,u=t===11?0:t+1,ee=t===11?e+1:e;for(let e=1;e<=l;e+=1)i.push({date:new Date(ee,u,e),currentMonth:!1});return i},[V,Ce]),Ze=c._(new Date),Qe=J?c._(J):Le,$e=()=>(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:()=>we(c.t(Ce,-1)),"aria-label":G.previousMonth,children:(0,h.jsx)(t.n,{})}),(0,h.jsxs)(`button`,{type:`button`,className:`header-title`,onClick:()=>Ee(e=>e===`days`?`months`:`days`),children:[Pe[Ce.getMonth()],` `,Ce.getFullYear()]}),(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>we(c.t(Ce,1)),"aria-label":G.nextMonth,children:(0,h.jsx)(t.t,{})})]}),Te===`days`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`day-names`,children:Ne.map(e=>(0,h.jsx)(`span`,{className:`day-name`,children:e},e))}),(0,h.jsx)(`div`,{className:`day-grid`,children:Xe.map(({date:e,currentMonth:t},n)=>{let r=Qe?c.p(e,Qe):!1,i=c.p(e,Ze),o=Z(e);return(0,h.jsx)(`button`,{type:`button`,className:a.t(`day`,!t&&`other-month`,i&&`today`,r&&`selected`,o&&`disabled`),onClick:()=>Ue(e),disabled:o,tabIndex:-1,children:e.getDate()},`${e.toISOString()}-${n}`)})})]}):(0,h.jsx)(`div`,{className:`month-grid`,children:Pe.map((e,t)=>(0,h.jsx)(`button`,{type:`button`,className:a.t(`month-cell`,Ce.getMonth()===t&&`selected`),onClick:()=>{we(new Date(Ce.getFullYear(),t,1)),Ee(`days`)},children:e.slice(0,3)},e))}),B&&(0,h.jsx)(`div`,{className:`footer`,children:(0,h.jsx)(`button`,{type:`button`,className:`today-btn`,onClick:We,children:G.today})})]}),et=()=>{if(!A)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)(j,{items:Ge,selected:F===`12h`?e?.hours:$?.hours,onSelect:t=>Je(F===`12h`?k(t,e?.meridiem??`AM`):t,$?.minutes??0,$?.seconds??0),label:`Hr`}),(0,h.jsx)(j,{items:Ke,selected:$?.minutes,onSelect:e=>Je($?.hours??0,e,$?.seconds??0),label:`Min`}),I&&(0,h.jsx)(j,{items:qe,selected:$?.seconds,onSelect:e=>Je($?.hours??0,$?.minutes??0,e),label:`Sec`}),F===`12h`&&(0,h.jsx)(j,{items:[`AM`,`PM`],selected:e?.meridiem,onSelect:Ye,label:`AM/PM`})]})]})},tt=()=>(0,h.jsxs)(`div`,{className:a.t(`date-picker-popover-content`,A&&`with-time`),children:[$e(),et()]}),nt=A?F===`12h`?I?22:19:I?19:16:10,rt=de(f,o,A,F,I,R);return z?(0,h.jsxs)(`div`,{className:a.t(`date-picker`,v&&`color-${v}`,H&&`full-width`,fe),style:U,children:[(0,h.jsx)(ne.t,{value:Y,onChange:Re,onBlur:ze,onKeyDown:Be,onClear:Ve,type:`text`,inputMode:A?`text`:`numeric`,autoComplete:`off`,maxLength:nt,placeholder:rt,disabled:p,readOnly:ie,id:_,variant:ae,size:oe,color:v,label:y,helperText:ce,error:je,errorText:Me,required:C,clearable:w,fullWidth:H}),tt(),g&&J&&(0,h.jsx)(`input`,{type:`hidden`,name:g,value:c.s(J,A,I)})]}):(0,h.jsxs)(`div`,{className:a.t(`date-picker`,v&&`color-${v}`,H&&`full-width`,fe),style:U,children:[(0,h.jsx)(`div`,{ref:De,className:`date-picker-input-anchor`,children:(0,h.jsx)(ne.t,{value:Y,onChange:Re,onBlur:ze,onKeyDown:Be,onClear:Ve,type:`text`,inputMode:A?`text`:`numeric`,autoComplete:`off`,maxLength:nt,placeholder:rt,disabled:p,readOnly:ie,id:_,variant:ae,size:oe,color:v,label:y,helperText:ce,error:je,errorText:Me,required:C,clearable:w,fullWidth:H,endIcon:(0,h.jsx)(`button`,{type:`button`,className:`date-picker-toggle`,onMouseDown:e=>e.preventDefault(),onClick:He,"aria-label":`Open calendar`,disabled:p||ie,children:(0,h.jsx)(r.t,{})})})}),g&&J&&(0,h.jsx)(`input`,{type:`hidden`,name:g,value:c.s(J,A,I)}),(0,h.jsx)(ee.t,{className:`date-picker-popover`,style:{"--color-rgb":se(v)},open:me,anchorRef:De,onClose:()=>he(!1),placement:`bottom-start`,children:tt()})]})}function j({items:e,selected:t,onSelect:n,label:r}){let i=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(t===void 0||!i.current)return;let e=i.current.querySelector(`[data-value="${t}"]`);if(e){let t=i.current;t.scrollTop=e.offsetTop-t.clientHeight/2+e.offsetHeight/2}},[t]);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:r}),(0,h.jsx)(`div`,{ref:i,className:`date-picker-time-column-list`,children:e.map(e=>(0,h.jsx)(`button`,{type:`button`,"data-value":e,className:a.t(`date-picker-time-column-item`,e===t&&`selected`),onClick:()=>n(e),children:o(e)},e))})]})}function M(e){let t=e.hours>=12?`PM`:`AM`;return{hours:e.hours%12||12,minutes:e.minutes,seconds:e.seconds,meridiem:t}}function N(e,t){return t===`AM`?e===12?0:e:e===12?12:e+12}function P(e,t,n,r,i){if(i===`24h`)return c.c(e,t,n,r);let a=M({hours:e,minutes:t,seconds:n}),o=`${a.hours.toString().padStart(2,`0`)}:${a.minutes.toString().padStart(2,`0`)}`;return`${r?`${o}:${a.seconds.toString().padStart(2,`0`)}`:o} ${a.meridiem}`}function F(e,t){if(t===`24h`)return c.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:N(e,i),minutes:t,seconds:r}}return c.h(e)}function I(e,t){return e.hours===t.hours?e.minutes===t.minutes?e.seconds-t.seconds:e.minutes-t.minutes:e.hours-t.hours}function L(e,t,n){return(!t||I(e,t)>=0)&&(!n||I(e,n)<=0)}function R({value:t,defaultValue:n,onChange:r,format:o=`24h`,showSeconds:s=!1,minuteStep:c=1,min:l,max:u,placeholder:d,disabled:f=!1,readOnly:te=!1,name:ne,id:re,variant:p=`outlined`,size:ie=`md`,color:g,label:_,helperText:ae,errorText:oe,error:v=!1,required:se=!1,clearable:y=!1,fullWidth:ce=!1,className:b,style:le}){let[ue,de]=(0,m.useState)(!1),[x,S]=(0,m.useState)(n??``),C=(0,m.useRef)(null),w=t===void 0?x:t,T=v||!!oe,E=F(w,o),D=F(l??``,o),O=F(u??``,o),k=E?M(E):null,A=E?P(E.hours,E.minutes,E.seconds,s,o):w,j=(0,m.useMemo)(()=>{let e=[],t=o===`12h`?12:23,n=+(o===`12h`);for(let r=n;r<=t;r++)e.push(r);return e},[o]),I=(0,m.useMemo)(()=>{let e=[];for(let t=0;t<60;t+=c)e.push(t);return e},[c]),R=(0,m.useMemo)(()=>{if(!s)return[];let e=[];for(let t=0;t<60;t++)e.push(t);return e},[s]),B=(0,m.useCallback)((e,t,n=0)=>L({hours:e,minutes:t,seconds:n},D,O),[O,D]),V=(0,m.useCallback)((e,n,i=0)=>{if(!B(e,n,i))return;let a=P(e,n,i,s,o);t===void 0&&S(a),r?.(a)},[o,B,r,s,t]),H=(0,m.useCallback)(e=>{let n=e.target.value;t===void 0&&S(n)},[t]),fe=(0,m.useCallback)(()=>{let e=F(w,o);if(e&&L(e,D,O)){let n=P(e.hours,e.minutes,e.seconds,s,o);t===void 0&&S(n),r?.(n)}},[w,o,O,D,r,s,t]),U=(0,m.useCallback)(e=>{let t=k?.hours??12,n=E?.minutes??0,r=E?.seconds??0;V(N(t,e),n,r)},[k?.hours,V,E?.minutes,E?.seconds]),W=(0,m.useCallback)(e=>{e.stopPropagation(),t===void 0&&S(``),r?.(``)},[r,t]);return(0,h.jsxs)(`div`,{className:a.t(`time picker`,g&&`color-${g}`,ce&&`full-width`,b),style:le,children:[_&&(0,h.jsx)(`label`,{htmlFor:re,className:a.t(`field-label`,ue&&`focused`,T&&`error`,se&&`required`),children:_}),(0,h.jsxs)(`div`,{ref:C,className:a.t(`time trigger`,`field-${p}`,`field-${ie}`,ue&&`focused`,T&&`error`,f&&`disabled`),onClick:()=>!f&&!te&&de(!0),children:[(0,h.jsx)(`span`,{className:`time icon`,children:(0,h.jsx)(i.t,{})}),(0,h.jsx)(`input`,{type:`text`,className:`time input`,value:A,onChange:H,onBlur:fe,placeholder:d??(o===`12h`?s?`hh:mm:ss AM`:`hh:mm AM`:s?`HH:MM:SS`:`HH:MM`),disabled:f,readOnly:te,id:re,"aria-invalid":T||void 0}),y&&w&&!f&&(0,h.jsx)(`button`,{type:`button`,className:`time clear clear-btn-base`,onClick:W,tabIndex:-1,"aria-label":`Clear time`,children:(0,h.jsx)(e.t,{})})]}),ne&&(0,h.jsx)(`input`,{type:`hidden`,name:ne,value:A}),(0,h.jsx)(ee.t,{className:`time picker popover`,open:ue,anchorRef:C,onClose:()=>de(!1),placement:`bottom-start`,children:(0,h.jsxs)(`div`,{className:`time columns`,children:[(0,h.jsx)(z,{items:j,selected:o===`12h`?k?.hours:E?.hours,onSelect:e=>V(o===`12h`?N(e,k?.meridiem??`AM`):e,E?.minutes??0,E?.seconds??0),isDisabled:e=>!B(o===`12h`?N(e,k?.meridiem??`AM`):e,E?.minutes??0,E?.seconds??0),label:`Hr`}),(0,h.jsx)(z,{items:I,selected:E?.minutes,onSelect:e=>V(E?.hours??0,e,E?.seconds??0),isDisabled:e=>!B(E?.hours??0,e,E?.seconds??0),label:`Min`}),s&&(0,h.jsx)(z,{items:R,selected:E?.seconds,onSelect:e=>V(E?.hours??0,E?.minutes??0,e),isDisabled:e=>!B(E?.hours??0,E?.minutes??0,e),label:`Sec`}),o===`12h`&&(0,h.jsx)(z,{items:[`AM`,`PM`],selected:k?.meridiem,onSelect:U,label:`AM/PM`})]})}),(oe||ae)&&(0,h.jsx)(`div`,{className:`time bottom`,children:oe?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:oe}):(0,h.jsx)(`span`,{className:`time helper`,children:ae})})]})}function z({items:e,selected:t,onSelect:n,isDisabled:r,label:i}){let o=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(t===void 0||!o.current)return;let e=o.current.querySelector(`[data-value="${t}"]`);if(e){let t=o.current;t.scrollTop=e.offsetTop-t.clientHeight/2+e.offsetHeight/2}},[t]);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:i}),(0,h.jsx)(`div`,{ref:o,className:`time column list`,children:e.map(e=>{let i=r?.(e)??!1;return(0,h.jsx)(`button`,{type:`button`,"data-value":e,className:a.t(`time column item`,e===t&&`selected`,i&&`disabled`),onClick:()=>n(e),disabled:i,children:s(e)},e)})})]})}function B(e){if(!e)return null;if(e instanceof Date)return c._(e);let t=new Date(e);return isNaN(t.getTime())?null:c._(t)}function V(e,t){return e.getTime()<=t.getTime()?{start:e,end:t}:{start:t,end:e}}function H(e,t,n){if(!t||!n)return!1;let r=e.getTime();return r>t.getTime()&&r<n.getTime()}function fe(e,t,n){return e&&t?`${c.o(e,n)} - ${c.o(t,n)}`:e?`${c.o(e,n)} - ...`:``}function U(e){return new Date(e.getFullYear(),e.getMonth(),1)}function W(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function G(e){let t=c._(new Date);return t.setDate(t.getDate()-(e-1)),t}function K(e){let t=c._(new Date);return new Date(t.getFullYear(),t.getMonth()-e,t.getDate())}function pe(e){let t=c._(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:G(2),end:t}},{label:e.presets.days3,value:{start:G(3),end:t}},{label:e.presets.days7,value:{start:G(7),end:t}},{label:e.presets.days14,value:{start:G(14),end:t}},{label:e.presets.days31,value:{start:G(31),end:t}},{label:e.presets.thisMonth,value:{start:U(t),end:W(t)}},{label:e.presets.previousMonth,value:{start:U(n),end:W(n)}},{label:e.presets.months2,value:{start:K(2),end:t}},{label:e.presets.months3,value:{start:K(3),end:t}},{label:e.presets.months6,value:{start:K(6),end:t}},{label:e.presets.year1,value:{start:K(12),end:t}}]}function me(e,t){let n=e.getFullYear(),r=e.getMonth(),i=c.i(n,r),a=c.a(n,r);t===1&&(a=a===0?6:a-1);let o=[],s=r===0?11:r-1,l=r===0?n-1:n,u=c.i(l,s);for(let e=a-1;e>=0;--e)o.push({date:new Date(l,s,u-e),currentMonth:!1});for(let e=1;e<=i;e+=1)o.push({date:new Date(n,r,e),currentMonth:!0});let ee=42-o.length,d=r===11?0:r+1,f=r===11?n+1:n;for(let e=1;e<=ee;e+=1)o.push({date:new Date(f,d,e),currentMonth:!1});return o}function he({value:n,defaultValue:i,onChange:o,format:s=`dd.MM.yyyy`,locale:l,min:u,max:d,disabledDates:f,placeholder:ne,disabled:p=!1,readOnly:ie=!1,name:g,id:_,variant:ae=`outlined`,size:oe=`md`,color:v,label:y,helperText:ce,errorText:b,error:le=!1,required:ue=!1,clearable:de=!1,inline:x=!1,showTodayButton:S=!0,presets:C=!1,presetsSidebar:w=!1,firstDayOfWeek:T=1,fullWidth:E=!1,allowSameDay:D=!0,className:O,style:k}){let A=te.t(l),j=n?{start:B(n.start),end:B(n.end)}:null,[M,N]=(0,m.useState)(()=>({start:B(i?.start),end:B(i?.end)})),[P,F]=(0,m.useState)(null),[I,L]=(0,m.useState)(!1),R=(0,m.useRef)(null),z=j??M,U=z.start,W=z.end,G=B(u),K=B(d),he=le||!!b,q=re.i(),ge=c.u(A,T),_e=c.d(A),ve=(0,m.useMemo)(()=>C===!0||w&&!C?pe(q):Array.isArray(C)?C:[],[C,w,q]),[ye,be]=(0,m.useState)(()=>{let e=U??new Date;return new Date(e.getFullYear(),e.getMonth(),1)}),J=U?.getTime()??null;(0,m.useEffect)(()=>{if(!J)return;let e=new Date(J);be(new Date(e.getFullYear(),e.getMonth(),1))},[J]);let Y=(0,m.useCallback)(e=>c.f(e,G,K)?Array.isArray(f)?f.some(t=>c.p(t,e)):typeof f==`function`?f(e):!1:!0,[f,K,G]),X=(0,m.useCallback)(e=>{n===void 0&&N(e),o?.(e)},[o,n]),xe=(0,m.useCallback)(e=>{if(!Y(e)){if(!U||U&&W){X({start:e,end:null}),F(null);return}!D&&c.p(e,U)||(X(V(U,e)),F(null),x||L(!1))}},[D,X,W,x,Y,U]),Se=(0,m.useCallback)(e=>{e.stopPropagation(),X({start:null,end:null}),F(null)},[X]),Ce=(0,m.useCallback)(()=>{let e=c._(new Date);Y(e)||(X({start:e,end:e}),be(new Date(e.getFullYear(),e.getMonth(),1)),F(null),x||L(!1))},[X,x,Y]),we=(0,m.useCallback)(e=>{let t=B(e.value.start),n=B(e.value.end);if(!t||!n)return;let r=V(t,n);Y(r.start)||Y(r.end)||(X(r),be(new Date(r.start.getFullYear(),r.start.getMonth(),1)),F(null),x||L(!1))},[X,x,Y]),Te=U&&!W?P:null,Ee=ye,De=c.t(ye,1),Oe=c._(new Date),ke=(0,m.useMemo)(()=>fe(U,W,s),[W,s,U]),Ae=(0,m.useMemo)(()=>[Ee,De].map(e=>({monthDate:e,days:me(e,T)})),[T,Ee,De]),je=U&&W?`${c.o(U,s)} - ${c.o(W,s)}`:U?`${c.o(U,s)} - ...`:ne??q.defaultRangePlaceholder,Me=w&&ve.length>0,Ne=!w&&ve.length>0,Pe=()=>(0,h.jsx)(`div`,{className:`presets-sidebar`,children:ve.map(e=>(0,h.jsx)(`button`,{type:`button`,className:`preset-sidebar-btn`,onClick:()=>we(e),children:e.label},e.label))}),Z=()=>(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:[_e[Ee.getMonth()],` `,Ee.getFullYear()]}),(0,h.jsx)(`span`,{className:`caption-subtitle`,children:q.rangeSubtitle})]}),(0,h.jsxs)(`div`,{className:`nav-actions`,children:[(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>be(c.t(ye,-1)),"aria-label":q.previousMonth,children:(0,h.jsx)(t.n,{})}),(0,h.jsx)(`button`,{type:`button`,className:`nav-btn`,onClick:()=>be(c.t(ye,1)),"aria-label":q.nextMonth,children:(0,h.jsx)(t.t,{})})]})]}),Ne&&(0,h.jsx)(`div`,{className:`presets`,children:ve.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:Ae.map(({monthDate:e,days:t})=>(0,h.jsxs)(`div`,{className:`month-panel`,children:[(0,h.jsxs)(`div`,{className:`month-title`,children:[_e[e.getMonth()],` `,e.getFullYear()]}),(0,h.jsx)(`div`,{className:`day-names`,children:ge.map(t=>(0,h.jsx)(`span`,{className:`day-name`,children:t},`${e.toISOString()}-${t}`))}),(0,h.jsx)(`div`,{className:`day-grid`,children:t.map(({date:t,currentMonth:n},r)=>{let i=Y(t),o=U?c.p(t,U):!1,s=W?c.p(t,W):!1,l=H(t,U,W),u=!W&&U&&Te?V(U,Te):null,ee=u?H(t,u.start,u.end):!1,d=u?c.p(t,u.start)||c.p(t,u.end):!1;return(0,h.jsx)(`button`,{type:`button`,className:a.t(`day`,!n&&`other-month`,c.p(t,Oe)&&`today`,o&&`range-start selected`,s&&`range-end selected`,l&&`in-range`,ee&&!d&&`preview-range`,i&&`disabled`),onClick:()=>xe(t),onMouseEnter:()=>U&&!W&&F(t),onFocus:()=>U&&!W&&F(t),disabled:i,tabIndex:-1,children:t.getDate()},`${e.toISOString()}-${r}`)})})]},e.toISOString()))}),(0,h.jsxs)(`div`,{className:`footer`,children:[(0,h.jsx)(`span`,{className:`summary`,children:je}),(0,h.jsxs)(`div`,{className:`footer-actions`,children:[de&&(U||W)&&(0,h.jsx)(`button`,{type:`button`,className:`footer-btn`,onClick:e=>{e.preventDefault(),X({start:null,end:null}),F(null)},children:q.clear}),S&&(0,h.jsx)(`button`,{type:`button`,className:`footer-btn`,onClick:Ce,children:q.today})]})]})]}),Q=()=>(0,h.jsxs)(`div`,{className:a.t(`date-range-calendar`,Me&&`with-sidebar`),children:[Me&&Pe(),Z()]});return x?(0,h.jsxs)(`div`,{className:a.t(`date-range-picker`,v&&`color-${v}`,E&&`full-width`,O),style:k,children:[y&&(0,h.jsx)(`label`,{className:a.t(`field-label`,he&&`error`,ue&&`required`),children:y}),Q()]}):(0,h.jsxs)(`div`,{className:a.t(`date-range-picker`,v&&`color-${v}`,E&&`full-width`,O),style:k,children:[y&&(0,h.jsx)(`label`,{htmlFor:_,className:a.t(`field-label`,I&&`focused`,he&&`error`,ue&&`required`),children:y}),(0,h.jsxs)(`div`,{ref:R,className:a.t(`trigger`,`field-${ae}`,`field-${oe}`,I&&`focused`,he&&`error`,p&&`disabled`),onClick:()=>!p&&!ie&&L(!0),children:[(0,h.jsx)(`span`,{className:`icon`,children:(0,h.jsx)(r.t,{})}),(0,h.jsx)(`input`,{type:`text`,className:`input`,value:ke,placeholder:ne??q.defaultRangePlaceholder,disabled:p,readOnly:!0,id:_,"aria-invalid":he||void 0}),de&&(U||W)&&!p&&(0,h.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:Se,tabIndex:-1,"aria-label":q.clear,children:(0,h.jsx)(e.t,{})})]}),g&&U&&W&&(0,h.jsx)(`input`,{type:`hidden`,name:g,value:`${U.toISOString().split(`T`)[0]}:${W.toISOString().split(`T`)[0]}`}),(0,h.jsx)(ee.t,{className:`date-range-picker-popover`,style:{"--color-rgb":se(v)},open:I,anchorRef:R,onClose:()=>{L(!1),F(null)},placement:`bottom-start`,children:Q()}),(b||ce)&&(0,h.jsx)(`div`,{className:`bottom-row`,children:b?(0,h.jsx)(`span`,{className:`field-error`,role:`alert`,children:b}):(0,h.jsx)(`span`,{className:`helper-text`,children:ce})})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return he}});
|
|
2
|
+
//# sourceMappingURL=dropdowns-CD2myl19.cjs.map
|