@banzamel/mineralui 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/MAvatar-B0uPeciT.js +57 -0
- package/dist/MAvatar-B0uPeciT.js.map +1 -0
- package/dist/MAvatar-DlFdIi6R.cjs +2 -0
- package/dist/MAvatar-DlFdIi6R.cjs.map +1 -0
- package/dist/MBadge-5PivwWxe.js +19 -0
- package/dist/MBadge-5PivwWxe.js.map +1 -0
- package/dist/MBadge-DNqOptef.cjs +2 -0
- package/dist/MBadge-DNqOptef.cjs.map +1 -0
- package/dist/MButton-Bfe4iq51.js +113 -0
- package/dist/{MButton-BmTDe5Oa.js.map → MButton-Bfe4iq51.js.map} +1 -1
- package/dist/MButton-CtEFKjYZ.cjs +2 -0
- package/dist/{MButton-B8rXmFX9.cjs.map → MButton-CtEFKjYZ.cjs.map} +1 -1
- package/dist/{MDataTable-BI7wFZYN.cjs → MDataTable-CVwnVouZ.cjs} +2 -2
- package/dist/{MDataTable-BI7wFZYN.cjs.map → MDataTable-CVwnVouZ.cjs.map} +1 -1
- package/dist/{MDataTable-Cqwkiq7A.js → MDataTable-D0ONRmcC.js} +3 -3
- package/dist/{MDataTable-Cqwkiq7A.js.map → MDataTable-D0ONRmcC.js.map} +1 -1
- package/dist/{MDrawer-DXHtAckQ.js → MDrawer-C7rLXC_O.js} +2 -2
- package/dist/{MDrawer-DXHtAckQ.js.map → MDrawer-C7rLXC_O.js.map} +1 -1
- package/dist/{MDrawer-CSvjLrhB.cjs → MDrawer-DF42-zF2.cjs} +2 -2
- package/dist/{MDrawer-CSvjLrhB.cjs.map → MDrawer-DF42-zF2.cjs.map} +1 -1
- package/dist/MHeading-DBS5Kytw.js +21 -0
- package/dist/MHeading-DBS5Kytw.js.map +1 -0
- package/dist/MHeading-XCMJNMYB.cjs +2 -0
- package/dist/MHeading-XCMJNMYB.cjs.map +1 -0
- package/dist/MImage-2Xztd_N6.cjs +2 -0
- package/dist/MImage-2Xztd_N6.cjs.map +1 -0
- package/dist/MImage-UmiZwzDJ.js +53 -0
- package/dist/MImage-UmiZwzDJ.js.map +1 -0
- package/dist/MInline-BYsbmfkz.js +41 -0
- package/dist/MInline-BYsbmfkz.js.map +1 -0
- package/dist/MInline-oCvhfJwM.cjs +2 -0
- package/dist/MInline-oCvhfJwM.cjs.map +1 -0
- package/dist/{MInput-W7DJQ_ng.cjs → MInput-CpEJQ9SV.cjs} +2 -2
- package/dist/{MInput-W7DJQ_ng.cjs.map → MInput-CpEJQ9SV.cjs.map} +1 -1
- package/dist/{MInput-BSaKw0Uc.js → MInput-iKIeefss.js} +2 -2
- package/dist/{MInput-BSaKw0Uc.js.map → MInput-iKIeefss.js.map} +1 -1
- package/dist/{MInputCVC-Dqbl1zG9.js → MInputCVC-BpGTqkQx.js} +2 -2
- package/dist/{MInputCVC-Dqbl1zG9.js.map → MInputCVC-BpGTqkQx.js.map} +1 -1
- package/dist/{MInputCVC-DH_bjV5R.cjs → MInputCVC-BuGwm7fv.cjs} +2 -2
- package/dist/{MInputCVC-DH_bjV5R.cjs.map → MInputCVC-BuGwm7fv.cjs.map} +1 -1
- package/dist/{MInputSearch-C7betxTa.cjs → MInputSearch-B-Lqr-QG.cjs} +2 -2
- package/dist/{MInputSearch-C7betxTa.cjs.map → MInputSearch-B-Lqr-QG.cjs.map} +1 -1
- package/dist/{MInputSearch-CH5ZcjLq.js → MInputSearch-y3_ihYRj.js} +2 -2
- package/dist/{MInputSearch-CH5ZcjLq.js.map → MInputSearch-y3_ihYRj.js.map} +1 -1
- package/dist/MLink-7hndQLKM.cjs +2 -0
- package/dist/{MLink-DHryXq_D.cjs.map → MLink-7hndQLKM.cjs.map} +1 -1
- package/dist/MLink-tcICJfPn.js +31 -0
- package/dist/{MLink-ODytrwne.js.map → MLink-tcICJfPn.js.map} +1 -1
- package/dist/{MModal-pMcPs3pw.cjs → MModal-DlnT3BBp.cjs} +2 -2
- package/dist/{MModal-pMcPs3pw.cjs.map → MModal-DlnT3BBp.cjs.map} +1 -1
- package/dist/{MModal-DShADuLw.js → MModal-___Rw8YK.js} +2 -2
- package/dist/{MModal-DShADuLw.js.map → MModal-___Rw8YK.js.map} +1 -1
- package/dist/{MPagination-BWHAVgWN.cjs → MPagination-CTtr_L-Q.cjs} +2 -2
- package/dist/{MPagination-BWHAVgWN.cjs.map → MPagination-CTtr_L-Q.cjs.map} +1 -1
- package/dist/{MPagination-B7aho7rQ.js → MPagination-CzJGko3i.js} +2 -2
- package/dist/{MPagination-B7aho7rQ.js.map → MPagination-CzJGko3i.js.map} +1 -1
- package/dist/{MQrCode-6Cz9B7Qy.js → MQrCode-B7jbpcUj.js} +2 -2
- package/dist/{MQrCode-6Cz9B7Qy.js.map → MQrCode-B7jbpcUj.js.map} +1 -1
- package/dist/{MQrCode-Bp2CWpmX.cjs → MQrCode-Cha7657D.cjs} +2 -2
- package/dist/{MQrCode-Bp2CWpmX.cjs.map → MQrCode-Cha7657D.cjs.map} +1 -1
- package/dist/{MSkeleton-BfRBJ6ku.cjs → MSkeleton-BAkzwxOS.cjs} +2 -2
- package/dist/{MSkeleton-BfRBJ6ku.cjs.map → MSkeleton-BAkzwxOS.cjs.map} +1 -1
- package/dist/{MSkeleton-CauCfkzj.js → MSkeleton-Cwa-JRxo.js} +2 -2
- package/dist/{MSkeleton-CauCfkzj.js.map → MSkeleton-Cwa-JRxo.js.map} +1 -1
- package/dist/MStack-Bp1x4woD.cjs +2 -0
- package/dist/MStack-Bp1x4woD.cjs.map +1 -0
- package/dist/MStack-DVOFZo1L.js +41 -0
- package/dist/MStack-DVOFZo1L.js.map +1 -0
- package/dist/MSubText-CHvUFOlt.js +17 -0
- package/dist/MSubText-CHvUFOlt.js.map +1 -0
- package/dist/MSubText-Dg3PKnwI.cjs +2 -0
- package/dist/MSubText-Dg3PKnwI.cjs.map +1 -0
- package/dist/MSurface-ClPdv7a4.cjs +2 -0
- package/dist/MSurface-ClPdv7a4.cjs.map +1 -0
- package/dist/MSurface-FEfWBJFx.js +41 -0
- package/dist/MSurface-FEfWBJFx.js.map +1 -0
- package/dist/MTag-BxoSuAOj.cjs +2 -0
- package/dist/MTag-BxoSuAOj.cjs.map +1 -0
- package/dist/MTag-CjaE6vPj.js +39 -0
- package/dist/MTag-CjaE6vPj.js.map +1 -0
- package/dist/MText-CWHwmjs8.cjs +2 -0
- package/dist/MText-CWHwmjs8.cjs.map +1 -0
- package/dist/MText-hHMgVJ4-.js +45 -0
- package/dist/MText-hHMgVJ4-.js.map +1 -0
- package/dist/{cards-BE77zKTI.js → cards-1--Cy-KV.js} +10 -10
- package/dist/{cards-BE77zKTI.js.map → cards-1--Cy-KV.js.map} +1 -1
- package/dist/{cards-BINs-dmS.cjs → cards-CTegCxIA.cjs} +2 -2
- package/dist/{cards-BINs-dmS.cjs.map → cards-CTegCxIA.cjs.map} +1 -1
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +2 -2
- package/dist/components/controls/MButton/MButton.types.d.ts +2 -2
- package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
- package/dist/components/feedback/MAlert/MAlert.types.d.ts +2 -2
- package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
- package/dist/components/feedback/MBadge/MBadge.types.d.ts +2 -2
- package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
- package/dist/components/feedback/MBanner/MBanner.types.d.ts +2 -2
- package/dist/components/feedback/MTag/MTag.d.ts +1 -1
- package/dist/components/feedback/MTag/MTag.types.d.ts +2 -2
- package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
- package/dist/components/layout/MContainer/MContainer.types.d.ts +2 -1
- package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
- package/dist/components/layout/MDivider/MDivider.types.d.ts +2 -1
- package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
- package/dist/components/layout/MFooter/MFooter.types.d.ts +2 -1
- package/dist/components/layout/MGrid/MGrid.d.ts +2 -2
- package/dist/components/layout/MGrid/MGrid.types.d.ts +4 -2
- package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
- package/dist/components/layout/MHeader/MHeader.types.d.ts +2 -1
- package/dist/components/layout/MInline/MInline.d.ts +1 -1
- package/dist/components/layout/MInline/MInline.types.d.ts +2 -1
- package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.types.d.ts +3 -1
- package/dist/components/layout/MNavs/index.d.ts +1 -1
- package/dist/components/layout/MSection/MSection.d.ts +1 -1
- package/dist/components/layout/MSection/MSection.types.d.ts +2 -1
- package/dist/components/layout/MSidebar/MSidebar.d.ts +1 -1
- package/dist/components/layout/MSidebar/MSidebar.types.d.ts +1 -0
- package/dist/components/layout/MStack/MStack.d.ts +1 -1
- package/dist/components/layout/MStack/MStack.types.d.ts +2 -1
- package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
- package/dist/components/layout/MSurface/MSurface.types.d.ts +2 -1
- package/dist/components/layout/MTopbar/MTopbar.d.ts +1 -1
- package/dist/components/layout/MTopbar/MTopbar.types.d.ts +3 -2
- package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
- package/dist/components/media/MAvatar/MAvatar.types.d.ts +2 -2
- package/dist/components/media/MAvatarStack/MAvatarStack.d.ts +1 -1
- package/dist/components/media/MAvatarStack/MAvatarStack.types.d.ts +2 -2
- package/dist/components/media/MImage/MImage.d.ts +1 -1
- package/dist/components/media/MImage/MImage.types.d.ts +2 -1
- package/dist/components/typography/MHeading/MHeading.d.ts +563 -2
- package/dist/components/typography/MHeading/MHeading.types.d.ts +2 -2
- package/dist/components/typography/MLink/MLink.types.d.ts +2 -1
- package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
- package/dist/components/typography/MSubText/MSubText.types.d.ts +2 -2
- package/dist/components/typography/MText/MText.d.ts +1 -1
- package/dist/components/typography/MText/MText.types.d.ts +2 -2
- package/dist/{controls-BMwQ3C1R.js → controls-C0qr_vMu.js} +145 -143
- package/dist/{controls-BMwQ3C1R.js.map → controls-C0qr_vMu.js.map} +1 -1
- package/dist/controls-CAab2nyg.cjs +2 -0
- package/dist/{controls-DwL1-nVC.cjs.map → controls-CAab2nyg.cjs.map} +1 -1
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +2 -2
- package/dist/data-Uy_XSs32.cjs +2 -0
- package/dist/data-Uy_XSs32.cjs.map +1 -0
- package/dist/{data-s8Hkht1B.js → data-z3Uc9FSI.js} +751 -750
- package/dist/data-z3Uc9FSI.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +2 -2
- package/dist/{display-DuBRiEKr.js → display-GygMuO4c.js} +3 -3
- package/dist/{display-DuBRiEKr.js.map → display-GygMuO4c.js.map} +1 -1
- package/dist/{display-B0lpgApV.cjs → display-WS1tupQD.cjs} +2 -2
- package/dist/{display-B0lpgApV.cjs.map → display-WS1tupQD.cjs.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +2 -2
- package/dist/{dropdowns-CK-oxd62.cjs → dropdowns-CzqyYQwR.cjs} +2 -2
- package/dist/{dropdowns-CK-oxd62.cjs.map → dropdowns-CzqyYQwR.cjs.map} +1 -1
- package/dist/{dropdowns-BcVrUMPE.js → dropdowns-FQlxsOYd.js} +4 -4
- package/dist/{dropdowns-BcVrUMPE.js.map → dropdowns-FQlxsOYd.js.map} +1 -1
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-C9z4MZ-V.cjs +2 -0
- package/dist/feedback-C9z4MZ-V.cjs.map +1 -0
- package/dist/{feedback-D3LLKNlY.js → feedback-xtBDPbzP.js} +304 -301
- package/dist/feedback-xtBDPbzP.js.map +1 -0
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +5 -5
- package/dist/index.cjs +1 -1
- package/dist/index.js +59 -59
- package/dist/{inputs-bCxSLz-U.js → inputs-gB1ET0dG.js} +3 -3
- package/dist/{inputs-bCxSLz-U.js.map → inputs-gB1ET0dG.js.map} +1 -1
- package/dist/{inputs-Dcj6C_Fn.cjs → inputs-z84nU7A8.cjs} +2 -2
- package/dist/{inputs-Dcj6C_Fn.cjs.map → inputs-z84nU7A8.cjs.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +4 -4
- package/dist/layout-BIPyHdYN.cjs +2 -0
- package/dist/layout-BIPyHdYN.cjs.map +1 -0
- package/dist/layout-DHVIqY-O.js +904 -0
- package/dist/layout-DHVIqY-O.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +5 -5
- package/dist/media-Ch3Fyf4K.cjs +2 -0
- package/dist/{media-D5YGOTm7.cjs.map → media-Ch3Fyf4K.cjs.map} +1 -1
- package/dist/{media-8aMOtckF.js → media-DV58aS3j.js} +145 -143
- package/dist/{media-8aMOtckF.js.map → media-DV58aS3j.js.map} +1 -1
- package/dist/media.cjs +1 -1
- package/dist/media.js +3 -3
- package/dist/{overlays-DCj-oV2H.cjs → overlays-7HBAQneO.cjs} +2 -2
- package/dist/{overlays-DCj-oV2H.cjs.map → overlays-7HBAQneO.cjs.map} +1 -1
- package/dist/{overlays-gjg00CAf.js → overlays-_zOs7GGk.js} +3 -3
- package/dist/{overlays-gjg00CAf.js.map → overlays-_zOs7GGk.js.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/MTheme.types.d.ts +6 -0
- package/dist/theme/index.d.ts +2 -1
- package/dist/theme/responsive.d.ts +23 -0
- package/dist/{theme-DLorpkJc.cjs → theme-B9iSuxqh.cjs} +2 -2
- package/dist/theme-B9iSuxqh.cjs.map +1 -0
- package/dist/{theme-BV4qkzZU.js → theme-XRUdoLqw.js} +25 -2
- package/dist/theme-XRUdoLqw.js.map +1 -0
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +2 -2
- package/dist/{typography-qbFGv1gA.cjs → typography-D0dyVQlP.cjs} +2 -2
- package/dist/{typography-qbFGv1gA.cjs.map → typography-D0dyVQlP.cjs.map} +1 -1
- package/dist/{typography-DKdr1Tds.js → typography-Db_SHI0H.js} +2 -2
- package/dist/{typography-DKdr1Tds.js.map → typography-Db_SHI0H.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +5 -5
- package/package.json +1 -1
- package/dist/MAvatar-BoO51a6m.js +0 -55
- package/dist/MAvatar-BoO51a6m.js.map +0 -1
- package/dist/MAvatar-DJKtca9j.cjs +0 -2
- package/dist/MAvatar-DJKtca9j.cjs.map +0 -1
- package/dist/MBadge-CexVV675.cjs +0 -2
- package/dist/MBadge-CexVV675.cjs.map +0 -1
- package/dist/MBadge-Y1JnZiIC.js +0 -17
- package/dist/MBadge-Y1JnZiIC.js.map +0 -1
- package/dist/MButton-B8rXmFX9.cjs +0 -2
- package/dist/MButton-BmTDe5Oa.js +0 -111
- package/dist/MHeading-C3IgV22T.js +0 -19
- package/dist/MHeading-C3IgV22T.js.map +0 -1
- package/dist/MHeading-DqvWKia1.cjs +0 -2
- package/dist/MHeading-DqvWKia1.cjs.map +0 -1
- package/dist/MImage-BDcrV6IC.js +0 -49
- package/dist/MImage-BDcrV6IC.js.map +0 -1
- package/dist/MImage-BsQJ_eYf.cjs +0 -2
- package/dist/MImage-BsQJ_eYf.cjs.map +0 -1
- package/dist/MInline-BAhu2zT-.cjs +0 -2
- package/dist/MInline-BAhu2zT-.cjs.map +0 -1
- package/dist/MInline-Dfy3Lrjs.js +0 -39
- package/dist/MInline-Dfy3Lrjs.js.map +0 -1
- package/dist/MLink-DHryXq_D.cjs +0 -2
- package/dist/MLink-ODytrwne.js +0 -29
- package/dist/MStack-Cifiqeb2.js +0 -39
- package/dist/MStack-Cifiqeb2.js.map +0 -1
- package/dist/MStack-lrvy7l3w.cjs +0 -2
- package/dist/MStack-lrvy7l3w.cjs.map +0 -1
- package/dist/MSubText-78oYdJQy.cjs +0 -2
- package/dist/MSubText-78oYdJQy.cjs.map +0 -1
- package/dist/MSubText-C2oxXwKT.js +0 -15
- package/dist/MSubText-C2oxXwKT.js.map +0 -1
- package/dist/MSurface-B1LXFczo.js +0 -39
- package/dist/MSurface-B1LXFczo.js.map +0 -1
- package/dist/MSurface-BgZ86iYn.cjs +0 -2
- package/dist/MSurface-BgZ86iYn.cjs.map +0 -1
- package/dist/MTag-C4_rBj4b.cjs +0 -2
- package/dist/MTag-C4_rBj4b.cjs.map +0 -1
- package/dist/MTag-DOcKm3c2.js +0 -37
- package/dist/MTag-DOcKm3c2.js.map +0 -1
- package/dist/MText-CxSZ2md0.cjs +0 -2
- package/dist/MText-CxSZ2md0.cjs.map +0 -1
- package/dist/MText-DX9O7gh7.js +0 -43
- package/dist/MText-DX9O7gh7.js.map +0 -1
- package/dist/controls-DwL1-nVC.cjs +0 -2
- package/dist/data-BESfox0z.cjs +0 -2
- package/dist/data-BESfox0z.cjs.map +0 -1
- package/dist/data-s8Hkht1B.js.map +0 -1
- package/dist/feedback-D3LLKNlY.js.map +0 -1
- package/dist/feedback-DYjg0Dbp.cjs +0 -2
- package/dist/feedback-DYjg0Dbp.cjs.map +0 -1
- package/dist/layout-Cb94o3oU.js +0 -891
- package/dist/layout-Cb94o3oU.js.map +0 -1
- package/dist/layout-DgfsQ-Tn.cjs +0 -2
- package/dist/layout-DgfsQ-Tn.cjs.map +0 -1
- package/dist/media-D5YGOTm7.cjs +0 -2
- package/dist/theme-BV4qkzZU.js.map +0 -1
- package/dist/theme-DLorpkJc.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-BINs-dmS.cjs","names":[],"sources":["../src/components/cards/MCardPayment/MCardPayment.tsx","../src/components/cards/MCardPaymentMethod/MCardPaymentMethod.tsx","../src/utils/socialPlatforms.tsx","../src/components/cards/MCardBusiness/MCardBusiness.tsx","../src/components/cards/ServiceCardsShared/ServiceCardsShared.tsx","../src/components/cards/MCardOffer/MCardOffer.tsx","../src/components/cards/MCardCourse/MCardCourse.tsx","../src/components/cards/MCardProduct/MCardProduct.tsx","../src/components/cards/MCardEvent/MCardEvent.tsx","../src/components/cards/MCardWidget/MCardWidget.tsx","../src/components/cards/MCardGrid/MCardGrid.tsx","../src/components/cards/MCardFinance/MCardFinance.tsx"],"sourcesContent":["import type {MCardPaymentProps} from './MCardPayment.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands, detectCardBrand} from '../../../utils/creditCards'\nimport './MCardPayment.css'\n\nfunction maskNumber(raw: string): string {\n const digits = raw.replace(/\\D/g, '')\n if (digits.length <= 4) return digits\n const last4 = digits.slice(-4)\n return `\\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 ${last4}`\n}\n\n// Display-only payment card with balance, masked number, holder name and brand badge.\nexport function MCardPayment({\n holder,\n number,\n expiry,\n brand,\n brandIcon,\n balance,\n balanceLabel = 'Current balance',\n color,\n className,\n ...rest\n}: MCardPaymentProps) {\n const detectedDetails = detectCardBrand(number)\n const detected = brand ?? detectedDetails.brand\n const brandDetails = creditCardBrands.find((rule) => rule.brand === detected) ?? detectedDetails\n const masked = maskNumber(number)\n const brandLabel = brandDetails.iconLabel\n\n return (\n <div className={cn('card-payment', color || 'primary', className)} {...rest}>\n {balance !== undefined && (\n <div>\n <p className=\"cp-balance-label\">{balanceLabel}</p>\n <p className=\"cp-balance\">{balance}</p>\n </div>\n )}\n\n <div className=\"cp-row\">\n <span className={cn('cp-brand', !brandIcon && detected)}>{brandIcon ?? brandLabel}</span>\n <span className=\"cp-number\">{masked}</span>\n </div>\n\n <div className=\"cp-details\">\n <div>\n <p className=\"cp-field-label\">MCard holder</p>\n <p className=\"cp-field-value\">{holder}</p>\n </div>\n <div>\n <p className=\"cp-field-label\">Expiration date</p>\n <p className=\"cp-field-value\">{expiry}</p>\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardPaymentMethodProps} from './MCardPaymentMethod.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands} from '../../../utils/creditCards'\nimport {MArrowRightIcon} from '../../../icons'\nimport {MBadge} from '../../feedback'\nimport {MInline} from '../../layout'\nimport {MLink, MText} from '../../typography'\nimport {MInputExpDate} from '../../inputs/MInputExpDate'\nimport {MInputCVC} from '../../inputs/MInputCVC'\nimport './MCardPaymentMethod.css'\n\nfunction resolveBrandLabel(brand: NonNullable<MCardPaymentMethodProps['brand']>) {\n return creditCardBrands.find((item) => item.brand === brand)?.iconLabel ?? 'CARD'\n}\n\nexport function MCardPaymentMethod({\n title = 'Your payment methods',\n actionLabel = 'Change',\n actionHref = '#',\n onAction,\n brand = 'visa',\n brandIcon,\n last4,\n badgeLabel,\n summary,\n helperText = 'All fields are required, unless stated otherwise.',\n expiryLabel = 'Expiration date',\n cvcLabel = 'Security code',\n expiryProps,\n cvcProps,\n color,\n className,\n ...rest\n}: MCardPaymentMethodProps) {\n const expirySummary = expiryProps?.value ?? expiryProps?.defaultValue\n const resolvedBadgeLabel = badgeLabel === undefined ? 'Default' : badgeLabel\n const derivedSummary = expirySummary\n ? `Credit card - Expiration date ${String(expirySummary).replace('/', '.')}`\n : 'Credit card'\n const resolvedSummary = summary === undefined ? derivedSummary : summary\n const brandLabel = resolveBrandLabel(brand)\n const resolvedExpiryProps = {\n clearable: true,\n ...expiryProps,\n }\n\n return (\n <div className={cn('card-payment-method', color || 'primary', className)} {...rest}>\n <div className={'cpm-header'}>\n <h3 className={'cpm-title'}>{title}</h3>\n <MLink\n href={actionHref}\n tone={'accent'}\n underline={'none'}\n className={'cpm-action'}\n onClick={(event) => {\n if (onAction) {\n event.preventDefault()\n onAction()\n }\n }}\n >\n {actionLabel}\n <MArrowRightIcon />\n </MLink>\n </div>\n\n <div className={'cpm-surface'}>\n <div className={'cpm-method'}>\n <MInline align={'center'} className={'cpm-method-row'}>\n <span className={cn('cpm-brand', !brandIcon && brand)}>{brandIcon ?? brandLabel}</span>\n <span className={'cpm-last4'}>{`\\u2022\\u2022\\u2022\\u2022 ${last4}`}</span>\n {resolvedBadgeLabel && <MBadge color={'info'}>{resolvedBadgeLabel}</MBadge>}\n </MInline>\n {resolvedSummary && (\n <MText tone={'muted'} className={'cpm-summary'}>\n {resolvedSummary}\n </MText>\n )}\n </div>\n\n {helperText && (\n <MText tone={'muted'} size={'sm'} className={'cpm-helper'}>\n {helperText}\n </MText>\n )}\n\n <div className={'cpm-fields'}>\n <MInputExpDate label={expiryLabel} placeholder={'MM/YYYY'} fullWidth {...resolvedExpiryProps} />\n <MInputCVC label={cvcLabel} placeholder={'123'} fullWidth {...cvcProps} />\n </div>\n </div>\n </div>\n )\n}\n","import type {ComponentType} from 'react'\nimport type {MIconProps} from '../icons'\nimport {\n MAppleColorIcon,\n MAppleIcon,\n MDiscordColorIcon,\n MDiscordIcon,\n MFacebookColorIcon,\n MFacebookIcon,\n MFigmaColorIcon,\n MFigmaIcon,\n MGitHubColorIcon,\n MGitHubIcon,\n MGoogleColorIcon,\n MGoogleIcon,\n MInstagramColorIcon,\n MInstagramIcon,\n MLinkedInColorIcon,\n MLinkedInIcon,\n MPinterestColorIcon,\n MPinterestIcon,\n MSlackColorIcon,\n MSlackIcon,\n MSpotifyColorIcon,\n MSpotifyIcon,\n MTumblrColorIcon,\n MTumblrIcon,\n MVimeoColorIcon,\n MVimeoIcon,\n MVkColorIcon,\n MVkIcon,\n MXColorIcon,\n MXIcon,\n MYouTubeColorIcon,\n MYouTubeIcon,\n} from '../icons'\n\nexport type MSocialPlatform =\n | 'apple'\n | 'discord'\n | 'facebook'\n | 'figma'\n | 'github'\n | 'google'\n | 'instagram'\n | 'linkedin'\n | 'pinterest'\n | 'slack'\n | 'spotify'\n | 'tumblr'\n | 'vimeo'\n | 'vk'\n | 'twitter'\n | 'x'\n | 'youtube'\n | (string & {})\n\ntype SocialEntry = {\n label: string\n icon: ComponentType<MIconProps>\n colorIcon: ComponentType<MIconProps>\n rgb: string\n}\n\nconst socialMap: Record<string, SocialEntry> = {\n apple: {label: 'Apple', icon: MAppleIcon, colorIcon: MAppleColorIcon, rgb: '24, 24, 27'},\n discord: {label: 'Discord', icon: MDiscordIcon, colorIcon: MDiscordColorIcon, rgb: '88, 101, 242'},\n facebook: {label: 'Facebook', icon: MFacebookIcon, colorIcon: MFacebookColorIcon, rgb: '24, 119, 242'},\n figma: {label: 'Figma', icon: MFigmaIcon, colorIcon: MFigmaColorIcon, rgb: '162, 89, 255'},\n github: {label: 'GitHub', icon: MGitHubIcon, colorIcon: MGitHubColorIcon, rgb: '24, 23, 23'},\n google: {label: 'Google', icon: MGoogleIcon, colorIcon: MGoogleColorIcon, rgb: '66, 133, 244'},\n instagram: {label: 'Instagram', icon: MInstagramIcon, colorIcon: MInstagramColorIcon, rgb: '225, 48, 108'},\n linkedin: {label: 'LinkedIn', icon: MLinkedInIcon, colorIcon: MLinkedInColorIcon, rgb: '10, 102, 194'},\n pinterest: {label: 'Pinterest', icon: MPinterestIcon, colorIcon: MPinterestColorIcon, rgb: '230, 0, 35'},\n slack: {label: 'Slack', icon: MSlackIcon, colorIcon: MSlackColorIcon, rgb: '74, 21, 75'},\n spotify: {label: 'Spotify', icon: MSpotifyIcon, colorIcon: MSpotifyColorIcon, rgb: '30, 215, 96'},\n tumblr: {label: 'Tumblr', icon: MTumblrIcon, colorIcon: MTumblrColorIcon, rgb: '0, 25, 53'},\n vimeo: {label: 'Vimeo', icon: MVimeoIcon, colorIcon: MVimeoColorIcon, rgb: '26, 183, 234'},\n vk: {label: 'VK', icon: MVkIcon, colorIcon: MVkColorIcon, rgb: '0, 119, 255'},\n x: {label: 'X', icon: MXIcon, colorIcon: MXColorIcon, rgb: '17, 17, 17'},\n youtube: {label: 'YouTube', icon: MYouTubeIcon, colorIcon: MYouTubeColorIcon, rgb: '255, 0, 0'},\n}\n\nexport function normalizeSocialPlatform(platform: string) {\n const normalized = platform\n .trim()\n .toLowerCase()\n .replace(/[\\s._-]+/g, '')\n\n if (normalized === 'twitter') {\n return 'x'\n }\n\n if (normalized === 'vkontakte') {\n return 'vk'\n }\n\n return normalized\n}\n\nexport function getSocialLabel(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.label ?? platform\n}\n\nexport function getSocialIconComponent(platform: MSocialPlatform, brand = false) {\n const normalized = normalizeSocialPlatform(platform)\n const entry = socialMap[normalized]\n\n if (!entry) {\n return null\n }\n\n return brand ? entry.colorIcon : entry.icon\n}\n\nexport function getSocialBrandRgb(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.rgb ?? '37, 99, 235'\n}\n","import type {MCardBusinessProps} from './MCardBusiness.types'\nimport {cn} from '../../../utils/cn'\nimport {MQrCode} from '../../display'\nimport {MAvatar} from '../../media'\nimport {MGlobeIcon, MMailIcon, MPhoneIcon, MPinIcon} from '../../../icons'\nimport {getSocialIconComponent, getSocialLabel} from '../../../utils/socialPlatforms'\nimport './MCardBusiness.css'\n\n// Join available address fields into one readable line.\nfunction formatAddress(address: MCardBusinessProps['address']): string | null {\n if (!address) return null\n\n return [address.street, [address.zip, address.city].filter(Boolean).join(' '), address.country]\n .filter(Boolean)\n .join(', ')\n}\n\n// Render a compact business card for a person or a company profile.\nexport function MCardBusiness({\n variant = 'user',\n name,\n title,\n avatar,\n address,\n contact,\n socials,\n online,\n lastActive,\n qrCode,\n qrValue,\n qrStatus,\n qrStatusLabel,\n color = 'primary',\n className,\n ...rest\n}: MCardBusinessProps) {\n const addr = formatAddress(address)\n\n return (\n <div className={cn('card-business', variant, `color-${color}`, className)} {...rest}>\n <div className=\"cb-header\">\n <div className=\"cb-avatar-wrap\">\n <MAvatar\n src={avatar}\n alt={name}\n name={name}\n size={56}\n shape={variant === 'company' ? 'rounded' : 'circle'}\n color={color}\n badge={online !== undefined ? true : undefined}\n badgeColor={online === undefined ? undefined : online ? 'success' : 'error'}\n badgePulsing={Boolean(online)}\n className={cn('cb-avatar', variant)}\n />\n </div>\n\n <div className=\"cb-info\">\n <h3 className=\"cb-name\">{name}</h3>\n {title && <p className=\"cb-title\">{title}</p>}\n {lastActive && <p className=\"cb-last-active\">{lastActive}</p>}\n </div>\n\n {(qrValue || qrCode) && (\n <div className=\"cb-qr\">\n {qrValue ? (\n <MQrCode\n value={qrValue}\n size={56}\n padding={3}\n status={qrStatus}\n statusLabel={qrStatusLabel}\n className=\"cb-qr-code\"\n />\n ) : (\n <img src={qrCode} alt=\"QR\" className=\"cb-qr-img\" />\n )}\n </div>\n )}\n </div>\n\n {(contact || addr) && (\n <div className=\"cb-details\">\n {contact?.email && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MMailIcon />\n </span>\n <a href={`mailto:${contact.email}`} className=\"cb-detail-value\">\n {contact.email}\n </a>\n </div>\n )}\n {contact?.phone && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPhoneIcon />\n </span>\n <a href={`tel:${contact.phone}`} className=\"cb-detail-value\">\n {contact.phone}\n </a>\n </div>\n )}\n {contact?.website && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MGlobeIcon />\n </span>\n <a\n href={contact.website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-detail-value\"\n >\n {contact.website.replace(/^https?:\\/\\//, '')}\n </a>\n </div>\n )}\n {addr && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPinIcon />\n </span>\n <span className=\"cb-detail-value\">{addr}</span>\n </div>\n )}\n </div>\n )}\n\n {socials && socials.length > 0 && (\n <div className=\"cb-socials\">\n {socials.map((item) =>\n (() => {\n const Icon = getSocialIconComponent(item.platform, true)\n\n return (\n <a\n key={item.platform}\n href={item.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-social\"\n title={getSocialLabel(item.platform)}\n aria-label={getSocialLabel(item.platform)}\n >\n {item.icon ??\n (Icon ? <Icon /> : <span className=\"cb-social-text\">{item.platform}</span>)}\n </a>\n )\n })()\n )}\n </div>\n )}\n </div>\n )\n}\n","import {useEffect, useState} from 'react'\nimport type {SharedServiceCardProps} from './ServiceCardsShared.types'\nimport {cn} from '../../../utils/cn'\nimport {\n MArrowDownIcon,\n MArrowUpIcon,\n MClockIcon,\n MEllipsisVerticalIcon,\n MHeartFillIcon,\n MHeartIcon,\n MMinusIcon,\n MPlusIcon,\n} from '../../../icons'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MAvatar} from '../../media'\nimport {MRating} from '../../display'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport './ServiceCardsShared.css'\n\nexport function SharedServiceCard({\n variant,\n title,\n description,\n price,\n currency = 'PLN',\n duration,\n available,\n image,\n gallery,\n galleryAutoPlay = false,\n rating,\n reviewCount,\n favorite,\n onFavorite,\n menuItems,\n onAddToCart,\n actionLabel,\n icon,\n color = 'primary',\n leader,\n participants,\n maxParticipants,\n quantity: controlledQty,\n onQuantityChange,\n date,\n location,\n status,\n value,\n trend,\n className,\n ...rest\n}: SharedServiceCardProps) {\n const [galleryIdx, setGalleryIdx] = useState(0)\n const [isGalleryTransitioning, setIsGalleryTransitioning] = useState(false)\n const [internalQty, setInternalQty] = useState(1)\n\n const qty = controlledQty ?? internalQty\n const images = gallery && gallery.length > 0 ? gallery : image ? [image] : []\n\n useEffect(() => {\n if (galleryIdx >= images.length) {\n setGalleryIdx(0)\n }\n }, [galleryIdx, images.length])\n\n useEffect(() => {\n if (!isGalleryTransitioning) {\n return\n }\n\n const transitionId = window.setTimeout(() => {\n setIsGalleryTransitioning(false)\n }, 220)\n\n return () => window.clearTimeout(transitionId)\n }, [galleryIdx, isGalleryTransitioning])\n\n function changeGallery(nextIdx: number) {\n if (nextIdx === galleryIdx || nextIdx < 0 || nextIdx >= images.length) {\n return\n }\n\n if (images.length > 1) {\n setIsGalleryTransitioning(true)\n }\n\n setGalleryIdx(nextIdx)\n }\n\n useEffect(() => {\n if (!galleryAutoPlay || images.length <= 1) {\n return\n }\n\n const intervalId = window.setInterval(() => {\n setIsGalleryTransitioning(true)\n setGalleryIdx((current) => (current + 1) % images.length)\n }, 3500)\n\n return () => window.clearInterval(intervalId)\n }, [galleryAutoPlay, images.length])\n\n function changeQty(next: number) {\n const val = Math.max(1, next)\n if (onQuantityChange) onQuantityChange(val)\n else setInternalQty(val)\n }\n\n const availLabel =\n available === true\n ? 'Available'\n : available === false\n ? 'Unavailable'\n : typeof available === 'number'\n ? `${available} spots`\n : null\n\n const parsedDate = date ? (date instanceof Date ? date : new Date(date)) : null\n const dateDay = parsedDate ? parsedDate.getDate() : null\n const dateMonth = parsedDate ? parsedDate.toLocaleString('en', {month: 'short'}).toUpperCase() : null\n\n const trendType = trend !== undefined ? (trend > 0 ? 'up' : trend < 0 ? 'down' : 'neutral') : null\n\n if (variant === 'widget') {\n return (\n <div className={cn('card-service', 'widget', `color-${color}`, className)} {...rest}>\n <div className=\"cs-widget\">\n {icon && <span className=\"cs-widget-icon\">{icon}</span>}\n <div className=\"cs-widget-content\">\n <span className=\"cs-widget-label\">{title}</span>\n <span className=\"cs-widget-value\">{value}</span>\n {trend !== undefined && (\n <span className={cn('cs-widget-trend', trendType)}>\n {trendType === 'up' && <MArrowUpIcon size={14} />}\n {trendType === 'down' && <MArrowDownIcon size={14} />}\n <span>\n {trend > 0 ? '+' : ''}\n {trend}%\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('card-service', variant, `color-${color}`, className)} {...rest}>\n {images.length > 0 && (\n <div className=\"cs-gallery\">\n <img\n src={images[galleryIdx]}\n alt={title}\n className={cn('cs-image', isGalleryTransitioning && 'is-transitioning')}\n />\n {images.length > 1 && (\n <div className=\"cs-gallery-dots\">\n {images.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn('cs-dot', i === galleryIdx && 'active')}\n onClick={() => changeGallery(i)}\n aria-label={`Image ${i + 1}`}\n />\n ))}\n </div>\n )}\n\n {(onFavorite || (menuItems && menuItems.length > 0)) && (\n <div className=\"cs-gallery-actions\">\n {menuItems && menuItems.length > 0 && (\n <MDropdownMenu\n className=\"cs-menu-wrap\"\n trigger={\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n aria-label=\"More options\"\n className=\"cs-overlay-btn\"\n >\n <MEllipsisVerticalIcon />\n </MButton>\n }\n placement=\"bottom-end\"\n >\n {menuItems.map((item, i) => (\n <MDropdownItem\n key={i}\n icon={item.icon}\n color={item.danger ? 'error' : undefined}\n label={item.label}\n onClick={item.onClick}\n />\n ))}\n </MDropdownMenu>\n )}\n {onFavorite && (\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n onClick={onFavorite}\n aria-label={favorite ? 'Remove from favorites' : 'Add to favorites'}\n className={cn('cs-overlay-btn', favorite && 'cs-fav-active')}\n >\n {favorite ? <MHeartFillIcon /> : <MHeartIcon />}\n </MButton>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"cs-body\">\n {variant === 'event' && parsedDate && (\n <div className=\"cs-event-header\">\n <div className=\"cs-date-block\">\n <span className=\"cs-date-day\">{dateDay}</span>\n <span className=\"cs-date-month\">{dateMonth}</span>\n </div>\n <div className=\"cs-event-info\">\n <h3 className=\"cs-title\">{title}</h3>\n {description && <p className=\"cs-desc\">{description}</p>}\n </div>\n </div>\n )}\n\n {variant !== 'event' && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {variant === 'event' && !parsedDate && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {rating !== undefined && (\n <div className=\"cs-rating\">\n <MRating value={Math.round(rating)} size=\"sm\" color=\"warning\" readOnly className=\"cs-stars\" />\n <span className=\"cs-rating-value\">{rating.toFixed(1)}</span>\n {reviewCount !== undefined && <span className=\"cs-review-count\">({reviewCount})</span>}\n </div>\n )}\n\n {leader && (\n <div className=\"cs-leader\">\n <MAvatar src={leader.avatar} name={leader.name} size={28} color={color} />\n <span className=\"cs-leader-name\">{leader.name}</span>\n </div>\n )}\n\n {variant === 'course' && participants && (\n <div className=\"cs-participants\">\n <div className=\"cs-participants-avatars\">\n {participants.slice(0, 4).map((participant, index) => (\n <MAvatar\n key={`${participant.name}-${index}`}\n src={participant.avatar}\n name={participant.name}\n size={28}\n color={color}\n className=\"cs-participant-avatar\"\n />\n ))}\n </div>\n {maxParticipants && (\n <span className=\"cs-spots\">\n {participants.length}/{maxParticipants}\n </span>\n )}\n </div>\n )}\n\n <div className=\"cs-meta\">\n {variant === 'event' && location && (\n <MBadge size=\"xs\" color={color}>\n {location}\n </MBadge>\n )}\n {duration && (\n <MBadge size=\"xs\" color={color} icon={<MClockIcon />}>\n {duration}\n </MBadge>\n )}\n {variant === 'event' && status && (\n <MBadge size=\"xs\" color={status.toLowerCase() === 'sold out' ? 'error' : color}>\n {status}\n </MBadge>\n )}\n {availLabel && variant !== 'event' && (\n <MBadge size=\"xs\" color={available === false ? 'error' : color}>\n {availLabel}\n </MBadge>\n )}\n </div>\n </div>\n\n <div className=\"cs-footer\">\n {price !== undefined && (\n <span className=\"cs-price\">\n {typeof price === 'number' ? price.toFixed(2) : price}{' '}\n <span className=\"cs-currency\">{currency}</span>\n </span>\n )}\n\n <div className=\"cs-actions\">\n {variant === 'product' && onAddToCart && (\n <div className=\"cs-qty\">\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty - 1)}\n aria-label=\"Decrease\"\n className=\"cs-qty-btn\"\n >\n <MMinusIcon />\n </MButton>\n <span className=\"cs-qty-value\">{qty}</span>\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty + 1)}\n aria-label=\"Increase\"\n className=\"cs-qty-btn\"\n >\n <MPlusIcon />\n </MButton>\n </div>\n )}\n {onAddToCart && (\n <MButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n onClick={() => onAddToCart(qty)}\n disabled={available === false}\n className=\"cs-cart-btn\"\n >\n {actionLabel ?? (variant === 'event' ? 'Register' : 'Add to cart')}\n </MButton>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardOfferProps} from './MCardOffer.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardOffer(props: MCardOfferProps) {\n const {onAction, actionLabel = 'Book now', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"service\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardCourseProps} from './MCardCourse.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardCourse(props: MCardCourseProps) {\n const {onAction, actionLabel = 'Join course', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"course\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardProductProps} from './MCardProduct.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardProduct(props: MCardProductProps) {\n const {addToCartLabel = 'Add to cart', ...rest} = props\n\n return <SharedServiceCard variant=\"product\" actionLabel={addToCartLabel} {...rest} />\n}\n","import type {MCardEventProps} from './MCardEvent.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardEvent(props: MCardEventProps) {\n const {onRegister, registerLabel = 'Register', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"event\"\n onAddToCart={onRegister ? () => onRegister() : undefined}\n actionLabel={registerLabel}\n {...rest}\n />\n )\n}\n","import type {MCardWidgetProps} from './MCardWidget.types'\nimport {cn} from '../../../utils/cn'\nimport {MArrowDownIcon, MArrowUpIcon} from '../../../icons'\nimport './MCardWidget.css'\n\nfunction resolveTrendType(trend: MCardWidgetProps['trend'], explicit?: MCardWidgetProps['trendType']) {\n if (explicit) return explicit\n if (typeof trend !== 'number' || trend === 0) return 'neutral'\n return trend > 0 ? 'up' : 'down'\n}\n\nfunction formatTrend(trend: MCardWidgetProps['trend']) {\n if (typeof trend === 'number' && trend > 0) {\n return `+${trend}`\n }\n\n return trend\n}\n\nexport function MCardWidget({\n title,\n value,\n trend,\n trendType,\n icon,\n color = 'primary',\n helperText,\n className,\n ...rest\n}: MCardWidgetProps) {\n const hasTrend = trend !== undefined && trend !== null\n const resolvedTrendType = resolveTrendType(trend, trendType)\n const formattedTrend = formatTrend(trend)\n\n return (\n <div className={cn('card-widget', `color-${color}`, className)} {...rest}>\n <div className=\"cw-top\">\n <div className=\"cw-meta\">\n <span className=\"cw-title\">{title}</span>\n <span className=\"cw-value\">{value}</span>\n </div>\n {icon && <span className=\"cw-icon\">{icon}</span>}\n </div>\n\n {hasTrend && (\n <div className=\"cw-bottom\">\n <span className={cn('cw-trend', resolvedTrendType)}>\n {resolvedTrendType === 'up' && <MArrowUpIcon size={14} />}\n {resolvedTrendType === 'down' && <MArrowDownIcon size={14} />}\n <span>{formattedTrend}</span>\n </span>\n </div>\n )}\n\n {helperText && <div className=\"cw-helper\">{helperText}</div>}\n </div>\n )\n}\n","import {useState, useMemo, useRef, useCallback} from 'react'\nimport type {MCardGridProps} from './MCardGrid.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton, MCheckbox} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MPopover} from '../../primitives'\nimport {MArrowDownIcon, MArrowUpIcon, MFilterIcon, MSortIcon} from '../../../icons'\nimport './MCardGrid.css'\n\nfunction getNestedValue(obj: unknown, key: string): unknown {\n const parts = key.split('.')\n let val: unknown = obj\n\n for (const p of parts) {\n if (val == null || typeof val !== 'object') return undefined\n val = (val as Record<string, unknown>)[p]\n }\n\n return val\n}\n\nexport function MCardGrid<T extends Record<string, unknown>>({\n items,\n renderCard,\n searchable = false,\n searchKeys,\n searchPlaceholder = 'Search...',\n filterable = false,\n filterKeys = [],\n sortable = false,\n sortKeys = [],\n defaultSort,\n columns = 3,\n emptyMessage = 'No results found.',\n className,\n style,\n ...rest\n}: MCardGridProps<T>) {\n const [search, setSearch] = useState('')\n const [filters, setFilters] = useState<Record<string, Set<string>>>({})\n const [sortKey, setSortKey] = useState<string | null>(defaultSort?.key ?? null)\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>(defaultSort?.direction ?? 'asc')\n const [filterOpen, setFilterOpen] = useState(false)\n const [sortOpen, setSortOpen] = useState(false)\n const filterBtnRef = useRef<HTMLElement>(null)\n const sortBtnRef = useRef<HTMLElement>(null)\n\n const openFilter = useCallback(() => {\n setFilterOpen((v) => !v)\n setSortOpen(false)\n }, [])\n\n const openSort = useCallback(() => {\n setSortOpen((v) => !v)\n setFilterOpen(false)\n }, [])\n\n const processed = useMemo(() => {\n let result = [...items]\n\n if (search && searchKeys && searchKeys.length > 0) {\n const query = search.toLowerCase()\n result = result.filter((item) =>\n searchKeys.some((key) => {\n const value = getNestedValue(item, key)\n return value != null && String(value).toLowerCase().includes(query)\n })\n )\n }\n\n for (const [key, selected] of Object.entries(filters)) {\n if (selected.size === 0) continue\n\n result = result.filter((item) => {\n const value = getNestedValue(item, key)\n return value != null && selected.has(String(value))\n })\n }\n\n if (sortKey) {\n result.sort((a, b) => {\n const av = getNestedValue(a, sortKey)\n const bv = getNestedValue(b, sortKey)\n\n if (av == null && bv == null) return 0\n if (av == null) return 1\n if (bv == null) return -1\n\n const compare = String(av).localeCompare(String(bv), undefined, {numeric: true})\n return sortDir === 'asc' ? compare : -compare\n })\n }\n\n return result\n }, [items, search, searchKeys, filters, sortKey, sortDir])\n\n function toggleFilter(key: string, value: string) {\n setFilters((prev) => {\n const next = new Set(prev[key] ?? [])\n\n if (next.has(value)) next.delete(value)\n else next.add(value)\n\n return {...prev, [key]: next}\n })\n }\n\n const filterOptions = useMemo(() => {\n const map: Record<string, string[]> = {}\n\n for (const filterKey of filterKeys) {\n if (filterKey.options) {\n map[filterKey.key] = filterKey.options\n continue\n }\n\n const values = new Set<string>()\n\n for (const item of items) {\n const value = getNestedValue(item, filterKey.key)\n if (value != null) values.add(String(value))\n }\n\n map[filterKey.key] = Array.from(values).sort()\n }\n\n return map\n }, [items, filterKeys])\n\n const activeSort = sortKeys.find((item) => item.key === sortKey)\n\n return (\n <div className={cn('card-grid', className)} style={style} {...rest}>\n {(searchable || filterable || sortable) && (\n <div className=\"card-grid-toolbar\">\n {searchable && (\n <MInputSearch\n className=\"card-grid-search\"\n size=\"sm\"\n fullWidth\n placeholder={searchPlaceholder}\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n onClear={() => setSearch('')}\n />\n )}\n\n <div className=\"card-grid-actions\">\n {filterable && filterKeys.length > 0 && (\n <>\n <MButton\n ref={filterBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={<MFilterIcon />}\n aria-expanded={filterOpen}\n onClick={openFilter}\n >\n Filter\n </MButton>\n <MPopover\n open={filterOpen}\n anchorRef={filterBtnRef}\n onClose={() => setFilterOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {filterKeys.map((filterKey) => (\n <div key={filterKey.key} className=\"card-grid-filter-group\">\n <span className=\"card-grid-filter-label\">{filterKey.label}</span>\n {(filterOptions[filterKey.key] ?? []).map((option) => (\n <div key={option} className=\"card-grid-filter-option\">\n <MCheckbox\n size=\"sm\"\n clickEffect=\"none\"\n checked={filters[filterKey.key]?.has(option) ?? false}\n onChange={() => toggleFilter(filterKey.key, option)}\n label={option}\n />\n </div>\n ))}\n </div>\n ))}\n </MPopover>\n </>\n )}\n\n {sortable && sortKeys.length > 0 && (\n <>\n <MButton\n ref={sortBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={\n sortKey ? (\n sortDir === 'asc' ? (\n <MArrowUpIcon />\n ) : (\n <MArrowDownIcon />\n )\n ) : (\n <MSortIcon />\n )\n }\n aria-expanded={sortOpen}\n onClick={openSort}\n >\n {activeSort ? `Sort: ${activeSort.label}` : 'Sort'}\n </MButton>\n <MPopover\n open={sortOpen}\n anchorRef={sortBtnRef}\n onClose={() => setSortOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {sortKeys.map((sortItem) => (\n <button\n key={sortItem.key}\n type=\"button\"\n className={cn('card-grid-sort-item', sortKey === sortItem.key && 'active')}\n onClick={() => {\n if (sortKey === sortItem.key) {\n setSortDir(sortDir === 'asc' ? 'desc' : 'asc')\n } else {\n setSortKey(sortItem.key)\n setSortDir('asc')\n }\n setSortOpen(false)\n }}\n >\n {sortItem.label}\n {sortKey === sortItem.key && (\n <span className=\"card-grid-sort-dir\">\n {sortDir === 'asc' ? (\n <MArrowUpIcon className=\"card-grid-sort-icon\" />\n ) : (\n <MArrowDownIcon className=\"card-grid-sort-icon\" />\n )}\n </span>\n )}\n </button>\n ))}\n </MPopover>\n </>\n )}\n </div>\n </div>\n )}\n\n {processed.length > 0 ? (\n <div\n className=\"card-grid-items\"\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {processed.map((item, index) => renderCard(item, index))}\n </div>\n ) : (\n <div className=\"card-grid-empty\">{emptyMessage}</div>\n )}\n </div>\n )\n}\n","import type {MCardFinanceProps} from './MCardFinance.types'\nimport {cn} from '../../../utils/cn'\nimport {MSparkline} from '../../data/MSparkline/MSparkline'\nimport {MArrowUpIcon, MArrowDownIcon} from '../../../icons'\nimport './MCardFinance.css'\n\nfunction resolveChangeType(change: number | undefined, explicit?: MCardFinanceProps['changeType']) {\n if (explicit) return explicit\n if (change === undefined || change === 0) return 'neutral'\n return change > 0 ? 'up' : 'down'\n}\n\nexport function MCardFinance({\n label,\n value,\n change,\n changeType: changeTypeProp,\n changeLabel,\n icon,\n sparkline,\n sparklineType = 'area',\n color = 'primary',\n currency,\n className,\n ...rest\n}: MCardFinanceProps) {\n const changeType = resolveChangeType(change, changeTypeProp)\n\n const changeColor = changeType === 'up' ? 'success' : changeType === 'down' ? 'error' : 'neutral'\n\n return (\n <div className={cn('card-finance', `color-${color}`, className)} {...rest}>\n <div className=\"cf-top\">\n <div className=\"cf-meta\">\n <span className=\"cf-label\">{label}</span>\n {currency && <span className=\"cf-currency\">{currency}</span>}\n </div>\n {icon && <span className=\"cf-icon\">{icon}</span>}\n </div>\n\n <div className=\"cf-value\">{value}</div>\n\n <div className=\"cf-bottom\">\n {change !== undefined && (\n <span className={cn('cf-change', changeColor)}>\n {changeType === 'up' && <MArrowUpIcon size={14} />}\n {changeType === 'down' && <MArrowDownIcon size={14} />}\n <span className=\"cf-change-value\">\n {change > 0 ? '+' : ''}\n {change}%\n </span>\n {changeLabel && <span className=\"cf-change-label\">{changeLabel}</span>}\n </span>\n )}\n </div>\n\n <div className=\"cf-sparkline\">\n <MSparkline\n data={sparkline}\n type={sparklineType}\n color={changeColor === 'neutral' ? color : changeColor}\n height={46}\n padding={0}\n curved\n animated\n fillOpacity={0.18}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cards-CTegCxIA.cjs","names":[],"sources":["../src/components/cards/MCardPayment/MCardPayment.tsx","../src/components/cards/MCardPaymentMethod/MCardPaymentMethod.tsx","../src/utils/socialPlatforms.tsx","../src/components/cards/MCardBusiness/MCardBusiness.tsx","../src/components/cards/ServiceCardsShared/ServiceCardsShared.tsx","../src/components/cards/MCardOffer/MCardOffer.tsx","../src/components/cards/MCardCourse/MCardCourse.tsx","../src/components/cards/MCardProduct/MCardProduct.tsx","../src/components/cards/MCardEvent/MCardEvent.tsx","../src/components/cards/MCardWidget/MCardWidget.tsx","../src/components/cards/MCardGrid/MCardGrid.tsx","../src/components/cards/MCardFinance/MCardFinance.tsx"],"sourcesContent":["import type {MCardPaymentProps} from './MCardPayment.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands, detectCardBrand} from '../../../utils/creditCards'\nimport './MCardPayment.css'\n\nfunction maskNumber(raw: string): string {\n const digits = raw.replace(/\\D/g, '')\n if (digits.length <= 4) return digits\n const last4 = digits.slice(-4)\n return `\\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 ${last4}`\n}\n\n// Display-only payment card with balance, masked number, holder name and brand badge.\nexport function MCardPayment({\n holder,\n number,\n expiry,\n brand,\n brandIcon,\n balance,\n balanceLabel = 'Current balance',\n color,\n className,\n ...rest\n}: MCardPaymentProps) {\n const detectedDetails = detectCardBrand(number)\n const detected = brand ?? detectedDetails.brand\n const brandDetails = creditCardBrands.find((rule) => rule.brand === detected) ?? detectedDetails\n const masked = maskNumber(number)\n const brandLabel = brandDetails.iconLabel\n\n return (\n <div className={cn('card-payment', color || 'primary', className)} {...rest}>\n {balance !== undefined && (\n <div>\n <p className=\"cp-balance-label\">{balanceLabel}</p>\n <p className=\"cp-balance\">{balance}</p>\n </div>\n )}\n\n <div className=\"cp-row\">\n <span className={cn('cp-brand', !brandIcon && detected)}>{brandIcon ?? brandLabel}</span>\n <span className=\"cp-number\">{masked}</span>\n </div>\n\n <div className=\"cp-details\">\n <div>\n <p className=\"cp-field-label\">MCard holder</p>\n <p className=\"cp-field-value\">{holder}</p>\n </div>\n <div>\n <p className=\"cp-field-label\">Expiration date</p>\n <p className=\"cp-field-value\">{expiry}</p>\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardPaymentMethodProps} from './MCardPaymentMethod.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands} from '../../../utils/creditCards'\nimport {MArrowRightIcon} from '../../../icons'\nimport {MBadge} from '../../feedback'\nimport {MInline} from '../../layout'\nimport {MLink, MText} from '../../typography'\nimport {MInputExpDate} from '../../inputs/MInputExpDate'\nimport {MInputCVC} from '../../inputs/MInputCVC'\nimport './MCardPaymentMethod.css'\n\nfunction resolveBrandLabel(brand: NonNullable<MCardPaymentMethodProps['brand']>) {\n return creditCardBrands.find((item) => item.brand === brand)?.iconLabel ?? 'CARD'\n}\n\nexport function MCardPaymentMethod({\n title = 'Your payment methods',\n actionLabel = 'Change',\n actionHref = '#',\n onAction,\n brand = 'visa',\n brandIcon,\n last4,\n badgeLabel,\n summary,\n helperText = 'All fields are required, unless stated otherwise.',\n expiryLabel = 'Expiration date',\n cvcLabel = 'Security code',\n expiryProps,\n cvcProps,\n color,\n className,\n ...rest\n}: MCardPaymentMethodProps) {\n const expirySummary = expiryProps?.value ?? expiryProps?.defaultValue\n const resolvedBadgeLabel = badgeLabel === undefined ? 'Default' : badgeLabel\n const derivedSummary = expirySummary\n ? `Credit card - Expiration date ${String(expirySummary).replace('/', '.')}`\n : 'Credit card'\n const resolvedSummary = summary === undefined ? derivedSummary : summary\n const brandLabel = resolveBrandLabel(brand)\n const resolvedExpiryProps = {\n clearable: true,\n ...expiryProps,\n }\n\n return (\n <div className={cn('card-payment-method', color || 'primary', className)} {...rest}>\n <div className={'cpm-header'}>\n <h3 className={'cpm-title'}>{title}</h3>\n <MLink\n href={actionHref}\n tone={'accent'}\n underline={'none'}\n className={'cpm-action'}\n onClick={(event) => {\n if (onAction) {\n event.preventDefault()\n onAction()\n }\n }}\n >\n {actionLabel}\n <MArrowRightIcon />\n </MLink>\n </div>\n\n <div className={'cpm-surface'}>\n <div className={'cpm-method'}>\n <MInline align={'center'} className={'cpm-method-row'}>\n <span className={cn('cpm-brand', !brandIcon && brand)}>{brandIcon ?? brandLabel}</span>\n <span className={'cpm-last4'}>{`\\u2022\\u2022\\u2022\\u2022 ${last4}`}</span>\n {resolvedBadgeLabel && <MBadge color={'info'}>{resolvedBadgeLabel}</MBadge>}\n </MInline>\n {resolvedSummary && (\n <MText tone={'muted'} className={'cpm-summary'}>\n {resolvedSummary}\n </MText>\n )}\n </div>\n\n {helperText && (\n <MText tone={'muted'} size={'sm'} className={'cpm-helper'}>\n {helperText}\n </MText>\n )}\n\n <div className={'cpm-fields'}>\n <MInputExpDate label={expiryLabel} placeholder={'MM/YYYY'} fullWidth {...resolvedExpiryProps} />\n <MInputCVC label={cvcLabel} placeholder={'123'} fullWidth {...cvcProps} />\n </div>\n </div>\n </div>\n )\n}\n","import type {ComponentType} from 'react'\nimport type {MIconProps} from '../icons'\nimport {\n MAppleColorIcon,\n MAppleIcon,\n MDiscordColorIcon,\n MDiscordIcon,\n MFacebookColorIcon,\n MFacebookIcon,\n MFigmaColorIcon,\n MFigmaIcon,\n MGitHubColorIcon,\n MGitHubIcon,\n MGoogleColorIcon,\n MGoogleIcon,\n MInstagramColorIcon,\n MInstagramIcon,\n MLinkedInColorIcon,\n MLinkedInIcon,\n MPinterestColorIcon,\n MPinterestIcon,\n MSlackColorIcon,\n MSlackIcon,\n MSpotifyColorIcon,\n MSpotifyIcon,\n MTumblrColorIcon,\n MTumblrIcon,\n MVimeoColorIcon,\n MVimeoIcon,\n MVkColorIcon,\n MVkIcon,\n MXColorIcon,\n MXIcon,\n MYouTubeColorIcon,\n MYouTubeIcon,\n} from '../icons'\n\nexport type MSocialPlatform =\n | 'apple'\n | 'discord'\n | 'facebook'\n | 'figma'\n | 'github'\n | 'google'\n | 'instagram'\n | 'linkedin'\n | 'pinterest'\n | 'slack'\n | 'spotify'\n | 'tumblr'\n | 'vimeo'\n | 'vk'\n | 'twitter'\n | 'x'\n | 'youtube'\n | (string & {})\n\ntype SocialEntry = {\n label: string\n icon: ComponentType<MIconProps>\n colorIcon: ComponentType<MIconProps>\n rgb: string\n}\n\nconst socialMap: Record<string, SocialEntry> = {\n apple: {label: 'Apple', icon: MAppleIcon, colorIcon: MAppleColorIcon, rgb: '24, 24, 27'},\n discord: {label: 'Discord', icon: MDiscordIcon, colorIcon: MDiscordColorIcon, rgb: '88, 101, 242'},\n facebook: {label: 'Facebook', icon: MFacebookIcon, colorIcon: MFacebookColorIcon, rgb: '24, 119, 242'},\n figma: {label: 'Figma', icon: MFigmaIcon, colorIcon: MFigmaColorIcon, rgb: '162, 89, 255'},\n github: {label: 'GitHub', icon: MGitHubIcon, colorIcon: MGitHubColorIcon, rgb: '24, 23, 23'},\n google: {label: 'Google', icon: MGoogleIcon, colorIcon: MGoogleColorIcon, rgb: '66, 133, 244'},\n instagram: {label: 'Instagram', icon: MInstagramIcon, colorIcon: MInstagramColorIcon, rgb: '225, 48, 108'},\n linkedin: {label: 'LinkedIn', icon: MLinkedInIcon, colorIcon: MLinkedInColorIcon, rgb: '10, 102, 194'},\n pinterest: {label: 'Pinterest', icon: MPinterestIcon, colorIcon: MPinterestColorIcon, rgb: '230, 0, 35'},\n slack: {label: 'Slack', icon: MSlackIcon, colorIcon: MSlackColorIcon, rgb: '74, 21, 75'},\n spotify: {label: 'Spotify', icon: MSpotifyIcon, colorIcon: MSpotifyColorIcon, rgb: '30, 215, 96'},\n tumblr: {label: 'Tumblr', icon: MTumblrIcon, colorIcon: MTumblrColorIcon, rgb: '0, 25, 53'},\n vimeo: {label: 'Vimeo', icon: MVimeoIcon, colorIcon: MVimeoColorIcon, rgb: '26, 183, 234'},\n vk: {label: 'VK', icon: MVkIcon, colorIcon: MVkColorIcon, rgb: '0, 119, 255'},\n x: {label: 'X', icon: MXIcon, colorIcon: MXColorIcon, rgb: '17, 17, 17'},\n youtube: {label: 'YouTube', icon: MYouTubeIcon, colorIcon: MYouTubeColorIcon, rgb: '255, 0, 0'},\n}\n\nexport function normalizeSocialPlatform(platform: string) {\n const normalized = platform\n .trim()\n .toLowerCase()\n .replace(/[\\s._-]+/g, '')\n\n if (normalized === 'twitter') {\n return 'x'\n }\n\n if (normalized === 'vkontakte') {\n return 'vk'\n }\n\n return normalized\n}\n\nexport function getSocialLabel(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.label ?? platform\n}\n\nexport function getSocialIconComponent(platform: MSocialPlatform, brand = false) {\n const normalized = normalizeSocialPlatform(platform)\n const entry = socialMap[normalized]\n\n if (!entry) {\n return null\n }\n\n return brand ? entry.colorIcon : entry.icon\n}\n\nexport function getSocialBrandRgb(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.rgb ?? '37, 99, 235'\n}\n","import type {MCardBusinessProps} from './MCardBusiness.types'\nimport {cn} from '../../../utils/cn'\nimport {MQrCode} from '../../display'\nimport {MAvatar} from '../../media'\nimport {MGlobeIcon, MMailIcon, MPhoneIcon, MPinIcon} from '../../../icons'\nimport {getSocialIconComponent, getSocialLabel} from '../../../utils/socialPlatforms'\nimport './MCardBusiness.css'\n\n// Join available address fields into one readable line.\nfunction formatAddress(address: MCardBusinessProps['address']): string | null {\n if (!address) return null\n\n return [address.street, [address.zip, address.city].filter(Boolean).join(' '), address.country]\n .filter(Boolean)\n .join(', ')\n}\n\n// Render a compact business card for a person or a company profile.\nexport function MCardBusiness({\n variant = 'user',\n name,\n title,\n avatar,\n address,\n contact,\n socials,\n online,\n lastActive,\n qrCode,\n qrValue,\n qrStatus,\n qrStatusLabel,\n color = 'primary',\n className,\n ...rest\n}: MCardBusinessProps) {\n const addr = formatAddress(address)\n\n return (\n <div className={cn('card-business', variant, `color-${color}`, className)} {...rest}>\n <div className=\"cb-header\">\n <div className=\"cb-avatar-wrap\">\n <MAvatar\n src={avatar}\n alt={name}\n name={name}\n size={56}\n shape={variant === 'company' ? 'rounded' : 'circle'}\n color={color}\n badge={online !== undefined ? true : undefined}\n badgeColor={online === undefined ? undefined : online ? 'success' : 'error'}\n badgePulsing={Boolean(online)}\n className={cn('cb-avatar', variant)}\n />\n </div>\n\n <div className=\"cb-info\">\n <h3 className=\"cb-name\">{name}</h3>\n {title && <p className=\"cb-title\">{title}</p>}\n {lastActive && <p className=\"cb-last-active\">{lastActive}</p>}\n </div>\n\n {(qrValue || qrCode) && (\n <div className=\"cb-qr\">\n {qrValue ? (\n <MQrCode\n value={qrValue}\n size={56}\n padding={3}\n status={qrStatus}\n statusLabel={qrStatusLabel}\n className=\"cb-qr-code\"\n />\n ) : (\n <img src={qrCode} alt=\"QR\" className=\"cb-qr-img\" />\n )}\n </div>\n )}\n </div>\n\n {(contact || addr) && (\n <div className=\"cb-details\">\n {contact?.email && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MMailIcon />\n </span>\n <a href={`mailto:${contact.email}`} className=\"cb-detail-value\">\n {contact.email}\n </a>\n </div>\n )}\n {contact?.phone && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPhoneIcon />\n </span>\n <a href={`tel:${contact.phone}`} className=\"cb-detail-value\">\n {contact.phone}\n </a>\n </div>\n )}\n {contact?.website && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MGlobeIcon />\n </span>\n <a\n href={contact.website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-detail-value\"\n >\n {contact.website.replace(/^https?:\\/\\//, '')}\n </a>\n </div>\n )}\n {addr && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPinIcon />\n </span>\n <span className=\"cb-detail-value\">{addr}</span>\n </div>\n )}\n </div>\n )}\n\n {socials && socials.length > 0 && (\n <div className=\"cb-socials\">\n {socials.map((item) =>\n (() => {\n const Icon = getSocialIconComponent(item.platform, true)\n\n return (\n <a\n key={item.platform}\n href={item.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-social\"\n title={getSocialLabel(item.platform)}\n aria-label={getSocialLabel(item.platform)}\n >\n {item.icon ??\n (Icon ? <Icon /> : <span className=\"cb-social-text\">{item.platform}</span>)}\n </a>\n )\n })()\n )}\n </div>\n )}\n </div>\n )\n}\n","import {useEffect, useState} from 'react'\nimport type {SharedServiceCardProps} from './ServiceCardsShared.types'\nimport {cn} from '../../../utils/cn'\nimport {\n MArrowDownIcon,\n MArrowUpIcon,\n MClockIcon,\n MEllipsisVerticalIcon,\n MHeartFillIcon,\n MHeartIcon,\n MMinusIcon,\n MPlusIcon,\n} from '../../../icons'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MAvatar} from '../../media'\nimport {MRating} from '../../display'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport './ServiceCardsShared.css'\n\nexport function SharedServiceCard({\n variant,\n title,\n description,\n price,\n currency = 'PLN',\n duration,\n available,\n image,\n gallery,\n galleryAutoPlay = false,\n rating,\n reviewCount,\n favorite,\n onFavorite,\n menuItems,\n onAddToCart,\n actionLabel,\n icon,\n color = 'primary',\n leader,\n participants,\n maxParticipants,\n quantity: controlledQty,\n onQuantityChange,\n date,\n location,\n status,\n value,\n trend,\n className,\n ...rest\n}: SharedServiceCardProps) {\n const [galleryIdx, setGalleryIdx] = useState(0)\n const [isGalleryTransitioning, setIsGalleryTransitioning] = useState(false)\n const [internalQty, setInternalQty] = useState(1)\n\n const qty = controlledQty ?? internalQty\n const images = gallery && gallery.length > 0 ? gallery : image ? [image] : []\n\n useEffect(() => {\n if (galleryIdx >= images.length) {\n setGalleryIdx(0)\n }\n }, [galleryIdx, images.length])\n\n useEffect(() => {\n if (!isGalleryTransitioning) {\n return\n }\n\n const transitionId = window.setTimeout(() => {\n setIsGalleryTransitioning(false)\n }, 220)\n\n return () => window.clearTimeout(transitionId)\n }, [galleryIdx, isGalleryTransitioning])\n\n function changeGallery(nextIdx: number) {\n if (nextIdx === galleryIdx || nextIdx < 0 || nextIdx >= images.length) {\n return\n }\n\n if (images.length > 1) {\n setIsGalleryTransitioning(true)\n }\n\n setGalleryIdx(nextIdx)\n }\n\n useEffect(() => {\n if (!galleryAutoPlay || images.length <= 1) {\n return\n }\n\n const intervalId = window.setInterval(() => {\n setIsGalleryTransitioning(true)\n setGalleryIdx((current) => (current + 1) % images.length)\n }, 3500)\n\n return () => window.clearInterval(intervalId)\n }, [galleryAutoPlay, images.length])\n\n function changeQty(next: number) {\n const val = Math.max(1, next)\n if (onQuantityChange) onQuantityChange(val)\n else setInternalQty(val)\n }\n\n const availLabel =\n available === true\n ? 'Available'\n : available === false\n ? 'Unavailable'\n : typeof available === 'number'\n ? `${available} spots`\n : null\n\n const parsedDate = date ? (date instanceof Date ? date : new Date(date)) : null\n const dateDay = parsedDate ? parsedDate.getDate() : null\n const dateMonth = parsedDate ? parsedDate.toLocaleString('en', {month: 'short'}).toUpperCase() : null\n\n const trendType = trend !== undefined ? (trend > 0 ? 'up' : trend < 0 ? 'down' : 'neutral') : null\n\n if (variant === 'widget') {\n return (\n <div className={cn('card-service', 'widget', `color-${color}`, className)} {...rest}>\n <div className=\"cs-widget\">\n {icon && <span className=\"cs-widget-icon\">{icon}</span>}\n <div className=\"cs-widget-content\">\n <span className=\"cs-widget-label\">{title}</span>\n <span className=\"cs-widget-value\">{value}</span>\n {trend !== undefined && (\n <span className={cn('cs-widget-trend', trendType)}>\n {trendType === 'up' && <MArrowUpIcon size={14} />}\n {trendType === 'down' && <MArrowDownIcon size={14} />}\n <span>\n {trend > 0 ? '+' : ''}\n {trend}%\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('card-service', variant, `color-${color}`, className)} {...rest}>\n {images.length > 0 && (\n <div className=\"cs-gallery\">\n <img\n src={images[galleryIdx]}\n alt={title}\n className={cn('cs-image', isGalleryTransitioning && 'is-transitioning')}\n />\n {images.length > 1 && (\n <div className=\"cs-gallery-dots\">\n {images.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn('cs-dot', i === galleryIdx && 'active')}\n onClick={() => changeGallery(i)}\n aria-label={`Image ${i + 1}`}\n />\n ))}\n </div>\n )}\n\n {(onFavorite || (menuItems && menuItems.length > 0)) && (\n <div className=\"cs-gallery-actions\">\n {menuItems && menuItems.length > 0 && (\n <MDropdownMenu\n className=\"cs-menu-wrap\"\n trigger={\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n aria-label=\"More options\"\n className=\"cs-overlay-btn\"\n >\n <MEllipsisVerticalIcon />\n </MButton>\n }\n placement=\"bottom-end\"\n >\n {menuItems.map((item, i) => (\n <MDropdownItem\n key={i}\n icon={item.icon}\n color={item.danger ? 'error' : undefined}\n label={item.label}\n onClick={item.onClick}\n />\n ))}\n </MDropdownMenu>\n )}\n {onFavorite && (\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n onClick={onFavorite}\n aria-label={favorite ? 'Remove from favorites' : 'Add to favorites'}\n className={cn('cs-overlay-btn', favorite && 'cs-fav-active')}\n >\n {favorite ? <MHeartFillIcon /> : <MHeartIcon />}\n </MButton>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"cs-body\">\n {variant === 'event' && parsedDate && (\n <div className=\"cs-event-header\">\n <div className=\"cs-date-block\">\n <span className=\"cs-date-day\">{dateDay}</span>\n <span className=\"cs-date-month\">{dateMonth}</span>\n </div>\n <div className=\"cs-event-info\">\n <h3 className=\"cs-title\">{title}</h3>\n {description && <p className=\"cs-desc\">{description}</p>}\n </div>\n </div>\n )}\n\n {variant !== 'event' && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {variant === 'event' && !parsedDate && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {rating !== undefined && (\n <div className=\"cs-rating\">\n <MRating value={Math.round(rating)} size=\"sm\" color=\"warning\" readOnly className=\"cs-stars\" />\n <span className=\"cs-rating-value\">{rating.toFixed(1)}</span>\n {reviewCount !== undefined && <span className=\"cs-review-count\">({reviewCount})</span>}\n </div>\n )}\n\n {leader && (\n <div className=\"cs-leader\">\n <MAvatar src={leader.avatar} name={leader.name} size={28} color={color} />\n <span className=\"cs-leader-name\">{leader.name}</span>\n </div>\n )}\n\n {variant === 'course' && participants && (\n <div className=\"cs-participants\">\n <div className=\"cs-participants-avatars\">\n {participants.slice(0, 4).map((participant, index) => (\n <MAvatar\n key={`${participant.name}-${index}`}\n src={participant.avatar}\n name={participant.name}\n size={28}\n color={color}\n className=\"cs-participant-avatar\"\n />\n ))}\n </div>\n {maxParticipants && (\n <span className=\"cs-spots\">\n {participants.length}/{maxParticipants}\n </span>\n )}\n </div>\n )}\n\n <div className=\"cs-meta\">\n {variant === 'event' && location && (\n <MBadge size=\"xs\" color={color}>\n {location}\n </MBadge>\n )}\n {duration && (\n <MBadge size=\"xs\" color={color} icon={<MClockIcon />}>\n {duration}\n </MBadge>\n )}\n {variant === 'event' && status && (\n <MBadge size=\"xs\" color={status.toLowerCase() === 'sold out' ? 'error' : color}>\n {status}\n </MBadge>\n )}\n {availLabel && variant !== 'event' && (\n <MBadge size=\"xs\" color={available === false ? 'error' : color}>\n {availLabel}\n </MBadge>\n )}\n </div>\n </div>\n\n <div className=\"cs-footer\">\n {price !== undefined && (\n <span className=\"cs-price\">\n {typeof price === 'number' ? price.toFixed(2) : price}{' '}\n <span className=\"cs-currency\">{currency}</span>\n </span>\n )}\n\n <div className=\"cs-actions\">\n {variant === 'product' && onAddToCart && (\n <div className=\"cs-qty\">\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty - 1)}\n aria-label=\"Decrease\"\n className=\"cs-qty-btn\"\n >\n <MMinusIcon />\n </MButton>\n <span className=\"cs-qty-value\">{qty}</span>\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty + 1)}\n aria-label=\"Increase\"\n className=\"cs-qty-btn\"\n >\n <MPlusIcon />\n </MButton>\n </div>\n )}\n {onAddToCart && (\n <MButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n onClick={() => onAddToCart(qty)}\n disabled={available === false}\n className=\"cs-cart-btn\"\n >\n {actionLabel ?? (variant === 'event' ? 'Register' : 'Add to cart')}\n </MButton>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardOfferProps} from './MCardOffer.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardOffer(props: MCardOfferProps) {\n const {onAction, actionLabel = 'Book now', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"service\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardCourseProps} from './MCardCourse.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardCourse(props: MCardCourseProps) {\n const {onAction, actionLabel = 'Join course', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"course\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardProductProps} from './MCardProduct.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardProduct(props: MCardProductProps) {\n const {addToCartLabel = 'Add to cart', ...rest} = props\n\n return <SharedServiceCard variant=\"product\" actionLabel={addToCartLabel} {...rest} />\n}\n","import type {MCardEventProps} from './MCardEvent.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardEvent(props: MCardEventProps) {\n const {onRegister, registerLabel = 'Register', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"event\"\n onAddToCart={onRegister ? () => onRegister() : undefined}\n actionLabel={registerLabel}\n {...rest}\n />\n )\n}\n","import type {MCardWidgetProps} from './MCardWidget.types'\nimport {cn} from '../../../utils/cn'\nimport {MArrowDownIcon, MArrowUpIcon} from '../../../icons'\nimport './MCardWidget.css'\n\nfunction resolveTrendType(trend: MCardWidgetProps['trend'], explicit?: MCardWidgetProps['trendType']) {\n if (explicit) return explicit\n if (typeof trend !== 'number' || trend === 0) return 'neutral'\n return trend > 0 ? 'up' : 'down'\n}\n\nfunction formatTrend(trend: MCardWidgetProps['trend']) {\n if (typeof trend === 'number' && trend > 0) {\n return `+${trend}`\n }\n\n return trend\n}\n\nexport function MCardWidget({\n title,\n value,\n trend,\n trendType,\n icon,\n color = 'primary',\n helperText,\n className,\n ...rest\n}: MCardWidgetProps) {\n const hasTrend = trend !== undefined && trend !== null\n const resolvedTrendType = resolveTrendType(trend, trendType)\n const formattedTrend = formatTrend(trend)\n\n return (\n <div className={cn('card-widget', `color-${color}`, className)} {...rest}>\n <div className=\"cw-top\">\n <div className=\"cw-meta\">\n <span className=\"cw-title\">{title}</span>\n <span className=\"cw-value\">{value}</span>\n </div>\n {icon && <span className=\"cw-icon\">{icon}</span>}\n </div>\n\n {hasTrend && (\n <div className=\"cw-bottom\">\n <span className={cn('cw-trend', resolvedTrendType)}>\n {resolvedTrendType === 'up' && <MArrowUpIcon size={14} />}\n {resolvedTrendType === 'down' && <MArrowDownIcon size={14} />}\n <span>{formattedTrend}</span>\n </span>\n </div>\n )}\n\n {helperText && <div className=\"cw-helper\">{helperText}</div>}\n </div>\n )\n}\n","import {useState, useMemo, useRef, useCallback} from 'react'\nimport type {MCardGridProps} from './MCardGrid.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton, MCheckbox} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MPopover} from '../../primitives'\nimport {MArrowDownIcon, MArrowUpIcon, MFilterIcon, MSortIcon} from '../../../icons'\nimport './MCardGrid.css'\n\nfunction getNestedValue(obj: unknown, key: string): unknown {\n const parts = key.split('.')\n let val: unknown = obj\n\n for (const p of parts) {\n if (val == null || typeof val !== 'object') return undefined\n val = (val as Record<string, unknown>)[p]\n }\n\n return val\n}\n\nexport function MCardGrid<T extends Record<string, unknown>>({\n items,\n renderCard,\n searchable = false,\n searchKeys,\n searchPlaceholder = 'Search...',\n filterable = false,\n filterKeys = [],\n sortable = false,\n sortKeys = [],\n defaultSort,\n columns = 3,\n emptyMessage = 'No results found.',\n className,\n style,\n ...rest\n}: MCardGridProps<T>) {\n const [search, setSearch] = useState('')\n const [filters, setFilters] = useState<Record<string, Set<string>>>({})\n const [sortKey, setSortKey] = useState<string | null>(defaultSort?.key ?? null)\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>(defaultSort?.direction ?? 'asc')\n const [filterOpen, setFilterOpen] = useState(false)\n const [sortOpen, setSortOpen] = useState(false)\n const filterBtnRef = useRef<HTMLElement>(null)\n const sortBtnRef = useRef<HTMLElement>(null)\n\n const openFilter = useCallback(() => {\n setFilterOpen((v) => !v)\n setSortOpen(false)\n }, [])\n\n const openSort = useCallback(() => {\n setSortOpen((v) => !v)\n setFilterOpen(false)\n }, [])\n\n const processed = useMemo(() => {\n let result = [...items]\n\n if (search && searchKeys && searchKeys.length > 0) {\n const query = search.toLowerCase()\n result = result.filter((item) =>\n searchKeys.some((key) => {\n const value = getNestedValue(item, key)\n return value != null && String(value).toLowerCase().includes(query)\n })\n )\n }\n\n for (const [key, selected] of Object.entries(filters)) {\n if (selected.size === 0) continue\n\n result = result.filter((item) => {\n const value = getNestedValue(item, key)\n return value != null && selected.has(String(value))\n })\n }\n\n if (sortKey) {\n result.sort((a, b) => {\n const av = getNestedValue(a, sortKey)\n const bv = getNestedValue(b, sortKey)\n\n if (av == null && bv == null) return 0\n if (av == null) return 1\n if (bv == null) return -1\n\n const compare = String(av).localeCompare(String(bv), undefined, {numeric: true})\n return sortDir === 'asc' ? compare : -compare\n })\n }\n\n return result\n }, [items, search, searchKeys, filters, sortKey, sortDir])\n\n function toggleFilter(key: string, value: string) {\n setFilters((prev) => {\n const next = new Set(prev[key] ?? [])\n\n if (next.has(value)) next.delete(value)\n else next.add(value)\n\n return {...prev, [key]: next}\n })\n }\n\n const filterOptions = useMemo(() => {\n const map: Record<string, string[]> = {}\n\n for (const filterKey of filterKeys) {\n if (filterKey.options) {\n map[filterKey.key] = filterKey.options\n continue\n }\n\n const values = new Set<string>()\n\n for (const item of items) {\n const value = getNestedValue(item, filterKey.key)\n if (value != null) values.add(String(value))\n }\n\n map[filterKey.key] = Array.from(values).sort()\n }\n\n return map\n }, [items, filterKeys])\n\n const activeSort = sortKeys.find((item) => item.key === sortKey)\n\n return (\n <div className={cn('card-grid', className)} style={style} {...rest}>\n {(searchable || filterable || sortable) && (\n <div className=\"card-grid-toolbar\">\n {searchable && (\n <MInputSearch\n className=\"card-grid-search\"\n size=\"sm\"\n fullWidth\n placeholder={searchPlaceholder}\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n onClear={() => setSearch('')}\n />\n )}\n\n <div className=\"card-grid-actions\">\n {filterable && filterKeys.length > 0 && (\n <>\n <MButton\n ref={filterBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={<MFilterIcon />}\n aria-expanded={filterOpen}\n onClick={openFilter}\n >\n Filter\n </MButton>\n <MPopover\n open={filterOpen}\n anchorRef={filterBtnRef}\n onClose={() => setFilterOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {filterKeys.map((filterKey) => (\n <div key={filterKey.key} className=\"card-grid-filter-group\">\n <span className=\"card-grid-filter-label\">{filterKey.label}</span>\n {(filterOptions[filterKey.key] ?? []).map((option) => (\n <div key={option} className=\"card-grid-filter-option\">\n <MCheckbox\n size=\"sm\"\n clickEffect=\"none\"\n checked={filters[filterKey.key]?.has(option) ?? false}\n onChange={() => toggleFilter(filterKey.key, option)}\n label={option}\n />\n </div>\n ))}\n </div>\n ))}\n </MPopover>\n </>\n )}\n\n {sortable && sortKeys.length > 0 && (\n <>\n <MButton\n ref={sortBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={\n sortKey ? (\n sortDir === 'asc' ? (\n <MArrowUpIcon />\n ) : (\n <MArrowDownIcon />\n )\n ) : (\n <MSortIcon />\n )\n }\n aria-expanded={sortOpen}\n onClick={openSort}\n >\n {activeSort ? `Sort: ${activeSort.label}` : 'Sort'}\n </MButton>\n <MPopover\n open={sortOpen}\n anchorRef={sortBtnRef}\n onClose={() => setSortOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {sortKeys.map((sortItem) => (\n <button\n key={sortItem.key}\n type=\"button\"\n className={cn('card-grid-sort-item', sortKey === sortItem.key && 'active')}\n onClick={() => {\n if (sortKey === sortItem.key) {\n setSortDir(sortDir === 'asc' ? 'desc' : 'asc')\n } else {\n setSortKey(sortItem.key)\n setSortDir('asc')\n }\n setSortOpen(false)\n }}\n >\n {sortItem.label}\n {sortKey === sortItem.key && (\n <span className=\"card-grid-sort-dir\">\n {sortDir === 'asc' ? (\n <MArrowUpIcon className=\"card-grid-sort-icon\" />\n ) : (\n <MArrowDownIcon className=\"card-grid-sort-icon\" />\n )}\n </span>\n )}\n </button>\n ))}\n </MPopover>\n </>\n )}\n </div>\n </div>\n )}\n\n {processed.length > 0 ? (\n <div\n className=\"card-grid-items\"\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {processed.map((item, index) => renderCard(item, index))}\n </div>\n ) : (\n <div className=\"card-grid-empty\">{emptyMessage}</div>\n )}\n </div>\n )\n}\n","import type {MCardFinanceProps} from './MCardFinance.types'\nimport {cn} from '../../../utils/cn'\nimport {MSparkline} from '../../data/MSparkline/MSparkline'\nimport {MArrowUpIcon, MArrowDownIcon} from '../../../icons'\nimport './MCardFinance.css'\n\nfunction resolveChangeType(change: number | undefined, explicit?: MCardFinanceProps['changeType']) {\n if (explicit) return explicit\n if (change === undefined || change === 0) return 'neutral'\n return change > 0 ? 'up' : 'down'\n}\n\nexport function MCardFinance({\n label,\n value,\n change,\n changeType: changeTypeProp,\n changeLabel,\n icon,\n sparkline,\n sparklineType = 'area',\n color = 'primary',\n currency,\n className,\n ...rest\n}: MCardFinanceProps) {\n const changeType = resolveChangeType(change, changeTypeProp)\n\n const changeColor = changeType === 'up' ? 'success' : changeType === 'down' ? 'error' : 'neutral'\n\n return (\n <div className={cn('card-finance', `color-${color}`, className)} {...rest}>\n <div className=\"cf-top\">\n <div className=\"cf-meta\">\n <span className=\"cf-label\">{label}</span>\n {currency && <span className=\"cf-currency\">{currency}</span>}\n </div>\n {icon && <span className=\"cf-icon\">{icon}</span>}\n </div>\n\n <div className=\"cf-value\">{value}</div>\n\n <div className=\"cf-bottom\">\n {change !== undefined && (\n <span className={cn('cf-change', changeColor)}>\n {changeType === 'up' && <MArrowUpIcon size={14} />}\n {changeType === 'down' && <MArrowDownIcon size={14} />}\n <span className=\"cf-change-value\">\n {change > 0 ? '+' : ''}\n {change}%\n </span>\n {changeLabel && <span className=\"cf-change-label\">{changeLabel}</span>}\n </span>\n )}\n </div>\n\n <div className=\"cf-sparkline\">\n <MSparkline\n data={sparkline}\n type={sparklineType}\n color={changeColor === 'neutral' ? color : changeColor}\n height={46}\n padding={0}\n curved\n animated\n fillOpacity={0.18}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|
package/dist/cards.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(`./MSkeleton-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MSkeleton-BAkzwxOS.cjs`),t=require(`./cards-CTegCxIA.cjs`);exports.MCard=e.n,exports.MCardBody=e.r,exports.MCardBusiness=t.c,exports.MCardCourse=t.o,exports.MCardEvent=t.i,exports.MCardFinance=t.t,exports.MCardFooter=e.i,exports.MCardGrid=t.n,exports.MCardHeader=e.a,exports.MCardOffer=t.s,exports.MCardPayment=t.u,exports.MCardPaymentMethod=t.l,exports.MCardProduct=t.a,exports.MCardWidget=t.r;
|
package/dist/cards.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {ensureStyles} from './style-runtime.js'
|
|
2
2
|
ensureStyles()
|
|
3
|
-
import { a as e, i as t, n, r } from "./MSkeleton-
|
|
4
|
-
import { a as i, c as a, i as o, l as s, n as c, o as l, r as u, s as d, t as f, u as p } from "./cards-
|
|
3
|
+
import { a as e, i as t, n, r } from "./MSkeleton-Cwa-JRxo.js";
|
|
4
|
+
import { a as i, c as a, i as o, l as s, n as c, o as l, r as u, s as d, t as f, u as p } from "./cards-1--Cy-KV.js";
|
|
5
5
|
export { n as MCard, r as MCardBody, a as MCardBusiness, l as MCardCourse, o as MCardEvent, f as MCardFinance, t as MCardFooter, c as MCardGrid, e as MCardHeader, d as MCardOffer, p as MCardPayment, s as MCardPaymentMethod, i as MCardProduct, u as MCardWidget };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ButtonHTMLAttributes, CSSProperties, ElementType, ReactNode } from 'react';
|
|
2
|
-
import { MColor, MSize } from '../../../theme';
|
|
2
|
+
import { MColor, MHiddenProps, MSize } from '../../../theme';
|
|
3
3
|
import { MClickEffect } from '../../../utils/useInteractionEffect';
|
|
4
4
|
export type MButtonVariant = 'filled' | 'secondary' | 'outlined' | 'ghost' | 'link' | 'icon';
|
|
5
5
|
export type MButtonShape = 'default' | 'circle';
|
|
6
|
-
export interface MButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'
|
|
6
|
+
export interface MButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'hidden'>, MHiddenProps {
|
|
7
7
|
component?: ElementType;
|
|
8
8
|
to?: string;
|
|
9
9
|
href?: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MAlertProps } from './MAlert.types';
|
|
2
|
-
export declare function MAlert({ color, icon, title, className, children, ...rest }: MAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MAlert({ color, icon, title, hidden, className, children, ...rest }: MAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import { MColor } from '../../../theme';
|
|
3
|
-
export interface MAlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'
|
|
2
|
+
import { MColor, MHiddenProps } from '../../../theme';
|
|
3
|
+
export interface MAlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'hidden'>, MHiddenProps {
|
|
4
4
|
color?: MColor;
|
|
5
5
|
icon?: ReactNode | boolean;
|
|
6
6
|
title?: ReactNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MBadgeProps } from './MBadge.types';
|
|
2
|
-
export declare function MBadge({ color, size, pulsing, rounded, fullWidth, icon, className, children, ...rest }: MBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MBadge({ color, size, hidden, pulsing, rounded, fullWidth, icon, className, children, ...rest }: MBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import { MColor, MSize } from '../../../theme';
|
|
3
|
-
export interface MBadgeProps extends HTMLAttributes<HTMLSpanElement
|
|
2
|
+
import { MColor, MHiddenProps, MSize } from '../../../theme';
|
|
3
|
+
export interface MBadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'hidden'>, MHiddenProps {
|
|
4
4
|
color?: MColor;
|
|
5
5
|
size?: MSize;
|
|
6
6
|
pulsing?: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MBannerProps } from './MBanner.types';
|
|
2
|
-
export declare function MBanner({ color, variant, icon, action, dismissible, onDismiss, className, children, ...rest }: MBannerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
2
|
+
export declare function MBanner({ color, variant, icon, action, hidden, dismissible, onDismiss, className, children, ...rest }: MBannerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import { MColor } from '../../../theme';
|
|
2
|
+
import { MColor, MHiddenProps } from '../../../theme';
|
|
3
3
|
export type MBannerVariant = 'filled' | 'outlined' | 'ghost';
|
|
4
|
-
export interface MBannerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'
|
|
4
|
+
export interface MBannerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'hidden'>, MHiddenProps {
|
|
5
5
|
color?: MColor;
|
|
6
6
|
variant?: MBannerVariant;
|
|
7
7
|
icon?: ReactNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MTagProps } from './MTag.types';
|
|
2
|
-
export declare function MTag({ label, color, variant, size, rounded, closable, onClose, icon, className, ...rest }: MTagProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MTag({ label, color, variant, size, hidden, rounded, closable, onClose, icon, className, ...rest }: MTagProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import { MColor, MSize } from '../../../theme';
|
|
2
|
+
import { MColor, MHiddenProps, MSize } from '../../../theme';
|
|
3
3
|
export type MTagVariant = 'solid' | 'outlined';
|
|
4
|
-
export interface MTagProps extends HTMLAttributes<HTMLSpanElement
|
|
4
|
+
export interface MTagProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'hidden'>, MHiddenProps {
|
|
5
5
|
label: ReactNode;
|
|
6
6
|
color?: MColor;
|
|
7
7
|
variant?: MTagVariant;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MContainerProps } from './MContainer.types';
|
|
2
|
-
export declare function MContainer({ size, padded, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MContainerProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MContainer({ size, padded, hidden, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MContainerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { MHiddenProps } from '../../../theme';
|
|
2
3
|
import { LayoutUtilityProps } from '../../../utils/layoutProps';
|
|
3
4
|
export type MContainerSize = 'content' | 'wide' | 'full';
|
|
4
|
-
export interface MContainerProps extends HTMLAttributes<HTMLDivElement>, LayoutUtilityProps {
|
|
5
|
+
export interface MContainerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'hidden'>, LayoutUtilityProps, MHiddenProps {
|
|
5
6
|
size?: MContainerSize;
|
|
6
7
|
padded?: boolean;
|
|
7
8
|
children?: ReactNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MDividerProps } from './MDivider.types';
|
|
2
|
-
export declare function MDivider({ orientation, variant, className, style, ...rest }: MDividerProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MDivider({ orientation, variant, hidden, className, style, ...rest }: MDividerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CSSProperties, HTMLAttributes } from 'react';
|
|
2
|
+
import { MHiddenProps } from '../../../theme';
|
|
2
3
|
export type MDividerOrientation = 'horizontal' | 'vertical';
|
|
3
4
|
export type MDividerVariant = 'solid' | 'dashed';
|
|
4
|
-
export interface MDividerProps extends HTMLAttributes<HTMLElement
|
|
5
|
+
export interface MDividerProps extends Omit<HTMLAttributes<HTMLElement>, 'hidden'>, MHiddenProps {
|
|
5
6
|
orientation?: MDividerOrientation;
|
|
6
7
|
variant?: MDividerVariant;
|
|
7
8
|
className?: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MFooterProps } from './MFooter.types';
|
|
2
|
-
export declare function MFooter({ container, padded, bordered, tone, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MFooter({ container, padded, bordered, tone, hidden, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
import { MContainerSize } from '../MContainer';
|
|
3
3
|
import { MHeaderTone } from '../MHeader';
|
|
4
|
+
import { MHiddenProps } from '../../../theme';
|
|
4
5
|
import { LayoutUtilityProps } from '../../../utils/layoutProps';
|
|
5
|
-
export interface MFooterProps extends HTMLAttributes<HTMLElement>, LayoutUtilityProps {
|
|
6
|
+
export interface MFooterProps extends Omit<HTMLAttributes<HTMLElement>, 'hidden'>, LayoutUtilityProps, MHiddenProps {
|
|
6
7
|
container?: MContainerSize;
|
|
7
8
|
padded?: boolean;
|
|
8
9
|
bordered?: boolean;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { MGridItemProps, MGridProps } from './MGrid.types';
|
|
2
|
-
export declare function MGrid({ type, span, sm, md, lg, xl, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MGridProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
export declare function MGridItem({ span, sm, md, lg, xl, ...rest }: MGridItemProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MGrid({ type, span, sm, md, lg, xl, xxl, hidden, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MGridProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare function MGridItem({ span, sm, md, lg, xl, xxl, ...rest }: MGridItemProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { MHiddenProps } from '../../../theme';
|
|
2
3
|
import { LayoutUtilityProps } from '../../../utils/layoutProps';
|
|
3
4
|
export type MGridType = 'row' | 'col';
|
|
4
5
|
export declare const mGridColumnValues: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
|
|
5
6
|
export type MGridColumns = (typeof mGridColumnValues)[number];
|
|
6
|
-
export interface MGridProps extends HTMLAttributes<HTMLDivElement>, LayoutUtilityProps {
|
|
7
|
+
export interface MGridProps extends Omit<HTMLAttributes<HTMLDivElement>, 'hidden'>, LayoutUtilityProps, MHiddenProps {
|
|
7
8
|
type?: MGridType;
|
|
8
9
|
span?: MGridColumns;
|
|
9
10
|
sm?: MGridColumns;
|
|
10
11
|
md?: MGridColumns;
|
|
11
12
|
lg?: MGridColumns;
|
|
12
13
|
xl?: MGridColumns;
|
|
14
|
+
xxl?: MGridColumns;
|
|
13
15
|
children?: ReactNode;
|
|
14
16
|
className?: string;
|
|
15
17
|
style?: CSSProperties;
|
|
16
18
|
}
|
|
17
|
-
export interface MGridItemProps extends Omit<MGridProps, 'type'>, Pick<MGridProps, 'span' | 'sm' | 'md' | 'lg' | 'xl'> {
|
|
19
|
+
export interface MGridItemProps extends Omit<MGridProps, 'type'>, Pick<MGridProps, 'span' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'> {
|
|
18
20
|
children?: ReactNode;
|
|
19
21
|
className?: string;
|
|
20
22
|
style?: CSSProperties;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MHeaderProps } from './MHeader.types';
|
|
2
|
-
export declare function MHeader({ container, padded, bordered, sticky, tone, layout, className, children, ...rest }: MHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MHeader({ container, padded, bordered, sticky, tone, layout, hidden, className, children, ...rest }: MHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
import { MContainerSize } from '../MContainer';
|
|
3
|
+
import { MHiddenProps } from '../../../theme';
|
|
3
4
|
export type MHeaderTone = 'default' | 'surface' | 'subtle';
|
|
4
5
|
export type MHeaderLayout = 'split' | 'balanced';
|
|
5
|
-
export interface MHeaderProps extends HTMLAttributes<HTMLElement
|
|
6
|
+
export interface MHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'hidden'>, MHiddenProps {
|
|
6
7
|
container?: MContainerSize;
|
|
7
8
|
padded?: boolean;
|
|
8
9
|
bordered?: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MInlineProps } from './MInline.types';
|
|
2
|
-
export declare function MInline({ align, justify, wrap, reveal, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MInlineProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MInline({ align, justify, wrap, hidden, reveal, spacing, padding, fsize, mt, mb, ml, mr, mx, my, pt, pb, pl, pr, px, py, fullWidth, className, style, children, ...rest }: MInlineProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { MHiddenProps } from '../../../theme';
|
|
2
3
|
import { LayoutUtilityProps } from '../../../utils/layoutProps';
|
|
3
4
|
import { RevealProp } from '../../../utils/useReveal';
|
|
4
5
|
export type MInlineAlign = 'start' | 'center' | 'end' | 'stretch';
|
|
5
6
|
export type MInlineJustify = 'start' | 'center' | 'end' | 'between';
|
|
6
7
|
export type MInlineWrap = 'wrap' | 'nowrap';
|
|
7
|
-
export interface MInlineProps extends HTMLAttributes<HTMLDivElement>, LayoutUtilityProps {
|
|
8
|
+
export interface MInlineProps extends Omit<HTMLAttributes<HTMLDivElement>, 'hidden'>, LayoutUtilityProps, MHiddenProps {
|
|
8
9
|
align?: MInlineAlign;
|
|
9
10
|
justify?: MInlineJustify;
|
|
10
11
|
wrap?: MInlineWrap;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MNavbarProps } from './MNavbar.types';
|
|
2
|
-
export declare function MNavbar({ container, padded, bordered, sticky, tone, justify, wrap, mobileMenu, mobileMenuContent, mobileMenuLabel, className, children, ...rest }: MNavbarProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function MNavbar({ container, padded, bordered, sticky, tone, justify, wrap, mobileMenu, mobileMenuContent, mobileMenuLabel, mobileBreakpoint, hidden, className, children, ...rest }: MNavbarProps): import("react/jsx-runtime").JSX.Element;
|