@banzamel/mineralui 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{MAvatar-BDfA-fQT.js → MAvatar-BoO51a6m.js} +4 -4
- package/dist/{MAvatar-BDfA-fQT.js.map → MAvatar-BoO51a6m.js.map} +1 -1
- package/dist/{MAvatar-C8tWuy5K.cjs → MAvatar-DJKtca9j.cjs} +2 -2
- package/dist/{MAvatar-C8tWuy5K.cjs.map → MAvatar-DJKtca9j.cjs.map} +1 -1
- package/dist/{MBadge-Babyr1R9.cjs → MBadge-CexVV675.cjs} +2 -2
- package/dist/MBadge-CexVV675.cjs.map +1 -0
- package/dist/{MBadge-BjZX0MIC.js → MBadge-Y1JnZiIC.js} +2 -2
- package/dist/MBadge-Y1JnZiIC.js.map +1 -0
- package/dist/{MButton-C_WTyNvw.cjs → MButton-B8rXmFX9.cjs} +2 -2
- package/dist/{MButton-C_WTyNvw.cjs.map → MButton-B8rXmFX9.cjs.map} +1 -1
- package/dist/{MButton-33EzpGvQ.js → MButton-BmTDe5Oa.js} +3 -3
- package/dist/{MButton-33EzpGvQ.js.map → MButton-BmTDe5Oa.js.map} +1 -1
- package/dist/{MCheckbox-DW-liYve.js → MCheckbox-B7SpcD4H.js} +3 -3
- package/dist/{MCheckbox-DW-liYve.js.map → MCheckbox-B7SpcD4H.js.map} +1 -1
- package/dist/{MCheckbox-9WMKKIUO.cjs → MCheckbox-Bea3orrs.cjs} +2 -2
- package/dist/{MCheckbox-9WMKKIUO.cjs.map → MCheckbox-Bea3orrs.cjs.map} +1 -1
- package/dist/{MCookieBootstrap-v2JRvgUH.js → MCookieBootstrap-CNYLvKjW.js} +1 -1
- package/dist/{MCookieBootstrap-v2JRvgUH.js.map → MCookieBootstrap-CNYLvKjW.js.map} +1 -1
- package/dist/{MCookieBootstrap-I7jiqvBM.cjs → MCookieBootstrap-DSOT4FQo.cjs} +1 -1
- package/dist/{MCookieBootstrap-I7jiqvBM.cjs.map → MCookieBootstrap-DSOT4FQo.cjs.map} +1 -1
- package/dist/MDataTable-BI7wFZYN.cjs +2 -0
- package/dist/{MDataTable-B0QbAjVI.cjs.map → MDataTable-BI7wFZYN.cjs.map} +1 -1
- package/dist/{MDataTable-C-CRvZ45.js → MDataTable-Cqwkiq7A.js} +13 -15
- package/dist/{MDataTable-C-CRvZ45.js.map → MDataTable-Cqwkiq7A.js.map} +1 -1
- package/dist/MDrawer-CSvjLrhB.cjs +2 -0
- package/dist/{MDrawer-_Bao-x1w.cjs.map → MDrawer-CSvjLrhB.cjs.map} +1 -1
- package/dist/{MDrawer-CHbmY08J.js → MDrawer-DXHtAckQ.js} +5 -5
- package/dist/{MDrawer-CHbmY08J.js.map → MDrawer-DXHtAckQ.js.map} +1 -1
- package/dist/{MDropdownMenu-D3O3-l8O.js → MDropdownMenu-CxBhYxQb.js} +4 -4
- package/dist/{MDropdownMenu-D3O3-l8O.js.map → MDropdownMenu-CxBhYxQb.js.map} +1 -1
- package/dist/{MDropdownMenu-Bd6MfUmF.cjs → MDropdownMenu-X7ywPqth.cjs} +2 -2
- package/dist/{MDropdownMenu-Bd6MfUmF.cjs.map → MDropdownMenu-X7ywPqth.cjs.map} +1 -1
- package/dist/{illustrations.entry-DtMxssXq.cjs → MGalleryIllustration-CeOMHzpt.cjs} +2 -2
- package/dist/MGalleryIllustration-CeOMHzpt.cjs.map +1 -0
- package/dist/{illustrations.entry-C0rSNpF1.js → MGalleryIllustration-D7CVMSwO.js} +2 -2
- package/dist/{illustrations.entry-DtMxssXq.cjs.map → MGalleryIllustration-D7CVMSwO.js.map} +1 -1
- package/dist/{MHeading-BlDlbYcY.js → MHeading-C3IgV22T.js} +3 -3
- package/dist/{MHeading-BlDlbYcY.js.map → MHeading-C3IgV22T.js.map} +1 -1
- package/dist/{MHeading-7-5TESyc.cjs → MHeading-DqvWKia1.cjs} +2 -2
- package/dist/{MHeading-7-5TESyc.cjs.map → MHeading-DqvWKia1.cjs.map} +1 -1
- package/dist/{MImage-C99xrQQ9.js → MImage-BDcrV6IC.js} +4 -4
- package/dist/MImage-BDcrV6IC.js.map +1 -0
- package/dist/{MImage-DbianX0t.cjs → MImage-BsQJ_eYf.cjs} +2 -2
- package/dist/MImage-BsQJ_eYf.cjs.map +1 -0
- package/dist/{MInline-Bvfuvqsf.cjs → MInline-BAhu2zT-.cjs} +2 -2
- package/dist/{MInline-Bvfuvqsf.cjs.map → MInline-BAhu2zT-.cjs.map} +1 -1
- package/dist/{MInline-NJeL5tcC.js → MInline-Dfy3Lrjs.js} +4 -4
- package/dist/{MInline-NJeL5tcC.js.map → MInline-Dfy3Lrjs.js.map} +1 -1
- package/dist/{MInput-OmuQ2Tds.js → MInput-BSaKw0Uc.js} +6 -6
- package/dist/{MInput-OmuQ2Tds.js.map → MInput-BSaKw0Uc.js.map} +1 -1
- package/dist/MInput-W7DJQ_ng.cjs +2 -0
- package/dist/{MInput-Bpkn3gOQ.cjs.map → MInput-W7DJQ_ng.cjs.map} +1 -1
- package/dist/MInputCVC-DH_bjV5R.cjs +2 -0
- package/dist/MInputCVC-DH_bjV5R.cjs.map +1 -0
- package/dist/{MInputCVC-CcG_KJvq.js → MInputCVC-Dqbl1zG9.js} +21 -23
- package/dist/MInputCVC-Dqbl1zG9.js.map +1 -0
- package/dist/MInputSearch-C7betxTa.cjs +2 -0
- package/dist/{MInputSearch-APMIHkYb.cjs.map → MInputSearch-C7betxTa.cjs.map} +1 -1
- package/dist/{MInputSearch-k2ESY4ZG.js → MInputSearch-CH5ZcjLq.js} +4 -4
- package/dist/{MInputSearch-k2ESY4ZG.js.map → MInputSearch-CH5ZcjLq.js.map} +1 -1
- package/dist/{MLink-B4JrRZ29.cjs → MLink-DHryXq_D.cjs} +2 -2
- package/dist/{MLink-B4JrRZ29.cjs.map → MLink-DHryXq_D.cjs.map} +1 -1
- package/dist/{MLink-_WcD95E0.js → MLink-ODytrwne.js} +2 -2
- package/dist/{MLink-_WcD95E0.js.map → MLink-ODytrwne.js.map} +1 -1
- package/dist/{MModal-Dni2MR1n.js → MModal-DShADuLw.js} +4 -4
- package/dist/{MModal-Dni2MR1n.js.map → MModal-DShADuLw.js.map} +1 -1
- package/dist/{MModal-D-3jQ-c5.cjs → MModal-pMcPs3pw.cjs} +2 -2
- package/dist/{MModal-D-3jQ-c5.cjs.map → MModal-pMcPs3pw.cjs.map} +1 -1
- package/dist/{MPagination-DCeU7MHM.js → MPagination-B7aho7rQ.js} +8 -8
- package/dist/{MPagination-DCeU7MHM.js.map → MPagination-B7aho7rQ.js.map} +1 -1
- package/dist/MPagination-BWHAVgWN.cjs +2 -0
- package/dist/{MPagination-3fsF3pCM.cjs.map → MPagination-BWHAVgWN.cjs.map} +1 -1
- package/dist/{MPopover-DKBdLfrw.js → MPopover-BC9C5967.js} +3 -3
- package/dist/{MPopover-DKBdLfrw.js.map → MPopover-BC9C5967.js.map} +1 -1
- package/dist/{MPopover-BXPkE575.cjs → MPopover-C3-fGAke.cjs} +2 -2
- package/dist/{MPopover-BXPkE575.cjs.map → MPopover-C3-fGAke.cjs.map} +1 -1
- package/dist/{MPortal-CbpNkzfC.js → MPortal-Dqlkh3hw.js} +1 -1
- package/dist/{MPortal-CbpNkzfC.js.map → MPortal-Dqlkh3hw.js.map} +1 -1
- package/dist/{MPortal-BysJLuEi.cjs → MPortal-PyRKsZxc.cjs} +1 -1
- package/dist/{MPortal-BysJLuEi.cjs.map → MPortal-PyRKsZxc.cjs.map} +1 -1
- package/dist/{MQrCode-DGq8ktvf.js → MQrCode-6Cz9B7Qy.js} +15 -16
- package/dist/{MQrCode-DGq8ktvf.js.map → MQrCode-6Cz9B7Qy.js.map} +1 -1
- package/dist/MQrCode-Bp2CWpmX.cjs +2 -0
- package/dist/{MQrCode-ClP7YJFt.cjs.map → MQrCode-Bp2CWpmX.cjs.map} +1 -1
- package/dist/{MSkeleton-CRgCZZqm.cjs → MSkeleton-BfRBJ6ku.cjs} +2 -2
- package/dist/{MSkeleton-CRgCZZqm.cjs.map → MSkeleton-BfRBJ6ku.cjs.map} +1 -1
- package/dist/{MSkeleton-QQ8Lk3Cr.js → MSkeleton-CauCfkzj.js} +4 -4
- package/dist/{MSkeleton-QQ8Lk3Cr.js.map → MSkeleton-CauCfkzj.js.map} +1 -1
- package/dist/{MSlider-DNAOirz9.cjs → MSlider-BCMJkvcA.cjs} +2 -2
- package/dist/{MSlider-DNAOirz9.cjs.map → MSlider-BCMJkvcA.cjs.map} +1 -1
- package/dist/{MSlider-C65mv2h1.js → MSlider-CqrusKJQ.js} +2 -2
- package/dist/{MSlider-C65mv2h1.js.map → MSlider-CqrusKJQ.js.map} +1 -1
- package/dist/{MSparkline-lRq3gAYU.cjs → MSparkline-BOaNmbeB.cjs} +2 -2
- package/dist/MSparkline-BOaNmbeB.cjs.map +1 -0
- package/dist/{MSparkline-LfEfA310.js → MSparkline-Cb_EwR-E.js} +2 -2
- package/dist/MSparkline-Cb_EwR-E.js.map +1 -0
- package/dist/{MStack-CuUE9u4h.js → MStack-Cifiqeb2.js} +4 -4
- package/dist/{MStack-CuUE9u4h.js.map → MStack-Cifiqeb2.js.map} +1 -1
- package/dist/{MStack-CFZf6I8F.cjs → MStack-lrvy7l3w.cjs} +2 -2
- package/dist/{MStack-CFZf6I8F.cjs.map → MStack-lrvy7l3w.cjs.map} +1 -1
- package/dist/{MSubText-Dr0rAnX7.cjs → MSubText-78oYdJQy.cjs} +2 -2
- package/dist/{MSubText-Dr0rAnX7.cjs.map → MSubText-78oYdJQy.cjs.map} +1 -1
- package/dist/{MSubText-BxDWVjjs.js → MSubText-C2oxXwKT.js} +3 -3
- package/dist/{MSubText-BxDWVjjs.js.map → MSubText-C2oxXwKT.js.map} +1 -1
- package/dist/{MSurface-BiusHYSB.js → MSurface-B1LXFczo.js} +4 -4
- package/dist/{MSurface-BiusHYSB.js.map → MSurface-B1LXFczo.js.map} +1 -1
- package/dist/{MSurface-BlCLcifq.cjs → MSurface-BgZ86iYn.cjs} +2 -2
- package/dist/{MSurface-BlCLcifq.cjs.map → MSurface-BgZ86iYn.cjs.map} +1 -1
- package/dist/MTag-C4_rBj4b.cjs +2 -0
- package/dist/{MTag-BMi1GS7v.cjs.map → MTag-C4_rBj4b.cjs.map} +1 -1
- package/dist/{MTag-Cor8ZIW3.js → MTag-DOcKm3c2.js} +4 -4
- package/dist/{MTag-Cor8ZIW3.js.map → MTag-DOcKm3c2.js.map} +1 -1
- package/dist/{MText-DEKnLtLk.cjs → MText-CxSZ2md0.cjs} +2 -2
- package/dist/{MText-DEKnLtLk.cjs.map → MText-CxSZ2md0.cjs.map} +1 -1
- package/dist/{MText-lZjEtV_i.js → MText-DX9O7gh7.js} +3 -3
- package/dist/{MText-lZjEtV_i.js.map → MText-DX9O7gh7.js.map} +1 -1
- package/dist/{MTimeAgo-Ci8UkEEk.cjs → MTimeAgo-91_ndjxU.cjs} +2 -2
- package/dist/{MTimeAgo-Ci8UkEEk.cjs.map → MTimeAgo-91_ndjxU.cjs.map} +1 -1
- package/dist/{MTimeAgo-4pfAn0iE.js → MTimeAgo-xxl53mct.js} +4 -4
- package/dist/{MTimeAgo-4pfAn0iE.js.map → MTimeAgo-xxl53mct.js.map} +1 -1
- package/dist/{MToggle-CndejlPX.js → MToggle-B6emKoKq.js} +3 -3
- package/dist/{MToggle-CndejlPX.js.map → MToggle-B6emKoKq.js.map} +1 -1
- package/dist/{MToggle-Dom6azGw.cjs → MToggle-CsGS_W3X.cjs} +2 -2
- package/dist/{MToggle-Dom6azGw.cjs.map → MToggle-CsGS_W3X.cjs.map} +1 -1
- package/dist/{MTooltip-CsJogGMW.cjs → MTooltip-CNXoyQEN.cjs} +2 -2
- package/dist/{MTooltip-CsJogGMW.cjs.map → MTooltip-CNXoyQEN.cjs.map} +1 -1
- package/dist/{MTooltip-DIqh59S2.js → MTooltip-UYOjDBOu.js} +3 -3
- package/dist/{MTooltip-DIqh59S2.js.map → MTooltip-UYOjDBOu.js.map} +1 -1
- package/dist/{cards-CuxycY_U.js → cards-BE77zKTI.js} +299 -304
- package/dist/cards-BE77zKTI.js.map +1 -0
- package/dist/cards-BINs-dmS.cjs +2 -0
- package/dist/cards-BINs-dmS.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +2 -2
- package/dist/{cn-SOcVdnX6.cjs → cn-CU5TNITO.cjs} +1 -1
- package/dist/{cn-SOcVdnX6.cjs.map → cn-CU5TNITO.cjs.map} +1 -1
- package/dist/{cn-DZLxql0l.js → cn-YER3QsV1.js} +1 -1
- package/dist/{cn-DZLxql0l.js.map → cn-YER3QsV1.js.map} +1 -1
- package/dist/components/data/index.d.ts +1 -1
- package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.script.d.ts +4 -0
- package/dist/components/feedback/MCookie/MCookieConsent/index.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.types.d.ts +4 -0
- package/dist/components/layout/MNavbar/index.d.ts +1 -1
- package/dist/components/layout/MNavs/MNavs.types.d.ts +12 -2
- package/dist/components/layout/MNavs/index.d.ts +1 -1
- package/dist/{controls-CO70zfcl.js → controls-BMwQ3C1R.js} +5 -5
- package/dist/controls-BMwQ3C1R.js.map +1 -0
- package/dist/controls-DwL1-nVC.cjs +2 -0
- package/dist/controls-DwL1-nVC.cjs.map +1 -0
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +6 -6
- package/dist/cookie-consent-bootstrap.cjs +1 -1
- package/dist/cookie-consent-bootstrap.cjs.map +1 -1
- package/dist/cookie-consent-bootstrap.js +45 -32
- package/dist/cookie-consent-bootstrap.js.map +1 -1
- package/dist/{creditCards-CoZpbB1e.js → creditCards-CCysEwry.js} +1 -1
- package/dist/{creditCards-CoZpbB1e.js.map → creditCards-CCysEwry.js.map} +1 -1
- package/dist/{creditCards-BjHGqAFx.cjs → creditCards-ljs044xt.cjs} +1 -1
- package/dist/{creditCards-BjHGqAFx.cjs.map → creditCards-ljs044xt.cjs.map} +1 -1
- package/dist/data-BESfox0z.cjs +2 -0
- package/dist/data-BESfox0z.cjs.map +1 -0
- package/dist/{data-CaRwdLlD.js → data-s8Hkht1B.js} +714 -718
- package/dist/data-s8Hkht1B.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +3 -3
- package/dist/{dateUtils-BOsYyWde.js → dateUtils-CUY6CRCf.js} +1 -1
- package/dist/{dateUtils-BOsYyWde.js.map → dateUtils-CUY6CRCf.js.map} +1 -1
- package/dist/{dateUtils-xSfrXjbY.cjs → dateUtils-Dq1vaA-D.cjs} +1 -1
- package/dist/{dateUtils-xSfrXjbY.cjs.map → dateUtils-Dq1vaA-D.cjs.map} +1 -1
- package/dist/display-B0lpgApV.cjs +2 -0
- package/dist/{display-DHpFRcAP.cjs.map → display-B0lpgApV.cjs.map} +1 -1
- package/dist/{display-CkzrTEdb.js → display-DuBRiEKr.js} +5 -6
- package/dist/{display-CkzrTEdb.js.map → display-DuBRiEKr.js.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +3 -3
- package/dist/{dropdowns-BPRJL_2d.js → dropdowns-BcVrUMPE.js} +106 -110
- package/dist/dropdowns-BcVrUMPE.js.map +1 -0
- package/dist/dropdowns-CK-oxd62.cjs +2 -0
- package/dist/dropdowns-CK-oxd62.cjs.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/{feedback-Cgu8ez5M.js → feedback-D3LLKNlY.js} +238 -240
- package/dist/{feedback-Cgu8ez5M.js.map → feedback-D3LLKNlY.js.map} +1 -1
- package/dist/feedback-DYjg0Dbp.cjs +2 -0
- package/dist/{feedback-DBhETzTM.cjs.map → feedback-DYjg0Dbp.cjs.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +6 -6
- package/dist/{form-rDra9x3X.cjs → form-6JwrowsS.cjs} +2 -2
- package/dist/{form-rDra9x3X.cjs.map → form-6JwrowsS.cjs.map} +1 -1
- package/dist/{form-XhjrsBOv.js → form-CFWADsyf.js} +2 -2
- package/dist/{form-XhjrsBOv.js.map → form-CFWADsyf.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formatters-BIijIfCB.cjs → formatters-CNjg_h7-.cjs} +1 -1
- package/dist/{formatters-BIijIfCB.cjs.map → formatters-CNjg_h7-.cjs.map} +1 -1
- package/dist/{formatters-DMI5QqhS.js → formatters-T0vvjMtB.js} +1 -1
- package/dist/{formatters-DMI5QqhS.js.map → formatters-T0vvjMtB.js.map} +1 -1
- package/dist/{frameworkTexts-DH2N7l8F.js → frameworkTexts-B6oE8pMk.js} +1 -1
- package/dist/{frameworkTexts-DH2N7l8F.js.map → frameworkTexts-B6oE8pMk.js.map} +1 -1
- package/dist/{frameworkTexts-Ds2orE1v.cjs → frameworkTexts-C_9KZK_A.cjs} +1 -1
- package/dist/{frameworkTexts-Ds2orE1v.cjs.map → frameworkTexts-C_9KZK_A.cjs.map} +1 -1
- package/dist/i18n.d.ts +1 -1
- package/dist/icons-D5DK-J2C.js +4855 -0
- package/dist/icons-D5DK-J2C.js.map +1 -0
- package/dist/icons-Dv1T-cF4.cjs +2 -0
- package/dist/icons-Dv1T-cF4.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +2 -23
- package/dist/illustrations.cjs +1 -1
- package/dist/illustrations.d.ts +1 -1
- package/dist/illustrations.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +59 -79
- package/dist/inputs-Dcj6C_Fn.cjs +2 -0
- package/dist/{inputs-DPhzLJZH.cjs.map → inputs-Dcj6C_Fn.cjs.map} +1 -1
- package/dist/{inputs-BBJgVLXO.js → inputs-bCxSLz-U.js} +424 -430
- package/dist/{inputs-BBJgVLXO.js.map → inputs-bCxSLz-U.js.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +4 -4
- package/dist/{layout-CdAUOdYv.js → layout-Cb94o3oU.js} +291 -219
- package/dist/layout-Cb94o3oU.js.map +1 -0
- package/dist/layout-DgfsQ-Tn.cjs +2 -0
- package/dist/layout-DgfsQ-Tn.cjs.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +6 -6
- package/dist/{layoutProps-CZ-XhpIX.cjs → layoutProps-Ck4VtGm9.cjs} +1 -1
- package/dist/{layoutProps-CZ-XhpIX.cjs.map → layoutProps-Ck4VtGm9.cjs.map} +1 -1
- package/dist/{layoutProps-DUPQsWy9.js → layoutProps-Cl6d1KmH.js} +1 -1
- package/dist/{layoutProps-DUPQsWy9.js.map → layoutProps-Cl6d1KmH.js.map} +1 -1
- package/dist/{licensing-CMLexRJk.cjs → licensing-BXFauUj_.cjs} +1 -1
- package/dist/{licensing-CMLexRJk.cjs.map → licensing-BXFauUj_.cjs.map} +1 -1
- package/dist/{licensing-SQAMYrOI.js → licensing-CwzqhHH9.js} +1 -1
- package/dist/{licensing-SQAMYrOI.js.map → licensing-CwzqhHH9.js.map} +1 -1
- package/dist/{locale-DPqdZjGC.js → locale-BNyzqXAU.js} +1 -1
- package/dist/{locale-DPqdZjGC.js.map → locale-BNyzqXAU.js.map} +1 -1
- package/dist/{locale-BG4Q6P_O.cjs → locale-BltrWJtd.cjs} +1 -1
- package/dist/{locale-BG4Q6P_O.cjs.map → locale-BltrWJtd.cjs.map} +1 -1
- package/dist/{media-Yp4PedIi.js → media-8aMOtckF.js} +12 -12
- package/dist/{media-Yp4PedIi.js.map → media-8aMOtckF.js.map} +1 -1
- package/dist/media-D5YGOTm7.cjs +2 -0
- package/dist/{media-Cc2wBvkb.cjs.map → media-D5YGOTm7.cjs.map} +1 -1
- package/dist/media.cjs +1 -1
- package/dist/media.js +3 -3
- package/dist/overlays-DCj-oV2H.cjs +2 -0
- package/dist/{overlays-CmF2tV32.cjs.map → overlays-DCj-oV2H.cjs.map} +1 -1
- package/dist/{overlays-BBlMSWS8.js → overlays-gjg00CAf.js} +7 -7
- package/dist/{overlays-BBlMSWS8.js.map → overlays-gjg00CAf.js.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +5 -5
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.js +2 -2
- package/dist/{relativeTime-3dGgniAK.js → relativeTime-Cr-NVzij.js} +1 -1
- package/dist/{relativeTime-3dGgniAK.js.map → relativeTime-Cr-NVzij.js.map} +1 -1
- package/dist/{relativeTime-D5qYOJVu.cjs → relativeTime-DgYBUaVm.cjs} +1 -1
- package/dist/{relativeTime-D5qYOJVu.cjs.map → relativeTime-DgYBUaVm.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/{MThemeProvider-DUuTvWdm.js → theme-BV4qkzZU.js} +1 -1
- package/dist/theme-BV4qkzZU.js.map +1 -0
- package/dist/{MThemeProvider-9JHArSd7.cjs → theme-DLorpkJc.cjs} +1 -1
- package/dist/theme-DLorpkJc.cjs.map +1 -0
- package/dist/theme.cjs +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.js +1 -1
- package/dist/{typography-DZx1M8Wc.js → typography-DKdr1Tds.js} +3 -3
- package/dist/{typography-DZx1M8Wc.js.map → typography-DKdr1Tds.js.map} +1 -1
- package/dist/{typography-B9-sCjsR.cjs → typography-qbFGv1gA.cjs} +2 -2
- package/dist/{typography-B9-sCjsR.cjs.map → typography-qbFGv1gA.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +5 -5
- package/dist/{useGhostText-Zq3iktss.js → useGhostText-DG0bzcao.js} +1 -1
- package/dist/{useGhostText-Zq3iktss.js.map → useGhostText-DG0bzcao.js.map} +1 -1
- package/dist/{useGhostText-CL1kSB_V.cjs → useGhostText-QMdO_HK6.cjs} +1 -1
- package/dist/{useGhostText-CL1kSB_V.cjs.map → useGhostText-QMdO_HK6.cjs.map} +1 -1
- package/dist/{useInteractionEffect-BLehDk91.cjs → useInteractionEffect-DnEfbCrX.cjs} +1 -1
- package/dist/{useInteractionEffect-BLehDk91.cjs.map → useInteractionEffect-DnEfbCrX.cjs.map} +1 -1
- package/dist/{useInteractionEffect-Dfqq8lGO.js → useInteractionEffect-DtpbVd77.js} +1 -1
- package/dist/{useInteractionEffect-Dfqq8lGO.js.map → useInteractionEffect-DtpbVd77.js.map} +1 -1
- package/dist/{useKeyboardNav-DBeCcTmg.cjs → useKeyboardNav-BrODLJaL.cjs} +1 -1
- package/dist/{useKeyboardNav-DBeCcTmg.cjs.map → useKeyboardNav-BrODLJaL.cjs.map} +1 -1
- package/dist/{useKeyboardNav-DXvrPrx9.js → useKeyboardNav-iEXOdEMB.js} +1 -1
- package/dist/{useKeyboardNav-DXvrPrx9.js.map → useKeyboardNav-iEXOdEMB.js.map} +1 -1
- package/dist/{useReveal-DzskFHKb.js → useReveal-BJ59usiL.js} +1 -1
- package/dist/{useReveal-DzskFHKb.js.map → useReveal-BJ59usiL.js.map} +1 -1
- package/dist/{useReveal-CdIoh0Rk.cjs → useReveal-B_17PI89.cjs} +1 -1
- package/dist/{useReveal-CdIoh0Rk.cjs.map → useReveal-B_17PI89.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +11 -11
- package/dist/{validators-CyDTl6cC.cjs → validators-BeNTD8mf.cjs} +1 -1
- package/dist/{validators-CyDTl6cC.cjs.map → validators-BeNTD8mf.cjs.map} +1 -1
- package/dist/{validators-ljBWrIca.js → validators-H8tNxb8O.js} +1 -1
- package/dist/{validators-ljBWrIca.js.map → validators-H8tNxb8O.js.map} +1 -1
- package/package.json +1 -1
- package/dist/MArrowDownIcon-BcKSgdTY.js +0 -15
- package/dist/MArrowDownIcon-BcKSgdTY.js.map +0 -1
- package/dist/MArrowDownIcon-C8EAODgv.cjs +0 -2
- package/dist/MArrowDownIcon-C8EAODgv.cjs.map +0 -1
- package/dist/MArrowUpDownIcon-CW_PWr7Q.cjs +0 -2
- package/dist/MArrowUpDownIcon-CW_PWr7Q.cjs.map +0 -1
- package/dist/MArrowUpDownIcon-DukXemVA.js +0 -19
- package/dist/MArrowUpDownIcon-DukXemVA.js.map +0 -1
- package/dist/MArrowUpIcon-DWV_HYrz.cjs +0 -2
- package/dist/MArrowUpIcon-DWV_HYrz.cjs.map +0 -1
- package/dist/MArrowUpIcon-Dan-4hs8.js +0 -15
- package/dist/MArrowUpIcon-Dan-4hs8.js.map +0 -1
- package/dist/MBadge-Babyr1R9.cjs.map +0 -1
- package/dist/MBadge-BjZX0MIC.js.map +0 -1
- package/dist/MBrandMoreIcons-IQoXQOXv.js +0 -873
- package/dist/MBrandMoreIcons-IQoXQOXv.js.map +0 -1
- package/dist/MBrandMoreIcons-aks8CSrY.cjs +0 -2
- package/dist/MBrandMoreIcons-aks8CSrY.cjs.map +0 -1
- package/dist/MCalendarIcon-DXTVH31q.js +0 -29
- package/dist/MCalendarIcon-DXTVH31q.js.map +0 -1
- package/dist/MCalendarIcon-S4GQsUlu.cjs +0 -2
- package/dist/MCalendarIcon-S4GQsUlu.cjs.map +0 -1
- package/dist/MChatIcon-Bb3DbYgB.js +0 -96
- package/dist/MChatIcon-Bb3DbYgB.js.map +0 -1
- package/dist/MChatIcon-C-5VN1TR.cjs +0 -2
- package/dist/MChatIcon-C-5VN1TR.cjs.map +0 -1
- package/dist/MCheckIcon-DQumT4HX.js +0 -15
- package/dist/MCheckIcon-DQumT4HX.js.map +0 -1
- package/dist/MCheckIcon-ck_21ybZ.cjs +0 -2
- package/dist/MCheckIcon-ck_21ybZ.cjs.map +0 -1
- package/dist/MChevronDownIcon-D3yTpzni.js +0 -15
- package/dist/MChevronDownIcon-D3yTpzni.js.map +0 -1
- package/dist/MChevronDownIcon-DCMmxkRt.cjs +0 -2
- package/dist/MChevronDownIcon-DCMmxkRt.cjs.map +0 -1
- package/dist/MChevronRightIcon-BC08M6g8.cjs +0 -2
- package/dist/MChevronRightIcon-BC08M6g8.cjs.map +0 -1
- package/dist/MChevronRightIcon-CXs8IHiV.js +0 -21
- package/dist/MChevronRightIcon-CXs8IHiV.js.map +0 -1
- package/dist/MClockIcon-DTevPaRf.js +0 -19
- package/dist/MClockIcon-DTevPaRf.js.map +0 -1
- package/dist/MClockIcon-DoskImOg.cjs +0 -2
- package/dist/MClockIcon-DoskImOg.cjs.map +0 -1
- package/dist/MCloseIcon-6cfw9trj.cjs +0 -2
- package/dist/MCloseIcon-6cfw9trj.cjs.map +0 -1
- package/dist/MCloseIcon-lDH3Vc10.js +0 -15
- package/dist/MCloseIcon-lDH3Vc10.js.map +0 -1
- package/dist/MDataTable-B0QbAjVI.cjs +0 -2
- package/dist/MDrawer-_Bao-x1w.cjs +0 -2
- package/dist/MEllipsisVerticalIcon-CXmu-bHJ.js +0 -43
- package/dist/MEllipsisVerticalIcon-CXmu-bHJ.js.map +0 -1
- package/dist/MEllipsisVerticalIcon-CufhU4cO.cjs +0 -2
- package/dist/MEllipsisVerticalIcon-CufhU4cO.cjs.map +0 -1
- package/dist/MFileExtIcons-CPsgV8eQ.cjs +0 -2
- package/dist/MFileExtIcons-CPsgV8eQ.cjs.map +0 -1
- package/dist/MFileExtIcons-Cxbgd5Fz.js +0 -145
- package/dist/MFileExtIcons-Cxbgd5Fz.js.map +0 -1
- package/dist/MIcon-BPr09_p4.js +0 -49
- package/dist/MIcon-BPr09_p4.js.map +0 -1
- package/dist/MIcon-CX5beo32.cjs +0 -2
- package/dist/MIcon-CX5beo32.cjs.map +0 -1
- package/dist/MImage-C99xrQQ9.js.map +0 -1
- package/dist/MImage-DbianX0t.cjs.map +0 -1
- package/dist/MInput-Bpkn3gOQ.cjs +0 -2
- package/dist/MInputCVC-Bl8i97Y0.cjs +0 -2
- package/dist/MInputCVC-Bl8i97Y0.cjs.map +0 -1
- package/dist/MInputCVC-CcG_KJvq.js.map +0 -1
- package/dist/MInputSearch-APMIHkYb.cjs +0 -2
- package/dist/MMenuIcon-A_eXBpM8.cjs +0 -2
- package/dist/MMenuIcon-A_eXBpM8.cjs.map +0 -1
- package/dist/MMenuIcon-CbBHfxVa.js +0 -20
- package/dist/MMenuIcon-CbBHfxVa.js.map +0 -1
- package/dist/MPagination-3fsF3pCM.cjs +0 -2
- package/dist/MPhoneIcon-D5JEg8LZ.js +0 -38
- package/dist/MPhoneIcon-D5JEg8LZ.js.map +0 -1
- package/dist/MPhoneIcon-D5unTWyf.cjs +0 -2
- package/dist/MPhoneIcon-D5unTWyf.cjs.map +0 -1
- package/dist/MProtectIcon-B_m67eu1.cjs +0 -2
- package/dist/MProtectIcon-B_m67eu1.cjs.map +0 -1
- package/dist/MProtectIcon-s_IpKWPz.js +0 -80
- package/dist/MProtectIcon-s_IpKWPz.js.map +0 -1
- package/dist/MQrCode-ClP7YJFt.cjs +0 -2
- package/dist/MSearchIcon-BakfEJQd.cjs +0 -2
- package/dist/MSearchIcon-BakfEJQd.cjs.map +0 -1
- package/dist/MSearchIcon-Dlg4Og8t.js +0 -24
- package/dist/MSearchIcon-Dlg4Og8t.js.map +0 -1
- package/dist/MSparkline-LfEfA310.js.map +0 -1
- package/dist/MSparkline-lRq3gAYU.cjs.map +0 -1
- package/dist/MStarFillIcon-BxKSY0VO.js +0 -25
- package/dist/MStarFillIcon-BxKSY0VO.js.map +0 -1
- package/dist/MStarFillIcon-CnINKvE4.cjs +0 -2
- package/dist/MStarFillIcon-CnINKvE4.cjs.map +0 -1
- package/dist/MSuccessIcon-Cvs8ER4y.cjs +0 -2
- package/dist/MSuccessIcon-Cvs8ER4y.cjs.map +0 -1
- package/dist/MSuccessIcon-DH5Z83mM.js +0 -33
- package/dist/MSuccessIcon-DH5Z83mM.js.map +0 -1
- package/dist/MTag-BMi1GS7v.cjs +0 -2
- package/dist/MThemeProvider-9JHArSd7.cjs.map +0 -1
- package/dist/MThemeProvider-DUuTvWdm.js.map +0 -1
- package/dist/MZoomInIcon-BEdmglk6.js +0 -134
- package/dist/MZoomInIcon-BEdmglk6.js.map +0 -1
- package/dist/MZoomInIcon-dhRm7zT6.cjs +0 -2
- package/dist/MZoomInIcon-dhRm7zT6.cjs.map +0 -1
- package/dist/cards-Bp7jOY3_.cjs +0 -2
- package/dist/cards-Bp7jOY3_.cjs.map +0 -1
- package/dist/cards-CuxycY_U.js.map +0 -1
- package/dist/controls-BJe59nXf.cjs +0 -2
- package/dist/controls-BJe59nXf.cjs.map +0 -1
- package/dist/controls-CO70zfcl.js.map +0 -1
- package/dist/data-CaRwdLlD.js.map +0 -1
- package/dist/data-r5uYgiWq.cjs +0 -2
- package/dist/data-r5uYgiWq.cjs.map +0 -1
- package/dist/display-DHpFRcAP.cjs +0 -2
- package/dist/dropdowns-BPRJL_2d.js.map +0 -1
- package/dist/dropdowns-BTbAnQxt.cjs +0 -2
- package/dist/dropdowns-BTbAnQxt.cjs.map +0 -1
- package/dist/feedback-DBhETzTM.cjs +0 -2
- package/dist/icons.entry-LwjwnjE2.cjs +0 -2
- package/dist/icons.entry-LwjwnjE2.cjs.map +0 -1
- package/dist/icons.entry-txsQqMvb.js +0 -3318
- package/dist/icons.entry-txsQqMvb.js.map +0 -1
- package/dist/illustrations.entry-C0rSNpF1.js.map +0 -1
- package/dist/inputs-DPhzLJZH.cjs +0 -2
- package/dist/layout-CdAUOdYv.js.map +0 -1
- package/dist/layout-DsY7-y6U.cjs +0 -2
- package/dist/layout-DsY7-y6U.cjs.map +0 -1
- package/dist/media-Cc2wBvkb.cjs +0 -2
- package/dist/overlays-CmF2tV32.cjs +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators-CyDTl6cC.cjs","names":[],"sources":["../src/utils/postalCodes.ts","../src/utils/validators.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport interface PostCodeRule {\n countryCode: string\n label: string\n placeholder: string\n example: string\n inputMode: 'text' | 'numeric'\n maxLength: number\n regex: RegExp\n sanitize: (value: string) => string\n format: (value: string) => string\n message: string\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// Reuse one sanitizer for countries that mix letters and digits.\nfunction keepLettersAndDigits(value: string): string {\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '')\n}\n\n// Apply the common Polish XX-XXX postcode shape.\nfunction formatPlPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 5)\n\n if (digits.length <= 2) {\n return digits\n }\n\n return `${digits.slice(0, 2)}-${digits.slice(2)}`\n}\n\n// Support ZIP and ZIP+4 with the same formatter.\nfunction formatUsPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 9)\n\n if (digits.length <= 5) {\n return digits\n }\n\n return `${digits.slice(0, 5)}-${digits.slice(5)}`\n}\n\n// Clamp countries that only need a fixed number of digits.\nfunction formatFixedDigits(value: string, maxLength: number): string {\n return value.replace(/\\D/g, '').slice(0, maxLength)\n}\n\n// Insert the standard center space used by Canadian post codes.\nfunction formatCaPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n const chars = clean.split('')\n\n return chars\n .map((char, index) => {\n if (index === 3) {\n return ` ${char}`\n }\n\n return char\n })\n .join('')\n}\n\n// Split the outward and inward parts of a UK postcode.\nfunction formatGbPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 7)\n\n if (clean.length <= 3) {\n return clean\n }\n\n return `${clean.slice(0, clean.length - 3)} ${clean.slice(-3)}`\n}\n\n// Split Dutch codes into four digits and two letters.\nfunction formatNlPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n\n if (clean.length <= 4) {\n return clean\n }\n\n return `${clean.slice(0, 4)} ${clean.slice(4)}`\n}\n\nexport const postCodeRules: Record<string, PostCodeRule> = {\n PL: {\n countryCode: 'PL',\n label: 'Poland',\n placeholder: '12-345',\n example: '00-001',\n inputMode: 'numeric',\n maxLength: 6,\n regex: /^\\d{2}-\\d{3}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: formatPlPostCode,\n message: 'Use the Polish format XX-XXX',\n },\n DE: {\n countryCode: 'DE',\n label: 'Germany',\n placeholder: '12345',\n example: '10115',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit German postal code',\n },\n FR: {\n countryCode: 'FR',\n label: 'France',\n placeholder: '75001',\n example: '75001',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit French postal code',\n },\n ES: {\n countryCode: 'ES',\n label: 'Spain',\n placeholder: '28013',\n example: '28013',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Spanish postal code',\n },\n IT: {\n countryCode: 'IT',\n label: 'Italy',\n placeholder: '00184',\n example: '00184',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Italian postal code',\n },\n US: {\n countryCode: 'US',\n label: 'United States',\n placeholder: '12345 or 12345-6789',\n example: '10001',\n inputMode: 'numeric',\n maxLength: 10,\n regex: /^\\d{5}(?:-\\d{4})?$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 9),\n format: formatUsPostCode,\n message: 'Use ZIP or ZIP+4 format',\n },\n CA: {\n countryCode: 'CA',\n label: 'Canada',\n placeholder: 'A1A 1A1',\n example: 'M5V 3L9',\n inputMode: 'text',\n maxLength: 7,\n regex: /^[A-Z]\\d[A-Z] \\d[A-Z]\\d$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatCaPostCode,\n message: 'Use the Canadian format A1A 1A1',\n },\n GB: {\n countryCode: 'GB',\n label: 'United Kingdom',\n placeholder: 'SW1A 1AA',\n example: 'SW1A 1AA',\n inputMode: 'text',\n maxLength: 8,\n regex: /^[A-Z]{1,2}\\d[A-Z\\d]? \\d[A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 7),\n format: formatGbPostCode,\n message: 'Use a valid UK postcode',\n },\n NL: {\n countryCode: 'NL',\n label: 'Netherlands',\n placeholder: '1234 AB',\n example: '1012 AB',\n inputMode: 'text',\n maxLength: 7,\n regex: /^\\d{4} [A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatNlPostCode,\n message: 'Use the Dutch format 1234 AB',\n },\n}\n\nexport const postCodeCountries = Object.values(postCodeRules).map(({countryCode, label}) => ({\n value: countryCode,\n label,\n}))\n\n// Return the active postal rule or fall back to Poland for deterministic behavior.\nexport function getPostCodeRule(countryCode: string = 'PL'): PostCodeRule {\n return postCodeRules[countryCode.toUpperCase()] ?? postCodeRules.PL\n}\n\n// Keep postal input values aligned with the selected country format.\nexport function formatPostCode(value: string, countryCode: string = 'PL'): string {\n const rule = getPostCodeRule(countryCode)\n return rule.format(rule.sanitize(value))\n}\n\n// Validate the user-visible postal code against the selected country rule.\nexport function validatePostCode(value: string, countryCode: string = 'PL'): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const rule = getPostCodeRule(countryCode)\n const formatted = rule.format(rule.sanitize(value))\n\n if (!rule.regex.test(formatted)) {\n return {valid: false, error: rule.message}\n }\n\n return OK_RESULT\n}\n","export interface ValidationResult {\n valid: boolean\n error?: string\n}\n\nexport type ValidatorFn = (value: string) => ValidationResult\n\nconst ok: ValidationResult = {valid: true}\nconst fail = (error: string): ValidationResult => ({valid: false, error})\n\n// Ensure the field is not empty after trimming user input.\nexport function validateRequired(value: string): ValidationResult {\n return value.trim().length > 0 ? ok : fail('This field is required')\n}\n\n// Build a validator that enforces a minimum string length.\nexport function validateMinLength(min: number): ValidatorFn {\n return (value: string) => (value.length >= min ? ok : fail(`Minimum ${min} characters`))\n}\n\n// Build a validator that enforces a maximum string length.\nexport function validateMaxLength(max: number): ValidatorFn {\n return (value: string) => (value.length <= max ? ok : fail(`Maximum ${max} characters`))\n}\n\n// Build a validator around a custom regular expression.\nexport function validatePattern(pattern: RegExp, message?: string): ValidatorFn {\n return (value: string) => (pattern.test(value) ? ok : fail(message ?? 'Invalid format'))\n}\n\n// Validate numeric input against optional min and max bounds.\nexport function validateRange(min?: number, max?: number): ValidatorFn {\n return (value: string) => {\n const num = parseFloat(value)\n if (isNaN(num)) return fail('Must be a number')\n if (min !== undefined && num < min) return fail(`Minimum value is ${min}`)\n if (max !== undefined && num > max) return fail(`Maximum value is ${max}`)\n return ok\n }\n}\n\n// === Email ===\n\nconst EMAIL_RE =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\n\n// Validate email format while allowing empty optional fields.\nexport function validateEmail(value: string): ValidationResult {\n if (!value) return ok\n return EMAIL_RE.test(value) ? ok : fail('Invalid email address')\n}\n\n// === Phone ===\n\nconst PHONE_LENGTH: Record<string, number> = {\n PL: 9,\n DE: 10,\n US: 10,\n GB: 10,\n FR: 9,\n CZ: 9,\n SK: 9,\n}\n\n// Validate a phone number with optional country-specific digit counts.\nexport function validatePhone(value: string, countryCode?: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length < 7) return fail('Phone number too short')\n if (digits.length > 15) return fail('Phone number too long')\n if (countryCode) {\n const expected = PHONE_LENGTH[countryCode.toUpperCase()]\n if (expected && digits.length !== expected) {\n return fail(`Phone number should have ${expected} digits`)\n }\n }\n return ok\n}\n\n// === IBAN (MOD-97, ISO 13616) ===\n\nconst IBAN_LENGTHS: Record<string, number> = {\n AL: 28,\n AD: 24,\n AT: 20,\n AZ: 28,\n BH: 22,\n BY: 28,\n BE: 16,\n BA: 20,\n BR: 29,\n BG: 22,\n CR: 22,\n HR: 21,\n CY: 28,\n CZ: 24,\n DK: 18,\n DO: 28,\n EG: 29,\n SV: 28,\n EE: 20,\n FO: 18,\n FI: 18,\n FR: 27,\n GE: 22,\n DE: 22,\n GI: 23,\n GR: 27,\n GL: 18,\n GT: 28,\n HU: 28,\n IS: 26,\n IQ: 23,\n IE: 22,\n IL: 23,\n IT: 27,\n JO: 30,\n KZ: 20,\n XK: 20,\n KW: 30,\n LV: 21,\n LB: 28,\n LI: 21,\n LT: 20,\n LU: 20,\n MT: 31,\n MR: 27,\n MU: 30,\n MD: 24,\n MC: 27,\n ME: 22,\n NL: 18,\n MK: 19,\n NO: 15,\n PK: 24,\n PS: 29,\n PL: 28,\n PT: 25,\n QA: 29,\n RO: 24,\n LC: 32,\n SM: 27,\n SA: 24,\n RS: 22,\n SC: 31,\n SK: 24,\n SI: 19,\n ES: 24,\n SE: 24,\n CH: 21,\n TL: 23,\n TN: 24,\n TR: 26,\n UA: 29,\n AE: 23,\n GB: 22,\n VA: 22,\n VG: 24,\n}\n\n// Run the MOD-97 remainder calculation on a numeric IBAN representation.\nfunction mod97(numStr: string): number {\n let remainder = 0\n for (let i = 0; i < numStr.length; i++) {\n remainder = (remainder * 10 + parseInt(numStr[i], 10)) % 97\n }\n return remainder\n}\n\n// Validate a full IBAN using country length rules and the MOD-97 checksum.\nexport function validateIBAN(value: string): ValidationResult {\n if (!value) return ok\n const iban = value.replace(/\\s/g, '').toUpperCase()\n\n if (iban.length < 2) return fail('IBAN too short')\n\n const countryCode = iban.slice(0, 2)\n const expectedLength = IBAN_LENGTHS[countryCode]\n\n if (!expectedLength) return fail('Unknown IBAN country code')\n if (iban.length !== expectedLength) {\n return fail(`IBAN for ${countryCode} should have ${expectedLength} characters`)\n }\n\n // MOD-97 check: move first 4 chars to end, convert letters to numbers\n const rearranged = iban.slice(4) + iban.slice(0, 4)\n const numStr = rearranged.replace(/[A-Z]/g, (ch) => String(ch.charCodeAt(0) - 55))\n\n return mod97(numStr) === 1 ? ok : fail('Invalid IBAN checksum')\n}\n\n// === NIP (Polish Tax ID) ===\n\nconst NIP_WEIGHTS = [6, 5, 7, 2, 3, 4, 5, 6, 7]\n\n// Validate a Polish NIP number with its weighted checksum.\nexport function validateNIP(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 10) return fail('NIP must have 10 digits')\n\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += parseInt(digits[i], 10) * NIP_WEIGHTS[i]\n }\n const checkDigit = sum % 11\n if (checkDigit === 10) return fail('Invalid NIP')\n return checkDigit === parseInt(digits[9], 10) ? ok : fail('Invalid NIP checksum')\n}\n\n// === PESEL ===\n\nconst PESEL_WEIGHTS = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3]\n\n// Validate a Polish PESEL number with its checksum algorithm.\nexport function validatePESEL(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 11) return fail('PESEL must have 11 digits')\n\n let sum = 0\n for (let i = 0; i < 10; i++) {\n sum += parseInt(digits[i], 10) * PESEL_WEIGHTS[i]\n }\n const checkDigit = (10 - (sum % 10)) % 10\n return checkDigit === parseInt(digits[10], 10) ? ok : fail('Invalid PESEL checksum')\n}\n\n// === REGON ===\n\nconst REGON9_WEIGHTS = [8, 9, 2, 3, 4, 5, 6, 7]\nconst REGON14_WEIGHTS = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]\n\n// Validate REGON numbers in both the 9-digit and 14-digit variants.\nexport function validateREGON(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n\n if (digits.length !== 9 && digits.length !== 14) {\n return fail('REGON must have 9 or 14 digits')\n }\n\n const weights = digits.length === 9 ? REGON9_WEIGHTS : REGON14_WEIGHTS\n let sum = 0\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i]\n }\n const checkDigit = sum % 11 === 10 ? 0 : sum % 11\n const lastDigit = parseInt(digits[digits.length - 1], 10)\n return checkDigit === lastDigit ? ok : fail('Invalid REGON checksum')\n}\n\n// === Compose validators ===\n\n// Run validators in order and stop at the first failure.\nexport function composeValidators(...validators: ValidatorFn[]): ValidatorFn {\n return (value: string) => {\n for (const validator of validators) {\n const result = validator(value)\n if (!result.valid) return result\n }\n return ok\n }\n}\n\n// === Date (DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD) ===\n\nexport type DateFormat = 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'YYYY/MM/DD'\n\ninterface DateValidationOptions {\n format?: DateFormat\n minDate?: Date\n maxDate?: Date\n}\n\n// Parse a date string in the given format into a Date or null.\nexport function parseDateString(value: string, format: DateFormat = 'DD/MM/YYYY'): Date | null {\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return null\n\n let day: number, month: number, year: number\n if (format === 'DD/MM/YYYY') {\n day = parseInt(digits.slice(0, 2), 10)\n month = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else if (format === 'MM/DD/YYYY') {\n month = parseInt(digits.slice(0, 2), 10)\n day = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else {\n year = parseInt(digits.slice(0, 4), 10)\n month = parseInt(digits.slice(4, 6), 10)\n day = parseInt(digits.slice(6, 8), 10)\n }\n\n if (month < 1 || month > 12) return null\n if (day < 1 || day > 31) return null\n if (year < 1) return null\n\n const date = new Date(year, month - 1, day)\n // Verify the date didn't overflow (e.g. Feb 30 → Mar 2)\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null\n }\n return date\n}\n\n// Validate a date string with optional range constraints.\nexport function validateDate(value: string, options: DateValidationOptions = {}): ValidationResult {\n if (!value) return ok\n const {format = 'DD/MM/YYYY', minDate, maxDate} = options\n\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return fail('Incomplete date')\n\n const date = parseDateString(value, format)\n if (!date) return fail('Invalid date')\n\n if (minDate) {\n const min = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())\n if (date < min) return fail('Date is too early')\n }\n if (maxDate) {\n const max = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())\n if (date > max) return fail('Date is too far in the future')\n }\n\n return ok\n}\n\nexport {validatePostCode} from './postalCodes'\nexport {validateCardNumber} from './creditCards'\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators-BeNTD8mf.cjs","names":[],"sources":["../src/utils/postalCodes.ts","../src/utils/validators.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport interface PostCodeRule {\n countryCode: string\n label: string\n placeholder: string\n example: string\n inputMode: 'text' | 'numeric'\n maxLength: number\n regex: RegExp\n sanitize: (value: string) => string\n format: (value: string) => string\n message: string\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// Reuse one sanitizer for countries that mix letters and digits.\nfunction keepLettersAndDigits(value: string): string {\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '')\n}\n\n// Apply the common Polish XX-XXX postcode shape.\nfunction formatPlPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 5)\n\n if (digits.length <= 2) {\n return digits\n }\n\n return `${digits.slice(0, 2)}-${digits.slice(2)}`\n}\n\n// Support ZIP and ZIP+4 with the same formatter.\nfunction formatUsPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 9)\n\n if (digits.length <= 5) {\n return digits\n }\n\n return `${digits.slice(0, 5)}-${digits.slice(5)}`\n}\n\n// Clamp countries that only need a fixed number of digits.\nfunction formatFixedDigits(value: string, maxLength: number): string {\n return value.replace(/\\D/g, '').slice(0, maxLength)\n}\n\n// Insert the standard center space used by Canadian post codes.\nfunction formatCaPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n const chars = clean.split('')\n\n return chars\n .map((char, index) => {\n if (index === 3) {\n return ` ${char}`\n }\n\n return char\n })\n .join('')\n}\n\n// Split the outward and inward parts of a UK postcode.\nfunction formatGbPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 7)\n\n if (clean.length <= 3) {\n return clean\n }\n\n return `${clean.slice(0, clean.length - 3)} ${clean.slice(-3)}`\n}\n\n// Split Dutch codes into four digits and two letters.\nfunction formatNlPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n\n if (clean.length <= 4) {\n return clean\n }\n\n return `${clean.slice(0, 4)} ${clean.slice(4)}`\n}\n\nexport const postCodeRules: Record<string, PostCodeRule> = {\n PL: {\n countryCode: 'PL',\n label: 'Poland',\n placeholder: '12-345',\n example: '00-001',\n inputMode: 'numeric',\n maxLength: 6,\n regex: /^\\d{2}-\\d{3}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: formatPlPostCode,\n message: 'Use the Polish format XX-XXX',\n },\n DE: {\n countryCode: 'DE',\n label: 'Germany',\n placeholder: '12345',\n example: '10115',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit German postal code',\n },\n FR: {\n countryCode: 'FR',\n label: 'France',\n placeholder: '75001',\n example: '75001',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit French postal code',\n },\n ES: {\n countryCode: 'ES',\n label: 'Spain',\n placeholder: '28013',\n example: '28013',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Spanish postal code',\n },\n IT: {\n countryCode: 'IT',\n label: 'Italy',\n placeholder: '00184',\n example: '00184',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Italian postal code',\n },\n US: {\n countryCode: 'US',\n label: 'United States',\n placeholder: '12345 or 12345-6789',\n example: '10001',\n inputMode: 'numeric',\n maxLength: 10,\n regex: /^\\d{5}(?:-\\d{4})?$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 9),\n format: formatUsPostCode,\n message: 'Use ZIP or ZIP+4 format',\n },\n CA: {\n countryCode: 'CA',\n label: 'Canada',\n placeholder: 'A1A 1A1',\n example: 'M5V 3L9',\n inputMode: 'text',\n maxLength: 7,\n regex: /^[A-Z]\\d[A-Z] \\d[A-Z]\\d$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatCaPostCode,\n message: 'Use the Canadian format A1A 1A1',\n },\n GB: {\n countryCode: 'GB',\n label: 'United Kingdom',\n placeholder: 'SW1A 1AA',\n example: 'SW1A 1AA',\n inputMode: 'text',\n maxLength: 8,\n regex: /^[A-Z]{1,2}\\d[A-Z\\d]? \\d[A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 7),\n format: formatGbPostCode,\n message: 'Use a valid UK postcode',\n },\n NL: {\n countryCode: 'NL',\n label: 'Netherlands',\n placeholder: '1234 AB',\n example: '1012 AB',\n inputMode: 'text',\n maxLength: 7,\n regex: /^\\d{4} [A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatNlPostCode,\n message: 'Use the Dutch format 1234 AB',\n },\n}\n\nexport const postCodeCountries = Object.values(postCodeRules).map(({countryCode, label}) => ({\n value: countryCode,\n label,\n}))\n\n// Return the active postal rule or fall back to Poland for deterministic behavior.\nexport function getPostCodeRule(countryCode: string = 'PL'): PostCodeRule {\n return postCodeRules[countryCode.toUpperCase()] ?? postCodeRules.PL\n}\n\n// Keep postal input values aligned with the selected country format.\nexport function formatPostCode(value: string, countryCode: string = 'PL'): string {\n const rule = getPostCodeRule(countryCode)\n return rule.format(rule.sanitize(value))\n}\n\n// Validate the user-visible postal code against the selected country rule.\nexport function validatePostCode(value: string, countryCode: string = 'PL'): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const rule = getPostCodeRule(countryCode)\n const formatted = rule.format(rule.sanitize(value))\n\n if (!rule.regex.test(formatted)) {\n return {valid: false, error: rule.message}\n }\n\n return OK_RESULT\n}\n","export interface ValidationResult {\n valid: boolean\n error?: string\n}\n\nexport type ValidatorFn = (value: string) => ValidationResult\n\nconst ok: ValidationResult = {valid: true}\nconst fail = (error: string): ValidationResult => ({valid: false, error})\n\n// Ensure the field is not empty after trimming user input.\nexport function validateRequired(value: string): ValidationResult {\n return value.trim().length > 0 ? ok : fail('This field is required')\n}\n\n// Build a validator that enforces a minimum string length.\nexport function validateMinLength(min: number): ValidatorFn {\n return (value: string) => (value.length >= min ? ok : fail(`Minimum ${min} characters`))\n}\n\n// Build a validator that enforces a maximum string length.\nexport function validateMaxLength(max: number): ValidatorFn {\n return (value: string) => (value.length <= max ? ok : fail(`Maximum ${max} characters`))\n}\n\n// Build a validator around a custom regular expression.\nexport function validatePattern(pattern: RegExp, message?: string): ValidatorFn {\n return (value: string) => (pattern.test(value) ? ok : fail(message ?? 'Invalid format'))\n}\n\n// Validate numeric input against optional min and max bounds.\nexport function validateRange(min?: number, max?: number): ValidatorFn {\n return (value: string) => {\n const num = parseFloat(value)\n if (isNaN(num)) return fail('Must be a number')\n if (min !== undefined && num < min) return fail(`Minimum value is ${min}`)\n if (max !== undefined && num > max) return fail(`Maximum value is ${max}`)\n return ok\n }\n}\n\n// === Email ===\n\nconst EMAIL_RE =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\n\n// Validate email format while allowing empty optional fields.\nexport function validateEmail(value: string): ValidationResult {\n if (!value) return ok\n return EMAIL_RE.test(value) ? ok : fail('Invalid email address')\n}\n\n// === Phone ===\n\nconst PHONE_LENGTH: Record<string, number> = {\n PL: 9,\n DE: 10,\n US: 10,\n GB: 10,\n FR: 9,\n CZ: 9,\n SK: 9,\n}\n\n// Validate a phone number with optional country-specific digit counts.\nexport function validatePhone(value: string, countryCode?: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length < 7) return fail('Phone number too short')\n if (digits.length > 15) return fail('Phone number too long')\n if (countryCode) {\n const expected = PHONE_LENGTH[countryCode.toUpperCase()]\n if (expected && digits.length !== expected) {\n return fail(`Phone number should have ${expected} digits`)\n }\n }\n return ok\n}\n\n// === IBAN (MOD-97, ISO 13616) ===\n\nconst IBAN_LENGTHS: Record<string, number> = {\n AL: 28,\n AD: 24,\n AT: 20,\n AZ: 28,\n BH: 22,\n BY: 28,\n BE: 16,\n BA: 20,\n BR: 29,\n BG: 22,\n CR: 22,\n HR: 21,\n CY: 28,\n CZ: 24,\n DK: 18,\n DO: 28,\n EG: 29,\n SV: 28,\n EE: 20,\n FO: 18,\n FI: 18,\n FR: 27,\n GE: 22,\n DE: 22,\n GI: 23,\n GR: 27,\n GL: 18,\n GT: 28,\n HU: 28,\n IS: 26,\n IQ: 23,\n IE: 22,\n IL: 23,\n IT: 27,\n JO: 30,\n KZ: 20,\n XK: 20,\n KW: 30,\n LV: 21,\n LB: 28,\n LI: 21,\n LT: 20,\n LU: 20,\n MT: 31,\n MR: 27,\n MU: 30,\n MD: 24,\n MC: 27,\n ME: 22,\n NL: 18,\n MK: 19,\n NO: 15,\n PK: 24,\n PS: 29,\n PL: 28,\n PT: 25,\n QA: 29,\n RO: 24,\n LC: 32,\n SM: 27,\n SA: 24,\n RS: 22,\n SC: 31,\n SK: 24,\n SI: 19,\n ES: 24,\n SE: 24,\n CH: 21,\n TL: 23,\n TN: 24,\n TR: 26,\n UA: 29,\n AE: 23,\n GB: 22,\n VA: 22,\n VG: 24,\n}\n\n// Run the MOD-97 remainder calculation on a numeric IBAN representation.\nfunction mod97(numStr: string): number {\n let remainder = 0\n for (let i = 0; i < numStr.length; i++) {\n remainder = (remainder * 10 + parseInt(numStr[i], 10)) % 97\n }\n return remainder\n}\n\n// Validate a full IBAN using country length rules and the MOD-97 checksum.\nexport function validateIBAN(value: string): ValidationResult {\n if (!value) return ok\n const iban = value.replace(/\\s/g, '').toUpperCase()\n\n if (iban.length < 2) return fail('IBAN too short')\n\n const countryCode = iban.slice(0, 2)\n const expectedLength = IBAN_LENGTHS[countryCode]\n\n if (!expectedLength) return fail('Unknown IBAN country code')\n if (iban.length !== expectedLength) {\n return fail(`IBAN for ${countryCode} should have ${expectedLength} characters`)\n }\n\n // MOD-97 check: move first 4 chars to end, convert letters to numbers\n const rearranged = iban.slice(4) + iban.slice(0, 4)\n const numStr = rearranged.replace(/[A-Z]/g, (ch) => String(ch.charCodeAt(0) - 55))\n\n return mod97(numStr) === 1 ? ok : fail('Invalid IBAN checksum')\n}\n\n// === NIP (Polish Tax ID) ===\n\nconst NIP_WEIGHTS = [6, 5, 7, 2, 3, 4, 5, 6, 7]\n\n// Validate a Polish NIP number with its weighted checksum.\nexport function validateNIP(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 10) return fail('NIP must have 10 digits')\n\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += parseInt(digits[i], 10) * NIP_WEIGHTS[i]\n }\n const checkDigit = sum % 11\n if (checkDigit === 10) return fail('Invalid NIP')\n return checkDigit === parseInt(digits[9], 10) ? ok : fail('Invalid NIP checksum')\n}\n\n// === PESEL ===\n\nconst PESEL_WEIGHTS = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3]\n\n// Validate a Polish PESEL number with its checksum algorithm.\nexport function validatePESEL(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 11) return fail('PESEL must have 11 digits')\n\n let sum = 0\n for (let i = 0; i < 10; i++) {\n sum += parseInt(digits[i], 10) * PESEL_WEIGHTS[i]\n }\n const checkDigit = (10 - (sum % 10)) % 10\n return checkDigit === parseInt(digits[10], 10) ? ok : fail('Invalid PESEL checksum')\n}\n\n// === REGON ===\n\nconst REGON9_WEIGHTS = [8, 9, 2, 3, 4, 5, 6, 7]\nconst REGON14_WEIGHTS = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]\n\n// Validate REGON numbers in both the 9-digit and 14-digit variants.\nexport function validateREGON(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n\n if (digits.length !== 9 && digits.length !== 14) {\n return fail('REGON must have 9 or 14 digits')\n }\n\n const weights = digits.length === 9 ? REGON9_WEIGHTS : REGON14_WEIGHTS\n let sum = 0\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i]\n }\n const checkDigit = sum % 11 === 10 ? 0 : sum % 11\n const lastDigit = parseInt(digits[digits.length - 1], 10)\n return checkDigit === lastDigit ? ok : fail('Invalid REGON checksum')\n}\n\n// === Compose validators ===\n\n// Run validators in order and stop at the first failure.\nexport function composeValidators(...validators: ValidatorFn[]): ValidatorFn {\n return (value: string) => {\n for (const validator of validators) {\n const result = validator(value)\n if (!result.valid) return result\n }\n return ok\n }\n}\n\n// === Date (DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD) ===\n\nexport type DateFormat = 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'YYYY/MM/DD'\n\ninterface DateValidationOptions {\n format?: DateFormat\n minDate?: Date\n maxDate?: Date\n}\n\n// Parse a date string in the given format into a Date or null.\nexport function parseDateString(value: string, format: DateFormat = 'DD/MM/YYYY'): Date | null {\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return null\n\n let day: number, month: number, year: number\n if (format === 'DD/MM/YYYY') {\n day = parseInt(digits.slice(0, 2), 10)\n month = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else if (format === 'MM/DD/YYYY') {\n month = parseInt(digits.slice(0, 2), 10)\n day = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else {\n year = parseInt(digits.slice(0, 4), 10)\n month = parseInt(digits.slice(4, 6), 10)\n day = parseInt(digits.slice(6, 8), 10)\n }\n\n if (month < 1 || month > 12) return null\n if (day < 1 || day > 31) return null\n if (year < 1) return null\n\n const date = new Date(year, month - 1, day)\n // Verify the date didn't overflow (e.g. Feb 30 → Mar 2)\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null\n }\n return date\n}\n\n// Validate a date string with optional range constraints.\nexport function validateDate(value: string, options: DateValidationOptions = {}): ValidationResult {\n if (!value) return ok\n const {format = 'DD/MM/YYYY', minDate, maxDate} = options\n\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return fail('Incomplete date')\n\n const date = parseDateString(value, format)\n if (!date) return fail('Invalid date')\n\n if (minDate) {\n const min = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())\n if (date < min) return fail('Date is too early')\n }\n if (maxDate) {\n const max = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())\n if (date > max) return fail('Date is too far in the future')\n }\n\n return ok\n}\n\nexport {validatePostCode} from './postalCodes'\nexport {validateCardNumber} from './creditCards'\n"],"mappings":"AAeA,IAAM,EAA8B,CAAC,MAAO,GAAK,CAGjD,SAAS,EAAqB,EAAuB,CACjD,OAAO,EAAM,aAAa,CAAC,QAAQ,aAAc,GAAG,CAIxD,SAAS,EAAiB,EAAuB,CAC7C,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CAMnD,OAJI,EAAO,QAAU,EACV,EAGJ,GAAG,EAAO,MAAM,EAAG,EAAE,CAAC,GAAG,EAAO,MAAM,EAAE,GAInD,SAAS,EAAiB,EAAuB,CAC7C,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CAMnD,OAJI,EAAO,QAAU,EACV,EAGJ,GAAG,EAAO,MAAM,EAAG,EAAE,CAAC,GAAG,EAAO,MAAM,EAAE,GAInD,SAAS,EAAkB,EAAe,EAA2B,CACjE,OAAO,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAU,CAIvD,SAAS,EAAiB,EAAuB,CAI7C,OAHc,EAAqB,EAAM,CAAC,MAAM,EAAG,EAAE,CACjC,MAAM,GAAG,CAGxB,KAAK,EAAM,IACJ,IAAU,EACH,IAAI,IAGR,EACT,CACD,KAAK,GAAG,CAIjB,SAAS,EAAiB,EAAuB,CAC7C,IAAM,EAAQ,EAAqB,EAAM,CAAC,MAAM,EAAG,EAAE,CAMrD,OAJI,EAAM,QAAU,EACT,EAGJ,GAAG,EAAM,MAAM,EAAG,EAAM,OAAS,EAAE,CAAC,GAAG,EAAM,MAAM,GAAG,GAIjE,SAAS,EAAiB,EAAuB,CAC7C,IAAM,EAAQ,EAAqB,EAAM,CAAC,MAAM,EAAG,EAAE,CAMrD,OAJI,EAAM,QAAU,EACT,EAGJ,GAAG,EAAM,MAAM,EAAG,EAAE,CAAC,GAAG,EAAM,MAAM,EAAE,GAGjD,IAAa,EAA8C,CACvD,GAAI,CACA,YAAa,KACb,MAAO,SACP,YAAa,SACb,QAAS,SACT,UAAW,UACX,UAAW,EACX,MAAO,gBACP,SAAW,GAAU,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CACzD,OAAQ,EACR,QAAS,+BACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,UACP,YAAa,QACb,QAAS,QACT,UAAW,UACX,UAAW,EACX,MAAO,UACP,SAAW,GAAU,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CACzD,OAAS,GAAU,EAAkB,EAAO,EAAE,CAC9C,QAAS,mCACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,SACP,YAAa,QACb,QAAS,QACT,UAAW,UACX,UAAW,EACX,MAAO,UACP,SAAW,GAAU,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CACzD,OAAS,GAAU,EAAkB,EAAO,EAAE,CAC9C,QAAS,mCACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,QACP,YAAa,QACb,QAAS,QACT,UAAW,UACX,UAAW,EACX,MAAO,UACP,SAAW,GAAU,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CACzD,OAAS,GAAU,EAAkB,EAAO,EAAE,CAC9C,QAAS,oCACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,QACP,YAAa,QACb,QAAS,QACT,UAAW,UACX,UAAW,EACX,MAAO,UACP,SAAW,GAAU,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CACzD,OAAS,GAAU,EAAkB,EAAO,EAAE,CAC9C,QAAS,oCACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,gBACP,YAAa,sBACb,QAAS,QACT,UAAW,UACX,UAAW,GACX,MAAO,qBACP,SAAW,GAAU,EAAM,QAAQ,MAAO,GAAG,CAAC,MAAM,EAAG,EAAE,CACzD,OAAQ,EACR,QAAS,0BACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,SACP,YAAa,UACb,QAAS,UACT,UAAW,OACX,UAAW,EACX,MAAO,2BACP,SAAW,GAAU,EAAqB,EAAM,CAAC,MAAM,EAAG,EAAE,CAC5D,OAAQ,EACR,QAAS,kCACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,iBACP,YAAa,WACb,QAAS,WACT,UAAW,OACX,UAAW,EACX,MAAO,oCACP,SAAW,GAAU,EAAqB,EAAM,CAAC,MAAM,EAAG,EAAE,CAC5D,OAAQ,EACR,QAAS,0BACZ,CACD,GAAI,CACA,YAAa,KACb,MAAO,cACP,YAAa,UACb,QAAS,UACT,UAAW,OACX,UAAW,EACX,MAAO,mBACP,SAAW,GAAU,EAAqB,EAAM,CAAC,MAAM,EAAG,EAAE,CAC5D,OAAQ,EACR,QAAS,+BACZ,CACJ,CAEY,EAAoB,OAAO,OAAO,EAAc,CAAC,KAAK,CAAC,cAAa,YAAY,CACzF,MAAO,EACP,QACH,EAAE,CAGH,SAAgB,EAAgB,EAAsB,KAAoB,CACtE,OAAO,EAAc,EAAY,aAAa,GAAK,EAAc,GAIrE,SAAgB,EAAe,EAAe,EAAsB,KAAc,CAC9E,IAAM,EAAO,EAAgB,EAAY,CACzC,OAAO,EAAK,OAAO,EAAK,SAAS,EAAM,CAAC,CAI5C,SAAgB,EAAiB,EAAe,EAAsB,KAAwB,CAC1F,GAAI,CAAC,EACD,OAAO,EAGX,IAAM,EAAO,EAAgB,EAAY,CACnC,EAAY,EAAK,OAAO,EAAK,SAAS,EAAM,CAAC,CAMnD,OAJK,EAAK,MAAM,KAAK,EAAU,CAIxB,EAHI,CAAC,MAAO,GAAO,MAAO,EAAK,QAAQ,CCzNlD,IAAM,EAAuB,CAAC,MAAO,GAAK,CACpC,EAAQ,IAAqC,CAAC,MAAO,GAAO,QAAM,EAGxE,SAAgB,EAAiB,EAAiC,CAC9D,OAAO,EAAM,MAAM,CAAC,OAAS,EAAI,EAAK,EAAK,yBAAyB,CAIxE,SAAgB,EAAkB,EAA0B,CACxD,MAAQ,IAAmB,EAAM,QAAU,EAAM,EAAK,EAAK,WAAW,EAAI,aAAa,CAI3F,SAAgB,EAAkB,EAA0B,CACxD,MAAQ,IAAmB,EAAM,QAAU,EAAM,EAAK,EAAK,WAAW,EAAI,aAAa,CAI3F,SAAgB,EAAgB,EAAiB,EAA+B,CAC5E,MAAQ,IAAmB,EAAQ,KAAK,EAAM,CAAG,EAAK,EAAK,GAAW,iBAAiB,CAI3F,SAAgB,EAAc,EAAc,EAA2B,CACnE,MAAQ,IAAkB,CACtB,IAAM,EAAM,WAAW,EAAM,CAI7B,OAHI,MAAM,EAAI,CAAS,EAAK,mBAAmB,CAC3C,IAAQ,IAAA,IAAa,EAAM,EAAY,EAAK,oBAAoB,IAAM,CACtE,IAAQ,IAAA,IAAa,EAAM,EAAY,EAAK,oBAAoB,IAAM,CACnE,GAMf,IAAM,EACF,uIAGJ,SAAgB,EAAc,EAAiC,CAE3D,OADK,EACE,EAAS,KAAK,EAAM,CAAG,EAAK,EAAK,wBAAwB,CAD7C,EAMvB,IAAM,EAAuC,CACzC,GAAI,EACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACP,CAGD,SAAgB,EAAc,EAAe,EAAwC,CACjF,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CACvC,GAAI,EAAO,OAAS,EAAG,OAAO,EAAK,yBAAyB,CAC5D,GAAI,EAAO,OAAS,GAAI,OAAO,EAAK,wBAAwB,CAC5D,GAAI,EAAa,CACb,IAAM,EAAW,EAAa,EAAY,aAAa,EACvD,GAAI,GAAY,EAAO,SAAW,EAC9B,OAAO,EAAK,4BAA4B,EAAS,SAAS,CAGlE,OAAO,EAKX,IAAM,EAAuC,CACzC,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACP,CAGD,SAAS,EAAM,EAAwB,CACnC,IAAI,EAAY,EAChB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAC/B,GAAa,EAAY,GAAK,SAAS,EAAO,GAAI,GAAG,EAAI,GAE7D,OAAO,EAIX,SAAgB,EAAa,EAAiC,CAC1D,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAO,EAAM,QAAQ,MAAO,GAAG,CAAC,aAAa,CAEnD,GAAI,EAAK,OAAS,EAAG,OAAO,EAAK,iBAAiB,CAElD,IAAM,EAAc,EAAK,MAAM,EAAG,EAAE,CAC9B,EAAiB,EAAa,GAWpC,OATK,EACD,EAAK,SAAW,EAQb,GAHY,EAAK,MAAM,EAAE,CAAG,EAAK,MAAM,EAAG,EAAE,EACzB,QAAQ,SAAW,GAAO,OAAO,EAAG,WAAW,EAAE,CAAG,GAAG,CAAC,CAE9D,GAAK,EAAI,EAAK,EAAK,wBAAwB,CAPpD,EAAK,YAAY,EAAY,eAAe,EAAe,aAAa,CAFvD,EAAK,4BAA4B,CAcjE,IAAM,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAG/C,SAAgB,EAAY,EAAiC,CACzD,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CACvC,GAAI,EAAO,SAAW,GAAI,OAAO,EAAK,0BAA0B,CAEhE,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACnB,GAAO,SAAS,EAAO,GAAI,GAAG,CAAG,EAAY,GAEjD,IAAM,EAAa,EAAM,GAEzB,OADI,IAAe,GAAW,EAAK,cAAc,CAC1C,IAAe,SAAS,EAAO,GAAI,GAAG,CAAG,EAAK,EAAK,uBAAuB,CAKrF,IAAM,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAGpD,SAAgB,EAAc,EAAiC,CAC3D,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CACvC,GAAI,EAAO,SAAW,GAAI,OAAO,EAAK,4BAA4B,CAElE,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IACpB,GAAO,SAAS,EAAO,GAAI,GAAG,CAAG,EAAc,GAGnD,OADoB,GAAM,EAAM,IAAO,KACjB,SAAS,EAAO,IAAK,GAAG,CAAG,EAAK,EAAK,yBAAyB,CAKxF,IAAM,EAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CACzC,EAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAG/D,SAAgB,EAAc,EAAiC,CAC3D,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CAEvC,GAAI,EAAO,SAAW,GAAK,EAAO,SAAW,GACzC,OAAO,EAAK,iCAAiC,CAGjD,IAAM,EAAU,EAAO,SAAW,EAAI,EAAiB,EACnD,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAChC,GAAO,SAAS,EAAO,GAAI,GAAG,CAAG,EAAQ,GAI7C,OAFmB,EAAM,IAAO,GAAK,EAAI,EAAM,MAC7B,SAAS,EAAO,EAAO,OAAS,GAAI,GAAG,CACvB,EAAK,EAAK,yBAAyB,CAMzE,SAAgB,EAAkB,GAAG,EAAwC,CACzE,MAAQ,IAAkB,CACtB,IAAK,IAAM,KAAa,EAAY,CAChC,IAAM,EAAS,EAAU,EAAM,CAC/B,GAAI,CAAC,EAAO,MAAO,OAAO,EAE9B,OAAO,GAef,SAAgB,EAAgB,EAAe,EAAqB,aAA2B,CAC3F,IAAM,EAAS,EAAM,QAAQ,MAAO,GAAG,CACvC,GAAI,EAAO,SAAW,EAAG,OAAO,KAEhC,IAAI,EAAa,EAAe,EAiBhC,GAhBI,IAAW,cACX,EAAM,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,CACtC,EAAQ,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,CACxC,EAAO,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,EAChC,IAAW,cAClB,EAAQ,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,CACxC,EAAM,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,CACtC,EAAO,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,GAEvC,EAAO,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,CACvC,EAAQ,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,CACxC,EAAM,SAAS,EAAO,MAAM,EAAG,EAAE,CAAE,GAAG,EAGtC,EAAQ,GAAK,EAAQ,IACrB,EAAM,GAAK,EAAM,IACjB,EAAO,EAAG,OAAO,KAErB,IAAM,EAAO,IAAI,KAAK,EAAM,EAAQ,EAAG,EAAI,CAK3C,OAHI,EAAK,aAAa,GAAK,GAAQ,EAAK,UAAU,GAAK,EAAQ,GAAK,EAAK,SAAS,GAAK,EAC5E,KAEJ,EAIX,SAAgB,EAAa,EAAe,EAAiC,EAAE,CAAoB,CAC/F,GAAI,CAAC,EAAO,OAAO,EACnB,GAAM,CAAC,SAAS,aAAc,UAAS,WAAW,EAGlD,GADe,EAAM,QAAQ,MAAO,GAAG,CAC5B,SAAW,EAAG,OAAO,EAAK,kBAAkB,CAEvD,IAAM,EAAO,EAAgB,EAAO,EAAO,CAY3C,OAXK,EAED,GAEI,EADQ,IAAI,KAAK,EAAQ,aAAa,CAAE,EAAQ,UAAU,CAAE,EAAQ,SAAS,CAAC,CAC3D,EAAK,oBAAoB,CAEhD,GAEI,EADQ,IAAI,KAAK,EAAQ,aAAa,CAAE,EAAQ,UAAU,CAAE,EAAQ,SAAS,CAAC,CAC3D,EAAK,gCAAgC,CAGzD,EAXW,EAAK,eAAe"}
|
|
@@ -390,4 +390,4 @@ function I(e, t = {}) {
|
|
|
390
390
|
//#endregion
|
|
391
391
|
export { l as _, E as a, O as c, C as d, N as f, u as g, d as h, x as i, A as l, h as m, F as n, _ as o, y as p, I as r, g as s, P as t, v as u, c as v, f as y };
|
|
392
392
|
|
|
393
|
-
//# sourceMappingURL=validators-
|
|
393
|
+
//# sourceMappingURL=validators-H8tNxb8O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators-ljBWrIca.js","names":[],"sources":["../src/utils/postalCodes.ts","../src/utils/validators.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport interface PostCodeRule {\n countryCode: string\n label: string\n placeholder: string\n example: string\n inputMode: 'text' | 'numeric'\n maxLength: number\n regex: RegExp\n sanitize: (value: string) => string\n format: (value: string) => string\n message: string\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// Reuse one sanitizer for countries that mix letters and digits.\nfunction keepLettersAndDigits(value: string): string {\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '')\n}\n\n// Apply the common Polish XX-XXX postcode shape.\nfunction formatPlPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 5)\n\n if (digits.length <= 2) {\n return digits\n }\n\n return `${digits.slice(0, 2)}-${digits.slice(2)}`\n}\n\n// Support ZIP and ZIP+4 with the same formatter.\nfunction formatUsPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 9)\n\n if (digits.length <= 5) {\n return digits\n }\n\n return `${digits.slice(0, 5)}-${digits.slice(5)}`\n}\n\n// Clamp countries that only need a fixed number of digits.\nfunction formatFixedDigits(value: string, maxLength: number): string {\n return value.replace(/\\D/g, '').slice(0, maxLength)\n}\n\n// Insert the standard center space used by Canadian post codes.\nfunction formatCaPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n const chars = clean.split('')\n\n return chars\n .map((char, index) => {\n if (index === 3) {\n return ` ${char}`\n }\n\n return char\n })\n .join('')\n}\n\n// Split the outward and inward parts of a UK postcode.\nfunction formatGbPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 7)\n\n if (clean.length <= 3) {\n return clean\n }\n\n return `${clean.slice(0, clean.length - 3)} ${clean.slice(-3)}`\n}\n\n// Split Dutch codes into four digits and two letters.\nfunction formatNlPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n\n if (clean.length <= 4) {\n return clean\n }\n\n return `${clean.slice(0, 4)} ${clean.slice(4)}`\n}\n\nexport const postCodeRules: Record<string, PostCodeRule> = {\n PL: {\n countryCode: 'PL',\n label: 'Poland',\n placeholder: '12-345',\n example: '00-001',\n inputMode: 'numeric',\n maxLength: 6,\n regex: /^\\d{2}-\\d{3}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: formatPlPostCode,\n message: 'Use the Polish format XX-XXX',\n },\n DE: {\n countryCode: 'DE',\n label: 'Germany',\n placeholder: '12345',\n example: '10115',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit German postal code',\n },\n FR: {\n countryCode: 'FR',\n label: 'France',\n placeholder: '75001',\n example: '75001',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit French postal code',\n },\n ES: {\n countryCode: 'ES',\n label: 'Spain',\n placeholder: '28013',\n example: '28013',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Spanish postal code',\n },\n IT: {\n countryCode: 'IT',\n label: 'Italy',\n placeholder: '00184',\n example: '00184',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Italian postal code',\n },\n US: {\n countryCode: 'US',\n label: 'United States',\n placeholder: '12345 or 12345-6789',\n example: '10001',\n inputMode: 'numeric',\n maxLength: 10,\n regex: /^\\d{5}(?:-\\d{4})?$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 9),\n format: formatUsPostCode,\n message: 'Use ZIP or ZIP+4 format',\n },\n CA: {\n countryCode: 'CA',\n label: 'Canada',\n placeholder: 'A1A 1A1',\n example: 'M5V 3L9',\n inputMode: 'text',\n maxLength: 7,\n regex: /^[A-Z]\\d[A-Z] \\d[A-Z]\\d$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatCaPostCode,\n message: 'Use the Canadian format A1A 1A1',\n },\n GB: {\n countryCode: 'GB',\n label: 'United Kingdom',\n placeholder: 'SW1A 1AA',\n example: 'SW1A 1AA',\n inputMode: 'text',\n maxLength: 8,\n regex: /^[A-Z]{1,2}\\d[A-Z\\d]? \\d[A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 7),\n format: formatGbPostCode,\n message: 'Use a valid UK postcode',\n },\n NL: {\n countryCode: 'NL',\n label: 'Netherlands',\n placeholder: '1234 AB',\n example: '1012 AB',\n inputMode: 'text',\n maxLength: 7,\n regex: /^\\d{4} [A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatNlPostCode,\n message: 'Use the Dutch format 1234 AB',\n },\n}\n\nexport const postCodeCountries = Object.values(postCodeRules).map(({countryCode, label}) => ({\n value: countryCode,\n label,\n}))\n\n// Return the active postal rule or fall back to Poland for deterministic behavior.\nexport function getPostCodeRule(countryCode: string = 'PL'): PostCodeRule {\n return postCodeRules[countryCode.toUpperCase()] ?? postCodeRules.PL\n}\n\n// Keep postal input values aligned with the selected country format.\nexport function formatPostCode(value: string, countryCode: string = 'PL'): string {\n const rule = getPostCodeRule(countryCode)\n return rule.format(rule.sanitize(value))\n}\n\n// Validate the user-visible postal code against the selected country rule.\nexport function validatePostCode(value: string, countryCode: string = 'PL'): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const rule = getPostCodeRule(countryCode)\n const formatted = rule.format(rule.sanitize(value))\n\n if (!rule.regex.test(formatted)) {\n return {valid: false, error: rule.message}\n }\n\n return OK_RESULT\n}\n","export interface ValidationResult {\n valid: boolean\n error?: string\n}\n\nexport type ValidatorFn = (value: string) => ValidationResult\n\nconst ok: ValidationResult = {valid: true}\nconst fail = (error: string): ValidationResult => ({valid: false, error})\n\n// Ensure the field is not empty after trimming user input.\nexport function validateRequired(value: string): ValidationResult {\n return value.trim().length > 0 ? ok : fail('This field is required')\n}\n\n// Build a validator that enforces a minimum string length.\nexport function validateMinLength(min: number): ValidatorFn {\n return (value: string) => (value.length >= min ? ok : fail(`Minimum ${min} characters`))\n}\n\n// Build a validator that enforces a maximum string length.\nexport function validateMaxLength(max: number): ValidatorFn {\n return (value: string) => (value.length <= max ? ok : fail(`Maximum ${max} characters`))\n}\n\n// Build a validator around a custom regular expression.\nexport function validatePattern(pattern: RegExp, message?: string): ValidatorFn {\n return (value: string) => (pattern.test(value) ? ok : fail(message ?? 'Invalid format'))\n}\n\n// Validate numeric input against optional min and max bounds.\nexport function validateRange(min?: number, max?: number): ValidatorFn {\n return (value: string) => {\n const num = parseFloat(value)\n if (isNaN(num)) return fail('Must be a number')\n if (min !== undefined && num < min) return fail(`Minimum value is ${min}`)\n if (max !== undefined && num > max) return fail(`Maximum value is ${max}`)\n return ok\n }\n}\n\n// === Email ===\n\nconst EMAIL_RE =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\n\n// Validate email format while allowing empty optional fields.\nexport function validateEmail(value: string): ValidationResult {\n if (!value) return ok\n return EMAIL_RE.test(value) ? ok : fail('Invalid email address')\n}\n\n// === Phone ===\n\nconst PHONE_LENGTH: Record<string, number> = {\n PL: 9,\n DE: 10,\n US: 10,\n GB: 10,\n FR: 9,\n CZ: 9,\n SK: 9,\n}\n\n// Validate a phone number with optional country-specific digit counts.\nexport function validatePhone(value: string, countryCode?: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length < 7) return fail('Phone number too short')\n if (digits.length > 15) return fail('Phone number too long')\n if (countryCode) {\n const expected = PHONE_LENGTH[countryCode.toUpperCase()]\n if (expected && digits.length !== expected) {\n return fail(`Phone number should have ${expected} digits`)\n }\n }\n return ok\n}\n\n// === IBAN (MOD-97, ISO 13616) ===\n\nconst IBAN_LENGTHS: Record<string, number> = {\n AL: 28,\n AD: 24,\n AT: 20,\n AZ: 28,\n BH: 22,\n BY: 28,\n BE: 16,\n BA: 20,\n BR: 29,\n BG: 22,\n CR: 22,\n HR: 21,\n CY: 28,\n CZ: 24,\n DK: 18,\n DO: 28,\n EG: 29,\n SV: 28,\n EE: 20,\n FO: 18,\n FI: 18,\n FR: 27,\n GE: 22,\n DE: 22,\n GI: 23,\n GR: 27,\n GL: 18,\n GT: 28,\n HU: 28,\n IS: 26,\n IQ: 23,\n IE: 22,\n IL: 23,\n IT: 27,\n JO: 30,\n KZ: 20,\n XK: 20,\n KW: 30,\n LV: 21,\n LB: 28,\n LI: 21,\n LT: 20,\n LU: 20,\n MT: 31,\n MR: 27,\n MU: 30,\n MD: 24,\n MC: 27,\n ME: 22,\n NL: 18,\n MK: 19,\n NO: 15,\n PK: 24,\n PS: 29,\n PL: 28,\n PT: 25,\n QA: 29,\n RO: 24,\n LC: 32,\n SM: 27,\n SA: 24,\n RS: 22,\n SC: 31,\n SK: 24,\n SI: 19,\n ES: 24,\n SE: 24,\n CH: 21,\n TL: 23,\n TN: 24,\n TR: 26,\n UA: 29,\n AE: 23,\n GB: 22,\n VA: 22,\n VG: 24,\n}\n\n// Run the MOD-97 remainder calculation on a numeric IBAN representation.\nfunction mod97(numStr: string): number {\n let remainder = 0\n for (let i = 0; i < numStr.length; i++) {\n remainder = (remainder * 10 + parseInt(numStr[i], 10)) % 97\n }\n return remainder\n}\n\n// Validate a full IBAN using country length rules and the MOD-97 checksum.\nexport function validateIBAN(value: string): ValidationResult {\n if (!value) return ok\n const iban = value.replace(/\\s/g, '').toUpperCase()\n\n if (iban.length < 2) return fail('IBAN too short')\n\n const countryCode = iban.slice(0, 2)\n const expectedLength = IBAN_LENGTHS[countryCode]\n\n if (!expectedLength) return fail('Unknown IBAN country code')\n if (iban.length !== expectedLength) {\n return fail(`IBAN for ${countryCode} should have ${expectedLength} characters`)\n }\n\n // MOD-97 check: move first 4 chars to end, convert letters to numbers\n const rearranged = iban.slice(4) + iban.slice(0, 4)\n const numStr = rearranged.replace(/[A-Z]/g, (ch) => String(ch.charCodeAt(0) - 55))\n\n return mod97(numStr) === 1 ? ok : fail('Invalid IBAN checksum')\n}\n\n// === NIP (Polish Tax ID) ===\n\nconst NIP_WEIGHTS = [6, 5, 7, 2, 3, 4, 5, 6, 7]\n\n// Validate a Polish NIP number with its weighted checksum.\nexport function validateNIP(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 10) return fail('NIP must have 10 digits')\n\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += parseInt(digits[i], 10) * NIP_WEIGHTS[i]\n }\n const checkDigit = sum % 11\n if (checkDigit === 10) return fail('Invalid NIP')\n return checkDigit === parseInt(digits[9], 10) ? ok : fail('Invalid NIP checksum')\n}\n\n// === PESEL ===\n\nconst PESEL_WEIGHTS = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3]\n\n// Validate a Polish PESEL number with its checksum algorithm.\nexport function validatePESEL(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 11) return fail('PESEL must have 11 digits')\n\n let sum = 0\n for (let i = 0; i < 10; i++) {\n sum += parseInt(digits[i], 10) * PESEL_WEIGHTS[i]\n }\n const checkDigit = (10 - (sum % 10)) % 10\n return checkDigit === parseInt(digits[10], 10) ? ok : fail('Invalid PESEL checksum')\n}\n\n// === REGON ===\n\nconst REGON9_WEIGHTS = [8, 9, 2, 3, 4, 5, 6, 7]\nconst REGON14_WEIGHTS = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]\n\n// Validate REGON numbers in both the 9-digit and 14-digit variants.\nexport function validateREGON(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n\n if (digits.length !== 9 && digits.length !== 14) {\n return fail('REGON must have 9 or 14 digits')\n }\n\n const weights = digits.length === 9 ? REGON9_WEIGHTS : REGON14_WEIGHTS\n let sum = 0\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i]\n }\n const checkDigit = sum % 11 === 10 ? 0 : sum % 11\n const lastDigit = parseInt(digits[digits.length - 1], 10)\n return checkDigit === lastDigit ? ok : fail('Invalid REGON checksum')\n}\n\n// === Compose validators ===\n\n// Run validators in order and stop at the first failure.\nexport function composeValidators(...validators: ValidatorFn[]): ValidatorFn {\n return (value: string) => {\n for (const validator of validators) {\n const result = validator(value)\n if (!result.valid) return result\n }\n return ok\n }\n}\n\n// === Date (DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD) ===\n\nexport type DateFormat = 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'YYYY/MM/DD'\n\ninterface DateValidationOptions {\n format?: DateFormat\n minDate?: Date\n maxDate?: Date\n}\n\n// Parse a date string in the given format into a Date or null.\nexport function parseDateString(value: string, format: DateFormat = 'DD/MM/YYYY'): Date | null {\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return null\n\n let day: number, month: number, year: number\n if (format === 'DD/MM/YYYY') {\n day = parseInt(digits.slice(0, 2), 10)\n month = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else if (format === 'MM/DD/YYYY') {\n month = parseInt(digits.slice(0, 2), 10)\n day = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else {\n year = parseInt(digits.slice(0, 4), 10)\n month = parseInt(digits.slice(4, 6), 10)\n day = parseInt(digits.slice(6, 8), 10)\n }\n\n if (month < 1 || month > 12) return null\n if (day < 1 || day > 31) return null\n if (year < 1) return null\n\n const date = new Date(year, month - 1, day)\n // Verify the date didn't overflow (e.g. Feb 30 → Mar 2)\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null\n }\n return date\n}\n\n// Validate a date string with optional range constraints.\nexport function validateDate(value: string, options: DateValidationOptions = {}): ValidationResult {\n if (!value) return ok\n const {format = 'DD/MM/YYYY', minDate, maxDate} = options\n\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return fail('Incomplete date')\n\n const date = parseDateString(value, format)\n if (!date) return fail('Invalid date')\n\n if (minDate) {\n const min = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())\n if (date < min) return fail('Date is too early')\n }\n if (maxDate) {\n const max = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())\n if (date > max) return fail('Date is too far in the future')\n }\n\n return ok\n}\n\nexport {validatePostCode} from './postalCodes'\nexport {validateCardNumber} from './creditCards'\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators-H8tNxb8O.js","names":[],"sources":["../src/utils/postalCodes.ts","../src/utils/validators.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport interface PostCodeRule {\n countryCode: string\n label: string\n placeholder: string\n example: string\n inputMode: 'text' | 'numeric'\n maxLength: number\n regex: RegExp\n sanitize: (value: string) => string\n format: (value: string) => string\n message: string\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// Reuse one sanitizer for countries that mix letters and digits.\nfunction keepLettersAndDigits(value: string): string {\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '')\n}\n\n// Apply the common Polish XX-XXX postcode shape.\nfunction formatPlPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 5)\n\n if (digits.length <= 2) {\n return digits\n }\n\n return `${digits.slice(0, 2)}-${digits.slice(2)}`\n}\n\n// Support ZIP and ZIP+4 with the same formatter.\nfunction formatUsPostCode(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 9)\n\n if (digits.length <= 5) {\n return digits\n }\n\n return `${digits.slice(0, 5)}-${digits.slice(5)}`\n}\n\n// Clamp countries that only need a fixed number of digits.\nfunction formatFixedDigits(value: string, maxLength: number): string {\n return value.replace(/\\D/g, '').slice(0, maxLength)\n}\n\n// Insert the standard center space used by Canadian post codes.\nfunction formatCaPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n const chars = clean.split('')\n\n return chars\n .map((char, index) => {\n if (index === 3) {\n return ` ${char}`\n }\n\n return char\n })\n .join('')\n}\n\n// Split the outward and inward parts of a UK postcode.\nfunction formatGbPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 7)\n\n if (clean.length <= 3) {\n return clean\n }\n\n return `${clean.slice(0, clean.length - 3)} ${clean.slice(-3)}`\n}\n\n// Split Dutch codes into four digits and two letters.\nfunction formatNlPostCode(value: string): string {\n const clean = keepLettersAndDigits(value).slice(0, 6)\n\n if (clean.length <= 4) {\n return clean\n }\n\n return `${clean.slice(0, 4)} ${clean.slice(4)}`\n}\n\nexport const postCodeRules: Record<string, PostCodeRule> = {\n PL: {\n countryCode: 'PL',\n label: 'Poland',\n placeholder: '12-345',\n example: '00-001',\n inputMode: 'numeric',\n maxLength: 6,\n regex: /^\\d{2}-\\d{3}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: formatPlPostCode,\n message: 'Use the Polish format XX-XXX',\n },\n DE: {\n countryCode: 'DE',\n label: 'Germany',\n placeholder: '12345',\n example: '10115',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit German postal code',\n },\n FR: {\n countryCode: 'FR',\n label: 'France',\n placeholder: '75001',\n example: '75001',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit French postal code',\n },\n ES: {\n countryCode: 'ES',\n label: 'Spain',\n placeholder: '28013',\n example: '28013',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Spanish postal code',\n },\n IT: {\n countryCode: 'IT',\n label: 'Italy',\n placeholder: '00184',\n example: '00184',\n inputMode: 'numeric',\n maxLength: 5,\n regex: /^\\d{5}$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 5),\n format: (value) => formatFixedDigits(value, 5),\n message: 'Use a 5-digit Italian postal code',\n },\n US: {\n countryCode: 'US',\n label: 'United States',\n placeholder: '12345 or 12345-6789',\n example: '10001',\n inputMode: 'numeric',\n maxLength: 10,\n regex: /^\\d{5}(?:-\\d{4})?$/,\n sanitize: (value) => value.replace(/\\D/g, '').slice(0, 9),\n format: formatUsPostCode,\n message: 'Use ZIP or ZIP+4 format',\n },\n CA: {\n countryCode: 'CA',\n label: 'Canada',\n placeholder: 'A1A 1A1',\n example: 'M5V 3L9',\n inputMode: 'text',\n maxLength: 7,\n regex: /^[A-Z]\\d[A-Z] \\d[A-Z]\\d$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatCaPostCode,\n message: 'Use the Canadian format A1A 1A1',\n },\n GB: {\n countryCode: 'GB',\n label: 'United Kingdom',\n placeholder: 'SW1A 1AA',\n example: 'SW1A 1AA',\n inputMode: 'text',\n maxLength: 8,\n regex: /^[A-Z]{1,2}\\d[A-Z\\d]? \\d[A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 7),\n format: formatGbPostCode,\n message: 'Use a valid UK postcode',\n },\n NL: {\n countryCode: 'NL',\n label: 'Netherlands',\n placeholder: '1234 AB',\n example: '1012 AB',\n inputMode: 'text',\n maxLength: 7,\n regex: /^\\d{4} [A-Z]{2}$/,\n sanitize: (value) => keepLettersAndDigits(value).slice(0, 6),\n format: formatNlPostCode,\n message: 'Use the Dutch format 1234 AB',\n },\n}\n\nexport const postCodeCountries = Object.values(postCodeRules).map(({countryCode, label}) => ({\n value: countryCode,\n label,\n}))\n\n// Return the active postal rule or fall back to Poland for deterministic behavior.\nexport function getPostCodeRule(countryCode: string = 'PL'): PostCodeRule {\n return postCodeRules[countryCode.toUpperCase()] ?? postCodeRules.PL\n}\n\n// Keep postal input values aligned with the selected country format.\nexport function formatPostCode(value: string, countryCode: string = 'PL'): string {\n const rule = getPostCodeRule(countryCode)\n return rule.format(rule.sanitize(value))\n}\n\n// Validate the user-visible postal code against the selected country rule.\nexport function validatePostCode(value: string, countryCode: string = 'PL'): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const rule = getPostCodeRule(countryCode)\n const formatted = rule.format(rule.sanitize(value))\n\n if (!rule.regex.test(formatted)) {\n return {valid: false, error: rule.message}\n }\n\n return OK_RESULT\n}\n","export interface ValidationResult {\n valid: boolean\n error?: string\n}\n\nexport type ValidatorFn = (value: string) => ValidationResult\n\nconst ok: ValidationResult = {valid: true}\nconst fail = (error: string): ValidationResult => ({valid: false, error})\n\n// Ensure the field is not empty after trimming user input.\nexport function validateRequired(value: string): ValidationResult {\n return value.trim().length > 0 ? ok : fail('This field is required')\n}\n\n// Build a validator that enforces a minimum string length.\nexport function validateMinLength(min: number): ValidatorFn {\n return (value: string) => (value.length >= min ? ok : fail(`Minimum ${min} characters`))\n}\n\n// Build a validator that enforces a maximum string length.\nexport function validateMaxLength(max: number): ValidatorFn {\n return (value: string) => (value.length <= max ? ok : fail(`Maximum ${max} characters`))\n}\n\n// Build a validator around a custom regular expression.\nexport function validatePattern(pattern: RegExp, message?: string): ValidatorFn {\n return (value: string) => (pattern.test(value) ? ok : fail(message ?? 'Invalid format'))\n}\n\n// Validate numeric input against optional min and max bounds.\nexport function validateRange(min?: number, max?: number): ValidatorFn {\n return (value: string) => {\n const num = parseFloat(value)\n if (isNaN(num)) return fail('Must be a number')\n if (min !== undefined && num < min) return fail(`Minimum value is ${min}`)\n if (max !== undefined && num > max) return fail(`Maximum value is ${max}`)\n return ok\n }\n}\n\n// === Email ===\n\nconst EMAIL_RE =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\n\n// Validate email format while allowing empty optional fields.\nexport function validateEmail(value: string): ValidationResult {\n if (!value) return ok\n return EMAIL_RE.test(value) ? ok : fail('Invalid email address')\n}\n\n// === Phone ===\n\nconst PHONE_LENGTH: Record<string, number> = {\n PL: 9,\n DE: 10,\n US: 10,\n GB: 10,\n FR: 9,\n CZ: 9,\n SK: 9,\n}\n\n// Validate a phone number with optional country-specific digit counts.\nexport function validatePhone(value: string, countryCode?: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length < 7) return fail('Phone number too short')\n if (digits.length > 15) return fail('Phone number too long')\n if (countryCode) {\n const expected = PHONE_LENGTH[countryCode.toUpperCase()]\n if (expected && digits.length !== expected) {\n return fail(`Phone number should have ${expected} digits`)\n }\n }\n return ok\n}\n\n// === IBAN (MOD-97, ISO 13616) ===\n\nconst IBAN_LENGTHS: Record<string, number> = {\n AL: 28,\n AD: 24,\n AT: 20,\n AZ: 28,\n BH: 22,\n BY: 28,\n BE: 16,\n BA: 20,\n BR: 29,\n BG: 22,\n CR: 22,\n HR: 21,\n CY: 28,\n CZ: 24,\n DK: 18,\n DO: 28,\n EG: 29,\n SV: 28,\n EE: 20,\n FO: 18,\n FI: 18,\n FR: 27,\n GE: 22,\n DE: 22,\n GI: 23,\n GR: 27,\n GL: 18,\n GT: 28,\n HU: 28,\n IS: 26,\n IQ: 23,\n IE: 22,\n IL: 23,\n IT: 27,\n JO: 30,\n KZ: 20,\n XK: 20,\n KW: 30,\n LV: 21,\n LB: 28,\n LI: 21,\n LT: 20,\n LU: 20,\n MT: 31,\n MR: 27,\n MU: 30,\n MD: 24,\n MC: 27,\n ME: 22,\n NL: 18,\n MK: 19,\n NO: 15,\n PK: 24,\n PS: 29,\n PL: 28,\n PT: 25,\n QA: 29,\n RO: 24,\n LC: 32,\n SM: 27,\n SA: 24,\n RS: 22,\n SC: 31,\n SK: 24,\n SI: 19,\n ES: 24,\n SE: 24,\n CH: 21,\n TL: 23,\n TN: 24,\n TR: 26,\n UA: 29,\n AE: 23,\n GB: 22,\n VA: 22,\n VG: 24,\n}\n\n// Run the MOD-97 remainder calculation on a numeric IBAN representation.\nfunction mod97(numStr: string): number {\n let remainder = 0\n for (let i = 0; i < numStr.length; i++) {\n remainder = (remainder * 10 + parseInt(numStr[i], 10)) % 97\n }\n return remainder\n}\n\n// Validate a full IBAN using country length rules and the MOD-97 checksum.\nexport function validateIBAN(value: string): ValidationResult {\n if (!value) return ok\n const iban = value.replace(/\\s/g, '').toUpperCase()\n\n if (iban.length < 2) return fail('IBAN too short')\n\n const countryCode = iban.slice(0, 2)\n const expectedLength = IBAN_LENGTHS[countryCode]\n\n if (!expectedLength) return fail('Unknown IBAN country code')\n if (iban.length !== expectedLength) {\n return fail(`IBAN for ${countryCode} should have ${expectedLength} characters`)\n }\n\n // MOD-97 check: move first 4 chars to end, convert letters to numbers\n const rearranged = iban.slice(4) + iban.slice(0, 4)\n const numStr = rearranged.replace(/[A-Z]/g, (ch) => String(ch.charCodeAt(0) - 55))\n\n return mod97(numStr) === 1 ? ok : fail('Invalid IBAN checksum')\n}\n\n// === NIP (Polish Tax ID) ===\n\nconst NIP_WEIGHTS = [6, 5, 7, 2, 3, 4, 5, 6, 7]\n\n// Validate a Polish NIP number with its weighted checksum.\nexport function validateNIP(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 10) return fail('NIP must have 10 digits')\n\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += parseInt(digits[i], 10) * NIP_WEIGHTS[i]\n }\n const checkDigit = sum % 11\n if (checkDigit === 10) return fail('Invalid NIP')\n return checkDigit === parseInt(digits[9], 10) ? ok : fail('Invalid NIP checksum')\n}\n\n// === PESEL ===\n\nconst PESEL_WEIGHTS = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3]\n\n// Validate a Polish PESEL number with its checksum algorithm.\nexport function validatePESEL(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 11) return fail('PESEL must have 11 digits')\n\n let sum = 0\n for (let i = 0; i < 10; i++) {\n sum += parseInt(digits[i], 10) * PESEL_WEIGHTS[i]\n }\n const checkDigit = (10 - (sum % 10)) % 10\n return checkDigit === parseInt(digits[10], 10) ? ok : fail('Invalid PESEL checksum')\n}\n\n// === REGON ===\n\nconst REGON9_WEIGHTS = [8, 9, 2, 3, 4, 5, 6, 7]\nconst REGON14_WEIGHTS = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]\n\n// Validate REGON numbers in both the 9-digit and 14-digit variants.\nexport function validateREGON(value: string): ValidationResult {\n if (!value) return ok\n const digits = value.replace(/\\D/g, '')\n\n if (digits.length !== 9 && digits.length !== 14) {\n return fail('REGON must have 9 or 14 digits')\n }\n\n const weights = digits.length === 9 ? REGON9_WEIGHTS : REGON14_WEIGHTS\n let sum = 0\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i]\n }\n const checkDigit = sum % 11 === 10 ? 0 : sum % 11\n const lastDigit = parseInt(digits[digits.length - 1], 10)\n return checkDigit === lastDigit ? ok : fail('Invalid REGON checksum')\n}\n\n// === Compose validators ===\n\n// Run validators in order and stop at the first failure.\nexport function composeValidators(...validators: ValidatorFn[]): ValidatorFn {\n return (value: string) => {\n for (const validator of validators) {\n const result = validator(value)\n if (!result.valid) return result\n }\n return ok\n }\n}\n\n// === Date (DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD) ===\n\nexport type DateFormat = 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'YYYY/MM/DD'\n\ninterface DateValidationOptions {\n format?: DateFormat\n minDate?: Date\n maxDate?: Date\n}\n\n// Parse a date string in the given format into a Date or null.\nexport function parseDateString(value: string, format: DateFormat = 'DD/MM/YYYY'): Date | null {\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return null\n\n let day: number, month: number, year: number\n if (format === 'DD/MM/YYYY') {\n day = parseInt(digits.slice(0, 2), 10)\n month = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else if (format === 'MM/DD/YYYY') {\n month = parseInt(digits.slice(0, 2), 10)\n day = parseInt(digits.slice(2, 4), 10)\n year = parseInt(digits.slice(4, 8), 10)\n } else {\n year = parseInt(digits.slice(0, 4), 10)\n month = parseInt(digits.slice(4, 6), 10)\n day = parseInt(digits.slice(6, 8), 10)\n }\n\n if (month < 1 || month > 12) return null\n if (day < 1 || day > 31) return null\n if (year < 1) return null\n\n const date = new Date(year, month - 1, day)\n // Verify the date didn't overflow (e.g. Feb 30 → Mar 2)\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null\n }\n return date\n}\n\n// Validate a date string with optional range constraints.\nexport function validateDate(value: string, options: DateValidationOptions = {}): ValidationResult {\n if (!value) return ok\n const {format = 'DD/MM/YYYY', minDate, maxDate} = options\n\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 8) return fail('Incomplete date')\n\n const date = parseDateString(value, format)\n if (!date) return fail('Invalid date')\n\n if (minDate) {\n const min = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())\n if (date < min) return fail('Date is too early')\n }\n if (maxDate) {\n const max = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())\n if (date > max) return fail('Date is too far in the future')\n }\n\n return ok\n}\n\nexport {validatePostCode} from './postalCodes'\nexport {validateCardNumber} from './creditCards'\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./MIcon-BPr09_p4.js";
|
|
2
|
-
import { forwardRef as t } from "react";
|
|
3
|
-
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
-
//#region src/icons/glyphs/MArrowDownIcon.tsx
|
|
5
|
-
var i = t(function(t, i) {
|
|
6
|
-
return /* @__PURE__ */ r(e, {
|
|
7
|
-
ref: i,
|
|
8
|
-
...t,
|
|
9
|
-
children: [/* @__PURE__ */ n("path", { d: "M12 5v14" }), /* @__PURE__ */ n("path", { d: "M6.5 13.5L12 19l5.5-5.5" })]
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
//#endregion
|
|
13
|
-
export { i as t };
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=MArrowDownIcon-BcKSgdTY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MArrowDownIcon-BcKSgdTY.js","names":[],"sources":["../src/icons/glyphs/MArrowDownIcon.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport {MIcon} from '../MIcon'\nimport type {MIconProps} from '../MIcon.types'\n\nexport const MArrowDownIcon = forwardRef<SVGSVGElement, MIconProps>(function MArrowDownIcon(props, ref) {\n return (\n <MIcon ref={ref} {...props}>\n <path d=\"M12 5v14\" />\n <path d=\"M6.5 13.5L12 19l5.5-5.5\" />\n </MIcon>\n )\n})\n"],"mappings":";;;;AAIA,IAAa,IAAiB,EAAsC,SAAwB,GAAO,GAAK;AACpG,QACI,kBAAC,GAAD;EAAY;EAAK,GAAI;YAArB,CACI,kBAAC,QAAD,EAAM,GAAE,YAAa,CAAA,EACrB,kBAAC,QAAD,EAAM,GAAE,2BAA4B,CAAA,CAChC;;EAEd"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./MIcon-CX5beo32.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);var r=(0,t.forwardRef)(function(t,r){return(0,n.jsxs)(e.t,{ref:r,...t,children:[(0,n.jsx)(`path`,{d:`M12 5v14`}),(0,n.jsx)(`path`,{d:`M6.5 13.5L12 19l5.5-5.5`})]})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
-
//# sourceMappingURL=MArrowDownIcon-C8EAODgv.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MArrowDownIcon-C8EAODgv.cjs","names":[],"sources":["../src/icons/glyphs/MArrowDownIcon.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport {MIcon} from '../MIcon'\nimport type {MIconProps} from '../MIcon.types'\n\nexport const MArrowDownIcon = forwardRef<SVGSVGElement, MIconProps>(function MArrowDownIcon(props, ref) {\n return (\n <MIcon ref={ref} {...props}>\n <path d=\"M12 5v14\" />\n <path d=\"M6.5 13.5L12 19l5.5-5.5\" />\n </MIcon>\n )\n})\n"],"mappings":"8FAIA,IAAa,GAAA,EAAA,EAAA,YAAuD,SAAwB,EAAO,EAAK,CACpG,OACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAY,MAAK,GAAI,WAArB,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,WAAa,CAAA,EACrB,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,0BAA4B,CAAA,CAChC,IAEd"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./MIcon-CX5beo32.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);var r=(0,t.forwardRef)(function(t,r){return(0,n.jsxs)(e.t,{ref:r,...t,children:[(0,n.jsx)(`path`,{d:`M12 5v14`}),(0,n.jsx)(`path`,{d:`M8.5 8.5L12 5l3.5 3.5`}),(0,n.jsx)(`path`,{d:`M8.5 15.5L12 19l3.5-3.5`})]})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
-
//# sourceMappingURL=MArrowUpDownIcon-CW_PWr7Q.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MArrowUpDownIcon-CW_PWr7Q.cjs","names":[],"sources":["../src/icons/glyphs/MArrowUpDownIcon.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport {MIcon} from '../MIcon'\nimport type {MIconProps} from '../MIcon.types'\n\nexport const MArrowUpDownIcon = forwardRef<SVGSVGElement, MIconProps>(function MArrowUpDownIcon(props, ref) {\n return (\n <MIcon ref={ref} {...props}>\n <path d=\"M12 5v14\" />\n <path d=\"M8.5 8.5L12 5l3.5 3.5\" />\n <path d=\"M8.5 15.5L12 19l3.5-3.5\" />\n </MIcon>\n )\n})\n"],"mappings":"8FAIA,IAAa,GAAA,EAAA,EAAA,YAAyD,SAA0B,EAAO,EAAK,CACxG,OACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAY,MAAK,GAAI,WAArB,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,WAAa,CAAA,EACrB,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,wBAA0B,CAAA,EAClC,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,0BAA4B,CAAA,CAChC,IAEd"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./MIcon-BPr09_p4.js";
|
|
2
|
-
import { forwardRef as t } from "react";
|
|
3
|
-
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
-
//#region src/icons/glyphs/MArrowUpDownIcon.tsx
|
|
5
|
-
var i = t(function(t, i) {
|
|
6
|
-
return /* @__PURE__ */ r(e, {
|
|
7
|
-
ref: i,
|
|
8
|
-
...t,
|
|
9
|
-
children: [
|
|
10
|
-
/* @__PURE__ */ n("path", { d: "M12 5v14" }),
|
|
11
|
-
/* @__PURE__ */ n("path", { d: "M8.5 8.5L12 5l3.5 3.5" }),
|
|
12
|
-
/* @__PURE__ */ n("path", { d: "M8.5 15.5L12 19l3.5-3.5" })
|
|
13
|
-
]
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//#endregion
|
|
17
|
-
export { i as t };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=MArrowUpDownIcon-DukXemVA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MArrowUpDownIcon-DukXemVA.js","names":[],"sources":["../src/icons/glyphs/MArrowUpDownIcon.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport {MIcon} from '../MIcon'\nimport type {MIconProps} from '../MIcon.types'\n\nexport const MArrowUpDownIcon = forwardRef<SVGSVGElement, MIconProps>(function MArrowUpDownIcon(props, ref) {\n return (\n <MIcon ref={ref} {...props}>\n <path d=\"M12 5v14\" />\n <path d=\"M8.5 8.5L12 5l3.5 3.5\" />\n <path d=\"M8.5 15.5L12 19l3.5-3.5\" />\n </MIcon>\n )\n})\n"],"mappings":";;;;AAIA,IAAa,IAAmB,EAAsC,SAA0B,GAAO,GAAK;AACxG,QACI,kBAAC,GAAD;EAAY;EAAK,GAAI;YAArB;GACI,kBAAC,QAAD,EAAM,GAAE,YAAa,CAAA;GACrB,kBAAC,QAAD,EAAM,GAAE,yBAA0B,CAAA;GAClC,kBAAC,QAAD,EAAM,GAAE,2BAA4B,CAAA;GAChC;;EAEd"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./MIcon-CX5beo32.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);var r=(0,t.forwardRef)(function(t,r){return(0,n.jsxs)(e.t,{ref:r,...t,children:[(0,n.jsx)(`path`,{d:`M12 19V5`}),(0,n.jsx)(`path`,{d:`M6.5 10.5L12 5l5.5 5.5`})]})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
-
//# sourceMappingURL=MArrowUpIcon-DWV_HYrz.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MArrowUpIcon-DWV_HYrz.cjs","names":[],"sources":["../src/icons/glyphs/MArrowUpIcon.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport {MIcon} from '../MIcon'\nimport type {MIconProps} from '../MIcon.types'\n\nexport const MArrowUpIcon = forwardRef<SVGSVGElement, MIconProps>(function MArrowUpIcon(props, ref) {\n return (\n <MIcon ref={ref} {...props}>\n <path d=\"M12 19V5\" />\n <path d=\"M6.5 10.5L12 5l5.5 5.5\" />\n </MIcon>\n )\n})\n"],"mappings":"8FAIA,IAAa,GAAA,EAAA,EAAA,YAAqD,SAAsB,EAAO,EAAK,CAChG,OACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAY,MAAK,GAAI,WAArB,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,WAAa,CAAA,EACrB,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,yBAA2B,CAAA,CAC/B,IAEd"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./MIcon-BPr09_p4.js";
|
|
2
|
-
import { forwardRef as t } from "react";
|
|
3
|
-
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
-
//#region src/icons/glyphs/MArrowUpIcon.tsx
|
|
5
|
-
var i = t(function(t, i) {
|
|
6
|
-
return /* @__PURE__ */ r(e, {
|
|
7
|
-
ref: i,
|
|
8
|
-
...t,
|
|
9
|
-
children: [/* @__PURE__ */ n("path", { d: "M12 19V5" }), /* @__PURE__ */ n("path", { d: "M6.5 10.5L12 5l5.5 5.5" })]
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
//#endregion
|
|
13
|
-
export { i as t };
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=MArrowUpIcon-Dan-4hs8.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MArrowUpIcon-Dan-4hs8.js","names":[],"sources":["../src/icons/glyphs/MArrowUpIcon.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport {MIcon} from '../MIcon'\nimport type {MIconProps} from '../MIcon.types'\n\nexport const MArrowUpIcon = forwardRef<SVGSVGElement, MIconProps>(function MArrowUpIcon(props, ref) {\n return (\n <MIcon ref={ref} {...props}>\n <path d=\"M12 19V5\" />\n <path d=\"M6.5 10.5L12 5l5.5 5.5\" />\n </MIcon>\n )\n})\n"],"mappings":";;;;AAIA,IAAa,IAAe,EAAsC,SAAsB,GAAO,GAAK;AAChG,QACI,kBAAC,GAAD;EAAY;EAAK,GAAI;YAArB,CACI,kBAAC,QAAD,EAAM,GAAE,YAAa,CAAA,EACrB,kBAAC,QAAD,EAAM,GAAE,0BAA2B,CAAA,CAC/B;;EAEd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MBadge-Babyr1R9.cjs","names":[],"sources":["../src/components/feedback/MBadge/MBadge.tsx"],"sourcesContent":["import type {MBadgeProps} from './MBadge.types'\nimport {cn} from '../../../utils/cn'\nimport './MBadge.css'\n\n// Render a compact semantic label for status and metadata.\nexport function MBadge({\n color = 'primary',\n size = 'md',\n pulsing = false,\n rounded = false,\n fullWidth = false,\n icon,\n className,\n children,\n ...rest\n}: MBadgeProps) {\n return (\n <span\n className={cn('badge', `color-${color}`, size, pulsing && 'pulsing', rounded && 'rounded', fullWidth && 'full-width', className)}\n {...rest}\n >\n {icon && <span className=\"badge-icon\">{icon}</span>}\n {children}\n </span>\n )\n}\n"],"mappings":"wEAKA,SAAgB,EAAO,CACnB,QAAQ,UACR,OAAO,KACP,UAAU,GACV,UAAU,GACV,YAAY,GACZ,OACA,YACA,WACA,GAAG,GACS,CACZ,OACI,EAAA,EAAA,MAAC,OAAD,CACI,UAAW,EAAA,EAAG,QAAS,SAAS,IAAS,EAAM,GAAW,UAAW,GAAW,UAAW,GAAa,aAAc,EAAU,CAChI,GAAI,WAFR,CAIK,IAAQ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sBAAc,EAAY,CAAA,CAClD,EACE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MBadge-BjZX0MIC.js","names":[],"sources":["../src/components/feedback/MBadge/MBadge.tsx"],"sourcesContent":["import type {MBadgeProps} from './MBadge.types'\nimport {cn} from '../../../utils/cn'\nimport './MBadge.css'\n\n// Render a compact semantic label for status and metadata.\nexport function MBadge({\n color = 'primary',\n size = 'md',\n pulsing = false,\n rounded = false,\n fullWidth = false,\n icon,\n className,\n children,\n ...rest\n}: MBadgeProps) {\n return (\n <span\n className={cn('badge', `color-${color}`, size, pulsing && 'pulsing', rounded && 'rounded', fullWidth && 'full-width', className)}\n {...rest}\n >\n {icon && <span className=\"badge-icon\">{icon}</span>}\n {children}\n </span>\n )\n}\n"],"mappings":";;;AAKA,SAAgB,EAAO,EACnB,WAAQ,WACR,UAAO,MACP,aAAU,IACV,aAAU,IACV,eAAY,IACZ,SACA,cACA,aACA,GAAG,KACS;AACZ,QACI,kBAAC,QAAD;EACI,WAAW,EAAG,SAAS,SAAS,KAAS,GAAM,KAAW,WAAW,KAAW,WAAW,KAAa,cAAc,EAAU;EAChI,GAAI;YAFR,CAIK,KAAQ,kBAAC,QAAD;GAAM,WAAU;aAAc;GAAY,CAAA,EAClD,EACE"}
|