@banzamel/mineralui 1.0.8 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{MAvatar-DMM1CsdO.cjs → MAvatar-nLlGAprq.cjs} +2 -2
- package/dist/{MAvatar-DMM1CsdO.cjs.map → MAvatar-nLlGAprq.cjs.map} +1 -1
- package/dist/{MAvatar-Blh5pfSO.js → MAvatar-tpFpLFPO.js} +4 -4
- package/dist/{MAvatar-Blh5pfSO.js.map → MAvatar-tpFpLFPO.js.map} +1 -1
- package/dist/{MBadge-BjZX0MIC.js → MBadge-UTUlEAik.js} +2 -2
- package/dist/MBadge-UTUlEAik.js.map +1 -0
- package/dist/{MBadge-Babyr1R9.cjs → MBadge-imAk1gYn.cjs} +2 -2
- package/dist/MBadge-imAk1gYn.cjs.map +1 -0
- package/dist/{MButton-33EzpGvQ.js → MButton-BJdrNg2I.js} +3 -3
- package/dist/{MButton-33EzpGvQ.js.map → MButton-BJdrNg2I.js.map} +1 -1
- package/dist/{MButton-C_WTyNvw.cjs → MButton-CX8SV1m0.cjs} +2 -2
- package/dist/{MButton-C_WTyNvw.cjs.map → MButton-CX8SV1m0.cjs.map} +1 -1
- package/dist/{MCheckbox-BhtJDdip.cjs → MCheckbox-CAZA97h7.cjs} +2 -2
- package/dist/{MCheckbox-BhtJDdip.cjs.map → MCheckbox-CAZA97h7.cjs.map} +1 -1
- package/dist/{MCheckbox-CugP7F6H.js → MCheckbox-DfCD0EtS.js} +3 -3
- package/dist/{MCheckbox-CugP7F6H.js.map → MCheckbox-DfCD0EtS.js.map} +1 -1
- package/dist/{MCookieBootstrap-BbpXuRtS.js → MCookieBootstrap-BhTMPs8T.js} +1 -1
- package/dist/{MCookieBootstrap-BbpXuRtS.js.map → MCookieBootstrap-BhTMPs8T.js.map} +1 -1
- package/dist/{MCookieBootstrap-Ck_8aUQK.cjs → MCookieBootstrap-Fxpem-gF.cjs} +1 -1
- package/dist/{MCookieBootstrap-Ck_8aUQK.cjs.map → MCookieBootstrap-Fxpem-gF.cjs.map} +1 -1
- package/dist/MDataTable-BZs6Cn9e.cjs +2 -0
- package/dist/{MDataTable-8ZhnWhqW.cjs.map → MDataTable-BZs6Cn9e.cjs.map} +1 -1
- package/dist/{MDataTable--pUkQHAv.js → MDataTable-D-ASD4g3.js} +10 -12
- package/dist/{MDataTable--pUkQHAv.js.map → MDataTable-D-ASD4g3.js.map} +1 -1
- package/dist/MDrawer-CTVEF34p.cjs +2 -0
- package/dist/{MDrawer-FYS50FtQ.cjs.map → MDrawer-CTVEF34p.cjs.map} +1 -1
- package/dist/{MDrawer-00BvU8Dn.js → MDrawer-CscOMXBg.js} +5 -5
- package/dist/{MDrawer-00BvU8Dn.js.map → MDrawer-CscOMXBg.js.map} +1 -1
- package/dist/{MDropdownMenu-BgOiM5yr.js → MDropdownMenu-B1eOmM7u.js} +4 -4
- package/dist/{MDropdownMenu-BgOiM5yr.js.map → MDropdownMenu-B1eOmM7u.js.map} +1 -1
- package/dist/{MDropdownMenu-BLBdToIz.cjs → MDropdownMenu-CiJ_7DQ2.cjs} +2 -2
- package/dist/{MDropdownMenu-BLBdToIz.cjs.map → MDropdownMenu-CiJ_7DQ2.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-CMGPJwul.js +19 -0
- package/dist/MHeading-CMGPJwul.js.map +1 -0
- package/dist/MHeading-sW0j7ssI.cjs +2 -0
- package/dist/MHeading-sW0j7ssI.cjs.map +1 -0
- package/dist/{MImage-CKrjXRmf.js → MImage-3UVzZIgA.js} +4 -4
- package/dist/MImage-3UVzZIgA.js.map +1 -0
- package/dist/{MImage-f854avZS.cjs → MImage-BHgzEHMO.cjs} +2 -2
- package/dist/MImage-BHgzEHMO.cjs.map +1 -0
- package/dist/MInline-DUzpnZoB.cjs +2 -0
- package/dist/MInline-DUzpnZoB.cjs.map +1 -0
- package/dist/MInline-cTj903A4.js +39 -0
- package/dist/MInline-cTj903A4.js.map +1 -0
- package/dist/{MInput-BUCcLWSI.js → MInput-B8RPS-wr.js} +6 -6
- package/dist/{MInput-BUCcLWSI.js.map → MInput-B8RPS-wr.js.map} +1 -1
- package/dist/MInput-BZ1ZPuk3.cjs +2 -0
- package/dist/{MInput-CQ3MqKsk.cjs.map → MInput-BZ1ZPuk3.cjs.map} +1 -1
- package/dist/MInputCVC-BJQWuuwR.js +320 -0
- package/dist/MInputCVC-BJQWuuwR.js.map +1 -0
- package/dist/MInputCVC-DOBmGhJL.cjs +2 -0
- package/dist/MInputCVC-DOBmGhJL.cjs.map +1 -0
- package/dist/MInputSearch-DAAg9FXv.cjs +2 -0
- package/dist/{MInputSearch-Dt79qbZg.cjs.map → MInputSearch-DAAg9FXv.cjs.map} +1 -1
- package/dist/{MInputSearch-BeXUh4lz.js → MInputSearch-PMHykVrc.js} +4 -4
- package/dist/{MInputSearch-BeXUh4lz.js.map → MInputSearch-PMHykVrc.js.map} +1 -1
- package/dist/{MLink-DH4vk7O5.js → MLink-CBmT8zaD.js} +2 -2
- package/dist/{MLink-DH4vk7O5.js.map → MLink-CBmT8zaD.js.map} +1 -1
- package/dist/{MLink-CVN-Vll4.cjs → MLink-D10DD8oX.cjs} +2 -2
- package/dist/{MLink-CVN-Vll4.cjs.map → MLink-D10DD8oX.cjs.map} +1 -1
- package/dist/{MModal-D1Knn-bg.js → MModal-BogYYyZE.js} +4 -4
- package/dist/{MModal-D1Knn-bg.js.map → MModal-BogYYyZE.js.map} +1 -1
- package/dist/{MModal-BQvk1KKc.cjs → MModal-CfzduXaI.cjs} +2 -2
- package/dist/{MModal-BQvk1KKc.cjs.map → MModal-CfzduXaI.cjs.map} +1 -1
- package/dist/MPagination-CgvjKhLN.js +113 -0
- package/dist/MPagination-CgvjKhLN.js.map +1 -0
- package/dist/MPagination-vg2EqB8z.cjs +2 -0
- package/dist/MPagination-vg2EqB8z.cjs.map +1 -0
- 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-DB9vELHq.cjs +2 -0
- package/dist/{MQrCode-CbUPPd4S.cjs.map → MQrCode-DB9vELHq.cjs.map} +1 -1
- package/dist/{MQrCode-AttGRC6v.js → MQrCode-l0FzrNCq.js} +15 -16
- package/dist/{MQrCode-AttGRC6v.js.map → MQrCode-l0FzrNCq.js.map} +1 -1
- package/dist/{MSkeleton-BL4C5FkH.js → MSkeleton-Bh9cCe49.js} +4 -4
- package/dist/{MSkeleton-BL4C5FkH.js.map → MSkeleton-Bh9cCe49.js.map} +1 -1
- package/dist/{MSkeleton-B5jZNFOG.cjs → MSkeleton-D7wnoEE8.cjs} +2 -2
- package/dist/{MSkeleton-B5jZNFOG.cjs.map → MSkeleton-D7wnoEE8.cjs.map} +1 -1
- package/dist/{MSlider-D5ckYDop.js → MSlider-BlgzLtHa.js} +2 -2
- package/dist/{MSlider-D5ckYDop.js.map → MSlider-BlgzLtHa.js.map} +1 -1
- package/dist/{MSlider-vD6Sla2p.cjs → MSlider-YDSrVUQ8.cjs} +2 -2
- package/dist/{MSlider-vD6Sla2p.cjs.map → MSlider-YDSrVUQ8.cjs.map} +1 -1
- package/dist/{MSparkline-U-XaDvpV.cjs → MSparkline-Bl5-EHJr.cjs} +2 -2
- package/dist/MSparkline-Bl5-EHJr.cjs.map +1 -0
- package/dist/{MSparkline-DjcDtnZH.js → MSparkline-C8tnqhJm.js} +2 -2
- package/dist/MSparkline-C8tnqhJm.js.map +1 -0
- package/dist/{MStack-BvFI0AFv.cjs → MStack-BKDsNitR.cjs} +2 -2
- package/dist/{MStack-BvFI0AFv.cjs.map → MStack-BKDsNitR.cjs.map} +1 -1
- package/dist/{MStack-DhdMFSUL.js → MStack-XTsT_kLJ.js} +4 -4
- package/dist/{MStack-DhdMFSUL.js.map → MStack-XTsT_kLJ.js.map} +1 -1
- package/dist/{MSubText-CfWNytoK.cjs → MSubText-BIaYgtU4.cjs} +2 -2
- package/dist/{MSubText-CfWNytoK.cjs.map → MSubText-BIaYgtU4.cjs.map} +1 -1
- package/dist/{MSubText-uvcBr9Ba.js → MSubText-uoh7Qx7S.js} +3 -3
- package/dist/{MSubText-uvcBr9Ba.js.map → MSubText-uoh7Qx7S.js.map} +1 -1
- package/dist/{MSurface-DlcK6Bre.js → MSurface-B1LXFczo.js} +4 -4
- package/dist/{MSurface-DlcK6Bre.js.map → MSurface-B1LXFczo.js.map} +1 -1
- package/dist/{MSurface-qcGLaTIK.cjs → MSurface-BgZ86iYn.cjs} +2 -2
- package/dist/{MSurface-qcGLaTIK.cjs.map → MSurface-BgZ86iYn.cjs.map} +1 -1
- package/dist/MTag-BVo9zFIj.cjs +2 -0
- package/dist/{MTag-BMi1GS7v.cjs.map → MTag-BVo9zFIj.cjs.map} +1 -1
- package/dist/{MTag-Cor8ZIW3.js → MTag-Bq9b51kE.js} +4 -4
- package/dist/{MTag-Cor8ZIW3.js.map → MTag-Bq9b51kE.js.map} +1 -1
- package/dist/MText-B4koGfYi.cjs +2 -0
- package/dist/MText-B4koGfYi.cjs.map +1 -0
- package/dist/MText-CKyns1SE.js +43 -0
- package/dist/MText-CKyns1SE.js.map +1 -0
- package/dist/{MTimeAgo-BOXKcDYN.cjs → MTimeAgo-LWntwbKg.cjs} +2 -2
- package/dist/{MTimeAgo-BOXKcDYN.cjs.map → MTimeAgo-LWntwbKg.cjs.map} +1 -1
- package/dist/{MTimeAgo-DrDs52Y1.js → MTimeAgo-irsvTFAY.js} +4 -4
- package/dist/{MTimeAgo-DrDs52Y1.js.map → MTimeAgo-irsvTFAY.js.map} +1 -1
- package/dist/{MToggle-B7cKH5Tl.js → MToggle-BbSDIAJq.js} +3 -3
- package/dist/{MToggle-B7cKH5Tl.js.map → MToggle-BbSDIAJq.js.map} +1 -1
- package/dist/{MToggle-Hheo-jfZ.cjs → MToggle-GhhAJgUa.cjs} +2 -2
- package/dist/{MToggle-Hheo-jfZ.cjs.map → MToggle-GhhAJgUa.cjs.map} +1 -1
- package/dist/{MTooltip-D3xuZ5kG.js → MTooltip-BVQ7wBrO.js} +3 -3
- package/dist/{MTooltip-D3xuZ5kG.js.map → MTooltip-BVQ7wBrO.js.map} +1 -1
- package/dist/{MTooltip-DzwZ637q.cjs → MTooltip-eTM5DKtM.cjs} +2 -2
- package/dist/{MTooltip-DzwZ637q.cjs.map → MTooltip-eTM5DKtM.cjs.map} +1 -1
- package/dist/cards-JqA2VWit.js +1013 -0
- package/dist/cards-JqA2VWit.js.map +1 -0
- package/dist/cards-QoMhQlao.cjs +2 -0
- package/dist/cards-QoMhQlao.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +3 -3
- 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/cards/MCardPaymentMethod/MCardPaymentMethod.d.ts +2 -0
- package/dist/components/cards/MCardPaymentMethod/MCardPaymentMethod.types.d.ts +22 -0
- package/dist/components/cards/MCardPaymentMethod/index.d.ts +2 -0
- package/dist/components/cards/index.d.ts +2 -0
- package/dist/components/data/index.d.ts +1 -1
- package/dist/components/feedback/MCookie/MCookieConsent/index.d.ts +1 -1
- package/dist/components/inputs/MInputCVC/MInputCVC.d.ts +3 -0
- package/dist/components/inputs/MInputCVC/MInputCVC.types.d.ts +9 -0
- package/dist/components/inputs/MInputCVC/index.d.ts +2 -0
- package/dist/components/inputs/MInputExpDate/MInputExpDate.d.ts +3 -0
- package/dist/components/inputs/MInputExpDate/MInputExpDate.types.d.ts +10 -0
- package/dist/components/inputs/MInputExpDate/index.d.ts +2 -0
- package/dist/components/inputs/index.d.ts +4 -0
- package/dist/controls-BFmZuejK.cjs +2 -0
- package/dist/controls-BFmZuejK.cjs.map +1 -0
- package/dist/{controls-IsOBNxW0.js → controls-Dbev0qSy.js} +5 -5
- package/dist/controls-Dbev0qSy.js.map +1 -0
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +5 -5
- package/dist/cookie-consent-bootstrap.cjs +1 -1
- package/dist/cookie-consent-bootstrap.cjs.map +1 -1
- package/dist/cookie-consent-bootstrap.js +1 -1
- 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-Bp3Fd2Al.js → data-B1hbWMzU.js} +696 -699
- package/dist/data-B1hbWMzU.js.map +1 -0
- package/dist/data-BooVW8q_.cjs +2 -0
- package/dist/data-BooVW8q_.cjs.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-B-zP1BEz.cjs +2 -0
- package/dist/{display-DmB5CZYB.cjs.map → display-B-zP1BEz.cjs.map} +1 -1
- package/dist/{display-B0Db8pF3.js → display-DC0d-nPm.js} +5 -6
- package/dist/{display-B0Db8pF3.js.map → display-DC0d-nPm.js.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +3 -3
- package/dist/dropdowns-CMt9-Jpa.cjs +2 -0
- package/dist/dropdowns-CMt9-Jpa.cjs.map +1 -0
- package/dist/{dropdowns-BkBtQP4v.js → dropdowns-Vo7Oo_ii.js} +87 -91
- package/dist/dropdowns-Vo7Oo_ii.js.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-B-PVXL68.cjs +2 -0
- package/dist/{feedback-CmOz23FV.cjs.map → feedback-B-PVXL68.cjs.map} +1 -1
- package/dist/{feedback-DCIGou8P.js → feedback-D29Er-TD.js} +315 -299
- package/dist/{feedback-DCIGou8P.js.map → feedback-D29Er-TD.js.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +6 -6
- package/dist/{form-BQ6-ieVC.cjs → form-6JwrowsS.cjs} +2 -2
- package/dist/{form-BQ6-ieVC.cjs.map → form-6JwrowsS.cjs.map} +1 -1
- package/dist/{form-JanaUHTQ.js → form-CFWADsyf.js} +2 -2
- package/dist/{form-JanaUHTQ.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-5_DBGFFg.js → frameworkTexts-BgzNvcs2.js} +3 -3
- package/dist/{frameworkTexts-5_DBGFFg.js.map → frameworkTexts-BgzNvcs2.js.map} +1 -1
- package/dist/{frameworkTexts-CwSSRPWS.cjs → frameworkTexts-r4jSfpMt.cjs} +2 -2
- package/dist/{frameworkTexts-CwSSRPWS.cjs.map → frameworkTexts-r4jSfpMt.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 -76
- package/dist/{inputs-DFoD2MMX.js → inputs-Bl7ssV3Q.js} +333 -339
- package/dist/{inputs-DFoD2MMX.js.map → inputs-Bl7ssV3Q.js.map} +1 -1
- package/dist/inputs-Dw9Uv8f4.cjs +2 -0
- package/dist/{inputs-BRjbpf9P.cjs.map → inputs-Dw9Uv8f4.cjs.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +5 -4
- package/dist/layout-C1QKiv2J.cjs +2 -0
- package/dist/{layout-BWhQ1VXM.cjs.map → layout-C1QKiv2J.cjs.map} +1 -1
- package/dist/{layout-yIAZ4bP6.js → layout-UP_12LRD.js} +22 -24
- package/dist/{layout-yIAZ4bP6.js.map → layout-UP_12LRD.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +6 -5
- 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-DpCe_7mG.cjs → locale-LCAQDJCd.cjs} +1 -1
- package/dist/{locale-DpCe_7mG.cjs.map → locale-LCAQDJCd.cjs.map} +1 -1
- package/dist/{locale-Crzgecoe.js → locale-uMMj57KX.js} +1 -1
- package/dist/{locale-Crzgecoe.js.map → locale-uMMj57KX.js.map} +1 -1
- package/dist/media-C4WtzWxU.cjs +2 -0
- package/dist/{media-D0KRmTG_.cjs.map → media-C4WtzWxU.cjs.map} +1 -1
- package/dist/{media-DWG2uW1h.js → media-D5zF3vH6.js} +12 -12
- package/dist/{media-DWG2uW1h.js.map → media-D5zF3vH6.js.map} +1 -1
- package/dist/media.cjs +1 -1
- package/dist/media.js +3 -3
- package/dist/{overlays-DQOnI2NS.js → overlays-BahWPCPW.js} +7 -7
- package/dist/{overlays-DQOnI2NS.js.map → overlays-BahWPCPW.js.map} +1 -1
- package/dist/overlays-D9_8GEse.cjs +2 -0
- package/dist/{overlays-CROlfKrR.cjs.map → overlays-D9_8GEse.cjs.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-CCkJaTzp.js → typography-BR2o3w3X.js} +3 -3
- package/dist/{typography-CCkJaTzp.js.map → typography-BR2o3w3X.js.map} +1 -1
- package/dist/{typography-CtITQOAU.cjs → typography-BobOsDbn.cjs} +2 -2
- package/dist/{typography-CtITQOAU.cjs.map → typography-BobOsDbn.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +6 -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-ClUq3DXO.js +0 -873
- package/dist/MBrandMoreIcons-ClUq3DXO.js.map +0 -1
- package/dist/MBrandMoreIcons-Xxf9FaIx.cjs +0 -2
- package/dist/MBrandMoreIcons-Xxf9FaIx.cjs.map +0 -1
- package/dist/MCalendarIcon-4PilFCrR.cjs +0 -2
- package/dist/MCalendarIcon-4PilFCrR.cjs.map +0 -1
- package/dist/MCalendarIcon-DXx62vjV.js +0 -29
- package/dist/MCalendarIcon-DXx62vjV.js.map +0 -1
- package/dist/MChatIcon-CnDOfqkO.js +0 -102
- package/dist/MChatIcon-CnDOfqkO.js.map +0 -1
- package/dist/MChatIcon-DX-u8_6S.cjs +0 -2
- package/dist/MChatIcon-DX-u8_6S.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-C-zYY2A0.cjs +0 -2
- package/dist/MClockIcon-C-zYY2A0.cjs.map +0 -1
- package/dist/MClockIcon-DefFl5ks.js +0 -19
- package/dist/MClockIcon-DefFl5ks.js.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-8ZhnWhqW.cjs +0 -2
- package/dist/MDrawer-FYS50FtQ.cjs +0 -2
- package/dist/MEllipsisVerticalIcon-C87B9UQK.cjs +0 -2
- package/dist/MEllipsisVerticalIcon-C87B9UQK.cjs.map +0 -1
- package/dist/MEllipsisVerticalIcon-CNn1AQ8W.js +0 -37
- package/dist/MEllipsisVerticalIcon-CNn1AQ8W.js.map +0 -1
- package/dist/MFileExtIcons-BoG3GPxg.js +0 -145
- package/dist/MFileExtIcons-BoG3GPxg.js.map +0 -1
- package/dist/MFileExtIcons-DH9oZPpf.cjs +0 -2
- package/dist/MFileExtIcons-DH9oZPpf.cjs.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-CKrjXRmf.js.map +0 -1
- package/dist/MImage-f854avZS.cjs.map +0 -1
- package/dist/MInput-CQ3MqKsk.cjs +0 -2
- package/dist/MInputSearch-Dt79qbZg.cjs +0 -2
- package/dist/MMenuIcon-Brpitjq1.cjs +0 -2
- package/dist/MMenuIcon-Brpitjq1.cjs.map +0 -1
- package/dist/MMenuIcon-idfVpVQD.js +0 -20
- package/dist/MMenuIcon-idfVpVQD.js.map +0 -1
- package/dist/MPagination-Bu84ZlVh.cjs +0 -2
- package/dist/MPagination-Bu84ZlVh.cjs.map +0 -1
- package/dist/MPagination-CbkRMnL1.js +0 -147
- package/dist/MPagination-CbkRMnL1.js.map +0 -1
- package/dist/MPhoneIcon-efl6BqwU.js +0 -38
- package/dist/MPhoneIcon-efl6BqwU.js.map +0 -1
- package/dist/MPhoneIcon-lgC9DH5a.cjs +0 -2
- package/dist/MPhoneIcon-lgC9DH5a.cjs.map +0 -1
- package/dist/MProtectIcon-BPYP06QD.cjs +0 -2
- package/dist/MProtectIcon-BPYP06QD.cjs.map +0 -1
- package/dist/MProtectIcon-BTtMmrib.js +0 -80
- package/dist/MProtectIcon-BTtMmrib.js.map +0 -1
- package/dist/MQrCode-CbUPPd4S.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-DjcDtnZH.js.map +0 -1
- package/dist/MSparkline-U-XaDvpV.cjs.map +0 -1
- package/dist/MStarFillIcon-CGyQPFi8.js +0 -25
- package/dist/MStarFillIcon-CGyQPFi8.js.map +0 -1
- package/dist/MStarFillIcon-DJHfl_Qy.cjs +0 -2
- package/dist/MStarFillIcon-DJHfl_Qy.cjs.map +0 -1
- package/dist/MSuccessIcon-CatQ4FmG.cjs +0 -2
- package/dist/MSuccessIcon-CatQ4FmG.cjs.map +0 -1
- package/dist/MSuccessIcon-D3GrOvye.js +0 -33
- package/dist/MSuccessIcon-D3GrOvye.js.map +0 -1
- package/dist/MTag-BMi1GS7v.cjs +0 -2
- package/dist/MText-C0FdseW1.js +0 -57
- package/dist/MText-C0FdseW1.js.map +0 -1
- package/dist/MText-OV0ihtQ6.cjs +0 -2
- package/dist/MText-OV0ihtQ6.cjs.map +0 -1
- 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-CKCr-GuJ.js +0 -934
- package/dist/cards-CKCr-GuJ.js.map +0 -1
- package/dist/cards-yPK4lBAA.cjs +0 -2
- package/dist/cards-yPK4lBAA.cjs.map +0 -1
- package/dist/controls-DEEbLT5o.cjs +0 -2
- package/dist/controls-DEEbLT5o.cjs.map +0 -1
- package/dist/controls-IsOBNxW0.js.map +0 -1
- package/dist/data-BEH7TbuW.cjs +0 -2
- package/dist/data-BEH7TbuW.cjs.map +0 -1
- package/dist/data-Bp3Fd2Al.js.map +0 -1
- package/dist/display-DmB5CZYB.cjs +0 -2
- package/dist/dropdowns-BkBtQP4v.js.map +0 -1
- package/dist/dropdowns-CD2myl19.cjs +0 -2
- package/dist/dropdowns-CD2myl19.cjs.map +0 -1
- package/dist/feedback-CmOz23FV.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-BRjbpf9P.cjs +0 -2
- package/dist/layout-BWhQ1VXM.cjs +0 -2
- package/dist/media-D0KRmTG_.cjs +0 -2
- package/dist/overlays-CROlfKrR.cjs +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./icons-Dv1T-cF4.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./useInteractionEffect-DnEfbCrX.cjs`),r=require(`./MButton-CX8SV1m0.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`);var o=(0,i.forwardRef)(function({orientation:e=`horizontal`,variant:n,size:o,color:s,attached:c=!0,className:l,children:u,...d},f){let p=(0,i.useMemo)(()=>({variant:n,size:o,color:s}),[n,o,s]);return(0,a.jsx)(r.i.Provider,{value:p,children:(0,a.jsx)(`div`,{ref:f,role:`group`,className:t.t(`button-group`,e,c&&`attached`,l),...d,children:u})})}),s=(0,i.createContext)(null);function c(){return(0,i.useContext)(s)}var l=(0,i.forwardRef)(function({checked:e,defaultChecked:r,name:o,id:s,value:l,disabled:u=!1,size:d=`md`,color:f=`primary`,label:p,labelPosition:m=`right`,onChange:h,clickEffect:g=`ripple`,rippleColor:_,className:v,style:y},b){let x=c(),S=x?.name??o,C=x?.disabled??u,w=x?.size??d,T=x?.color??f,E=x?x.value===l:e,{effectClassName:D,effectLayer:O,handlePointerDown:k,triggerEffect:A}=n.t({effect:g,disabled:C,centered:!0,color:_}),j=(0,i.useCallback)(e=>{h?.(e),x?.onChange&&l&&x.onChange(l)},[h,x,l]);return(0,a.jsxs)(`label`,{className:t.t(`radio`,w,m===`left`&&`label-left`,C&&`disabled`,v),style:y,children:[(0,a.jsxs)(`span`,{className:t.t(`circle`,`color-${T}`,D),onPointerDown:k,children:[O,(0,a.jsx)(`input`,{ref:b,type:`radio`,name:S,id:s,value:l,checked:E,defaultChecked:x?void 0:r,disabled:C,onChange:j,onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&A(e.currentTarget.parentElement)},className:`input`})]}),p&&(0,a.jsx)(`span`,{className:`label-text`,children:p})]})});function u({name:e,value:n,defaultValue:r,onChange:o,direction:c=`vertical`,children:l,disabled:u=!1,size:d=`md`,color:f=`primary`,error:p=!1,errorText:m,label:h,className:g,style:_}){let[v,y]=(0,i.useState)(r),b=n===void 0?v:n,x=(0,i.useCallback)(e=>{n===void 0&&y(e),o?.(e)},[o,n]),S=(0,i.useMemo)(()=>({name:e,value:b,disabled:u,size:d,color:f,onChange:x}),[e,b,u,d,f,x]);return(0,a.jsx)(s.Provider,{value:S,children:(0,a.jsxs)(`fieldset`,{className:t.t(`radio-group`,c,g),style:_,role:`radiogroup`,children:[h&&(0,a.jsx)(`legend`,{className:t.t(`label`,p&&`error`),children:h}),l,m&&(0,a.jsx)(`span`,{className:`field-error`,role:`alert`,children:m})]})})}function d({onLoadMore:e,loading:n=!1,hasMore:o=!0,loaded:s,total:c,auto:l=!1,autoThreshold:u=100,variant:d=`outlined`,color:f=`primary`,label:p=`Load more`,loadingLabel:m=`Loading...`,doneLabel:h=`All items loaded`,className:g,..._}){let v=(0,i.useRef)(null),y=(0,i.useRef)(e);y.current=e,(0,i.useEffect)(()=>{if(!l||!o||n)return;let e=v.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0].isIntersecting&&y.current()},{rootMargin:`${u}px`});return t.observe(e),()=>t.disconnect()},[l,o,n,u]);let b=(0,i.useCallback)(()=>{!n&&o&&e()},[e,n,o]),x=s!==void 0&&c!==void 0;return(0,a.jsxs)(`div`,{className:t.t(`load-more`,g),..._,children:[x&&(0,a.jsxs)(`span`,{className:`load-more-count`,children:[s,` / `,c]}),o?(0,a.jsx)(r.t,{variant:d,color:f,loading:n,onClick:b,className:`load-more-btn`,children:n?m:p}):(0,a.jsx)(`span`,{className:`load-more-done`,children:h}),l&&o&&(0,a.jsx)(`div`,{ref:v,className:`load-more-sentinel`}),x&&(0,a.jsx)(`div`,{className:`load-more-bar`,children:(0,a.jsx)(`div`,{className:`load-more-bar-fill`,style:{width:`${Math.min(s/c*100,100)}%`}})})]})}function f({threshold:n=300,variant:o=`filled`,color:s=`primary`,smooth:c=!0,className:l}){let[u,d]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{function e(){d(window.scrollY>n)}return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[n]),(0,a.jsx)(r.t,{variant:o,color:s,shape:`circle`,size:`lg`,iconOnly:!0,onClick:(0,i.useCallback)(()=>{window.scrollTo({top:0,behavior:c?`smooth`:`instant`})},[c]),"aria-label":`Scroll to top`,className:t.t(`scroll-top`,u&&`visible`,l),children:(0,a.jsx)(e.Oi,{})})}function p(e,t){return(0,a.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,...t,children:e})}function m(e){return p((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10.2`,fill:`#fff`,stroke:`#dadce0`,strokeWidth:`1.2`}),(0,a.jsx)(`path`,{d:`M17.95 12.25c0-.48-.04-.83-.13-1.2H12v2.26h3.42c-.07.56-.48 1.4-1.4 1.97l-.01.08 2 1.52.14.02c1.28-1.15 1.8-2.84 1.8-4.65z`,fill:`#4285F4`}),(0,a.jsx)(`path`,{d:`M12 18.2c1.67 0 3.07-.54 4.1-1.48l-2.13-1.62c-.57.39-1.34.67-1.97.67-1.64 0-3.03-1.06-3.53-2.53l-.08.01-2.08 1.58-.03.08c1.02 1.97 3.09 3.29 5.72 3.29z`,fill:`#34A853`}),(0,a.jsx)(`path`,{d:`M8.47 13.24a3.72 3.72 0 0 1-.2-1.24c0-.43.08-.84.19-1.24l-.01-.08-2.1-1.6-.07.03a6.02 6.02 0 0 0 0 5.78l2.19-1.65z`,fill:`#FBBC05`}),(0,a.jsx)(`path`,{d:`M12 8.22c.8 0 1.53.27 2.1.8l1.54-1.48C14.99 6.96 13.67 6.5 12 6.5c-2.63 0-4.7 1.32-5.72 3.29l2.18 1.66c.5-1.47 1.9-2.53 3.54-2.53z`,fill:`#EA4335`})]}),e)}function h(e){return p((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`rect`,{x:`2.2`,y:`2.2`,width:`19.6`,height:`19.6`,rx:`6.2`,fill:`#1877F2`}),(0,a.jsx)(`path`,{d:`M13.28 20v-6.02h2.02l.31-2.43h-2.33V10c0-.78.27-1.37 1.35-1.37h1.11V6.4c-.4-.06-1.09-.11-2.03-.11-2.3 0-3.64 1.22-3.64 3.76v1.49h-1.9v2.44h1.9V20z`,fill:`#fff`})]}),e)}function g(e){return p((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`path`,{d:`M15.38 11.84c.02 2.33 2.04 3.1 2.07 3.12-.03.07-.33 1.09-1.06 2.16-.63.91-1.3 1.84-2.34 1.86-1.03.02-1.37-.61-2.57-.61-1.2 0-1.57.59-2.53.63-1.02.04-1.79-1.01-2.43-1.92-1.3-1.89-2.3-5.33-.97-7.64.67-1.15 1.86-1.88 3.14-1.9.98-.02 1.89.65 2.57.65.67 0 1.92-.81 3.24-.69.55.02 2.1.22 3.09 1.67-.08.05-1.84 1.07-1.81 2.67z`,fill:`currentColor`}),(0,a.jsx)(`path`,{d:`M13.59 4.67c.53-.64.9-1.52.8-2.42-.77.04-1.69.52-2.24 1.15-.5.58-.93 1.49-.82 2.35.86.07 1.72-.44 2.26-1.08z`,fill:`currentColor`})]}),e)}function _(e){return p((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`rect`,{x:`3.5`,y:`3.5`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#F25022`}),(0,a.jsx)(`rect`,{x:`12.7`,y:`3.5`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#7FBA00`}),(0,a.jsx)(`rect`,{x:`3.5`,y:`12.7`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#00A4EF`}),(0,a.jsx)(`rect`,{x:`12.7`,y:`12.7`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#FFB900`})]}),e)}function v(e){return p((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10.1`,fill:`#fff`}),(0,a.jsx)(`path`,{d:`M12.87 6.76c-2.95 0-4.74 2.03-4.74 4.34 0 1.65.92 3.07 2.38 3.62.1.03.14.01.17-.06l.32-1.23c.05-.14.02-.19-.09-.33-.26-.33-.47-.96-.47-1.57 0-1.52 1.14-2.97 3.08-2.97 1.68 0 2.86 1.14 2.86 2.78 0 1.86-.93 3.13-2.14 3.13-.67 0-1.17-.56-1-1.23.18-.8.55-1.64.55-2.2 0-.51-.28-.93-.84-.93-.67 0-1.2.69-1.2 1.62 0 .59.2.99.2.99l-.78 3.28c-.14.58-.03 1.55.01 1.68.02.08.1.1.15.03.09-.11 1.07-1.49 1.24-2.18l.27-1.06c.25.48.99.89 1.77.89 2.34 0 4.04-2.15 4.04-4.79 0-2.54-2.08-4.44-4.78-4.44z`,fill:`#E60023`})]}),e)}function y(e){return p((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`rect`,{x:`2.4`,y:`2.4`,width:`19.2`,height:`19.2`,rx:`4.8`,fill:`#fff`}),(0,a.jsx)(`path`,{d:`M8.1 10.02h2.04v7.24H8.1zm1.03-3.22a1.17 1.17 0 1 1 0 2.35 1.17 1.17 0 0 1 0-2.35zm2.68 3.22h1.95v.99c.34-.61 1.08-1.15 2.13-1.15 2.15 0 2.82 1.42 2.82 3.78v3.62h-2.04v-3.26c0-.98-.35-1.67-1.23-1.67-.66 0-1.05.45-1.23.88-.08.16-.08.38-.08.59v3.46h-2.32z`,fill:`#0A66C2`})]}),e)}var b={google:{label:`Sign in with Google`,iconLabel:`Google`,mode:`google`,Icon:m},facebook:{label:`Sign in with Facebook`,iconLabel:`Facebook`,mode:`outline`,Icon:h},apple:{label:`Sign in with Apple`,iconLabel:`Apple`,mode:`brand`,Icon:g},microsoft:{label:`Sign in with Microsoft`,iconLabel:`Microsoft`,mode:`brand`,Icon:_},pinterest:{label:`Sign in with Pinterest`,iconLabel:`Pinterest`,mode:`brand`,Icon:v},linkedin:{label:`Sign in with LinkedIn`,iconLabel:`LinkedIn`,mode:`brand`,Icon:y}},x=(0,i.forwardRef)(function({platform:e=`google`,variant:i=`outline`,size:o=`md`,iconOnly:s=!1,iconShape:c=`circle`,fullWidth:l=!1,loading:u=!1,active:d=!1,pulsing:f=!1,clickEffect:p=`ripple`,rippleColor:m,className:h,style:g,children:_,disabled:v=!1,type:y=`button`,onPointerDown:x,onKeyDown:S,"aria-label":C,...w},T){let E=b[e],D=E.Icon,O=_??E.label,k=C??(s?E.iconLabel:void 0),A=E.mode===`google`?i:E.mode,j=v||u,{effectClassName:M,effectLayer:N,handlePointerDown:P,triggerEffect:F}=n.t({effect:p,disabled:j,centered:s,color:m});return(0,a.jsxs)(`button`,{ref:T,type:y,className:t.t(`social-button-root`,e,A,o,l&&`full-width`,s&&`icon-only`,s&&`icon-shape-${c}`,u&&`loading`,d&&`active`,f&&`pulsing`,j&&`disabled`,M,h),style:g,disabled:j,"aria-busy":u||void 0,"aria-label":k,onPointerDown:e=>{P(e),x?.(e)},onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&F(e.currentTarget),S?.(e)},...w,children:[N,u&&(0,a.jsx)(r.r,{size:`sm`,color:`inherit`,className:`social-button-spinner`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`social-button-brand`,"aria-hidden":`true`,children:(0,a.jsx)(D,{className:`social-button-mark`})}),!s&&(0,a.jsx)(`span`,{className:`social-button-label`,children:O})]})});Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return x}});
|
|
2
|
+
//# sourceMappingURL=controls-BFmZuejK.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls-BFmZuejK.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx","../src/components/controls/MRadio/RadioContext.ts","../src/components/controls/MRadio/MRadio.tsx","../src/components/controls/MRadio/MRadioGroup.tsx","../src/components/controls/MLoadMore/MLoadMore.tsx","../src/components/controls/MScrollTop/MScrollTop.tsx","../src/components/controls/MSocialButton/MSocialButton.icons.tsx","../src/components/controls/MSocialButton/MSocialButton.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n","import {createContext, useContext} from 'react'\nimport type {MRadioGroupContextValue} from './MRadio.types'\n\nexport const RadioContext = createContext<MRadioGroupContextValue | null>(null)\n\n// Read the nearest radio-group context when a radio participates in grouped state.\nexport function useRadioGroup(): MRadioGroupContextValue | null {\n return useContext(RadioContext)\n}\n","import {forwardRef, useCallback} from 'react'\nimport type * as React from 'react'\nimport type {MRadioProps} from './MRadio.types'\nimport {useRadioGroup} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MRadio.css'\n\n// Render a single radio that can work standalone or inside MRadioGroup.\nexport const MRadio = forwardRef<HTMLInputElement, MRadioProps>(function MRadio(\n {\n checked,\n defaultChecked,\n name,\n id,\n value,\n disabled = false,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n onChange,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n },\n ref\n) {\n const group = useRadioGroup()\n\n const resolvedName = group?.name ?? name\n const resolvedDisabled = group?.disabled ?? disabled\n const resolvedSize = group?.size ?? size\n const resolvedColor = group?.color ?? color\n const resolvedChecked = group ? group.value === value : checked\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect,\n disabled: resolvedDisabled,\n centered: true,\n color: rippleColor,\n })\n\n // Delegate selection back to the group when one is present.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n if (group?.onChange && value) {\n group.onChange(value)\n }\n },\n [onChange, group, value]\n )\n\n return (\n <label\n className={cn(\n 'radio',\n resolvedSize,\n labelPosition === 'left' && 'label-left',\n resolvedDisabled && 'disabled',\n className\n )}\n style={style}\n >\n <span className={cn('circle', `color-${resolvedColor}`, effectClassName)} onPointerDown={handlePointerDown}>\n {effectLayer}\n <input\n ref={ref}\n type=\"radio\"\n name={resolvedName}\n id={id}\n value={value}\n checked={resolvedChecked}\n defaultChecked={!group ? defaultChecked : undefined}\n disabled={resolvedDisabled}\n onChange={handleChange}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget.parentElement as HTMLSpanElement | null)\n }\n }}\n className=\"input\"\n />\n </span>\n {label && <span className=\"label-text\">{label}</span>}\n </label>\n )\n})\n","import {useState, useCallback, useMemo} from 'react'\nimport type {MRadioGroupProps} from './MRadio.types'\nimport {RadioContext} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport './MRadio.css'\n\n// Coordinate multiple radio items through shared context and optional controlled state.\nexport function MRadioGroup({\n name,\n value,\n defaultValue,\n onChange,\n direction = 'vertical',\n children,\n disabled = false,\n size = 'md',\n color = 'primary',\n error = false,\n errorText,\n label,\n className,\n style,\n}: MRadioGroupProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const currentValue = value !== undefined ? value : internalValue\n\n // Mirror controlled and uncontrolled usage with the same group API.\n const handleChange = useCallback(\n (val: string) => {\n if (value === undefined) {\n setInternalValue(val)\n }\n onChange?.(val)\n },\n [onChange, value]\n )\n\n // Memoize context so nested radios only update when relevant inputs change.\n const ctx = useMemo(\n () => ({name, value: currentValue, disabled, size, color, onChange: handleChange}),\n [name, currentValue, disabled, size, color, handleChange]\n )\n\n return (\n <RadioContext.Provider value={ctx}>\n <fieldset className={cn('radio-group', direction, className)} style={style} role=\"radiogroup\">\n {label && <legend className={cn('label', error && 'error')}>{label}</legend>}\n {children}\n {errorText && (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n </fieldset>\n </RadioContext.Provider>\n )\n}\n","import {useEffect, useRef, useCallback} from 'react'\nimport type {MLoadMoreProps} from './MLoadMore.types'\nimport {MButton} from '../MButton'\nimport {cn} from '../../../utils/cn'\nimport './MLoadMore.css'\n\nexport function MLoadMore({\n onLoadMore,\n loading = false,\n hasMore = true,\n loaded,\n total,\n auto = false,\n autoThreshold = 100,\n variant = 'outlined',\n color = 'primary',\n label = 'Load more',\n loadingLabel = 'Loading...',\n doneLabel = 'All items loaded',\n className,\n ...rest\n}: MLoadMoreProps) {\n const sentinelRef = useRef<HTMLDivElement>(null)\n const loadMoreRef = useRef(onLoadMore)\n loadMoreRef.current = onLoadMore\n\n useEffect(() => {\n if (!auto || !hasMore || loading) return\n\n const sentinel = sentinelRef.current\n if (!sentinel) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n loadMoreRef.current()\n }\n },\n {rootMargin: `${autoThreshold}px`}\n )\n\n observer.observe(sentinel)\n return () => observer.disconnect()\n }, [auto, hasMore, loading, autoThreshold])\n\n const handleClick = useCallback(() => {\n if (!loading && hasMore) onLoadMore()\n }, [onLoadMore, loading, hasMore])\n\n const showCount = loaded !== undefined && total !== undefined\n\n return (\n <div className={cn('load-more', className)} {...rest}>\n {showCount && (\n <span className=\"load-more-count\">\n {loaded} / {total}\n </span>\n )}\n\n {hasMore ? (\n <MButton\n variant={variant}\n color={color}\n loading={loading}\n onClick={handleClick}\n className=\"load-more-btn\"\n >\n {loading ? loadingLabel : label}\n </MButton>\n ) : (\n <span className=\"load-more-done\">{doneLabel}</span>\n )}\n\n {auto && hasMore && <div ref={sentinelRef} className=\"load-more-sentinel\" />}\n\n {showCount && (\n <div className=\"load-more-bar\">\n <div className=\"load-more-bar-fill\" style={{width: `${Math.min((loaded / total) * 100, 100)}%`}} />\n </div>\n )}\n </div>\n )\n}\n","import {useState, useEffect, useCallback} from 'react'\nimport type {MScrollTopProps} from './MScrollTop.types'\nimport {MButton} from '../MButton'\nimport {MArrowUpIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MScrollTop.css'\n\nexport function MScrollTop({\n threshold = 300,\n variant = 'filled',\n color = 'primary',\n smooth = true,\n className,\n}: MScrollTopProps) {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n function onScroll() {\n setVisible(window.scrollY > threshold)\n }\n onScroll()\n window.addEventListener('scroll', onScroll, {passive: true})\n return () => window.removeEventListener('scroll', onScroll)\n }, [threshold])\n\n const scrollToTop = useCallback(() => {\n window.scrollTo({top: 0, behavior: smooth ? 'smooth' : 'instant'})\n }, [smooth])\n\n return (\n <MButton\n variant={variant}\n color={color}\n shape=\"circle\"\n size=\"lg\"\n iconOnly\n onClick={scrollToTop}\n aria-label=\"Scroll to top\"\n className={cn('scroll-top', visible && 'visible', className)}\n >\n <MArrowUpIcon />\n </MButton>\n )\n}\n","import type {ReactNode, SVGProps} from 'react'\n\ntype SocialMarkProps = SVGProps<SVGSVGElement>\n\nfunction createMark(children: ReactNode, props: SocialMarkProps) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" {...props}>\n {children}\n </svg>\n )\n}\n\nexport function SocialGoogleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.2\" fill=\"#fff\" stroke=\"#dadce0\" strokeWidth=\"1.2\" />\n <path\n d=\"M17.95 12.25c0-.48-.04-.83-.13-1.2H12v2.26h3.42c-.07.56-.48 1.4-1.4 1.97l-.01.08 2 1.52.14.02c1.28-1.15 1.8-2.84 1.8-4.65z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 18.2c1.67 0 3.07-.54 4.1-1.48l-2.13-1.62c-.57.39-1.34.67-1.97.67-1.64 0-3.03-1.06-3.53-2.53l-.08.01-2.08 1.58-.03.08c1.02 1.97 3.09 3.29 5.72 3.29z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M8.47 13.24a3.72 3.72 0 0 1-.2-1.24c0-.43.08-.84.19-1.24l-.01-.08-2.1-1.6-.07.03a6.02 6.02 0 0 0 0 5.78l2.19-1.65z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 8.22c.8 0 1.53.27 2.1.8l1.54-1.48C14.99 6.96 13.67 6.5 12 6.5c-2.63 0-4.7 1.32-5.72 3.29l2.18 1.66c.5-1.47 1.9-2.53 3.54-2.53z\"\n fill=\"#EA4335\"\n />\n </>,\n props\n )\n}\n\nexport function SocialFacebookMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.2\" y=\"2.2\" width=\"19.6\" height=\"19.6\" rx=\"6.2\" fill=\"#1877F2\" />\n <path\n d=\"M13.28 20v-6.02h2.02l.31-2.43h-2.33V10c0-.78.27-1.37 1.35-1.37h1.11V6.4c-.4-.06-1.09-.11-2.03-.11-2.3 0-3.64 1.22-3.64 3.76v1.49h-1.9v2.44h1.9V20z\"\n fill=\"#fff\"\n />\n </>,\n props\n )\n}\n\nexport function SocialAppleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <path\n d=\"M15.38 11.84c.02 2.33 2.04 3.1 2.07 3.12-.03.07-.33 1.09-1.06 2.16-.63.91-1.3 1.84-2.34 1.86-1.03.02-1.37-.61-2.57-.61-1.2 0-1.57.59-2.53.63-1.02.04-1.79-1.01-2.43-1.92-1.3-1.89-2.3-5.33-.97-7.64.67-1.15 1.86-1.88 3.14-1.9.98-.02 1.89.65 2.57.65.67 0 1.92-.81 3.24-.69.55.02 2.1.22 3.09 1.67-.08.05-1.84 1.07-1.81 2.67z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.59 4.67c.53-.64.9-1.52.8-2.42-.77.04-1.69.52-2.24 1.15-.5.58-.93 1.49-.82 2.35.86.07 1.72-.44 2.26-1.08z\"\n fill=\"currentColor\"\n />\n </>,\n props\n )\n}\n\nexport function SocialMicrosoftMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"3.5\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#F25022\" />\n <rect x=\"12.7\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#7FBA00\" />\n <rect x=\"3.5\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#00A4EF\" />\n <rect x=\"12.7\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#FFB900\" />\n </>,\n props\n )\n}\n\nexport function SocialPinterestMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.1\" fill=\"#fff\" />\n <path\n d=\"M12.87 6.76c-2.95 0-4.74 2.03-4.74 4.34 0 1.65.92 3.07 2.38 3.62.1.03.14.01.17-.06l.32-1.23c.05-.14.02-.19-.09-.33-.26-.33-.47-.96-.47-1.57 0-1.52 1.14-2.97 3.08-2.97 1.68 0 2.86 1.14 2.86 2.78 0 1.86-.93 3.13-2.14 3.13-.67 0-1.17-.56-1-1.23.18-.8.55-1.64.55-2.2 0-.51-.28-.93-.84-.93-.67 0-1.2.69-1.2 1.62 0 .59.2.99.2.99l-.78 3.28c-.14.58-.03 1.55.01 1.68.02.08.1.1.15.03.09-.11 1.07-1.49 1.24-2.18l.27-1.06c.25.48.99.89 1.77.89 2.34 0 4.04-2.15 4.04-4.79 0-2.54-2.08-4.44-4.78-4.44z\"\n fill=\"#E60023\"\n />\n </>,\n props\n )\n}\n\nexport function SocialLinkedInMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.4\" y=\"2.4\" width=\"19.2\" height=\"19.2\" rx=\"4.8\" fill=\"#fff\" />\n <path\n d=\"M8.1 10.02h2.04v7.24H8.1zm1.03-3.22a1.17 1.17 0 1 1 0 2.35 1.17 1.17 0 0 1 0-2.35zm2.68 3.22h1.95v.99c.34-.61 1.08-1.15 2.13-1.15 2.15 0 2.82 1.42 2.82 3.78v3.62h-2.04v-3.26c0-.98-.35-1.67-1.23-1.67-.66 0-1.05.45-1.23.88-.08.16-.08.38-.08.59v3.46h-2.32z\"\n fill=\"#0A66C2\"\n />\n </>,\n props\n )\n}\n","import {forwardRef} from 'react'\nimport type {MSocialButtonProps} from './MSocialButton.types'\nimport {\n SocialAppleMark,\n SocialFacebookMark,\n SocialGoogleMark,\n SocialLinkedInMark,\n SocialMicrosoftMark,\n SocialPinterestMark,\n} from './MSocialButton.icons'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MSocialButton.css'\n\nconst socialButtonConfig = {\n google: {\n label: 'Sign in with Google',\n iconLabel: 'Google',\n mode: 'google',\n Icon: SocialGoogleMark,\n },\n facebook: {\n label: 'Sign in with Facebook',\n iconLabel: 'Facebook',\n mode: 'outline',\n Icon: SocialFacebookMark,\n },\n apple: {\n label: 'Sign in with Apple',\n iconLabel: 'Apple',\n mode: 'brand',\n Icon: SocialAppleMark,\n },\n microsoft: {\n label: 'Sign in with Microsoft',\n iconLabel: 'Microsoft',\n mode: 'brand',\n Icon: SocialMicrosoftMark,\n },\n pinterest: {\n label: 'Sign in with Pinterest',\n iconLabel: 'Pinterest',\n mode: 'brand',\n Icon: SocialPinterestMark,\n },\n linkedin: {\n label: 'Sign in with LinkedIn',\n iconLabel: 'LinkedIn',\n mode: 'brand',\n Icon: SocialLinkedInMark,\n },\n} as const\n\nexport const MSocialButton = forwardRef<HTMLButtonElement, MSocialButtonProps>(function MSocialButton(\n {\n platform = 'google',\n variant = 'outline',\n size = 'md',\n iconOnly = false,\n iconShape = 'circle',\n fullWidth = false,\n loading = false,\n active = false,\n pulsing = false,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onPointerDown,\n onKeyDown,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref\n) {\n const config = socialButtonConfig[platform]\n const Icon = config.Icon\n const label = children ?? config.label\n const resolvedAriaLabel = ariaLabel ?? (iconOnly ? config.iconLabel : undefined)\n const resolvedVariant = config.mode === 'google' ? variant : config.mode\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLButtonElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n 'social-button-root',\n platform,\n resolvedVariant,\n size,\n fullWidth && 'full-width',\n iconOnly && 'icon-only',\n iconOnly && `icon-shape-${iconShape}`,\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n aria-label={resolvedAriaLabel}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget)\n }\n\n onKeyDown?.(event)\n }}\n {...rest}\n >\n {effectLayer}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" className=\"social-button-spinner\" aria-hidden=\"true\" />}\n <span className=\"social-button-brand\" aria-hidden=\"true\">\n <Icon className=\"social-button-mark\" />\n </span>\n {!iconOnly && <span className=\"social-button-label\">{label}</span>}\n </button>\n )\n})\n"],"mappings":"kNAOA,IAAa,GAAA,EAAA,EAAA,YAA6D,SACtE,CAAC,cAAc,aAAc,UAAS,OAAM,QAAO,WAAW,GAAM,YAAW,WAAU,GAAG,GAC5F,EACF,CACE,IAAM,GAAA,EAAA,EAAA,cAA+C,CAAC,UAAS,OAAM,QAAM,EAAG,CAAC,EAAS,EAAM,EAAM,CAAC,CAErG,OACI,EAAA,EAAA,KAAC,EAAA,EAAmB,SAApB,CAA6B,MAAO,YAChC,EAAA,EAAA,KAAC,MAAD,CACS,MACL,KAAK,QACL,UAAW,EAAA,EAAG,eAAgB,EAAa,GAAY,WAAY,EAAU,CAC7E,GAAI,EAEH,WACC,CAAA,CACoB,CAAA,EAEpC,CCtBW,GAAA,EAAA,EAAA,eAA6D,KAAK,CAG/E,SAAgB,GAAgD,CAC5D,OAAA,EAAA,EAAA,YAAkB,EAAa,CCEnC,IAAa,GAAA,EAAA,EAAA,YAAmD,SAC5D,CACI,UACA,iBACA,OACA,KACA,QACA,WAAW,GACX,OAAO,KACP,QAAQ,UACR,QACA,gBAAgB,QAChB,WACA,cAAc,SACd,cACA,YACA,SAEJ,EACF,CACE,IAAM,EAAQ,GAAe,CAEvB,EAAe,GAAO,MAAQ,EAC9B,EAAmB,GAAO,UAAY,EACtC,EAAe,GAAO,MAAQ,EAC9B,EAAgB,GAAO,OAAS,EAChC,EAAkB,EAAQ,EAAM,QAAU,EAAQ,EAClD,CAAC,kBAAiB,cAAa,oBAAmB,iBAAiB,EAAA,EAAsC,CAC3G,OAAQ,EACR,SAAU,EACV,SAAU,GACV,MAAO,EACV,CAAC,CAGI,GAAA,EAAA,EAAA,aACD,GAA+C,CAC5C,IAAW,EAAM,CACb,GAAO,UAAY,GACnB,EAAM,SAAS,EAAM,EAG7B,CAAC,EAAU,EAAO,EAAM,CAC3B,CAED,OACI,EAAA,EAAA,MAAC,QAAD,CACI,UAAW,EAAA,EACP,QACA,EACA,IAAkB,QAAU,aAC5B,GAAoB,WACpB,EACH,CACM,iBARX,EAUI,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAA,EAAG,SAAU,SAAS,IAAiB,EAAgB,CAAE,cAAe,WAAzF,CACK,GACD,EAAA,EAAA,KAAC,QAAD,CACS,MACL,KAAK,QACL,KAAM,EACF,KACG,QACP,QAAS,EACT,eAAiB,EAAyB,IAAA,GAAjB,EACzB,SAAU,EACV,SAAU,EACV,UAAY,GAAU,EACd,EAAM,MAAQ,KAAO,EAAM,MAAQ,UACnC,EAAc,EAAM,cAAc,cAAwC,EAGlF,UAAU,QACZ,CAAA,CACC,GACN,IAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sBAAc,EAAa,CAAA,CACjD,IAEd,CCjFF,SAAgB,EAAY,CACxB,OACA,QACA,eACA,WACA,YAAY,WACZ,WACA,WAAW,GACX,OAAO,KACP,QAAQ,UACR,QAAQ,GACR,YACA,QACA,YACA,SACiB,CACjB,GAAM,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,EAAa,CAC1D,EAAe,IAAU,IAAA,GAAoB,EAAR,EAGrC,GAAA,EAAA,EAAA,aACD,GAAgB,CACT,IAAU,IAAA,IACV,EAAiB,EAAI,CAEzB,IAAW,EAAI,EAEnB,CAAC,EAAU,EAAM,CACpB,CAGK,GAAA,EAAA,EAAA,cACK,CAAC,OAAM,MAAO,EAAc,WAAU,OAAM,QAAO,SAAU,EAAa,EACjF,CAAC,EAAM,EAAc,EAAU,EAAM,EAAO,EAAa,CAC5D,CAED,OACI,EAAA,EAAA,KAAC,EAAa,SAAd,CAAuB,MAAO,YAC1B,EAAA,EAAA,MAAC,WAAD,CAAU,UAAW,EAAA,EAAG,cAAe,EAAW,EAAU,CAAS,QAAO,KAAK,sBAAjF,CACK,IAAS,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAW,EAAA,EAAG,QAAS,GAAS,QAAQ,UAAG,EAAe,CAAA,CAC3E,EACA,IACG,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,cAAc,KAAK,iBAC9B,EACE,CAAA,CAEJ,GACS,CAAA,CChDhC,SAAgB,EAAU,CACtB,aACA,UAAU,GACV,UAAU,GACV,SACA,QACA,OAAO,GACP,gBAAgB,IAChB,UAAU,WACV,QAAQ,UACR,QAAQ,YACR,eAAe,aACf,YAAY,mBACZ,YACA,GAAG,GACY,CACf,IAAM,GAAA,EAAA,EAAA,QAAqC,KAAK,CAC1C,GAAA,EAAA,EAAA,QAAqB,EAAW,CACtC,EAAY,QAAU,GAEtB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,GAAW,EAAS,OAElC,IAAM,EAAW,EAAY,QAC7B,GAAI,CAAC,EAAU,OAEf,IAAM,EAAW,IAAI,qBAChB,GAAY,CACL,EAAQ,GAAG,gBACX,EAAY,SAAS,EAG7B,CAAC,WAAY,GAAG,EAAc,IAAI,CACrC,CAGD,OADA,EAAS,QAAQ,EAAS,KACb,EAAS,YAAY,EACnC,CAAC,EAAM,EAAS,EAAS,EAAc,CAAC,CAE3C,IAAM,GAAA,EAAA,EAAA,iBAAgC,CAC9B,CAAC,GAAW,GAAS,GAAY,EACtC,CAAC,EAAY,EAAS,EAAQ,CAAC,CAE5B,EAAY,IAAW,IAAA,IAAa,IAAU,IAAA,GAEpD,OACI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,EAAG,YAAa,EAAU,CAAE,GAAI,WAAhD,CACK,IACG,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,2BAAhB,CACK,EAAO,MAAI,EACT,GAGV,GACG,EAAA,EAAA,KAAC,EAAA,EAAD,CACa,UACF,QACE,UACT,QAAS,EACT,UAAU,yBAET,EAAU,EAAe,EACpB,CAAA,EAEV,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,0BAAkB,EAAiB,CAAA,CAGtD,GAAQ,IAAW,EAAA,EAAA,KAAC,MAAD,CAAK,IAAK,EAAa,UAAU,qBAAuB,CAAA,CAE3E,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0BACX,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,qBAAqB,MAAO,CAAC,MAAO,GAAG,KAAK,IAAK,EAAS,EAAS,IAAK,IAAI,CAAC,GAAG,CAAI,CAAA,CACjG,CAAA,CAER,GCzEd,SAAgB,EAAW,CACvB,YAAY,IACZ,UAAU,SACV,QAAQ,UACR,SAAS,GACT,aACgB,CAChB,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CAe7C,OAbA,EAAA,EAAA,eAAgB,CACZ,SAAS,GAAW,CAChB,EAAW,OAAO,QAAU,EAAU,CAI1C,OAFA,GAAU,CACV,OAAO,iBAAiB,SAAU,EAAU,CAAC,QAAS,GAAK,CAAC,KAC/C,OAAO,oBAAoB,SAAU,EAAS,EAC5D,CAAC,EAAU,CAAC,EAOX,EAAA,EAAA,KAAC,EAAA,EAAD,CACa,UACF,QACP,MAAM,SACN,KAAK,KACL,SAAA,GACA,SAAA,EAAA,EAAA,iBAX8B,CAClC,OAAO,SAAS,CAAC,IAAK,EAAG,SAAU,EAAS,SAAW,UAAU,CAAC,EACnE,CAAC,EAAO,CAAC,CAUJ,aAAW,gBACX,UAAW,EAAA,EAAG,aAAc,GAAW,UAAW,EAAU,WAE5D,EAAA,EAAA,KAAC,EAAA,GAAD,EAAgB,CAAA,CACV,CAAA,CCrClB,SAAS,EAAW,EAAqB,EAAwB,CAC7D,OACI,EAAA,EAAA,KAAC,MAAD,CAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAA6B,cAAY,OAAO,GAAI,EAC1F,WACC,CAAA,CAId,SAAgB,EAAiB,EAAwB,CACrD,OAAO,GACH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,SAAD,CAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,OAAO,KAAK,OAAO,OAAO,UAAU,YAAY,MAAQ,CAAA,EAClF,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,6HACF,KAAK,UACP,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,0JACF,KAAK,UACP,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,qHACF,KAAK,UACP,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,qIACF,KAAK,UACP,CAAA,CACH,CAAA,CAAA,CACH,EACH,CAGL,SAAgB,EAAmB,EAAwB,CACvD,OAAO,GACH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,MAAM,EAAE,MAAM,MAAM,OAAO,OAAO,OAAO,GAAG,MAAM,KAAK,UAAY,CAAA,EAC3E,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,qJACF,KAAK,OACP,CAAA,CACH,CAAA,CAAA,CACH,EACH,CAGL,SAAgB,EAAgB,EAAwB,CACpD,OAAO,GACH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,kUACF,KAAK,eACP,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,+GACF,KAAK,eACP,CAAA,CACH,CAAA,CAAA,CACH,EACH,CAGL,SAAgB,EAAoB,EAAwB,CACxD,OAAO,GACH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,MAAM,EAAE,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,MAAM,KAAK,UAAY,CAAA,EACzE,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,OAAO,EAAE,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,MAAM,KAAK,UAAY,CAAA,EAC1E,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,GAAG,MAAM,KAAK,UAAY,CAAA,EAC1E,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,OAAO,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,GAAG,MAAM,KAAK,UAAY,CAAA,CAC5E,CAAA,CAAA,CACH,EACH,CAGL,SAAgB,EAAoB,EAAwB,CACxD,OAAO,GACH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,SAAD,CAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,OAAO,KAAK,OAAS,CAAA,EAC/C,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,weACF,KAAK,UACP,CAAA,CACH,CAAA,CAAA,CACH,EACH,CAGL,SAAgB,EAAmB,EAAwB,CACvD,OAAO,GACH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,MAAM,EAAE,MAAM,MAAM,OAAO,OAAO,OAAO,GAAG,MAAM,KAAK,OAAS,CAAA,EACxE,EAAA,EAAA,KAAC,OAAD,CACI,EAAE,gQACF,KAAK,UACP,CAAA,CACH,CAAA,CAAA,CACH,EACH,CCtFL,IAAM,EAAqB,CACvB,OAAQ,CACJ,MAAO,sBACP,UAAW,SACX,KAAM,SACN,KAAM,EACT,CACD,SAAU,CACN,MAAO,wBACP,UAAW,WACX,KAAM,UACN,KAAM,EACT,CACD,MAAO,CACH,MAAO,qBACP,UAAW,QACX,KAAM,QACN,KAAM,EACT,CACD,UAAW,CACP,MAAO,yBACP,UAAW,YACX,KAAM,QACN,KAAM,EACT,CACD,UAAW,CACP,MAAO,yBACP,UAAW,YACX,KAAM,QACN,KAAM,EACT,CACD,SAAU,CACN,MAAO,wBACP,UAAW,WACX,KAAM,QACN,KAAM,EACT,CACJ,CAEY,GAAA,EAAA,EAAA,YAAkE,SAC3E,CACI,WAAW,SACX,UAAU,UACV,OAAO,KACP,WAAW,GACX,YAAY,SACZ,YAAY,GACZ,UAAU,GACV,SAAS,GACT,UAAU,GACV,cAAc,SACd,cACA,YACA,QACA,WACA,WAAW,GACX,OAAO,SACP,gBACA,YACA,aAAc,EACd,GAAG,GAEP,EACF,CACE,IAAM,EAAS,EAAmB,GAC5B,EAAO,EAAO,KACd,EAAQ,GAAY,EAAO,MAC3B,EAAoB,IAAc,EAAW,EAAO,UAAY,IAAA,IAChE,EAAkB,EAAO,OAAS,SAAW,EAAU,EAAO,KAC9D,EAAa,GAAY,EACzB,CAAC,kBAAiB,cAAa,oBAAmB,iBAAiB,EAAA,EAAwC,CAC7G,OAAQ,EACR,SAAU,EACV,SAAU,EACV,MAAO,EACV,CAAC,CAEF,OACI,EAAA,EAAA,MAAC,SAAD,CACS,MACC,OACN,UAAW,EAAA,EACP,qBACA,EACA,EACA,EACA,GAAa,aACb,GAAY,YACZ,GAAY,cAAc,IAC1B,GAAW,UACX,GAAU,SACV,GAAW,UACX,GAAc,WACd,EACA,EACH,CACM,QACP,SAAU,EACV,YAAW,GAAW,IAAA,GACtB,aAAY,EACZ,cAAgB,GAAU,CACtB,EAAkB,EAAM,CACxB,IAAgB,EAAM,EAE1B,UAAY,GAAU,EACd,EAAM,MAAQ,KAAO,EAAM,MAAQ,UACnC,EAAc,EAAM,cAAc,CAGtC,IAAY,EAAM,EAEtB,GAAI,WAjCR,CAmCK,EACA,IAAW,EAAA,EAAA,KAAC,EAAA,EAAD,CAAU,KAAK,KAAK,MAAM,UAAU,UAAU,wBAAwB,cAAY,OAAS,CAAA,EACvG,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sBAAsB,cAAY,iBAC9C,EAAA,EAAA,KAAC,EAAD,CAAM,UAAU,qBAAuB,CAAA,CACpC,CAAA,CACN,CAAC,IAAY,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAuB,EAAa,CAAA,CAC7D,IAEf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t } from "./cn-
|
|
3
|
-
import { t as n } from "./useInteractionEffect-
|
|
4
|
-
import { i as r, r as i, t as a } from "./MButton-
|
|
1
|
+
import { Oi as e } from "./icons-D5DK-J2C.js";
|
|
2
|
+
import { t } from "./cn-YER3QsV1.js";
|
|
3
|
+
import { t as n } from "./useInteractionEffect-DtpbVd77.js";
|
|
4
|
+
import { i as r, r as i, t as a } from "./MButton-BJdrNg2I.js";
|
|
5
5
|
import { createContext as o, forwardRef as s, useCallback as c, useContext as l, useEffect as u, useMemo as d, useRef as f, useState as p } from "react";
|
|
6
6
|
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/controls/MButtonGroup/MButtonGroup.tsx
|
|
@@ -406,4 +406,4 @@ var j = {
|
|
|
406
406
|
//#endregion
|
|
407
407
|
export { b as a, x as i, C as n, _ as o, S as r, M as t };
|
|
408
408
|
|
|
409
|
-
//# sourceMappingURL=controls-
|
|
409
|
+
//# sourceMappingURL=controls-Dbev0qSy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls-Dbev0qSy.js","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx","../src/components/controls/MRadio/RadioContext.ts","../src/components/controls/MRadio/MRadio.tsx","../src/components/controls/MRadio/MRadioGroup.tsx","../src/components/controls/MLoadMore/MLoadMore.tsx","../src/components/controls/MScrollTop/MScrollTop.tsx","../src/components/controls/MSocialButton/MSocialButton.icons.tsx","../src/components/controls/MSocialButton/MSocialButton.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n","import {createContext, useContext} from 'react'\nimport type {MRadioGroupContextValue} from './MRadio.types'\n\nexport const RadioContext = createContext<MRadioGroupContextValue | null>(null)\n\n// Read the nearest radio-group context when a radio participates in grouped state.\nexport function useRadioGroup(): MRadioGroupContextValue | null {\n return useContext(RadioContext)\n}\n","import {forwardRef, useCallback} from 'react'\nimport type * as React from 'react'\nimport type {MRadioProps} from './MRadio.types'\nimport {useRadioGroup} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MRadio.css'\n\n// Render a single radio that can work standalone or inside MRadioGroup.\nexport const MRadio = forwardRef<HTMLInputElement, MRadioProps>(function MRadio(\n {\n checked,\n defaultChecked,\n name,\n id,\n value,\n disabled = false,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n onChange,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n },\n ref\n) {\n const group = useRadioGroup()\n\n const resolvedName = group?.name ?? name\n const resolvedDisabled = group?.disabled ?? disabled\n const resolvedSize = group?.size ?? size\n const resolvedColor = group?.color ?? color\n const resolvedChecked = group ? group.value === value : checked\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect,\n disabled: resolvedDisabled,\n centered: true,\n color: rippleColor,\n })\n\n // Delegate selection back to the group when one is present.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n if (group?.onChange && value) {\n group.onChange(value)\n }\n },\n [onChange, group, value]\n )\n\n return (\n <label\n className={cn(\n 'radio',\n resolvedSize,\n labelPosition === 'left' && 'label-left',\n resolvedDisabled && 'disabled',\n className\n )}\n style={style}\n >\n <span className={cn('circle', `color-${resolvedColor}`, effectClassName)} onPointerDown={handlePointerDown}>\n {effectLayer}\n <input\n ref={ref}\n type=\"radio\"\n name={resolvedName}\n id={id}\n value={value}\n checked={resolvedChecked}\n defaultChecked={!group ? defaultChecked : undefined}\n disabled={resolvedDisabled}\n onChange={handleChange}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget.parentElement as HTMLSpanElement | null)\n }\n }}\n className=\"input\"\n />\n </span>\n {label && <span className=\"label-text\">{label}</span>}\n </label>\n )\n})\n","import {useState, useCallback, useMemo} from 'react'\nimport type {MRadioGroupProps} from './MRadio.types'\nimport {RadioContext} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport './MRadio.css'\n\n// Coordinate multiple radio items through shared context and optional controlled state.\nexport function MRadioGroup({\n name,\n value,\n defaultValue,\n onChange,\n direction = 'vertical',\n children,\n disabled = false,\n size = 'md',\n color = 'primary',\n error = false,\n errorText,\n label,\n className,\n style,\n}: MRadioGroupProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const currentValue = value !== undefined ? value : internalValue\n\n // Mirror controlled and uncontrolled usage with the same group API.\n const handleChange = useCallback(\n (val: string) => {\n if (value === undefined) {\n setInternalValue(val)\n }\n onChange?.(val)\n },\n [onChange, value]\n )\n\n // Memoize context so nested radios only update when relevant inputs change.\n const ctx = useMemo(\n () => ({name, value: currentValue, disabled, size, color, onChange: handleChange}),\n [name, currentValue, disabled, size, color, handleChange]\n )\n\n return (\n <RadioContext.Provider value={ctx}>\n <fieldset className={cn('radio-group', direction, className)} style={style} role=\"radiogroup\">\n {label && <legend className={cn('label', error && 'error')}>{label}</legend>}\n {children}\n {errorText && (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n </fieldset>\n </RadioContext.Provider>\n )\n}\n","import {useEffect, useRef, useCallback} from 'react'\nimport type {MLoadMoreProps} from './MLoadMore.types'\nimport {MButton} from '../MButton'\nimport {cn} from '../../../utils/cn'\nimport './MLoadMore.css'\n\nexport function MLoadMore({\n onLoadMore,\n loading = false,\n hasMore = true,\n loaded,\n total,\n auto = false,\n autoThreshold = 100,\n variant = 'outlined',\n color = 'primary',\n label = 'Load more',\n loadingLabel = 'Loading...',\n doneLabel = 'All items loaded',\n className,\n ...rest\n}: MLoadMoreProps) {\n const sentinelRef = useRef<HTMLDivElement>(null)\n const loadMoreRef = useRef(onLoadMore)\n loadMoreRef.current = onLoadMore\n\n useEffect(() => {\n if (!auto || !hasMore || loading) return\n\n const sentinel = sentinelRef.current\n if (!sentinel) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n loadMoreRef.current()\n }\n },\n {rootMargin: `${autoThreshold}px`}\n )\n\n observer.observe(sentinel)\n return () => observer.disconnect()\n }, [auto, hasMore, loading, autoThreshold])\n\n const handleClick = useCallback(() => {\n if (!loading && hasMore) onLoadMore()\n }, [onLoadMore, loading, hasMore])\n\n const showCount = loaded !== undefined && total !== undefined\n\n return (\n <div className={cn('load-more', className)} {...rest}>\n {showCount && (\n <span className=\"load-more-count\">\n {loaded} / {total}\n </span>\n )}\n\n {hasMore ? (\n <MButton\n variant={variant}\n color={color}\n loading={loading}\n onClick={handleClick}\n className=\"load-more-btn\"\n >\n {loading ? loadingLabel : label}\n </MButton>\n ) : (\n <span className=\"load-more-done\">{doneLabel}</span>\n )}\n\n {auto && hasMore && <div ref={sentinelRef} className=\"load-more-sentinel\" />}\n\n {showCount && (\n <div className=\"load-more-bar\">\n <div className=\"load-more-bar-fill\" style={{width: `${Math.min((loaded / total) * 100, 100)}%`}} />\n </div>\n )}\n </div>\n )\n}\n","import {useState, useEffect, useCallback} from 'react'\nimport type {MScrollTopProps} from './MScrollTop.types'\nimport {MButton} from '../MButton'\nimport {MArrowUpIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MScrollTop.css'\n\nexport function MScrollTop({\n threshold = 300,\n variant = 'filled',\n color = 'primary',\n smooth = true,\n className,\n}: MScrollTopProps) {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n function onScroll() {\n setVisible(window.scrollY > threshold)\n }\n onScroll()\n window.addEventListener('scroll', onScroll, {passive: true})\n return () => window.removeEventListener('scroll', onScroll)\n }, [threshold])\n\n const scrollToTop = useCallback(() => {\n window.scrollTo({top: 0, behavior: smooth ? 'smooth' : 'instant'})\n }, [smooth])\n\n return (\n <MButton\n variant={variant}\n color={color}\n shape=\"circle\"\n size=\"lg\"\n iconOnly\n onClick={scrollToTop}\n aria-label=\"Scroll to top\"\n className={cn('scroll-top', visible && 'visible', className)}\n >\n <MArrowUpIcon />\n </MButton>\n )\n}\n","import type {ReactNode, SVGProps} from 'react'\n\ntype SocialMarkProps = SVGProps<SVGSVGElement>\n\nfunction createMark(children: ReactNode, props: SocialMarkProps) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" {...props}>\n {children}\n </svg>\n )\n}\n\nexport function SocialGoogleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.2\" fill=\"#fff\" stroke=\"#dadce0\" strokeWidth=\"1.2\" />\n <path\n d=\"M17.95 12.25c0-.48-.04-.83-.13-1.2H12v2.26h3.42c-.07.56-.48 1.4-1.4 1.97l-.01.08 2 1.52.14.02c1.28-1.15 1.8-2.84 1.8-4.65z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 18.2c1.67 0 3.07-.54 4.1-1.48l-2.13-1.62c-.57.39-1.34.67-1.97.67-1.64 0-3.03-1.06-3.53-2.53l-.08.01-2.08 1.58-.03.08c1.02 1.97 3.09 3.29 5.72 3.29z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M8.47 13.24a3.72 3.72 0 0 1-.2-1.24c0-.43.08-.84.19-1.24l-.01-.08-2.1-1.6-.07.03a6.02 6.02 0 0 0 0 5.78l2.19-1.65z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 8.22c.8 0 1.53.27 2.1.8l1.54-1.48C14.99 6.96 13.67 6.5 12 6.5c-2.63 0-4.7 1.32-5.72 3.29l2.18 1.66c.5-1.47 1.9-2.53 3.54-2.53z\"\n fill=\"#EA4335\"\n />\n </>,\n props\n )\n}\n\nexport function SocialFacebookMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.2\" y=\"2.2\" width=\"19.6\" height=\"19.6\" rx=\"6.2\" fill=\"#1877F2\" />\n <path\n d=\"M13.28 20v-6.02h2.02l.31-2.43h-2.33V10c0-.78.27-1.37 1.35-1.37h1.11V6.4c-.4-.06-1.09-.11-2.03-.11-2.3 0-3.64 1.22-3.64 3.76v1.49h-1.9v2.44h1.9V20z\"\n fill=\"#fff\"\n />\n </>,\n props\n )\n}\n\nexport function SocialAppleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <path\n d=\"M15.38 11.84c.02 2.33 2.04 3.1 2.07 3.12-.03.07-.33 1.09-1.06 2.16-.63.91-1.3 1.84-2.34 1.86-1.03.02-1.37-.61-2.57-.61-1.2 0-1.57.59-2.53.63-1.02.04-1.79-1.01-2.43-1.92-1.3-1.89-2.3-5.33-.97-7.64.67-1.15 1.86-1.88 3.14-1.9.98-.02 1.89.65 2.57.65.67 0 1.92-.81 3.24-.69.55.02 2.1.22 3.09 1.67-.08.05-1.84 1.07-1.81 2.67z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.59 4.67c.53-.64.9-1.52.8-2.42-.77.04-1.69.52-2.24 1.15-.5.58-.93 1.49-.82 2.35.86.07 1.72-.44 2.26-1.08z\"\n fill=\"currentColor\"\n />\n </>,\n props\n )\n}\n\nexport function SocialMicrosoftMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"3.5\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#F25022\" />\n <rect x=\"12.7\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#7FBA00\" />\n <rect x=\"3.5\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#00A4EF\" />\n <rect x=\"12.7\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#FFB900\" />\n </>,\n props\n )\n}\n\nexport function SocialPinterestMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.1\" fill=\"#fff\" />\n <path\n d=\"M12.87 6.76c-2.95 0-4.74 2.03-4.74 4.34 0 1.65.92 3.07 2.38 3.62.1.03.14.01.17-.06l.32-1.23c.05-.14.02-.19-.09-.33-.26-.33-.47-.96-.47-1.57 0-1.52 1.14-2.97 3.08-2.97 1.68 0 2.86 1.14 2.86 2.78 0 1.86-.93 3.13-2.14 3.13-.67 0-1.17-.56-1-1.23.18-.8.55-1.64.55-2.2 0-.51-.28-.93-.84-.93-.67 0-1.2.69-1.2 1.62 0 .59.2.99.2.99l-.78 3.28c-.14.58-.03 1.55.01 1.68.02.08.1.1.15.03.09-.11 1.07-1.49 1.24-2.18l.27-1.06c.25.48.99.89 1.77.89 2.34 0 4.04-2.15 4.04-4.79 0-2.54-2.08-4.44-4.78-4.44z\"\n fill=\"#E60023\"\n />\n </>,\n props\n )\n}\n\nexport function SocialLinkedInMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.4\" y=\"2.4\" width=\"19.2\" height=\"19.2\" rx=\"4.8\" fill=\"#fff\" />\n <path\n d=\"M8.1 10.02h2.04v7.24H8.1zm1.03-3.22a1.17 1.17 0 1 1 0 2.35 1.17 1.17 0 0 1 0-2.35zm2.68 3.22h1.95v.99c.34-.61 1.08-1.15 2.13-1.15 2.15 0 2.82 1.42 2.82 3.78v3.62h-2.04v-3.26c0-.98-.35-1.67-1.23-1.67-.66 0-1.05.45-1.23.88-.08.16-.08.38-.08.59v3.46h-2.32z\"\n fill=\"#0A66C2\"\n />\n </>,\n props\n )\n}\n","import {forwardRef} from 'react'\nimport type {MSocialButtonProps} from './MSocialButton.types'\nimport {\n SocialAppleMark,\n SocialFacebookMark,\n SocialGoogleMark,\n SocialLinkedInMark,\n SocialMicrosoftMark,\n SocialPinterestMark,\n} from './MSocialButton.icons'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MSocialButton.css'\n\nconst socialButtonConfig = {\n google: {\n label: 'Sign in with Google',\n iconLabel: 'Google',\n mode: 'google',\n Icon: SocialGoogleMark,\n },\n facebook: {\n label: 'Sign in with Facebook',\n iconLabel: 'Facebook',\n mode: 'outline',\n Icon: SocialFacebookMark,\n },\n apple: {\n label: 'Sign in with Apple',\n iconLabel: 'Apple',\n mode: 'brand',\n Icon: SocialAppleMark,\n },\n microsoft: {\n label: 'Sign in with Microsoft',\n iconLabel: 'Microsoft',\n mode: 'brand',\n Icon: SocialMicrosoftMark,\n },\n pinterest: {\n label: 'Sign in with Pinterest',\n iconLabel: 'Pinterest',\n mode: 'brand',\n Icon: SocialPinterestMark,\n },\n linkedin: {\n label: 'Sign in with LinkedIn',\n iconLabel: 'LinkedIn',\n mode: 'brand',\n Icon: SocialLinkedInMark,\n },\n} as const\n\nexport const MSocialButton = forwardRef<HTMLButtonElement, MSocialButtonProps>(function MSocialButton(\n {\n platform = 'google',\n variant = 'outline',\n size = 'md',\n iconOnly = false,\n iconShape = 'circle',\n fullWidth = false,\n loading = false,\n active = false,\n pulsing = false,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onPointerDown,\n onKeyDown,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref\n) {\n const config = socialButtonConfig[platform]\n const Icon = config.Icon\n const label = children ?? config.label\n const resolvedAriaLabel = ariaLabel ?? (iconOnly ? config.iconLabel : undefined)\n const resolvedVariant = config.mode === 'google' ? variant : config.mode\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLButtonElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n 'social-button-root',\n platform,\n resolvedVariant,\n size,\n fullWidth && 'full-width',\n iconOnly && 'icon-only',\n iconOnly && `icon-shape-${iconShape}`,\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n aria-label={resolvedAriaLabel}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget)\n }\n\n onKeyDown?.(event)\n }}\n {...rest}\n >\n {effectLayer}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" className=\"social-button-spinner\" aria-hidden=\"true\" />}\n <span className=\"social-button-brand\" aria-hidden=\"true\">\n <Icon className=\"social-button-mark\" />\n </span>\n {!iconOnly && <span className=\"social-button-label\">{label}</span>}\n </button>\n )\n})\n"],"mappings":"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"}
|
package/dist/controls.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const {ensureStyles}=require('./style-runtime.cjs')
|
|
2
2
|
ensureStyles()
|
|
3
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MButton-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MButton-CX8SV1m0.cjs`),t=require(`./MToggle-GhhAJgUa.cjs`),n=require(`./controls-BFmZuejK.cjs`),r=require(`./MCheckbox-CAZA97h7.cjs`),i=require(`./MSlider-YDSrVUQ8.cjs`);exports.MButton=e.t,exports.MButtonGroup=n.o,exports.MCheckbox=r.t,exports.MLoadMore=n.r,exports.MRadio=n.a,exports.MRadioGroup=n.i,exports.MScrollTop=n.n,exports.MSlider=i.t,exports.MSocialButton=n.t,exports.MToggle=t.t;
|
package/dist/controls.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {ensureStyles} from './style-runtime.js'
|
|
2
2
|
ensureStyles()
|
|
3
|
-
import { t as e } from "./MButton-
|
|
4
|
-
import { t } from "./MToggle-
|
|
5
|
-
import { a as n, i as r, n as i, o as a, r as o, t as s } from "./controls-
|
|
6
|
-
import { t as c } from "./MCheckbox-
|
|
7
|
-
import { t as l } from "./MSlider-
|
|
3
|
+
import { t as e } from "./MButton-BJdrNg2I.js";
|
|
4
|
+
import { t } from "./MToggle-BbSDIAJq.js";
|
|
5
|
+
import { a as n, i as r, n as i, o as a, r as o, t as s } from "./controls-Dbev0qSy.js";
|
|
6
|
+
import { t as c } from "./MCheckbox-DfCD0EtS.js";
|
|
7
|
+
import { t as l } from "./MSlider-BlgzLtHa.js";
|
|
8
8
|
export { e as MButton, a as MButtonGroup, c as MCheckbox, o as MLoadMore, n as MRadio, r as MRadioGroup, i as MScrollTop, l as MSlider, s as MSocialButton, t as MToggle };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MCookieBootstrap-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MCookieBootstrap-Fxpem-gF.cjs`);function t(e){return`${e.storageKey??`mineralui-cookie-consent`}-key`}function n(e){if(typeof window>`u`)return null;try{return window.localStorage.getItem(e)}catch{return null}}function r(e,t){if(!(typeof window>`u`||!t))try{window.localStorage.setItem(e,t)}catch{}}function i(t){typeof window>`u`||(window[e.o]=t.config,window[e.c]=t,window.dispatchEvent(new CustomEvent(e.l)))}function a(e){if(typeof document>`u`)return null;for(let t of Array.from(document.querySelectorAll(`script[src]`)))try{let n=new URL(t.src,window.location.href);if(n.href===e.href||n.origin===e.origin&&n.pathname===e.pathname)return t}catch{}return null}function o(e,i,a){let o=`${i.origin}/cookie/sites/${encodeURIComponent(a)}`,s=t(e);return{config:e,getDeclaration:async()=>{let e=await fetch(`${o}/declaration`);return e.ok?(await e.json()).items??[]:[]},getConsent:async()=>{let e=n(s);if(!e)return null;let t=await fetch(`${o}/consent?consentKey=${encodeURIComponent(e)}`);return t.ok?(await t.json()).state??null:null},saveConsent:async t=>{let i=n(s),a=await fetch(`${o}/consent`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({...i?{consentKey:i}:{},version:t.version,decidedAt:t.decidedAt,source:t.source,categories:t.categories,domain:typeof window<`u`?window.location.hostname:e.domain??null})});a.ok&&r(s,(await a.json()).consentKey)}}}async function s(){if(typeof window>`u`||typeof fetch>`u`)return null;let t=window[e.o];if(t)return t;let n;try{n=new URL({}.url)}catch{return null}let r=a(n),s=r?.dataset.siteKey??n.searchParams.get(`siteKey`);if(!s)return null;let c=r?.dataset.configEndpoint??n.searchParams.get(`configEndpoint`)??`${n.origin}/cookie/bootstrap/${encodeURIComponent(s)}`;try{let e=await fetch(c,{headers:{"x-mineral-site-key":s}});if(!e.ok)return null;let t=await e.json(),a={...t,siteKey:t.siteKey??s,scanEndpoint:t.scanEndpoint??r?.dataset.scanEndpoint??n.searchParams.get(`scanEndpoint`)??void 0};return i(o(a,n,s)),a}catch{return null}}s().finally(()=>{e.t()}),exports.MCOOKIE_BOOTSTRAP_CONFIG_KEY=e.o,exports.MCOOKIE_CONSENT_CHANGE_EVENT=e.s,exports.MCOOKIE_RUNTIME_KEY=e.c,exports.MCOOKIE_RUNTIME_READY_EVENT=e.l,exports.autoBootstrapMCookieConsent=e.t,exports.bootstrapMCookieConsent=e.n,exports.readMCookieBootstrapConfig=e.r,exports.reportMCookieSurface=e.i,exports.scanMCookieSurface=e.a;
|
|
2
2
|
//# sourceMappingURL=cookie-consent-bootstrap.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-consent-bootstrap.cjs","names":[],"sources":["../src/cookie-consent-bootstrap.ts"],"sourcesContent":["export * from './components/feedback/MCookie/MCookieBootstrap'\n\nimport {\n autoBootstrapMCookieConsent,\n MCOOKIE_BOOTSTRAP_CONFIG_KEY,\n MCOOKIE_RUNTIME_KEY,\n MCOOKIE_RUNTIME_READY_EVENT,\n} from './components/feedback/MCookie/MCookieBootstrap'\nimport type {
|
|
1
|
+
{"version":3,"file":"cookie-consent-bootstrap.cjs","names":[],"sources":["../src/cookie-consent-bootstrap.ts"],"sourcesContent":["export * from './components/feedback/MCookie/MCookieBootstrap'\n\nimport {\n autoBootstrapMCookieConsent,\n MCOOKIE_BOOTSTRAP_CONFIG_KEY,\n MCOOKIE_RUNTIME_KEY,\n MCOOKIE_RUNTIME_READY_EVENT,\n} from './components/feedback/MCookie/MCookieBootstrap'\nimport type {MCookieBootstrapConfig, MCookieRuntime} from './components/feedback/MCookie/MCookieBootstrap'\nimport type {MCookieConsentState} from './components/feedback/MCookie/MCookieConsentProvider'\n\nfunction getConsentKeyStorageKey(config: MCookieBootstrapConfig) {\n return `${config.storageKey ?? 'mineralui-cookie-consent'}-key`\n}\n\nfunction readStoredConsentKey(storageKey: string) {\n if (typeof window === 'undefined') {\n return null\n }\n\n try {\n return window.localStorage.getItem(storageKey)\n } catch {\n return null\n }\n}\n\nfunction writeStoredConsentKey(storageKey: string, consentKey: string | null | undefined) {\n if (typeof window === 'undefined' || !consentKey) {\n return\n }\n\n try {\n window.localStorage.setItem(storageKey, consentKey)\n } catch {\n // ignore storage issues\n }\n}\n\nfunction dispatchRuntimeReady(runtime: MCookieRuntime) {\n if (typeof window === 'undefined') {\n return\n }\n\n window[MCOOKIE_BOOTSTRAP_CONFIG_KEY] = runtime.config\n window[MCOOKIE_RUNTIME_KEY] = runtime\n window.dispatchEvent(new CustomEvent(MCOOKIE_RUNTIME_READY_EVENT))\n}\n\nfunction findBootstrapScriptElement(scriptUrl: URL) {\n if (typeof document === 'undefined') {\n return null\n }\n\n for (const candidate of Array.from(document.querySelectorAll<HTMLScriptElement>('script[src]'))) {\n try {\n const candidateUrl = new URL(candidate.src, window.location.href)\n\n if (candidateUrl.href === scriptUrl.href) {\n return candidate\n }\n\n if (candidateUrl.origin === scriptUrl.origin && candidateUrl.pathname === scriptUrl.pathname) {\n return candidate\n }\n } catch {\n // ignore invalid script urls\n }\n }\n\n return null\n}\n\nfunction createRuntime(config: MCookieBootstrapConfig, scriptUrl: URL, siteKey: string): MCookieRuntime {\n const cookieSiteBase = `${scriptUrl.origin}/cookie/sites/${encodeURIComponent(siteKey)}`\n const consentKeyStorage = getConsentKeyStorageKey(config)\n\n return {\n config,\n getDeclaration: async () => {\n const response = await fetch(`${cookieSiteBase}/declaration`)\n\n if (!response.ok) {\n return []\n }\n\n const payload = await response.json()\n return payload.items ?? []\n },\n getConsent: async () => {\n const consentKey = readStoredConsentKey(consentKeyStorage)\n\n if (!consentKey) {\n return null\n }\n\n const response = await fetch(`${cookieSiteBase}/consent?consentKey=${encodeURIComponent(consentKey)}`)\n\n if (!response.ok) {\n return null\n }\n\n const payload = await response.json()\n return payload.state ?? null\n },\n saveConsent: async (state: MCookieConsentState) => {\n const consentKey = readStoredConsentKey(consentKeyStorage)\n const response = await fetch(`${cookieSiteBase}/consent`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n ...(consentKey ? {consentKey} : {}),\n version: state.version,\n decidedAt: state.decidedAt,\n source: state.source,\n categories: state.categories,\n domain: typeof window !== 'undefined' ? window.location.hostname : (config.domain ?? null),\n }),\n })\n\n if (!response.ok) {\n return\n }\n\n const payload = await response.json()\n writeStoredConsentKey(consentKeyStorage, payload.consentKey)\n },\n }\n}\n\nasync function resolveBootstrapConfigFromScript() {\n if (typeof window === 'undefined' || typeof fetch === 'undefined') {\n return null\n }\n\n const existingConfig = window[MCOOKIE_BOOTSTRAP_CONFIG_KEY]\n if (existingConfig) {\n return existingConfig\n }\n\n let scriptUrl: URL\n\n try {\n scriptUrl = new URL(import.meta.url)\n } catch {\n return null\n }\n\n const bootstrapScript = findBootstrapScriptElement(scriptUrl)\n const siteKey = bootstrapScript?.dataset.siteKey ?? scriptUrl.searchParams.get('siteKey')\n\n if (!siteKey) {\n return null\n }\n\n const configEndpoint =\n bootstrapScript?.dataset.configEndpoint ??\n scriptUrl.searchParams.get('configEndpoint') ??\n `${scriptUrl.origin}/cookie/bootstrap/${encodeURIComponent(siteKey)}`\n\n try {\n const response = await fetch(configEndpoint, {\n headers: {\n 'x-mineral-site-key': siteKey,\n },\n })\n\n if (!response.ok) {\n return null\n }\n\n const resolvedConfig = (await response.json()) as MCookieBootstrapConfig\n const mergedConfig: MCookieBootstrapConfig = {\n ...resolvedConfig,\n siteKey: resolvedConfig.siteKey ?? siteKey,\n scanEndpoint:\n resolvedConfig.scanEndpoint ??\n bootstrapScript?.dataset.scanEndpoint ??\n scriptUrl.searchParams.get('scanEndpoint') ??\n undefined,\n }\n\n dispatchRuntimeReady(createRuntime(mergedConfig, scriptUrl, siteKey))\n return mergedConfig\n } catch {\n return null\n }\n}\n\nvoid resolveBootstrapConfigFromScript().finally(() => {\n autoBootstrapMCookieConsent()\n})\n"],"mappings":"sHAWA,SAAS,EAAwB,EAAgC,CAC7D,MAAO,GAAG,EAAO,YAAc,2BAA2B,MAG9D,SAAS,EAAqB,EAAoB,CAC9C,GAAI,OAAO,OAAW,IAClB,OAAO,KAGX,GAAI,CACA,OAAO,OAAO,aAAa,QAAQ,EAAW,MAC1C,CACJ,OAAO,MAIf,SAAS,EAAsB,EAAoB,EAAuC,CAClF,YAAO,OAAW,KAAe,CAAC,GAItC,GAAI,CACA,OAAO,aAAa,QAAQ,EAAY,EAAW,MAC/C,GAKZ,SAAS,EAAqB,EAAyB,CAC/C,OAAO,OAAW,MAItB,OAAO,EAAA,GAAgC,EAAQ,OAC/C,OAAO,EAAA,GAAuB,EAC9B,OAAO,cAAc,IAAI,YAAY,EAAA,EAA4B,CAAC,EAGtE,SAAS,EAA2B,EAAgB,CAChD,GAAI,OAAO,SAAa,IACpB,OAAO,KAGX,IAAK,IAAM,KAAa,MAAM,KAAK,SAAS,iBAAoC,cAAc,CAAC,CAC3F,GAAI,CACA,IAAM,EAAe,IAAI,IAAI,EAAU,IAAK,OAAO,SAAS,KAAK,CAMjE,GAJI,EAAa,OAAS,EAAU,MAIhC,EAAa,SAAW,EAAU,QAAU,EAAa,WAAa,EAAU,SAChF,OAAO,OAEP,EAKZ,OAAO,KAGX,SAAS,EAAc,EAAgC,EAAgB,EAAiC,CACpG,IAAM,EAAiB,GAAG,EAAU,OAAO,gBAAgB,mBAAmB,EAAQ,GAChF,EAAoB,EAAwB,EAAO,CAEzD,MAAO,CACH,SACA,eAAgB,SAAY,CACxB,IAAM,EAAW,MAAM,MAAM,GAAG,EAAe,cAAc,CAO7D,OALK,EAAS,IAIE,MAAM,EAAS,MAAM,EACtB,OAAS,EAAE,CAJf,EAAE,EAMjB,WAAY,SAAY,CACpB,IAAM,EAAa,EAAqB,EAAkB,CAE1D,GAAI,CAAC,EACD,OAAO,KAGX,IAAM,EAAW,MAAM,MAAM,GAAG,EAAe,sBAAsB,mBAAmB,EAAW,GAAG,CAOtG,OALK,EAAS,IAIE,MAAM,EAAS,MAAM,EACtB,OAAS,KAJb,MAMf,YAAa,KAAO,IAA+B,CAC/C,IAAM,EAAa,EAAqB,EAAkB,CACpD,EAAW,MAAM,MAAM,GAAG,EAAe,UAAW,CACtD,OAAQ,OACR,QAAS,CACL,eAAgB,mBACnB,CACD,KAAM,KAAK,UAAU,CACjB,GAAI,EAAa,CAAC,aAAW,CAAG,EAAE,CAClC,QAAS,EAAM,QACf,UAAW,EAAM,UACjB,OAAQ,EAAM,OACd,WAAY,EAAM,WAClB,OAAQ,OAAO,OAAW,IAAc,OAAO,SAAS,SAAY,EAAO,QAAU,KACxF,CAAC,CACL,CAAC,CAEG,EAAS,IAKd,EAAsB,GADN,MAAM,EAAS,MAAM,EACY,WAAW,EAEnE,CAGL,eAAe,GAAmC,CAC9C,GAAI,OAAO,OAAW,KAAe,OAAO,MAAU,IAClD,OAAO,KAGX,IAAM,EAAiB,OAAO,EAAA,GAC9B,GAAI,EACA,OAAO,EAGX,IAAI,EAEJ,GAAI,CACA,EAAY,IAAI,IAAA,EAAA,CAAgB,IAAI,MAChC,CACJ,OAAO,KAGX,IAAM,EAAkB,EAA2B,EAAU,CACvD,EAAU,GAAiB,QAAQ,SAAW,EAAU,aAAa,IAAI,UAAU,CAEzF,GAAI,CAAC,EACD,OAAO,KAGX,IAAM,EACF,GAAiB,QAAQ,gBACzB,EAAU,aAAa,IAAI,iBAAiB,EAC5C,GAAG,EAAU,OAAO,oBAAoB,mBAAmB,EAAQ,GAEvE,GAAI,CACA,IAAM,EAAW,MAAM,MAAM,EAAgB,CACzC,QAAS,CACL,qBAAsB,EACzB,CACJ,CAAC,CAEF,GAAI,CAAC,EAAS,GACV,OAAO,KAGX,IAAM,EAAkB,MAAM,EAAS,MAAM,CACvC,EAAuC,CACzC,GAAG,EACH,QAAS,EAAe,SAAW,EACnC,aACI,EAAe,cACf,GAAiB,QAAQ,cACzB,EAAU,aAAa,IAAI,eAAe,EAC1C,IAAA,GACP,CAGD,OADA,EAAqB,EAAc,EAAc,EAAW,EAAQ,CAAC,CAC9D,OACH,CACJ,OAAO,MAIV,GAAkC,CAAC,YAAc,CAClD,EAAA,GAA6B,EAC/B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./MCookieBootstrap-
|
|
1
|
+
import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./MCookieBootstrap-BhTMPs8T.js";
|
|
2
2
|
//#region src/cookie-consent-bootstrap.ts
|
|
3
3
|
function l(e) {
|
|
4
4
|
return `${e.storageKey ?? "mineralui-cookie-consent"}-key`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-consent-bootstrap.js","names":[],"sources":["../src/cookie-consent-bootstrap.ts"],"sourcesContent":["export * from './components/feedback/MCookie/MCookieBootstrap'\n\nimport {\n autoBootstrapMCookieConsent,\n MCOOKIE_BOOTSTRAP_CONFIG_KEY,\n MCOOKIE_RUNTIME_KEY,\n MCOOKIE_RUNTIME_READY_EVENT,\n} from './components/feedback/MCookie/MCookieBootstrap'\nimport type {
|
|
1
|
+
{"version":3,"file":"cookie-consent-bootstrap.js","names":[],"sources":["../src/cookie-consent-bootstrap.ts"],"sourcesContent":["export * from './components/feedback/MCookie/MCookieBootstrap'\n\nimport {\n autoBootstrapMCookieConsent,\n MCOOKIE_BOOTSTRAP_CONFIG_KEY,\n MCOOKIE_RUNTIME_KEY,\n MCOOKIE_RUNTIME_READY_EVENT,\n} from './components/feedback/MCookie/MCookieBootstrap'\nimport type {MCookieBootstrapConfig, MCookieRuntime} from './components/feedback/MCookie/MCookieBootstrap'\nimport type {MCookieConsentState} from './components/feedback/MCookie/MCookieConsentProvider'\n\nfunction getConsentKeyStorageKey(config: MCookieBootstrapConfig) {\n return `${config.storageKey ?? 'mineralui-cookie-consent'}-key`\n}\n\nfunction readStoredConsentKey(storageKey: string) {\n if (typeof window === 'undefined') {\n return null\n }\n\n try {\n return window.localStorage.getItem(storageKey)\n } catch {\n return null\n }\n}\n\nfunction writeStoredConsentKey(storageKey: string, consentKey: string | null | undefined) {\n if (typeof window === 'undefined' || !consentKey) {\n return\n }\n\n try {\n window.localStorage.setItem(storageKey, consentKey)\n } catch {\n // ignore storage issues\n }\n}\n\nfunction dispatchRuntimeReady(runtime: MCookieRuntime) {\n if (typeof window === 'undefined') {\n return\n }\n\n window[MCOOKIE_BOOTSTRAP_CONFIG_KEY] = runtime.config\n window[MCOOKIE_RUNTIME_KEY] = runtime\n window.dispatchEvent(new CustomEvent(MCOOKIE_RUNTIME_READY_EVENT))\n}\n\nfunction findBootstrapScriptElement(scriptUrl: URL) {\n if (typeof document === 'undefined') {\n return null\n }\n\n for (const candidate of Array.from(document.querySelectorAll<HTMLScriptElement>('script[src]'))) {\n try {\n const candidateUrl = new URL(candidate.src, window.location.href)\n\n if (candidateUrl.href === scriptUrl.href) {\n return candidate\n }\n\n if (candidateUrl.origin === scriptUrl.origin && candidateUrl.pathname === scriptUrl.pathname) {\n return candidate\n }\n } catch {\n // ignore invalid script urls\n }\n }\n\n return null\n}\n\nfunction createRuntime(config: MCookieBootstrapConfig, scriptUrl: URL, siteKey: string): MCookieRuntime {\n const cookieSiteBase = `${scriptUrl.origin}/cookie/sites/${encodeURIComponent(siteKey)}`\n const consentKeyStorage = getConsentKeyStorageKey(config)\n\n return {\n config,\n getDeclaration: async () => {\n const response = await fetch(`${cookieSiteBase}/declaration`)\n\n if (!response.ok) {\n return []\n }\n\n const payload = await response.json()\n return payload.items ?? []\n },\n getConsent: async () => {\n const consentKey = readStoredConsentKey(consentKeyStorage)\n\n if (!consentKey) {\n return null\n }\n\n const response = await fetch(`${cookieSiteBase}/consent?consentKey=${encodeURIComponent(consentKey)}`)\n\n if (!response.ok) {\n return null\n }\n\n const payload = await response.json()\n return payload.state ?? null\n },\n saveConsent: async (state: MCookieConsentState) => {\n const consentKey = readStoredConsentKey(consentKeyStorage)\n const response = await fetch(`${cookieSiteBase}/consent`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n ...(consentKey ? {consentKey} : {}),\n version: state.version,\n decidedAt: state.decidedAt,\n source: state.source,\n categories: state.categories,\n domain: typeof window !== 'undefined' ? window.location.hostname : (config.domain ?? null),\n }),\n })\n\n if (!response.ok) {\n return\n }\n\n const payload = await response.json()\n writeStoredConsentKey(consentKeyStorage, payload.consentKey)\n },\n }\n}\n\nasync function resolveBootstrapConfigFromScript() {\n if (typeof window === 'undefined' || typeof fetch === 'undefined') {\n return null\n }\n\n const existingConfig = window[MCOOKIE_BOOTSTRAP_CONFIG_KEY]\n if (existingConfig) {\n return existingConfig\n }\n\n let scriptUrl: URL\n\n try {\n scriptUrl = new URL(import.meta.url)\n } catch {\n return null\n }\n\n const bootstrapScript = findBootstrapScriptElement(scriptUrl)\n const siteKey = bootstrapScript?.dataset.siteKey ?? scriptUrl.searchParams.get('siteKey')\n\n if (!siteKey) {\n return null\n }\n\n const configEndpoint =\n bootstrapScript?.dataset.configEndpoint ??\n scriptUrl.searchParams.get('configEndpoint') ??\n `${scriptUrl.origin}/cookie/bootstrap/${encodeURIComponent(siteKey)}`\n\n try {\n const response = await fetch(configEndpoint, {\n headers: {\n 'x-mineral-site-key': siteKey,\n },\n })\n\n if (!response.ok) {\n return null\n }\n\n const resolvedConfig = (await response.json()) as MCookieBootstrapConfig\n const mergedConfig: MCookieBootstrapConfig = {\n ...resolvedConfig,\n siteKey: resolvedConfig.siteKey ?? siteKey,\n scanEndpoint:\n resolvedConfig.scanEndpoint ??\n bootstrapScript?.dataset.scanEndpoint ??\n scriptUrl.searchParams.get('scanEndpoint') ??\n undefined,\n }\n\n dispatchRuntimeReady(createRuntime(mergedConfig, scriptUrl, siteKey))\n return mergedConfig\n } catch {\n return null\n }\n}\n\nvoid resolveBootstrapConfigFromScript().finally(() => {\n autoBootstrapMCookieConsent()\n})\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCards-
|
|
1
|
+
{"version":3,"file":"creditCards-CCysEwry.js","names":[],"sources":["../src/utils/creditCards.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport type CreditCardBrand = 'visa' | 'mastercard' | 'amex' | 'discover' | 'maestro' | 'unknown'\n\nexport interface CreditCardBrandDetails {\n brand: CreditCardBrand\n label: string\n iconLabel: string\n maxLength: number\n formatGroups: number[]\n regex: RegExp\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// MCard brand rules also drive formatting and visible brand badges.\nconst creditCardBrands: CreditCardBrandDetails[] = [\n {\n brand: 'visa',\n label: 'Visa',\n iconLabel: 'VISA',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^4\\d{12}(?:\\d{3})?$/,\n },\n {\n brand: 'mastercard',\n label: 'Mastercard',\n iconLabel: 'MC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(5[1-5]\\d{14}|2(?:2[2-9]|[3-6]\\d|7[01])\\d{12}|2720\\d{12})$/,\n },\n {\n brand: 'amex',\n label: 'American Express',\n iconLabel: 'AMEX',\n maxLength: 15,\n formatGroups: [4, 6, 5],\n regex: /^3[47]\\d{13}$/,\n },\n {\n brand: 'discover',\n label: 'Discover',\n iconLabel: 'DISC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(6011\\d{12}|65\\d{14}|64[4-9]\\d{13})$/,\n },\n {\n brand: 'maestro',\n label: 'Maestro',\n iconLabel: 'MAES',\n maxLength: 19,\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^(5[06789]\\d{0,17}|6\\d{0,18})$/,\n },\n]\n\n// Fall back to a generic brand so formatting still works for unknown prefixes.\nfunction fallbackBrand(digits: string): CreditCardBrandDetails {\n return {\n brand: 'unknown',\n label: 'MCard',\n iconLabel: 'CARD',\n maxLength: Math.min(Math.max(digits.length || 16, 16), 19),\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^\\d{12,19}$/,\n }\n}\n\n// Remove every separator so card validation can work on raw digits.\nexport function stripCardNumber(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\n// Detect the best matching payment brand from the visible card prefix.\nexport function detectCardBrand(value: string): CreditCardBrandDetails {\n const digits = stripCardNumber(value)\n return creditCardBrands.find((rule) => rule.regex.test(digits)) ?? fallbackBrand(digits)\n}\n\n// Group card digits according to the detected payment brand.\nexport function formatCardNumber(value: string): string {\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n const trimmedDigits = digits.slice(0, rule.maxLength)\n const parts: string[] = []\n let offset = 0\n\n for (const length of rule.formatGroups) {\n if (offset >= trimmedDigits.length) {\n break\n }\n\n parts.push(trimmedDigits.slice(offset, offset + length))\n offset += length\n }\n\n if (offset < trimmedDigits.length) {\n parts.push(trimmedDigits.slice(offset))\n }\n\n return parts.join(' ')\n}\n\n// Run the Luhn checksum used by most card numbers.\nfunction passesLuhn(value: string): boolean {\n let sum = 0\n let shouldDouble = false\n\n for (let index = value.length - 1; index >= 0; index -= 1) {\n let digit = parseInt(value[index], 10)\n\n if (Number.isNaN(digit)) {\n return false\n }\n\n if (shouldDouble) {\n digit *= 2\n if (digit > 9) {\n digit -= 9\n }\n }\n\n sum += digit\n shouldDouble = !shouldDouble\n }\n\n return sum % 10 === 0\n}\n\n// Validate the detected card brand and Luhn checksum without third-party runtime dependencies.\nexport function validateCardNumber(value: string): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n\n if (digits.length < 12) {\n return {valid: false, error: 'MCard number is too short'}\n }\n\n if (digits.length > rule.maxLength) {\n return {valid: false, error: `${rule.label} card number is too long`}\n }\n\n if (rule.brand !== 'unknown' && !rule.regex.test(digits)) {\n return {valid: false, error: `Invalid ${rule.label} card number`}\n }\n\n if (!passesLuhn(digits)) {\n return {valid: false, error: 'Invalid card checksum'}\n }\n\n return OK_RESULT\n}\n\nexport {creditCardBrands}\n"],"mappings":";AAaA,IAAM,IAA8B,EAAC,OAAO,IAAK,EAG3C,IAA6C;CAC/C;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAE;EAC1B,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAE;EAC1B,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAE;EACvB,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAE;EAC1B,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE;EAC7B,OAAO;EACV;CACJ;AAGD,SAAS,EAAc,GAAwC;AAC3D,QAAO;EACH,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW,KAAK,IAAI,KAAK,IAAI,EAAO,UAAU,IAAI,GAAG,EAAE,GAAG;EAC1D,cAAc;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE;EAC7B,OAAO;EACV;;AAIL,SAAgB,EAAgB,GAAuB;AACnD,QAAO,EAAM,QAAQ,OAAO,GAAG;;AAInC,SAAgB,EAAgB,GAAuC;CACnE,IAAM,IAAS,EAAgB,EAAM;AACrC,QAAO,EAAiB,MAAM,MAAS,EAAK,MAAM,KAAK,EAAO,CAAC,IAAI,EAAc,EAAO;;AAI5F,SAAgB,EAAiB,GAAuB;CACpD,IAAM,IAAS,EAAgB,EAAM,EAC/B,IAAO,EAAgB,EAAO,EAC9B,IAAgB,EAAO,MAAM,GAAG,EAAK,UAAU,EAC/C,IAAkB,EAAE,EACtB,IAAS;AAEb,MAAK,IAAM,KAAU,EAAK,cAAc;AACpC,MAAI,KAAU,EAAc,OACxB;AAIJ,EADA,EAAM,KAAK,EAAc,MAAM,GAAQ,IAAS,EAAO,CAAC,EACxD,KAAU;;AAOd,QAJI,IAAS,EAAc,UACvB,EAAM,KAAK,EAAc,MAAM,EAAO,CAAC,EAGpC,EAAM,KAAK,IAAI;;AAI1B,SAAS,EAAW,GAAwB;CACxC,IAAI,IAAM,GACN,IAAe;AAEnB,MAAK,IAAI,IAAQ,EAAM,SAAS,GAAG,KAAS,GAAG,KAAY;EACvD,IAAI,IAAQ,SAAS,EAAM,IAAQ,GAAG;AAEtC,MAAI,OAAO,MAAM,EAAM,CACnB,QAAO;AAWX,EARI,MACA,KAAS,GACL,IAAQ,MACR,KAAS,KAIjB,KAAO,GACP,IAAe,CAAC;;AAGpB,QAAO,IAAM,MAAO;;AAIxB,SAAgB,EAAmB,GAAiC;AAChE,KAAI,CAAC,EACD,QAAO;CAGX,IAAM,IAAS,EAAgB,EAAM,EAC/B,IAAO,EAAgB,EAAO;AAkBpC,QAhBI,EAAO,SAAS,KACT;EAAC,OAAO;EAAO,OAAO;EAA4B,GAGzD,EAAO,SAAS,EAAK,YACd;EAAC,OAAO;EAAO,OAAO,GAAG,EAAK,MAAM;EAA0B,GAGrE,EAAK,UAAU,aAAa,CAAC,EAAK,MAAM,KAAK,EAAO,GAC7C;EAAC,OAAO;EAAO,OAAO,WAAW,EAAK,MAAM;EAAc,GAGhE,EAAW,EAAO,GAIhB,IAHI;EAAC,OAAO;EAAO,OAAO;EAAwB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var e={valid:!0},t=[{brand:`visa`,label:`Visa`,iconLabel:`VISA`,maxLength:16,formatGroups:[4,4,4,4],regex:/^4\d{12}(?:\d{3})?$/},{brand:`mastercard`,label:`Mastercard`,iconLabel:`MC`,maxLength:16,formatGroups:[4,4,4,4],regex:/^(5[1-5]\d{14}|2(?:2[2-9]|[3-6]\d|7[01])\d{12}|2720\d{12})$/},{brand:`amex`,label:`American Express`,iconLabel:`AMEX`,maxLength:15,formatGroups:[4,6,5],regex:/^3[47]\d{13}$/},{brand:`discover`,label:`Discover`,iconLabel:`DISC`,maxLength:16,formatGroups:[4,4,4,4],regex:/^(6011\d{12}|65\d{14}|64[4-9]\d{13})$/},{brand:`maestro`,label:`Maestro`,iconLabel:`MAES`,maxLength:19,formatGroups:[4,4,4,4,3],regex:/^(5[06789]\d{0,17}|6\d{0,18})$/}];function n(e){return{brand:`unknown`,label:`MCard`,iconLabel:`CARD`,maxLength:Math.min(Math.max(e.length||16,16),19),formatGroups:[4,4,4,4,3],regex:/^\d{12,19}$/}}function r(e){return e.replace(/\D/g,``)}function i(e){let i=r(e);return t.find(e=>e.regex.test(i))??n(i)}function a(e){let t=r(e),n=i(t),a=t.slice(0,n.maxLength),o=[],s=0;for(let e of n.formatGroups){if(s>=a.length)break;o.push(a.slice(s,s+e)),s+=e}return s<a.length&&o.push(a.slice(s)),o.join(` `)}function o(e){let t=0,n=!1;for(let r=e.length-1;r>=0;--r){let i=parseInt(e[r],10);if(Number.isNaN(i))return!1;n&&(i*=2,i>9&&(i-=9)),t+=i,n=!n}return t%10==0}function s(t){if(!t)return e;let n=r(t),a=i(n);return n.length<12?{valid:!1,error:`MCard number is too short`}:n.length>a.maxLength?{valid:!1,error:`${a.label} card number is too long`}:a.brand!==`unknown`&&!a.regex.test(n)?{valid:!1,error:`Invalid ${a.label} card number`}:o(n)?e:{valid:!1,error:`Invalid card checksum`}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
|
|
2
|
-
//# sourceMappingURL=creditCards-
|
|
2
|
+
//# sourceMappingURL=creditCards-ljs044xt.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCards-
|
|
1
|
+
{"version":3,"file":"creditCards-ljs044xt.cjs","names":[],"sources":["../src/utils/creditCards.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport type CreditCardBrand = 'visa' | 'mastercard' | 'amex' | 'discover' | 'maestro' | 'unknown'\n\nexport interface CreditCardBrandDetails {\n brand: CreditCardBrand\n label: string\n iconLabel: string\n maxLength: number\n formatGroups: number[]\n regex: RegExp\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// MCard brand rules also drive formatting and visible brand badges.\nconst creditCardBrands: CreditCardBrandDetails[] = [\n {\n brand: 'visa',\n label: 'Visa',\n iconLabel: 'VISA',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^4\\d{12}(?:\\d{3})?$/,\n },\n {\n brand: 'mastercard',\n label: 'Mastercard',\n iconLabel: 'MC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(5[1-5]\\d{14}|2(?:2[2-9]|[3-6]\\d|7[01])\\d{12}|2720\\d{12})$/,\n },\n {\n brand: 'amex',\n label: 'American Express',\n iconLabel: 'AMEX',\n maxLength: 15,\n formatGroups: [4, 6, 5],\n regex: /^3[47]\\d{13}$/,\n },\n {\n brand: 'discover',\n label: 'Discover',\n iconLabel: 'DISC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(6011\\d{12}|65\\d{14}|64[4-9]\\d{13})$/,\n },\n {\n brand: 'maestro',\n label: 'Maestro',\n iconLabel: 'MAES',\n maxLength: 19,\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^(5[06789]\\d{0,17}|6\\d{0,18})$/,\n },\n]\n\n// Fall back to a generic brand so formatting still works for unknown prefixes.\nfunction fallbackBrand(digits: string): CreditCardBrandDetails {\n return {\n brand: 'unknown',\n label: 'MCard',\n iconLabel: 'CARD',\n maxLength: Math.min(Math.max(digits.length || 16, 16), 19),\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^\\d{12,19}$/,\n }\n}\n\n// Remove every separator so card validation can work on raw digits.\nexport function stripCardNumber(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\n// Detect the best matching payment brand from the visible card prefix.\nexport function detectCardBrand(value: string): CreditCardBrandDetails {\n const digits = stripCardNumber(value)\n return creditCardBrands.find((rule) => rule.regex.test(digits)) ?? fallbackBrand(digits)\n}\n\n// Group card digits according to the detected payment brand.\nexport function formatCardNumber(value: string): string {\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n const trimmedDigits = digits.slice(0, rule.maxLength)\n const parts: string[] = []\n let offset = 0\n\n for (const length of rule.formatGroups) {\n if (offset >= trimmedDigits.length) {\n break\n }\n\n parts.push(trimmedDigits.slice(offset, offset + length))\n offset += length\n }\n\n if (offset < trimmedDigits.length) {\n parts.push(trimmedDigits.slice(offset))\n }\n\n return parts.join(' ')\n}\n\n// Run the Luhn checksum used by most card numbers.\nfunction passesLuhn(value: string): boolean {\n let sum = 0\n let shouldDouble = false\n\n for (let index = value.length - 1; index >= 0; index -= 1) {\n let digit = parseInt(value[index], 10)\n\n if (Number.isNaN(digit)) {\n return false\n }\n\n if (shouldDouble) {\n digit *= 2\n if (digit > 9) {\n digit -= 9\n }\n }\n\n sum += digit\n shouldDouble = !shouldDouble\n }\n\n return sum % 10 === 0\n}\n\n// Validate the detected card brand and Luhn checksum without third-party runtime dependencies.\nexport function validateCardNumber(value: string): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n\n if (digits.length < 12) {\n return {valid: false, error: 'MCard number is too short'}\n }\n\n if (digits.length > rule.maxLength) {\n return {valid: false, error: `${rule.label} card number is too long`}\n }\n\n if (rule.brand !== 'unknown' && !rule.regex.test(digits)) {\n return {valid: false, error: `Invalid ${rule.label} card number`}\n }\n\n if (!passesLuhn(digits)) {\n return {valid: false, error: 'Invalid card checksum'}\n }\n\n return OK_RESULT\n}\n\nexport {creditCardBrands}\n"],"mappings":"AAaA,IAAM,EAA8B,CAAC,MAAO,GAAK,CAG3C,EAA6C,CAC/C,CACI,MAAO,OACP,MAAO,OACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAE,CAC1B,MAAO,sBACV,CACD,CACI,MAAO,aACP,MAAO,aACP,UAAW,KACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAE,CAC1B,MAAO,8DACV,CACD,CACI,MAAO,OACP,MAAO,mBACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAE,CACvB,MAAO,gBACV,CACD,CACI,MAAO,WACP,MAAO,WACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAE,CAC1B,MAAO,wCACV,CACD,CACI,MAAO,UACP,MAAO,UACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,CAC7B,MAAO,iCACV,CACJ,CAGD,SAAS,EAAc,EAAwC,CAC3D,MAAO,CACH,MAAO,UACP,MAAO,QACP,UAAW,OACX,UAAW,KAAK,IAAI,KAAK,IAAI,EAAO,QAAU,GAAI,GAAG,CAAE,GAAG,CAC1D,aAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,CAC7B,MAAO,cACV,CAIL,SAAgB,EAAgB,EAAuB,CACnD,OAAO,EAAM,QAAQ,MAAO,GAAG,CAInC,SAAgB,EAAgB,EAAuC,CACnE,IAAM,EAAS,EAAgB,EAAM,CACrC,OAAO,EAAiB,KAAM,GAAS,EAAK,MAAM,KAAK,EAAO,CAAC,EAAI,EAAc,EAAO,CAI5F,SAAgB,EAAiB,EAAuB,CACpD,IAAM,EAAS,EAAgB,EAAM,CAC/B,EAAO,EAAgB,EAAO,CAC9B,EAAgB,EAAO,MAAM,EAAG,EAAK,UAAU,CAC/C,EAAkB,EAAE,CACtB,EAAS,EAEb,IAAK,IAAM,KAAU,EAAK,aAAc,CACpC,GAAI,GAAU,EAAc,OACxB,MAGJ,EAAM,KAAK,EAAc,MAAM,EAAQ,EAAS,EAAO,CAAC,CACxD,GAAU,EAOd,OAJI,EAAS,EAAc,QACvB,EAAM,KAAK,EAAc,MAAM,EAAO,CAAC,CAGpC,EAAM,KAAK,IAAI,CAI1B,SAAS,EAAW,EAAwB,CACxC,IAAI,EAAM,EACN,EAAe,GAEnB,IAAK,IAAI,EAAQ,EAAM,OAAS,EAAG,GAAS,EAAG,IAAY,CACvD,IAAI,EAAQ,SAAS,EAAM,GAAQ,GAAG,CAEtC,GAAI,OAAO,MAAM,EAAM,CACnB,MAAO,GAGP,IACA,GAAS,EACL,EAAQ,IACR,GAAS,IAIjB,GAAO,EACP,EAAe,CAAC,EAGpB,OAAO,EAAM,IAAO,EAIxB,SAAgB,EAAmB,EAAiC,CAChE,GAAI,CAAC,EACD,OAAO,EAGX,IAAM,EAAS,EAAgB,EAAM,CAC/B,EAAO,EAAgB,EAAO,CAkBpC,OAhBI,EAAO,OAAS,GACT,CAAC,MAAO,GAAO,MAAO,4BAA4B,CAGzD,EAAO,OAAS,EAAK,UACd,CAAC,MAAO,GAAO,MAAO,GAAG,EAAK,MAAM,0BAA0B,CAGrE,EAAK,QAAU,WAAa,CAAC,EAAK,MAAM,KAAK,EAAO,CAC7C,CAAC,MAAO,GAAO,MAAO,WAAW,EAAK,MAAM,cAAc,CAGhE,EAAW,EAAO,CAIhB,EAHI,CAAC,MAAO,GAAO,MAAO,wBAAwB"}
|