@banzamel/mineralui 1.6.3 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{MAvatar-BVJh6kgW.cjs → MAvatar-CV3xJOmx.cjs} +2 -2
- package/dist/{MAvatar-BVJh6kgW.cjs.map → MAvatar-CV3xJOmx.cjs.map} +1 -1
- package/dist/{MBadge-B4x-Lx7e.cjs → MBadge-BoxsfX_h.cjs} +2 -2
- package/dist/{MBadge-B4x-Lx7e.cjs.map → MBadge-BoxsfX_h.cjs.map} +1 -1
- package/dist/{MButton-DrkVdRDy.cjs → MButton-B9k45kH-.cjs} +2 -2
- package/dist/{MButton-DrkVdRDy.cjs.map → MButton-B9k45kH-.cjs.map} +1 -1
- package/dist/{MCheckbox-C40ESQRe.cjs → MCheckbox-CdDWGVp3.cjs} +2 -2
- package/dist/{MCheckbox-C40ESQRe.cjs.map → MCheckbox-CdDWGVp3.cjs.map} +1 -1
- package/dist/MDataTable-C3v15no3.cjs +2 -0
- package/dist/MDataTable-C3v15no3.cjs.map +1 -0
- package/dist/MDataTable-C_XiTGTF.js +297 -0
- package/dist/MDataTable-C_XiTGTF.js.map +1 -0
- package/dist/{MDrawer-DFkrFrnD.cjs → MDrawer-BtA_Xgj0.cjs} +2 -2
- package/dist/{MDrawer-DFkrFrnD.cjs.map → MDrawer-BtA_Xgj0.cjs.map} +1 -1
- package/dist/{MDropdownMenu-D79Cm5aS.js → MDropdownMenu-BWgf92rJ.js} +5 -5
- package/dist/MDropdownMenu-BWgf92rJ.js.map +1 -0
- package/dist/MDropdownMenu-mGE19gCi.cjs +2 -0
- package/dist/MDropdownMenu-mGE19gCi.cjs.map +1 -0
- package/dist/{MGalleryIllustration-BB3DoCl_.cjs → MGalleryIllustration-D2agVuZM.cjs} +2 -2
- package/dist/{MGalleryIllustration-BB3DoCl_.cjs.map → MGalleryIllustration-D2agVuZM.cjs.map} +1 -1
- package/dist/{MHeading-BhCNoJeW.cjs → MHeading-BQCe_JhE.cjs} +2 -2
- package/dist/{MHeading-BhCNoJeW.cjs.map → MHeading-BQCe_JhE.cjs.map} +1 -1
- package/dist/{MI18nProvider-B2sE0x5D.cjs → MI18nProvider-CqAwaswx.cjs} +2 -2
- package/dist/{MI18nProvider-B2sE0x5D.cjs.map → MI18nProvider-CqAwaswx.cjs.map} +1 -1
- package/dist/{MImage-gwFphZk2.js → MImage-I0LPhcqF.js} +75 -69
- package/dist/MImage-I0LPhcqF.js.map +1 -0
- package/dist/MImage-hnSqIPaC.cjs +2 -0
- package/dist/MImage-hnSqIPaC.cjs.map +1 -0
- package/dist/{MInline-CHrh3PHH.cjs → MInline-FEXWkr71.cjs} +2 -2
- package/dist/{MInline-CHrh3PHH.cjs.map → MInline-FEXWkr71.cjs.map} +1 -1
- package/dist/{MInput-DYqV3-rQ.cjs → MInput-5-alcVsu.cjs} +2 -2
- package/dist/{MInput-DYqV3-rQ.cjs.map → MInput-5-alcVsu.cjs.map} +1 -1
- package/dist/{MInput-bzSwK880.js → MInput-CNSvoRiu.js} +2 -1
- package/dist/{MInput-bzSwK880.js.map → MInput-CNSvoRiu.js.map} +1 -1
- package/dist/{MInputCVC-BHpMHTO5.js → MInputCVC-BgougfgN.js} +3 -3
- package/dist/{MInputCVC-BHpMHTO5.js.map → MInputCVC-BgougfgN.js.map} +1 -1
- package/dist/{MInputCVC-5NkYSxV8.cjs → MInputCVC-CRWp1fYi.cjs} +2 -2
- package/dist/{MInputCVC-5NkYSxV8.cjs.map → MInputCVC-CRWp1fYi.cjs.map} +1 -1
- package/dist/{MInputSearch-Dh4C3Tz5.js → MInputSearch-BwR-BPh2.js} +2 -2
- package/dist/{MInputSearch-Dh4C3Tz5.js.map → MInputSearch-BwR-BPh2.js.map} +1 -1
- package/dist/{MInputSearch-DfoenJIm.cjs → MInputSearch-X9yNPuTf.cjs} +2 -2
- package/dist/{MInputSearch-DfoenJIm.cjs.map → MInputSearch-X9yNPuTf.cjs.map} +1 -1
- package/dist/{MLink-CY45UR_j.cjs → MLink-BakLkpKp.cjs} +2 -2
- package/dist/{MLink-CY45UR_j.cjs.map → MLink-BakLkpKp.cjs.map} +1 -1
- package/dist/{MModal-DT5BBgNZ.cjs → MModal-BYuPCSLG.cjs} +2 -2
- package/dist/{MModal-DT5BBgNZ.cjs.map → MModal-BYuPCSLG.cjs.map} +1 -1
- package/dist/{MModal-BDTAgnrm.js → MModal-K73juXhN.js} +2 -2
- package/dist/{MModal-BDTAgnrm.js.map → MModal-K73juXhN.js.map} +1 -1
- package/dist/{MPagination-CZEJMJzZ.cjs → MPagination-B8BcGks_.cjs} +2 -2
- package/dist/{MPagination-CZEJMJzZ.cjs.map → MPagination-B8BcGks_.cjs.map} +1 -1
- package/dist/{MPagination-CTnaW5AW.js → MPagination-BdBpF3Px.js} +1 -1
- package/dist/{MPagination-CTnaW5AW.js.map → MPagination-BdBpF3Px.js.map} +1 -1
- package/dist/{MPopover-B4IUb9f0.cjs → MPopover-DfEiRuM9.cjs} +2 -2
- package/dist/{MPopover-B4IUb9f0.cjs.map → MPopover-DfEiRuM9.cjs.map} +1 -1
- package/dist/{MPortal-Bi24xTGW.cjs → MPortal-CuBXhhl_.cjs} +2 -2
- package/dist/{MPortal-Bi24xTGW.cjs.map → MPortal-CuBXhhl_.cjs.map} +1 -1
- package/dist/{MQrCode-ByfmG33y.cjs → MQrCode-BXXTLtBP.cjs} +2 -2
- package/dist/{MQrCode-ByfmG33y.cjs.map → MQrCode-BXXTLtBP.cjs.map} +1 -1
- package/dist/{MSkeleton-DGhtNmpI.js → MSkeleton-BP7H_lsX.js} +2 -2
- package/dist/{MSkeleton-DGhtNmpI.js.map → MSkeleton-BP7H_lsX.js.map} +1 -1
- package/dist/{MSkeleton-5j1h9s95.cjs → MSkeleton-QO2sI-Ni.cjs} +2 -2
- package/dist/{MSkeleton-5j1h9s95.cjs.map → MSkeleton-QO2sI-Ni.cjs.map} +1 -1
- package/dist/{MSlider-Ch3VjAJC.cjs → MSlider-fhvfj0ft.cjs} +2 -2
- package/dist/{MSlider-Ch3VjAJC.cjs.map → MSlider-fhvfj0ft.cjs.map} +1 -1
- package/dist/{MSparkline-B6qpt5WM.cjs → MSparkline-CcM1n7Kh.cjs} +2 -2
- package/dist/{MSparkline-B6qpt5WM.cjs.map → MSparkline-CcM1n7Kh.cjs.map} +1 -1
- package/dist/{MStack-Bh-R2opf.cjs → MStack-Dy8Zl6FW.cjs} +2 -2
- package/dist/{MStack-Bh-R2opf.cjs.map → MStack-Dy8Zl6FW.cjs.map} +1 -1
- package/dist/{MSubText-C-70zn0m.cjs → MSubText-C1unzaCF.cjs} +2 -2
- package/dist/{MSubText-C-70zn0m.cjs.map → MSubText-C1unzaCF.cjs.map} +1 -1
- package/dist/{MSurface-DJYSftdM.js → MSurface-f_3vN0sd.js} +1 -1
- package/dist/{MSurface-DJYSftdM.js.map → MSurface-f_3vN0sd.js.map} +1 -1
- package/dist/{MSurface-CpiV1-7f.cjs → MSurface-wVqTsi1m.cjs} +2 -2
- package/dist/{MSurface-CpiV1-7f.cjs.map → MSurface-wVqTsi1m.cjs.map} +1 -1
- package/dist/MTabs-Dg31d-_D.js +89 -0
- package/dist/MTabs-Dg31d-_D.js.map +1 -0
- package/dist/MTabs-DuLqttVp.cjs +2 -0
- package/dist/MTabs-DuLqttVp.cjs.map +1 -0
- package/dist/{MTag-Y4Tswmli.cjs → MTag-CeLhZhqT.cjs} +2 -2
- package/dist/{MTag-Y4Tswmli.cjs.map → MTag-CeLhZhqT.cjs.map} +1 -1
- package/dist/{MText-DEJddMB5.cjs → MText-BbEkc0Ik.cjs} +2 -2
- package/dist/{MText-DEJddMB5.cjs.map → MText-BbEkc0Ik.cjs.map} +1 -1
- package/dist/{MTimeAgo-DxZGVo2Y.cjs → MTimeAgo-Dd0JQRGj.cjs} +2 -2
- package/dist/{MTimeAgo-DxZGVo2Y.cjs.map → MTimeAgo-Dd0JQRGj.cjs.map} +1 -1
- package/dist/{MToggle-C8vYRzpC.cjs → MToggle-BZSwJw_z.cjs} +2 -2
- package/dist/{MToggle-C8vYRzpC.cjs.map → MToggle-BZSwJw_z.cjs.map} +1 -1
- package/dist/{MTooltip-kSTMMpvu.cjs → MTooltip-BE0GcseJ.cjs} +2 -2
- package/dist/{MTooltip-kSTMMpvu.cjs.map → MTooltip-BE0GcseJ.cjs.map} +1 -1
- package/dist/{arduino-Eif5KI8O.js → arduino-5iMB2x4D.js} +1 -1
- package/dist/{arduino-Eif5KI8O.js.map → arduino-5iMB2x4D.js.map} +1 -1
- package/dist/{arduino-CXUo7Bjy.cjs → arduino-C1gw-z1N.cjs} +1 -1
- package/dist/{arduino-CXUo7Bjy.cjs.map → arduino-C1gw-z1N.cjs.map} +1 -1
- package/dist/{bash-CCF_TYbb.js → bash-CNKpaaFe.js} +1 -1
- package/dist/{bash-CCF_TYbb.js.map → bash-CNKpaaFe.js.map} +1 -1
- package/dist/{bash-W4h3o_nx.cjs → bash-wzZkpJC-.cjs} +1 -1
- package/dist/{bash-W4h3o_nx.cjs.map → bash-wzZkpJC-.cjs.map} +1 -1
- package/dist/{c-DVgkp6T3.js → c-BKjXPJPn.js} +1 -1
- package/dist/{c-DVgkp6T3.js.map → c-BKjXPJPn.js.map} +1 -1
- package/dist/{c-Dm60JY-W.cjs → c-BSPjDa0P.cjs} +1 -1
- package/dist/{c-Dm60JY-W.cjs.map → c-BSPjDa0P.cjs.map} +1 -1
- package/dist/{cards-fn61xD_5.js → cards-BYX8bM2l.js} +457 -307
- package/dist/cards-BYX8bM2l.js.map +1 -0
- package/dist/cards-lCx9oEVk.cjs +2 -0
- package/dist/cards-lCx9oEVk.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +3 -3
- package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
- package/dist/components/cards/MCardGrid/MCardGrid.types.d.ts +21 -5
- package/dist/components/cards/MCardTile/MCardTile.d.ts +2 -0
- package/dist/components/cards/MCardTile/MCardTile.types.d.ts +28 -0
- package/dist/components/cards/MCardTile/index.d.ts +2 -0
- package/dist/components/cards/ServiceCardsShared/ServiceCardsShared.d.ts +1 -1
- package/dist/components/cards/ServiceCardsShared/ServiceCardsShared.types.d.ts +1 -3
- package/dist/components/cards/index.d.ts +2 -0
- package/dist/components/data/MCalendarBoard/MCalendarBoard.d.ts +8 -7
- package/dist/components/data/MCalendarBoard/MCalendarBoard.types.d.ts +75 -6
- package/dist/components/data/MCalendarBoard/index.d.ts +2 -2
- package/dist/components/data/MDataTable/MDataTable.d.ts +1 -1
- package/dist/components/data/MDataTable/MDataTable.types.d.ts +23 -0
- package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
- package/dist/components/data/MTreeView/MTreeView.types.d.ts +9 -1
- package/dist/components/data/index.d.ts +2 -2
- package/dist/components/display/MBlur/MBlur.d.ts +2 -0
- package/dist/components/display/MBlur/MBlur.types.d.ts +13 -0
- package/dist/components/display/MBlur/index.d.ts +2 -0
- package/dist/components/display/index.d.ts +2 -0
- package/dist/components/inputs/MInputIBAN/MInputIBAN.types.d.ts +3 -3
- package/dist/components/inputs/MInputPhone/MInputPhone.types.d.ts +2 -0
- package/dist/components/layout/MGrid/MGrid.d.ts +2 -2
- package/dist/components/layout/MGrid/MGrid.types.d.ts +2 -0
- package/dist/components/media/MImage/MImage.d.ts +1 -1
- package/dist/components/media/MImage/MImage.types.d.ts +6 -1
- package/dist/components/media/MMediaLightbox/MMediaLightbox.d.ts +1 -1
- package/dist/components/overlays/MTooltip/MTooltip.types.d.ts +2 -2
- package/dist/{controls-C5PtrGZf.cjs → controls-CZCxbJgq.cjs} +2 -2
- package/dist/{controls-C5PtrGZf.cjs.map → controls-CZCxbJgq.cjs.map} +1 -1
- package/dist/controls.cjs +1 -1
- package/dist/{core-CB9-PTLK.js → core-B8VC-Umz.js} +1 -1
- package/dist/{core-CB9-PTLK.js.map → core-B8VC-Umz.js.map} +1 -1
- package/dist/{core-AKWkE8Bx.cjs → core-w629c4ND.cjs} +1 -1
- package/dist/{core-AKWkE8Bx.cjs.map → core-w629c4ND.cjs.map} +1 -1
- package/dist/{cpp-DyKt1H8n.cjs → cpp-LIcuHkFj.cjs} +1 -1
- package/dist/{cpp-DyKt1H8n.cjs.map → cpp-LIcuHkFj.cjs.map} +1 -1
- package/dist/{cpp-OOenfB17.js → cpp-bNWmO1Au.js} +1 -1
- package/dist/{cpp-OOenfB17.js.map → cpp-bNWmO1Au.js.map} +1 -1
- package/dist/creditCards-D_HwRUBz.cjs +2 -0
- package/dist/creditCards-D_HwRUBz.cjs.map +1 -0
- package/dist/{creditCards-CCysEwry.js → creditCards-D_iWmtG6.js} +14 -8
- package/dist/creditCards-D_iWmtG6.js.map +1 -0
- package/dist/{css-DxVbPJLu.cjs → css-D6fGBtGV.cjs} +1 -1
- package/dist/{css-DxVbPJLu.cjs.map → css-D6fGBtGV.cjs.map} +1 -1
- package/dist/{css-u5LSEAra.js → css-h_5aJA6y.js} +1 -1
- package/dist/{css-u5LSEAra.js.map → css-h_5aJA6y.js.map} +1 -1
- package/dist/data-CcS-eYye.cjs +2 -0
- package/dist/data-CcS-eYye.cjs.map +1 -0
- package/dist/data-DT1ncDx_.js +2997 -0
- package/dist/data-DT1ncDx_.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +3 -3
- package/dist/{display-BafEcBK_.cjs → display-BxVd6MMK.cjs} +3 -3
- package/dist/display-BxVd6MMK.cjs.map +1 -0
- package/dist/{display-Zxj9YHu_.js → display-CtVfcztO.js} +47 -18
- package/dist/display-CtVfcztO.js.map +1 -0
- package/dist/display.cjs +1 -1
- package/dist/display.js +4 -4
- package/dist/dropdowns-BgpcQ9Hq.cjs +2 -0
- package/dist/dropdowns-BgpcQ9Hq.cjs.map +1 -0
- package/dist/{dropdowns-Bw8obCYl.js → dropdowns-C58ur0qF.js} +582 -555
- package/dist/dropdowns-C58ur0qF.js.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/{feedback-Di0SEpRe.cjs → feedback-BJiO6j28.cjs} +2 -2
- package/dist/{feedback-Di0SEpRe.cjs.map → feedback-BJiO6j28.cjs.map} +1 -1
- package/dist/{feedback-8H3bmQw5.js → feedback-q3oO-E_X.js} +5 -5
- package/dist/{feedback-8H3bmQw5.js.map → feedback-q3oO-E_X.js.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +2 -2
- package/dist/{form-BYz99Py5.cjs → form-D7OKrCBM.cjs} +2 -2
- package/dist/{form-BYz99Py5.cjs.map → form-D7OKrCBM.cjs.map} +1 -1
- package/dist/{form-JHlvtP9r.js → form-DIOkVhd9.js} +2 -2
- package/dist/{form-JHlvtP9r.js.map → form-DIOkVhd9.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{frameworkTexts-CvxcWRXp.js → frameworkTexts-Bzd6bn9s.js} +3 -1
- package/dist/frameworkTexts-Bzd6bn9s.js.map +1 -0
- package/dist/frameworkTexts-CJHzJHsg.cjs +2 -0
- package/dist/frameworkTexts-CJHzJHsg.cjs.map +1 -0
- package/dist/i18n/frameworkTexts.d.ts +2 -0
- package/dist/i18n.cjs +1 -1
- package/dist/icons-CfpYxnfg.js.map +1 -1
- package/dist/{icons-DWMgDKgt.cjs → icons-lUQfZ4Jr.cjs} +2 -2
- package/dist/{icons-DWMgDKgt.cjs.map → icons-lUQfZ4Jr.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/illustrations.cjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +43 -42
- package/dist/inputs-DOO1tKK9.cjs +2 -0
- package/dist/inputs-DOO1tKK9.cjs.map +1 -0
- package/dist/{inputs-Bcwd_UTr.js → inputs-Dwjwa_SJ.js} +545 -439
- package/dist/inputs-Dwjwa_SJ.js.map +1 -0
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +5 -5
- package/dist/{javascript-CXjsxb-I.js → javascript-BnTECToz.js} +1 -1
- package/dist/{javascript-CXjsxb-I.js.map → javascript-BnTECToz.js.map} +1 -1
- package/dist/{javascript-CzjCTQxn.cjs → javascript-Oy5hkezl.cjs} +1 -1
- package/dist/{javascript-CzjCTQxn.cjs.map → javascript-Oy5hkezl.cjs.map} +1 -1
- package/dist/{json-9Qq5guN0.cjs → json-BP8eqPWc.cjs} +1 -1
- package/dist/{json-9Qq5guN0.cjs.map → json-BP8eqPWc.cjs.map} +1 -1
- package/dist/{json-CyV5VF8D.js → json-Ci-bDynf.js} +1 -1
- package/dist/{json-CyV5VF8D.js.map → json-Ci-bDynf.js.map} +1 -1
- package/dist/layout-B3S9bvaP.cjs +2 -0
- package/dist/layout-B3S9bvaP.cjs.map +1 -0
- package/dist/{layout-BpEnTocp.js → layout-BqDbW0Qn.js} +265 -347
- package/dist/layout-BqDbW0Qn.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +7 -6
- package/dist/{licensing-ezfo7ZTh.cjs → licensing-Df1Z1rnQ.cjs} +2 -2
- package/dist/{licensing-ezfo7ZTh.cjs.map → licensing-Df1Z1rnQ.cjs.map} +1 -1
- package/dist/{locale-CZyqh3ON.cjs → locale-Ba2yreFR.cjs} +2 -2
- package/dist/{locale-CZyqh3ON.cjs.map → locale-Ba2yreFR.cjs.map} +1 -1
- package/dist/{media-ClgUKDca.cjs → media-C5atCcc6.cjs} +2 -2
- package/dist/{media-ClgUKDca.cjs.map → media-C5atCcc6.cjs.map} +1 -1
- package/dist/{media-C3M0npGW.js → media-DdshnqJ1.js} +3 -3
- package/dist/{media-C3M0npGW.js.map → media-DdshnqJ1.js.map} +1 -1
- package/dist/media.cjs +1 -1
- package/dist/media.js +2 -2
- package/dist/{overlays-DrSGzbbA.cjs → overlays-BC_6IATL.cjs} +2 -2
- package/dist/{overlays-DrSGzbbA.cjs.map → overlays-BC_6IATL.cjs.map} +1 -1
- package/dist/{overlays-CGlqD3rl.js → overlays-zUoV_Jy7.js} +2 -2
- package/dist/{overlays-CGlqD3rl.js.map → overlays-zUoV_Jy7.js.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/{php-Br75m0HU.cjs → php-Cwjc-ZYq.cjs} +1 -1
- package/dist/{php-Br75m0HU.cjs.map → php-Cwjc-ZYq.cjs.map} +1 -1
- package/dist/{php-deNqvHeU.js → php-DJ5j7KZU.js} +1 -1
- package/dist/{php-deNqvHeU.js.map → php-DJ5j7KZU.js.map} +1 -1
- package/dist/primitives.cjs +1 -1
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/{theme-CgS-bND3.cjs → theme-Bb_NAEiZ.cjs} +2 -2
- package/dist/{theme-CgS-bND3.cjs.map → theme-Bb_NAEiZ.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{typescript-jNfCpQvl.js → typescript-DUexJ4gh.js} +1 -1
- package/dist/{typescript-jNfCpQvl.js.map → typescript-DUexJ4gh.js.map} +1 -1
- package/dist/{typescript-CRgqVaw_.cjs → typescript-QKlfKtex.cjs} +1 -1
- package/dist/{typescript-CRgqVaw_.cjs.map → typescript-QKlfKtex.cjs.map} +1 -1
- package/dist/{typography-Zo4Usx9I.cjs → typography-CRKIyR-B.cjs} +2 -2
- package/dist/{typography-Zo4Usx9I.cjs.map → typography-CRKIyR-B.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/{useGhostText-tv1LiSPs.cjs → useGhostText-mibV4s1-.cjs} +2 -2
- package/dist/{useGhostText-tv1LiSPs.cjs.map → useGhostText-mibV4s1-.cjs.map} +1 -1
- package/dist/{useInteractionEffect-D1ZdNbKU.cjs → useInteractionEffect-CtXlbjhC.cjs} +2 -2
- package/dist/{useInteractionEffect-D1ZdNbKU.cjs.map → useInteractionEffect-CtXlbjhC.cjs.map} +1 -1
- package/dist/{useKeyboardNav-CkIlAagq.cjs → useKeyboardNav-CCUoRMgm.cjs} +2 -2
- package/dist/{useKeyboardNav-CkIlAagq.cjs.map → useKeyboardNav-CCUoRMgm.cjs.map} +1 -1
- package/dist/utils/creditCards.d.ts +1 -0
- package/dist/utils/validators.d.ts +2 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +3 -3
- package/dist/{validators-H8tNxb8O.js → validators-D5OCyV2h.js} +23 -20
- package/dist/validators-D5OCyV2h.js.map +1 -0
- package/dist/{validators-BeNTD8mf.cjs → validators-DRhikiAi.cjs} +2 -2
- package/dist/validators-DRhikiAi.cjs.map +1 -0
- package/dist/{xml-C_ksWBRH.cjs → xml-DEtyywwU.cjs} +1 -1
- package/dist/{xml-C_ksWBRH.cjs.map → xml-DEtyywwU.cjs.map} +1 -1
- package/dist/{xml-0Th6YIDv.js → xml-DlZghN7m.js} +1 -1
- package/dist/{xml-0Th6YIDv.js.map → xml-DlZghN7m.js.map} +1 -1
- package/package.json +1 -1
- package/dist/MDataTable-Bx7W-Ari.cjs +0 -2
- package/dist/MDataTable-Bx7W-Ari.cjs.map +0 -1
- package/dist/MDataTable-ByvNQqNP.js +0 -149
- package/dist/MDataTable-ByvNQqNP.js.map +0 -1
- package/dist/MDropdownMenu-BmfXSc46.cjs +0 -2
- package/dist/MDropdownMenu-BmfXSc46.cjs.map +0 -1
- package/dist/MDropdownMenu-D79Cm5aS.js.map +0 -1
- package/dist/MImage-L_zgfWRY.cjs +0 -2
- package/dist/MImage-L_zgfWRY.cjs.map +0 -1
- package/dist/MImage-gwFphZk2.js.map +0 -1
- package/dist/cards-BiYdorB0.cjs +0 -2
- package/dist/cards-BiYdorB0.cjs.map +0 -1
- package/dist/cards-fn61xD_5.js.map +0 -1
- package/dist/creditCards-CCysEwry.js.map +0 -1
- package/dist/creditCards-ljs044xt.cjs +0 -2
- package/dist/creditCards-ljs044xt.cjs.map +0 -1
- package/dist/data-Bw9FSZ80.cjs +0 -2
- package/dist/data-Bw9FSZ80.cjs.map +0 -1
- package/dist/data-CMSIr_Ac.js +0 -2527
- package/dist/data-CMSIr_Ac.js.map +0 -1
- package/dist/display-BafEcBK_.cjs.map +0 -1
- package/dist/display-Zxj9YHu_.js.map +0 -1
- package/dist/dropdowns-Bw8obCYl.js.map +0 -1
- package/dist/dropdowns-DN7j1HhE.cjs +0 -2
- package/dist/dropdowns-DN7j1HhE.cjs.map +0 -1
- package/dist/frameworkTexts-CvxcWRXp.js.map +0 -1
- package/dist/frameworkTexts-abkS5XZK.cjs +0 -2
- package/dist/frameworkTexts-abkS5XZK.cjs.map +0 -1
- package/dist/inputs-Bcwd_UTr.js.map +0 -1
- package/dist/inputs-FP545Yri.cjs +0 -2
- package/dist/inputs-FP545Yri.cjs.map +0 -1
- package/dist/layout-BpEnTocp.js.map +0 -1
- package/dist/layout-rtlHrjDb.cjs +0 -2
- package/dist/layout-rtlHrjDb.cjs.map +0 -1
- package/dist/validators-BeNTD8mf.cjs.map +0 -1
- package/dist/validators-H8tNxb8O.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cards-BiYdorB0.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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cards-fn61xD_5.js","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":";;;;;;;;;;;;;;;;;;;AAKA,SAAS,GAAW,GAAqB;CACrC,IAAM,IAAS,EAAI,QAAQ,OAAO,GAAG;AAGrC,QAFI,EAAO,UAAU,IAAU,IAExB,8EADO,EAAO,MAAM,GAAG;;AAKlC,SAAgB,GAAa,EACzB,WACA,WACA,WACA,UACA,cACA,YACA,kBAAe,mBACf,UACA,cACA,GAAG,KACe;CAClB,IAAM,IAAkB,GAAgB,EAAO,EACzC,IAAW,KAAS,EAAgB,OACpC,IAAe,EAAiB,MAAM,MAAS,EAAK,UAAU,EAAS,IAAI,GAC3E,IAAS,GAAW,EAAO,EAC3B,IAAa,EAAa;AAEhC,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,gBAAgB,KAAS,WAAW,EAAU;EAAE,GAAI;YAAvE;GACK,MAAY,KAAA,KACT,kBAAC,OAAD,EAAA,UAAA,CACI,kBAAC,KAAD;IAAG,WAAU;cAAoB;IAAiB,CAAA,EAClD,kBAAC,KAAD;IAAG,WAAU;cAAc;IAAY,CAAA,CACrC,EAAA,CAAA;GAGV,kBAAC,OAAD;IAAK,WAAU;cAAf,CACI,kBAAC,QAAD;KAAM,WAAW,EAAG,YAAY,CAAC,KAAa,EAAS;eAAG,KAAa;KAAkB,CAAA,EACzF,kBAAC,QAAD;KAAM,WAAU;eAAa;KAAc,CAAA,CACzC;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACI,kBAAC,OAAD,EAAA,UAAA,CACI,kBAAC,KAAD;KAAG,WAAU;eAAiB;KAAgB,CAAA,EAC9C,kBAAC,KAAD;KAAG,WAAU;eAAkB;KAAW,CAAA,CACxC,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACI,kBAAC,KAAD;KAAG,WAAU;eAAiB;KAAmB,CAAA,EACjD,kBAAC,KAAD;KAAG,WAAU;eAAkB;KAAW,CAAA,CACxC,EAAA,CAAA,CACJ;;GACJ;;;;;AC5Cd,SAAS,GAAkB,GAAsD;AAC7E,QAAO,EAAiB,MAAM,MAAS,EAAK,UAAU,EAAM,EAAE,aAAa;;AAG/E,SAAgB,GAAmB,EAC/B,WAAQ,wBACR,iBAAc,UACd,gBAAa,KACb,aACA,WAAQ,QACR,cACA,UACA,eACA,YACA,gBAAa,qDACb,iBAAc,mBACd,cAAW,iBACX,gBACA,aACA,UACA,cACA,GAAG,KACqB;CACxB,IAAM,IAAgB,GAAa,SAAS,GAAa,cACnD,IAAqB,MAAe,KAAA,IAAY,YAAY,GAC5D,IAAiB,IACjB,iCAAiC,OAAO,EAAc,CAAC,QAAQ,KAAK,IAAI,KACxE,eACA,IAAkB,MAAY,KAAA,IAAY,IAAiB,GAC3D,IAAa,GAAkB,EAAM,EACrC,IAAsB;EACxB,WAAW;EACX,GAAG;EACN;AAED,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,uBAAuB,KAAS,WAAW,EAAU;EAAE,GAAI;YAA9E,CACI,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACI,kBAAC,MAAD;IAAI,WAAW;cAAc;IAAW,CAAA,EACxC,kBAAC,IAAD;IACI,MAAM;IACN,MAAM;IACN,WAAW;IACX,WAAW;IACX,UAAU,MAAU;AAChB,KAAI,MACA,EAAM,gBAAgB,EACtB,GAAU;;cARtB,CAYK,GACD,kBAAC,GAAD,EAAmB,CAAA,CACf;MACN;MAEN,kBAAC,OAAD;GAAK,WAAW;aAAhB;IACI,kBAAC,OAAD;KAAK,WAAW;eAAhB,CACI,kBAAC,GAAD;MAAS,OAAO;MAAU,WAAW;gBAArC;OACI,kBAAC,QAAD;QAAM,WAAW,EAAG,aAAa,CAAC,KAAa,EAAM;kBAAG,KAAa;QAAkB,CAAA;OACvF,kBAAC,QAAD;QAAM,WAAW;kBAAc,4BAA4B;QAAe,CAAA;OACzE,KAAsB,kBAAC,GAAD;QAAQ,OAAO;kBAAS;QAA4B,CAAA;OACrE;SACT,KACG,kBAAC,GAAD;MAAO,MAAM;MAAS,WAAW;gBAC5B;MACG,CAAA,CAEV;;IAEL,KACG,kBAAC,GAAD;KAAO,MAAM;KAAS,MAAM;KAAM,WAAW;eACxC;KACG,CAAA;IAGZ,kBAAC,OAAD;KAAK,WAAW;eAAhB,CACI,kBAAC,IAAD;MAAe,OAAO;MAAa,aAAa;MAAW,WAAA;MAAU,GAAI;MAAuB,CAAA,EAChG,kBAAC,IAAD;MAAW,OAAO;MAAU,aAAa;MAAO,WAAA;MAAU,GAAI;MAAY,CAAA,CACxE;;IACJ;KACJ;;;;;AC5Bd,IAAM,KAAyC;CAC3C,OAAO;EAAC,OAAO;EAAS,MAAM;EAAY,WAAW;EAAiB,KAAK;EAAa;CACxF,SAAS;EAAC,OAAO;EAAW,MAAM;EAAc,WAAW;EAAmB,KAAK;EAAe;CAClG,UAAU;EAAC,OAAO;EAAY,MAAM;EAAe,WAAW;EAAoB,KAAK;EAAe;CACtG,OAAO;EAAC,OAAO;EAAS,MAAM;EAAY,WAAW;EAAiB,KAAK;EAAe;CAC1F,QAAQ;EAAC,OAAO;EAAU,MAAM;EAAa,WAAW;EAAkB,KAAK;EAAa;CAC5F,QAAQ;EAAC,OAAO;EAAU,MAAM;EAAa,WAAW;EAAkB,KAAK;EAAe;CAC9F,WAAW;EAAC,OAAO;EAAa,MAAM;EAAgB,WAAW;EAAqB,KAAK;EAAe;CAC1G,UAAU;EAAC,OAAO;EAAY,MAAM;EAAe,WAAW;EAAoB,KAAK;EAAe;CACtG,WAAW;EAAC,OAAO;EAAa,MAAM;EAAgB,WAAW;EAAqB,KAAK;EAAa;CACxG,OAAO;EAAC,OAAO;EAAS,MAAM;EAAY,WAAW;EAAiB,KAAK;EAAa;CACxF,SAAS;EAAC,OAAO;EAAW,MAAM;EAAc,WAAW;EAAmB,KAAK;EAAc;CACjG,QAAQ;EAAC,OAAO;EAAU,MAAM;EAAa,WAAW;EAAkB,KAAK;EAAY;CAC3F,OAAO;EAAC,OAAO;EAAS,MAAM;EAAY,WAAW;EAAiB,KAAK;EAAe;CAC1F,IAAI;EAAC,OAAO;EAAM,MAAM;EAAS,WAAW;EAAc,KAAK;EAAc;CAC7E,GAAG;EAAC,OAAO;EAAK,MAAM;EAAQ,WAAW;EAAa,KAAK;EAAa;CACxE,SAAS;EAAC,OAAO;EAAW,MAAM;EAAc,WAAW;EAAmB,KAAK;EAAY;CAClG;AAED,SAAgB,GAAwB,GAAkB;CACtD,IAAM,IAAa,EACd,MAAM,CACN,aAAa,CACb,QAAQ,aAAa,GAAG;AAU7B,QARI,MAAe,YACR,MAGP,MAAe,cACR,OAGJ;;AAGX,SAAgB,GAAe,GAA2B;AAEtD,QAAO,GADY,GAAwB,EAAS,GACtB,SAAS;;AAG3C,SAAgB,GAAuB,GAA2B,IAAQ,IAAO;CAE7E,IAAM,IAAQ,GADK,GAAwB,EAAS;AAOpD,QAJK,IAIE,IAAQ,EAAM,YAAY,EAAM,OAH5B;;;;ACrGf,SAAS,GAAc,GAAuD;AAG1E,QAFK,IAEE;EAAC,EAAQ;EAAQ,CAAC,EAAQ,KAAK,EAAQ,KAAK,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,EAAQ;EAAQ,CAC1F,OAAO,QAAQ,CACf,KAAK,KAAK,GAJM;;AAQzB,SAAgB,GAAc,EAC1B,aAAU,QACV,SACA,UACA,WACA,YACA,YACA,YACA,WACA,eACA,WACA,YACA,aACA,kBACA,WAAQ,WACR,cACA,GAAG,KACgB;CACnB,IAAM,IAAO,GAAc,EAAQ;AAEnC,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,iBAAiB,GAAS,SAAS,KAAS,EAAU;EAAE,GAAI;YAA/E;GACI,kBAAC,OAAD;IAAK,WAAU;cAAf;KACI,kBAAC,OAAD;MAAK,WAAU;gBACX,kBAAC,IAAD;OACI,KAAK;OACL,KAAK;OACC;OACN,MAAM;OACN,OAAO,MAAY,YAAY,YAAY;OACpC;OACP,OAAO,MAAW,KAAA,IAAmB,KAAA,IAAP;OAC9B,YAAY,MAAW,KAAA,IAAY,KAAA,IAAY,IAAS,YAAY;OACpE,cAAc,EAAQ;OACtB,WAAW,EAAG,aAAa,EAAQ;OACrC,CAAA;MACA,CAAA;KAEN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACI,kBAAC,MAAD;QAAI,WAAU;kBAAW;QAAU,CAAA;OAClC,KAAS,kBAAC,KAAD;QAAG,WAAU;kBAAY;QAAU,CAAA;OAC5C,KAAc,kBAAC,KAAD;QAAG,WAAU;kBAAkB;QAAe,CAAA;OAC3D;;MAEJ,KAAW,MACT,kBAAC,OAAD;MAAK,WAAU;gBACV,IACG,kBAAC,IAAD;OACI,OAAO;OACP,MAAM;OACN,SAAS;OACT,QAAQ;OACR,aAAa;OACb,WAAU;OACZ,CAAA,GAEF,kBAAC,OAAD;OAAK,KAAK;OAAQ,KAAI;OAAK,WAAU;OAAc,CAAA;MAErD,CAAA;KAER;;IAEJ,KAAW,MACT,kBAAC,OAAD;IAAK,WAAU;cAAf;KACK,GAAS,SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,QAAD;OAAM,WAAU;iBACZ,kBAAC,GAAD,EAAa,CAAA;OACV,CAAA,EACP,kBAAC,KAAD;OAAG,MAAM,UAAU,EAAQ;OAAS,WAAU;iBACzC,EAAQ;OACT,CAAA,CACF;;KAET,GAAS,SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,QAAD;OAAM,WAAU;iBACZ,kBAAC,GAAD,EAAc,CAAA;OACX,CAAA,EACP,kBAAC,KAAD;OAAG,MAAM,OAAO,EAAQ;OAAS,WAAU;iBACtC,EAAQ;OACT,CAAA,CACF;;KAET,GAAS,WACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,QAAD;OAAM,WAAU;iBACZ,kBAAC,GAAD,EAAc,CAAA;OACX,CAAA,EACP,kBAAC,KAAD;OACI,MAAM,EAAQ;OACd,QAAO;OACP,KAAI;OACJ,WAAU;iBAET,EAAQ,QAAQ,QAAQ,gBAAgB,GAAG;OAC5C,CAAA,CACF;;KAET,KACG,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,QAAD;OAAM,WAAU;iBACZ,kBAAC,GAAD,EAAY,CAAA;OACT,CAAA,EACP,kBAAC,QAAD;OAAM,WAAU;iBAAmB;OAAY,CAAA,CAC7C;;KAER;;GAGT,KAAW,EAAQ,SAAS,KACzB,kBAAC,OAAD;IAAK,WAAU;cACV,EAAQ,KAAK,aACH;KACH,IAAM,IAAO,GAAuB,EAAK,UAAU,GAAK;AAExD,YACI,kBAAC,KAAD;MAEI,MAAM,EAAK;MACX,QAAO;MACP,KAAI;MACJ,WAAU;MACV,OAAO,GAAe,EAAK,SAAS;MACpC,cAAY,GAAe,EAAK,SAAS;gBAExC,EAAK,SACD,IAAO,kBAAC,GAAD,EAAQ,CAAA,GAAG,kBAAC,QAAD;OAAM,WAAU;iBAAkB,EAAK;OAAgB,CAAA;MAC9E,EAVK,EAAK,SAUV;QAER,CACP;IACC,CAAA;GAER;;;;;ACpId,SAAgB,EAAkB,EAC9B,YACA,UACA,gBACA,UACA,cAAW,OACX,aACA,cACA,UACA,YACA,qBAAkB,IAClB,WACA,gBACA,aACA,eACA,cACA,gBACA,gBACA,SACA,WAAQ,WACR,WACA,iBACA,oBACA,UAAU,GACV,qBACA,SACA,aACA,WACA,UACA,UACA,cACA,GAAG,MACoB;CACvB,IAAM,CAAC,GAAY,KAAiB,EAAS,EAAE,EACzC,CAAC,GAAwB,KAA6B,EAAS,GAAM,EACrE,CAAC,IAAa,MAAkB,EAAS,EAAE,EAE3C,IAAM,KAAiB,IACvB,IAAS,KAAW,EAAQ,SAAS,IAAI,IAAU,IAAQ,CAAC,EAAM,GAAG,EAAE;AAQ7E,CANA,QAAgB;AACZ,EAAI,KAAc,EAAO,UACrB,EAAc,EAAE;IAErB,CAAC,GAAY,EAAO,OAAO,CAAC,EAE/B,QAAgB;AACZ,MAAI,CAAC,EACD;EAGJ,IAAM,IAAe,OAAO,iBAAiB;AACzC,KAA0B,GAAM;KACjC,IAAI;AAEP,eAAa,OAAO,aAAa,EAAa;IAC/C,CAAC,GAAY,EAAuB,CAAC;CAExC,SAAS,GAAc,GAAiB;AAChC,QAAY,KAAc,IAAU,KAAK,KAAW,EAAO,WAI3D,EAAO,SAAS,KAChB,EAA0B,GAAK,EAGnC,EAAc,EAAQ;;AAG1B,SAAgB;AACZ,MAAI,CAAC,KAAmB,EAAO,UAAU,EACrC;EAGJ,IAAM,IAAa,OAAO,kBAAkB;AAExC,GADA,EAA0B,GAAK,EAC/B,GAAe,OAAa,IAAU,KAAK,EAAO,OAAO;KAC1D,KAAK;AAER,eAAa,OAAO,cAAc,EAAW;IAC9C,CAAC,GAAiB,EAAO,OAAO,CAAC;CAEpC,SAAS,EAAU,GAAc;EAC7B,IAAM,IAAM,KAAK,IAAI,GAAG,EAAK;AAC7B,EAAI,IAAkB,EAAiB,EAAI,GACtC,GAAe,EAAI;;CAG5B,IAAM,IACF,MAAc,KACR,cACA,MAAc,KACZ,gBACA,OAAO,KAAc,WACnB,GAAG,EAAU,UACb,MAER,IAAa,IAAQ,aAAgB,OAAO,IAAO,IAAI,KAAK,EAAK,GAAI,MACrE,IAAU,IAAa,EAAW,SAAS,GAAG,MAC9C,KAAY,IAAa,EAAW,eAAe,MAAM,EAAC,OAAO,SAAQ,CAAC,CAAC,aAAa,GAAG,MAE3F,IAAY,MAAU,KAAA,IAAkE,OAArD,IAAQ,IAAI,OAAO,IAAQ,IAAI,SAAS;AA0BjF,QAxBI,MAAY,WAER,kBAAC,OAAD;EAAK,WAAW,EAAG,gBAAgB,UAAU,SAAS,KAAS,EAAU;EAAE,GAAI;YAC3E,kBAAC,OAAD;GAAK,WAAU;aAAf,CACK,KAAQ,kBAAC,QAAD;IAAM,WAAU;cAAkB;IAAY,CAAA,EACvD,kBAAC,OAAD;IAAK,WAAU;cAAf;KACI,kBAAC,QAAD;MAAM,WAAU;gBAAmB;MAAa,CAAA;KAChD,kBAAC,QAAD;MAAM,WAAU;gBAAmB;MAAa,CAAA;KAC/C,MAAU,KAAA,KACP,kBAAC,QAAD;MAAM,WAAW,EAAG,mBAAmB,EAAU;gBAAjD;OACK,MAAc,QAAQ,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;OAChD,MAAc,UAAU,kBAAC,GAAD,EAAgB,MAAM,IAAM,CAAA;OACrD,kBAAC,QAAD,EAAA,UAAA;QACK,IAAQ,IAAI,MAAM;QAClB;QAAM;QACJ,EAAA,CAAA;OACJ;;KAET;MACJ;;EACJ,CAAA,GAKV,kBAAC,OAAD;EAAK,WAAW,EAAG,gBAAgB,GAAS,SAAS,KAAS,EAAU;EAAE,GAAI;YAA9E;GACK,EAAO,SAAS,KACb,kBAAC,OAAD;IAAK,WAAU;cAAf;KACI,kBAAC,OAAD;MACI,KAAK,EAAO;MACZ,KAAK;MACL,WAAW,EAAG,YAAY,KAA0B,mBAAmB;MACzE,CAAA;KACD,EAAO,SAAS,KACb,kBAAC,OAAD;MAAK,WAAU;gBACV,EAAO,KAAK,GAAG,MACZ,kBAAC,UAAD;OAEI,MAAK;OACL,WAAW,EAAG,UAAU,MAAM,KAAc,SAAS;OACrD,eAAe,GAAc,EAAE;OAC/B,cAAY,SAAS,IAAI;OAC3B,EALO,EAKP,CACJ;MACA,CAAA;MAGR,KAAe,KAAa,EAAU,SAAS,MAC7C,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACK,KAAa,EAAU,SAAS,KAC7B,kBAAC,IAAD;OACI,WAAU;OACV,SACI,kBAAC,GAAD;QACI,SAAQ;QACR,UAAA;QACA,OAAM;QACN,cAAW;QACX,WAAU;kBAEV,kBAAC,IAAD,EAAyB,CAAA;QACnB,CAAA;OAEd,WAAU;iBAET,EAAU,KAAK,GAAM,MAClB,kBAAC,IAAD;QAEI,MAAM,EAAK;QACX,OAAO,EAAK,SAAS,UAAU,KAAA;QAC/B,OAAO,EAAK;QACZ,SAAS,EAAK;QAChB,EALO,EAKP,CACJ;OACU,CAAA,EAEnB,KACG,kBAAC,GAAD;OACI,SAAQ;OACR,UAAA;OACA,OAAM;OACN,SAAS;OACT,cAAY,IAAW,0BAA0B;OACjD,WAAW,EAAG,kBAAkB,KAAY,gBAAgB;iBAEhD,EAAX,IAAY,KAAqB,IAAtB,EAAkB,CAAiB;OACzC,CAAA,CAEZ;;KAER;;GAGV,kBAAC,OAAD;IAAK,WAAU;cAAf;KACK,MAAY,WAAW,KACpB,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACI,kBAAC,QAAD;QAAM,WAAU;kBAAe;QAAe,CAAA,EAC9C,kBAAC,QAAD;QAAM,WAAU;kBAAiB;QAAiB,CAAA,CAChD;UACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACI,kBAAC,MAAD;QAAI,WAAU;kBAAY;QAAW,CAAA,EACpC,KAAe,kBAAC,KAAD;QAAG,WAAU;kBAAW;QAAgB,CAAA,CACtD;SACJ;;KAGT,MAAY,WACT,kBAAA,GAAA,EAAA,UAAA,CACI,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACK,KAAQ,kBAAC,QAAD;OAAM,WAAU;iBAAW;OAAY,CAAA,EAChD,kBAAC,MAAD;OAAI,WAAU;iBAAY;OAAW,CAAA,CACnC;SACL,KAAe,kBAAC,KAAD;MAAG,WAAU;gBAAW;MAAgB,CAAA,CACzD,EAAA,CAAA;KAGN,MAAY,WAAW,CAAC,KACrB,kBAAA,GAAA,EAAA,UAAA,CACI,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACK,KAAQ,kBAAC,QAAD;OAAM,WAAU;iBAAW;OAAY,CAAA,EAChD,kBAAC,MAAD;OAAI,WAAU;iBAAY;OAAW,CAAA,CACnC;SACL,KAAe,kBAAC,KAAD;MAAG,WAAU;gBAAW;MAAgB,CAAA,CACzD,EAAA,CAAA;KAGN,MAAW,KAAA,KACR,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACI,kBAAC,IAAD;QAAS,OAAO,KAAK,MAAM,EAAO;QAAE,MAAK;QAAK,OAAM;QAAU,UAAA;QAAS,WAAU;QAAa,CAAA;OAC9F,kBAAC,QAAD;QAAM,WAAU;kBAAmB,EAAO,QAAQ,EAAE;QAAQ,CAAA;OAC3D,MAAgB,KAAA,KAAa,kBAAC,QAAD;QAAM,WAAU;kBAAhB;SAAkC;SAAE;SAAY;SAAQ;;OACpF;;KAGT,KACG,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,IAAD;OAAS,KAAK,EAAO;OAAQ,MAAM,EAAO;OAAM,MAAM;OAAW;OAAS,CAAA,EAC1E,kBAAC,QAAD;OAAM,WAAU;iBAAkB,EAAO;OAAY,CAAA,CACnD;;KAGT,MAAY,YAAY,KACrB,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACI,kBAAC,OAAD;OAAK,WAAU;iBACV,EAAa,MAAM,GAAG,EAAE,CAAC,KAAK,GAAa,MACxC,kBAAC,IAAD;QAEI,KAAK,EAAY;QACjB,MAAM,EAAY;QAClB,MAAM;QACC;QACP,WAAU;QACZ,EANO,GAAG,EAAY,KAAK,GAAG,IAM9B,CACJ;OACA,CAAA,EACL,KACG,kBAAC,QAAD;OAAM,WAAU;iBAAhB;QACK,EAAa;QAAO;QAAE;QACpB;SAET;;KAGV,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACK,MAAY,WAAW,KACpB,kBAAC,GAAD;QAAQ,MAAK;QAAY;kBACpB;QACI,CAAA;OAEZ,KACG,kBAAC,GAAD;QAAQ,MAAK;QAAY;QAAO,MAAM,kBAAC,IAAD,EAAc,CAAA;kBAC/C;QACI,CAAA;OAEZ,MAAY,WAAW,KACpB,kBAAC,GAAD;QAAQ,MAAK;QAAK,OAAO,EAAO,aAAa,KAAK,aAAa,UAAU;kBACpE;QACI,CAAA;OAEZ,KAAc,MAAY,WACvB,kBAAC,GAAD;QAAQ,MAAK;QAAK,OAAO,MAAc,KAAQ,UAAU;kBACpD;QACI,CAAA;OAEX;;KACJ;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACK,MAAU,KAAA,KACP,kBAAC,QAAD;KAAM,WAAU;eAAhB;MACK,OAAO,KAAU,WAAW,EAAM,QAAQ,EAAE,GAAG;MAAO;MACvD,kBAAC,QAAD;OAAM,WAAU;iBAAe;OAAgB,CAAA;MAC5C;QAGX,kBAAC,OAAD;KAAK,WAAU;eAAf,CACK,MAAY,aAAa,KACtB,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACI,kBAAC,GAAD;QACI,SAAQ;QACR,UAAA;QACA,MAAK;QACL,eAAe,EAAU,IAAM,EAAE;QACjC,cAAW;QACX,WAAU;kBAEV,kBAAC,IAAD,EAAc,CAAA;QACR,CAAA;OACV,kBAAC,QAAD;QAAM,WAAU;kBAAgB;QAAW,CAAA;OAC3C,kBAAC,GAAD;QACI,SAAQ;QACR,UAAA;QACA,MAAK;QACL,eAAe,EAAU,IAAM,EAAE;QACjC,cAAW;QACX,WAAU;kBAEV,kBAAC,GAAD,EAAa,CAAA;QACP,CAAA;OACR;SAET,KACG,kBAAC,GAAD;MACI,SAAQ;MACR,MAAK;MACE;MACP,eAAe,EAAY,EAAI;MAC/B,UAAU,MAAc;MACxB,WAAU;gBAET,MAAgB,MAAY,UAAU,aAAa;MAC9C,CAAA,CAEZ;OACJ;;GACJ;;;;;ACrWd,SAAgB,GAAW,GAAwB;CAC/C,IAAM,EAAC,aAAU,iBAAc,YAAY,GAAG,MAAQ;AAEtD,QACI,kBAAC,GAAD;EACI,SAAQ;EACR,aAAa,UAAiB,GAAU,GAAG,KAAA;EAC9B;EACb,GAAI;EACN,CAAA;;;;ACTV,SAAgB,GAAY,GAAyB;CACjD,IAAM,EAAC,aAAU,iBAAc,eAAe,GAAG,MAAQ;AAEzD,QACI,kBAAC,GAAD;EACI,SAAQ;EACR,aAAa,UAAiB,GAAU,GAAG,KAAA;EAC9B;EACb,GAAI;EACN,CAAA;;;;ACTV,SAAgB,GAAa,GAA0B;CACnD,IAAM,EAAC,oBAAiB,eAAe,GAAG,MAAQ;AAElD,QAAO,kBAAC,GAAD;EAAmB,SAAQ;EAAU,aAAa;EAAgB,GAAI;EAAQ,CAAA;;;;ACHzF,SAAgB,GAAW,GAAwB;CAC/C,IAAM,EAAC,eAAY,mBAAgB,YAAY,GAAG,MAAQ;AAE1D,QACI,kBAAC,GAAD;EACI,SAAQ;EACR,aAAa,UAAmB,GAAY,GAAG,KAAA;EAC/C,aAAa;EACb,GAAI;EACN,CAAA;;;;ACPV,SAAS,GAAiB,GAAkC,GAA0C;AAGlG,QAFI,MACA,OAAO,KAAU,YAAY,MAAU,IAAU,YAC9C,IAAQ,IAAI,OAAO;;AAG9B,SAAS,GAAY,GAAkC;AAKnD,QAJI,OAAO,KAAU,YAAY,IAAQ,IAC9B,IAAI,MAGR;;AAGX,SAAgB,GAAY,EACxB,UACA,UACA,UACA,cACA,SACA,WAAQ,WACR,eACA,cACA,GAAG,KACc;CACjB,IAAM,IAAW,KAAiC,MAC5C,IAAoB,GAAiB,GAAO,EAAU,EACtD,IAAiB,GAAY,EAAM;AAEzC,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,eAAe,SAAS,KAAS,EAAU;EAAE,GAAI;YAApE;GACI,kBAAC,OAAD;IAAK,WAAU;cAAf,CACI,kBAAC,OAAD;KAAK,WAAU;eAAf,CACI,kBAAC,QAAD;MAAM,WAAU;gBAAY;MAAa,CAAA,EACzC,kBAAC,QAAD;MAAM,WAAU;gBAAY;MAAa,CAAA,CACvC;QACL,KAAQ,kBAAC,QAAD;KAAM,WAAU;eAAW;KAAY,CAAA,CAC9C;;GAEL,KACG,kBAAC,OAAD;IAAK,WAAU;cACX,kBAAC,QAAD;KAAM,WAAW,EAAG,YAAY,EAAkB;eAAlD;MACK,MAAsB,QAAQ,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;MACxD,MAAsB,UAAU,kBAAC,GAAD,EAAgB,MAAM,IAAM,CAAA;MAC7D,kBAAC,QAAD,EAAA,UAAO,GAAsB,CAAA;MAC1B;;IACL,CAAA;GAGT,KAAc,kBAAC,OAAD;IAAK,WAAU;cAAa;IAAiB,CAAA;GAC1D;;;;;AC9Cd,SAAS,EAAe,GAAc,GAAsB;CACxD,IAAM,IAAQ,EAAI,MAAM,IAAI,EACxB,IAAe;AAEnB,MAAK,IAAM,KAAK,GAAO;AACnB,MAAmB,OAAO,KAAQ,aAA9B,EAAwC;AAC5C,MAAO,EAAgC;;AAG3C,QAAO;;AAGX,SAAgB,GAA6C,EACzD,UACA,eACA,gBAAa,IACb,eACA,uBAAoB,aACpB,gBAAa,IACb,gBAAa,EAAE,EACf,cAAW,IACX,cAAW,EAAE,EACb,gBACA,aAAU,GACV,kBAAe,qBACf,cACA,UACA,GAAG,KACe;CAClB,IAAM,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,CAAC,GAAS,KAAc,EAAsC,EAAE,CAAC,EACjE,CAAC,GAAS,KAAc,EAAwB,GAAa,OAAO,KAAK,EACzE,CAAC,GAAS,KAAc,EAAyB,GAAa,aAAa,MAAM,EACjF,CAAC,GAAY,KAAiB,EAAS,GAAM,EAC7C,CAAC,GAAU,KAAe,EAAS,GAAM,EACzC,IAAe,GAAoB,KAAK,EACxC,IAAa,GAAoB,KAAK,EAEtC,IAAa,SAAkB;AAEjC,EADA,GAAe,MAAM,CAAC,EAAE,EACxB,EAAY,GAAM;IACnB,EAAE,CAAC,EAEA,IAAW,SAAkB;AAE/B,EADA,GAAa,MAAM,CAAC,EAAE,EACtB,EAAc,GAAM;IACrB,EAAE,CAAC,EAEA,IAAY,SAAc;EAC5B,IAAI,IAAS,CAAC,GAAG,EAAM;AAEvB,MAAI,KAAU,KAAc,EAAW,SAAS,GAAG;GAC/C,IAAM,IAAQ,EAAO,aAAa;AAClC,OAAS,EAAO,QAAQ,MACpB,EAAW,MAAM,MAAQ;IACrB,IAAM,IAAQ,EAAe,GAAM,EAAI;AACvC,WAAO,KAAS,QAAQ,OAAO,EAAM,CAAC,aAAa,CAAC,SAAS,EAAM;KACrE,CACL;;AAGL,OAAK,IAAM,CAAC,GAAK,MAAa,OAAO,QAAQ,EAAQ,CAC7C,GAAS,SAAS,MAEtB,IAAS,EAAO,QAAQ,MAAS;GAC7B,IAAM,IAAQ,EAAe,GAAM,EAAI;AACvC,UAAO,KAAS,QAAQ,EAAS,IAAI,OAAO,EAAM,CAAC;IACrD;AAiBN,SAdI,KACA,EAAO,MAAM,GAAG,MAAM;GAClB,IAAM,IAAK,EAAe,GAAG,EAAQ,EAC/B,IAAK,EAAe,GAAG,EAAQ;AAErC,OAAI,KAAM,QAAQ,KAAM,KAAM,QAAO;AACrC,OAAI,KAAM,KAAM,QAAO;AACvB,OAAI,KAAM,KAAM,QAAO;GAEvB,IAAM,IAAU,OAAO,EAAG,CAAC,cAAc,OAAO,EAAG,EAAE,KAAA,GAAW,EAAC,SAAS,IAAK,CAAC;AAChF,UAAO,MAAY,QAAQ,IAAU,CAAC;IACxC,EAGC;IACR;EAAC;EAAO;EAAQ;EAAY;EAAS;EAAS;EAAQ,CAAC;CAE1D,SAAS,GAAa,GAAa,GAAe;AAC9C,KAAY,MAAS;GACjB,IAAM,IAAO,IAAI,IAAI,EAAK,MAAQ,EAAE,CAAC;AAKrC,UAHI,EAAK,IAAI,EAAM,GAAE,EAAK,OAAO,EAAM,GAClC,EAAK,IAAI,EAAM,EAEb;IAAC,GAAG;KAAO,IAAM;IAAK;IAC/B;;CAGN,IAAM,KAAgB,SAAc;EAChC,IAAM,IAAgC,EAAE;AAExC,OAAK,IAAM,KAAa,GAAY;AAChC,OAAI,EAAU,SAAS;AACnB,MAAI,EAAU,OAAO,EAAU;AAC/B;;GAGJ,IAAM,oBAAS,IAAI,KAAa;AAEhC,QAAK,IAAM,KAAQ,GAAO;IACtB,IAAM,IAAQ,EAAe,GAAM,EAAU,IAAI;AACjD,IAAI,KAAS,QAAM,EAAO,IAAI,OAAO,EAAM,CAAC;;AAGhD,KAAI,EAAU,OAAO,MAAM,KAAK,EAAO,CAAC,MAAM;;AAGlD,SAAO;IACR,CAAC,GAAO,EAAW,CAAC,EAEjB,IAAa,EAAS,MAAM,MAAS,EAAK,QAAQ,EAAQ;AAEhE,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,aAAa,EAAU;EAAS;EAAO,GAAI;YAA9D,EACM,KAAc,KAAc,MAC1B,kBAAC,OAAD;GAAK,WAAU;aAAf,CACK,KACG,kBAAC,IAAD;IACI,WAAU;IACV,MAAK;IACL,WAAA;IACA,aAAa;IACb,OAAO;IACP,WAAW,MAAU,EAAU,EAAM,OAAO,MAAM;IAClD,eAAe,EAAU,GAAG;IAC9B,CAAA,EAGN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACK,KAAc,EAAW,SAAS,KAC/B,kBAAA,GAAA,EAAA,UAAA,CACI,kBAAC,GAAD;KACI,KAAK;KACL,SAAQ;KACR,MAAK;KACL,WAAW,kBAAC,GAAD,EAAe,CAAA;KAC1B,iBAAe;KACf,SAAS;eACZ;KAES,CAAA,EACV,kBAAC,GAAD;KACI,MAAM;KACN,WAAW;KACX,eAAe,EAAc,GAAM;KACnC,WAAU;KACV,WAAU;eAET,EAAW,KAAK,MACb,kBAAC,OAAD;MAAyB,WAAU;gBAAnC,CACI,kBAAC,QAAD;OAAM,WAAU;iBAA0B,EAAU;OAAa,CAAA,GAC/D,GAAc,EAAU,QAAQ,EAAE,EAAE,KAAK,MACvC,kBAAC,OAAD;OAAkB,WAAU;iBACxB,kBAAC,GAAD;QACI,MAAK;QACL,aAAY;QACZ,SAAS,EAAQ,EAAU,MAAM,IAAI,EAAO,IAAI;QAChD,gBAAgB,GAAa,EAAU,KAAK,EAAO;QACnD,OAAO;QACT,CAAA;OACA,EARI,EAQJ,CACR,CACA;QAbI,EAAU,IAad,CACR;KACK,CAAA,CACZ,EAAA,CAAA,EAGN,KAAY,EAAS,SAAS,KAC3B,kBAAA,GAAA,EAAA,UAAA,CACI,kBAAC,GAAD;KACI,KAAK;KACL,SAAQ;KACR,MAAK;KACL,WAGY,EAFR,IACI,MAAY,QACP,IAEA,IAGJ,IALG,EAAgB,CAKP;KAGrB,iBAAe;KACf,SAAS;eAER,IAAa,SAAS,EAAW,UAAU;KACtC,CAAA,EACV,kBAAC,GAAD;KACI,MAAM;KACN,WAAW;KACX,eAAe,EAAY,GAAM;KACjC,WAAU;KACV,WAAU;eAET,EAAS,KAAK,MACX,kBAAC,UAAD;MAEI,MAAK;MACL,WAAW,EAAG,uBAAuB,MAAY,EAAS,OAAO,SAAS;MAC1E,eAAe;AAOX,OANI,MAAY,EAAS,MACrB,EAAW,MAAY,QAAQ,SAAS,MAAM,IAE9C,EAAW,EAAS,IAAI,EACxB,EAAW,MAAM,GAErB,EAAY,GAAM;;gBAX1B,CAcK,EAAS,OACT,MAAY,EAAS,OAClB,kBAAC,QAAD;OAAM,WAAU;iBAER,EADH,MAAY,QACR,IAEA,GAFD,EAAc,WAAU,uBAAwB,CAEE;OAEnD,CAAA,CAEN;QAvBA,EAAS,IAuBT,CACX;KACK,CAAA,CACZ,EAAA,CAAA,CAEL;MACJ;MAGT,EAAU,SAAS,IAChB,kBAAC,OAAD;GACI,WAAU;GACV,OAAO,EACH,qBAAqB,UAAU,EAAQ,SAC1C;aAEA,EAAU,KAAK,GAAM,MAAU,EAAW,GAAM,EAAM,CAAC;GACtD,CAAA,GAEN,kBAAC,OAAD;GAAK,WAAU;aAAmB;GAAmB,CAAA,CAEvD;;;;;AChQd,SAAS,GAAkB,GAA4B,GAA4C;AAG/F,QAFI,MACA,MAAW,KAAA,KAAa,MAAW,IAAU,YAC1C,IAAS,IAAI,OAAO;;AAG/B,SAAgB,GAAa,EACzB,UACA,UACA,WACA,YAAY,GACZ,gBACA,SACA,cACA,mBAAgB,QAChB,WAAQ,WACR,aACA,cACA,GAAG,KACe;CAClB,IAAM,IAAa,GAAkB,GAAQ,EAAe,EAEtD,IAAc,MAAe,OAAO,YAAY,MAAe,SAAS,UAAU;AAExF,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,gBAAgB,SAAS,KAAS,EAAU;EAAE,GAAI;YAArE;GACI,kBAAC,OAAD;IAAK,WAAU;cAAf,CACI,kBAAC,OAAD;KAAK,WAAU;eAAf,CACI,kBAAC,QAAD;MAAM,WAAU;gBAAY;MAAa,CAAA,EACxC,KAAY,kBAAC,QAAD;MAAM,WAAU;gBAAe;MAAgB,CAAA,CAC1D;QACL,KAAQ,kBAAC,QAAD;KAAM,WAAU;eAAW;KAAY,CAAA,CAC9C;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAY;IAAY,CAAA;GAEvC,kBAAC,OAAD;IAAK,WAAU;cACV,MAAW,KAAA,KACR,kBAAC,QAAD;KAAM,WAAW,EAAG,aAAa,EAAY;eAA7C;MACK,MAAe,QAAQ,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;MACjD,MAAe,UAAU,kBAAC,GAAD,EAAgB,MAAM,IAAM,CAAA;MACtD,kBAAC,QAAD;OAAM,WAAU;iBAAhB;QACK,IAAS,IAAI,MAAM;QACnB;QAAO;QACL;;MACN,KAAe,kBAAC,QAAD;OAAM,WAAU;iBAAmB;OAAmB,CAAA;MACnE;;IAET,CAAA;GAEN,kBAAC,OAAD;IAAK,WAAU;cACX,kBAAC,IAAD;KACI,MAAM;KACN,MAAM;KACN,OAAO,MAAgB,YAAY,IAAQ;KAC3C,QAAQ;KACR,SAAS;KACT,QAAA;KACA,UAAA;KACA,aAAa;KACf,CAAA;IACA,CAAA;GACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creditCards-CCysEwry.js","names":[],"sources":["../src/utils/creditCards.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport type CreditCardBrand = 'visa' | 'mastercard' | 'amex' | 'discover' | 'maestro' | 'unknown'\n\nexport interface CreditCardBrandDetails {\n brand: CreditCardBrand\n label: string\n iconLabel: string\n maxLength: number\n formatGroups: number[]\n regex: RegExp\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// MCard brand rules also drive formatting and visible brand badges.\nconst creditCardBrands: CreditCardBrandDetails[] = [\n {\n brand: 'visa',\n label: 'Visa',\n iconLabel: 'VISA',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^4\\d{12}(?:\\d{3})?$/,\n },\n {\n brand: 'mastercard',\n label: 'Mastercard',\n iconLabel: 'MC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(5[1-5]\\d{14}|2(?:2[2-9]|[3-6]\\d|7[01])\\d{12}|2720\\d{12})$/,\n },\n {\n brand: 'amex',\n label: 'American Express',\n iconLabel: 'AMEX',\n maxLength: 15,\n formatGroups: [4, 6, 5],\n regex: /^3[47]\\d{13}$/,\n },\n {\n brand: 'discover',\n label: 'Discover',\n iconLabel: 'DISC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(6011\\d{12}|65\\d{14}|64[4-9]\\d{13})$/,\n },\n {\n brand: 'maestro',\n label: 'Maestro',\n iconLabel: 'MAES',\n maxLength: 19,\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^(5[06789]\\d{0,17}|6\\d{0,18})$/,\n },\n]\n\n// Fall back to a generic brand so formatting still works for unknown prefixes.\nfunction fallbackBrand(digits: string): CreditCardBrandDetails {\n return {\n brand: 'unknown',\n label: 'MCard',\n iconLabel: 'CARD',\n maxLength: Math.min(Math.max(digits.length || 16, 16), 19),\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^\\d{12,19}$/,\n }\n}\n\n// Remove every separator so card validation can work on raw digits.\nexport function stripCardNumber(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\n// Detect the best matching payment brand from the visible card prefix.\nexport function detectCardBrand(value: string): CreditCardBrandDetails {\n const digits = stripCardNumber(value)\n return creditCardBrands.find((rule) => rule.regex.test(digits)) ?? fallbackBrand(digits)\n}\n\n// Group card digits according to the detected payment brand.\nexport function formatCardNumber(value: string): string {\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n const trimmedDigits = digits.slice(0, rule.maxLength)\n const parts: string[] = []\n let offset = 0\n\n for (const length of rule.formatGroups) {\n if (offset >= trimmedDigits.length) {\n break\n }\n\n parts.push(trimmedDigits.slice(offset, offset + length))\n offset += length\n }\n\n if (offset < trimmedDigits.length) {\n parts.push(trimmedDigits.slice(offset))\n }\n\n return parts.join(' ')\n}\n\n// Run the Luhn checksum used by most card numbers.\nfunction passesLuhn(value: string): boolean {\n let sum = 0\n let shouldDouble = false\n\n for (let index = value.length - 1; index >= 0; index -= 1) {\n let digit = parseInt(value[index], 10)\n\n if (Number.isNaN(digit)) {\n return false\n }\n\n if (shouldDouble) {\n digit *= 2\n if (digit > 9) {\n digit -= 9\n }\n }\n\n sum += digit\n shouldDouble = !shouldDouble\n }\n\n return sum % 10 === 0\n}\n\n// Validate the detected card brand and Luhn checksum without third-party runtime dependencies.\nexport function validateCardNumber(value: string): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n\n if (digits.length < 12) {\n return {valid: false, error: 'MCard number is too short'}\n }\n\n if (digits.length > rule.maxLength) {\n return {valid: false, error: `${rule.label} card number is too long`}\n }\n\n if (rule.brand !== 'unknown' && !rule.regex.test(digits)) {\n return {valid: false, error: `Invalid ${rule.label} card number`}\n }\n\n if (!passesLuhn(digits)) {\n return {valid: false, error: 'Invalid card checksum'}\n }\n\n return OK_RESULT\n}\n\nexport {creditCardBrands}\n"],"mappings":";AAaA,IAAM,IAA8B,EAAC,OAAO,IAAK,EAG3C,IAA6C;CAC/C;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAE;EAC1B,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAE;EAC1B,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAE;EACvB,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAE;EAC1B,OAAO;EACV;CACD;EACI,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW;EACX,cAAc;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE;EAC7B,OAAO;EACV;CACJ;AAGD,SAAS,EAAc,GAAwC;AAC3D,QAAO;EACH,OAAO;EACP,OAAO;EACP,WAAW;EACX,WAAW,KAAK,IAAI,KAAK,IAAI,EAAO,UAAU,IAAI,GAAG,EAAE,GAAG;EAC1D,cAAc;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE;EAC7B,OAAO;EACV;;AAIL,SAAgB,EAAgB,GAAuB;AACnD,QAAO,EAAM,QAAQ,OAAO,GAAG;;AAInC,SAAgB,EAAgB,GAAuC;CACnE,IAAM,IAAS,EAAgB,EAAM;AACrC,QAAO,EAAiB,MAAM,MAAS,EAAK,MAAM,KAAK,EAAO,CAAC,IAAI,EAAc,EAAO;;AAI5F,SAAgB,EAAiB,GAAuB;CACpD,IAAM,IAAS,EAAgB,EAAM,EAC/B,IAAO,EAAgB,EAAO,EAC9B,IAAgB,EAAO,MAAM,GAAG,EAAK,UAAU,EAC/C,IAAkB,EAAE,EACtB,IAAS;AAEb,MAAK,IAAM,KAAU,EAAK,cAAc;AACpC,MAAI,KAAU,EAAc,OACxB;AAIJ,EADA,EAAM,KAAK,EAAc,MAAM,GAAQ,IAAS,EAAO,CAAC,EACxD,KAAU;;AAOd,QAJI,IAAS,EAAc,UACvB,EAAM,KAAK,EAAc,MAAM,EAAO,CAAC,EAGpC,EAAM,KAAK,IAAI;;AAI1B,SAAS,EAAW,GAAwB;CACxC,IAAI,IAAM,GACN,IAAe;AAEnB,MAAK,IAAI,IAAQ,EAAM,SAAS,GAAG,KAAS,GAAG,KAAY;EACvD,IAAI,IAAQ,SAAS,EAAM,IAAQ,GAAG;AAEtC,MAAI,OAAO,MAAM,EAAM,CACnB,QAAO;AAWX,EARI,MACA,KAAS,GACL,IAAQ,MACR,KAAS,KAIjB,KAAO,GACP,IAAe,CAAC;;AAGpB,QAAO,IAAM,MAAO;;AAIxB,SAAgB,EAAmB,GAAiC;AAChE,KAAI,CAAC,EACD,QAAO;CAGX,IAAM,IAAS,EAAgB,EAAM,EAC/B,IAAO,EAAgB,EAAO;AAkBpC,QAhBI,EAAO,SAAS,KACT;EAAC,OAAO;EAAO,OAAO;EAA4B,GAGzD,EAAO,SAAS,EAAK,YACd;EAAC,OAAO;EAAO,OAAO,GAAG,EAAK,MAAM;EAA0B,GAGrE,EAAK,UAAU,aAAa,CAAC,EAAK,MAAM,KAAK,EAAO,GAC7C;EAAC,OAAO;EAAO,OAAO,WAAW,EAAK,MAAM;EAAc,GAGhE,EAAW,EAAO,GAIhB,IAHI;EAAC,OAAO;EAAO,OAAO;EAAwB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e={valid:!0},t=[{brand:`visa`,label:`Visa`,iconLabel:`VISA`,maxLength:16,formatGroups:[4,4,4,4],regex:/^4\d{12}(?:\d{3})?$/},{brand:`mastercard`,label:`Mastercard`,iconLabel:`MC`,maxLength:16,formatGroups:[4,4,4,4],regex:/^(5[1-5]\d{14}|2(?:2[2-9]|[3-6]\d|7[01])\d{12}|2720\d{12})$/},{brand:`amex`,label:`American Express`,iconLabel:`AMEX`,maxLength:15,formatGroups:[4,6,5],regex:/^3[47]\d{13}$/},{brand:`discover`,label:`Discover`,iconLabel:`DISC`,maxLength:16,formatGroups:[4,4,4,4],regex:/^(6011\d{12}|65\d{14}|64[4-9]\d{13})$/},{brand:`maestro`,label:`Maestro`,iconLabel:`MAES`,maxLength:19,formatGroups:[4,4,4,4,3],regex:/^(5[06789]\d{0,17}|6\d{0,18})$/}];function n(e){return{brand:`unknown`,label:`MCard`,iconLabel:`CARD`,maxLength:Math.min(Math.max(e.length||16,16),19),formatGroups:[4,4,4,4,3],regex:/^\d{12,19}$/}}function r(e){return e.replace(/\D/g,``)}function i(e){let i=r(e);return t.find(e=>e.regex.test(i))??n(i)}function a(e){let t=r(e),n=i(t),a=t.slice(0,n.maxLength),o=[],s=0;for(let e of n.formatGroups){if(s>=a.length)break;o.push(a.slice(s,s+e)),s+=e}return s<a.length&&o.push(a.slice(s)),o.join(` `)}function o(e){let t=0,n=!1;for(let r=e.length-1;r>=0;--r){let i=parseInt(e[r],10);if(Number.isNaN(i))return!1;n&&(i*=2,i>9&&(i-=9)),t+=i,n=!n}return t%10==0}function s(t){if(!t)return e;let n=r(t),a=i(n);return n.length<12?{valid:!1,error:`MCard number is too short`}:n.length>a.maxLength?{valid:!1,error:`${a.label} card number is too long`}:a.brand!==`unknown`&&!a.regex.test(n)?{valid:!1,error:`Invalid ${a.label} card number`}:o(n)?e:{valid:!1,error:`Invalid card checksum`}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
|
|
2
|
-
//# sourceMappingURL=creditCards-ljs044xt.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creditCards-ljs044xt.cjs","names":[],"sources":["../src/utils/creditCards.ts"],"sourcesContent":["import type {ValidationResult} from './validators'\n\nexport type CreditCardBrand = 'visa' | 'mastercard' | 'amex' | 'discover' | 'maestro' | 'unknown'\n\nexport interface CreditCardBrandDetails {\n brand: CreditCardBrand\n label: string\n iconLabel: string\n maxLength: number\n formatGroups: number[]\n regex: RegExp\n}\n\nconst OK_RESULT: ValidationResult = {valid: true}\n\n// MCard brand rules also drive formatting and visible brand badges.\nconst creditCardBrands: CreditCardBrandDetails[] = [\n {\n brand: 'visa',\n label: 'Visa',\n iconLabel: 'VISA',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^4\\d{12}(?:\\d{3})?$/,\n },\n {\n brand: 'mastercard',\n label: 'Mastercard',\n iconLabel: 'MC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(5[1-5]\\d{14}|2(?:2[2-9]|[3-6]\\d|7[01])\\d{12}|2720\\d{12})$/,\n },\n {\n brand: 'amex',\n label: 'American Express',\n iconLabel: 'AMEX',\n maxLength: 15,\n formatGroups: [4, 6, 5],\n regex: /^3[47]\\d{13}$/,\n },\n {\n brand: 'discover',\n label: 'Discover',\n iconLabel: 'DISC',\n maxLength: 16,\n formatGroups: [4, 4, 4, 4],\n regex: /^(6011\\d{12}|65\\d{14}|64[4-9]\\d{13})$/,\n },\n {\n brand: 'maestro',\n label: 'Maestro',\n iconLabel: 'MAES',\n maxLength: 19,\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^(5[06789]\\d{0,17}|6\\d{0,18})$/,\n },\n]\n\n// Fall back to a generic brand so formatting still works for unknown prefixes.\nfunction fallbackBrand(digits: string): CreditCardBrandDetails {\n return {\n brand: 'unknown',\n label: 'MCard',\n iconLabel: 'CARD',\n maxLength: Math.min(Math.max(digits.length || 16, 16), 19),\n formatGroups: [4, 4, 4, 4, 3],\n regex: /^\\d{12,19}$/,\n }\n}\n\n// Remove every separator so card validation can work on raw digits.\nexport function stripCardNumber(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\n// Detect the best matching payment brand from the visible card prefix.\nexport function detectCardBrand(value: string): CreditCardBrandDetails {\n const digits = stripCardNumber(value)\n return creditCardBrands.find((rule) => rule.regex.test(digits)) ?? fallbackBrand(digits)\n}\n\n// Group card digits according to the detected payment brand.\nexport function formatCardNumber(value: string): string {\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n const trimmedDigits = digits.slice(0, rule.maxLength)\n const parts: string[] = []\n let offset = 0\n\n for (const length of rule.formatGroups) {\n if (offset >= trimmedDigits.length) {\n break\n }\n\n parts.push(trimmedDigits.slice(offset, offset + length))\n offset += length\n }\n\n if (offset < trimmedDigits.length) {\n parts.push(trimmedDigits.slice(offset))\n }\n\n return parts.join(' ')\n}\n\n// Run the Luhn checksum used by most card numbers.\nfunction passesLuhn(value: string): boolean {\n let sum = 0\n let shouldDouble = false\n\n for (let index = value.length - 1; index >= 0; index -= 1) {\n let digit = parseInt(value[index], 10)\n\n if (Number.isNaN(digit)) {\n return false\n }\n\n if (shouldDouble) {\n digit *= 2\n if (digit > 9) {\n digit -= 9\n }\n }\n\n sum += digit\n shouldDouble = !shouldDouble\n }\n\n return sum % 10 === 0\n}\n\n// Validate the detected card brand and Luhn checksum without third-party runtime dependencies.\nexport function validateCardNumber(value: string): ValidationResult {\n if (!value) {\n return OK_RESULT\n }\n\n const digits = stripCardNumber(value)\n const rule = detectCardBrand(digits)\n\n if (digits.length < 12) {\n return {valid: false, error: 'MCard number is too short'}\n }\n\n if (digits.length > rule.maxLength) {\n return {valid: false, error: `${rule.label} card number is too long`}\n }\n\n if (rule.brand !== 'unknown' && !rule.regex.test(digits)) {\n return {valid: false, error: `Invalid ${rule.label} card number`}\n }\n\n if (!passesLuhn(digits)) {\n return {valid: false, error: 'Invalid card checksum'}\n }\n\n return OK_RESULT\n}\n\nexport {creditCardBrands}\n"],"mappings":"AAaA,IAAM,EAA8B,CAAC,MAAO,GAAK,CAG3C,EAA6C,CAC/C,CACI,MAAO,OACP,MAAO,OACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAE,CAC1B,MAAO,sBACV,CACD,CACI,MAAO,aACP,MAAO,aACP,UAAW,KACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAE,CAC1B,MAAO,8DACV,CACD,CACI,MAAO,OACP,MAAO,mBACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAE,CACvB,MAAO,gBACV,CACD,CACI,MAAO,WACP,MAAO,WACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAE,CAC1B,MAAO,wCACV,CACD,CACI,MAAO,UACP,MAAO,UACP,UAAW,OACX,UAAW,GACX,aAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,CAC7B,MAAO,iCACV,CACJ,CAGD,SAAS,EAAc,EAAwC,CAC3D,MAAO,CACH,MAAO,UACP,MAAO,QACP,UAAW,OACX,UAAW,KAAK,IAAI,KAAK,IAAI,EAAO,QAAU,GAAI,GAAG,CAAE,GAAG,CAC1D,aAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,CAC7B,MAAO,cACV,CAIL,SAAgB,EAAgB,EAAuB,CACnD,OAAO,EAAM,QAAQ,MAAO,GAAG,CAInC,SAAgB,EAAgB,EAAuC,CACnE,IAAM,EAAS,EAAgB,EAAM,CACrC,OAAO,EAAiB,KAAM,GAAS,EAAK,MAAM,KAAK,EAAO,CAAC,EAAI,EAAc,EAAO,CAI5F,SAAgB,EAAiB,EAAuB,CACpD,IAAM,EAAS,EAAgB,EAAM,CAC/B,EAAO,EAAgB,EAAO,CAC9B,EAAgB,EAAO,MAAM,EAAG,EAAK,UAAU,CAC/C,EAAkB,EAAE,CACtB,EAAS,EAEb,IAAK,IAAM,KAAU,EAAK,aAAc,CACpC,GAAI,GAAU,EAAc,OACxB,MAGJ,EAAM,KAAK,EAAc,MAAM,EAAQ,EAAS,EAAO,CAAC,CACxD,GAAU,EAOd,OAJI,EAAS,EAAc,QACvB,EAAM,KAAK,EAAc,MAAM,EAAO,CAAC,CAGpC,EAAM,KAAK,IAAI,CAI1B,SAAS,EAAW,EAAwB,CACxC,IAAI,EAAM,EACN,EAAe,GAEnB,IAAK,IAAI,EAAQ,EAAM,OAAS,EAAG,GAAS,EAAG,IAAY,CACvD,IAAI,EAAQ,SAAS,EAAM,GAAQ,GAAG,CAEtC,GAAI,OAAO,MAAM,EAAM,CACnB,MAAO,GAGP,IACA,GAAS,EACL,EAAQ,IACR,GAAS,IAIjB,GAAO,EACP,EAAe,CAAC,EAGpB,OAAO,EAAM,IAAO,EAIxB,SAAgB,EAAmB,EAAiC,CAChE,GAAI,CAAC,EACD,OAAO,EAGX,IAAM,EAAS,EAAgB,EAAM,CAC/B,EAAO,EAAgB,EAAO,CAkBpC,OAhBI,EAAO,OAAS,GACT,CAAC,MAAO,GAAO,MAAO,4BAA4B,CAGzD,EAAO,OAAS,EAAK,UACd,CAAC,MAAO,GAAO,MAAO,GAAG,EAAK,MAAM,0BAA0B,CAGrE,EAAK,QAAU,WAAa,CAAC,EAAK,MAAM,KAAK,EAAO,CAC7C,CAAC,MAAO,GAAO,MAAO,WAAW,EAAK,MAAM,cAAc,CAGhE,EAAW,EAAO,CAIhB,EAHI,CAAC,MAAO,GAAO,MAAO,wBAAwB"}
|
package/dist/data-Bw9FSZ80.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-CgS-bND3.cjs`),t=require(`./icons-DWMgDKgt.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./MPortal-Bi24xTGW.cjs`),i=require(`./MPopover-B4IUb9f0.cjs`),a=require(`./MInline-CHrh3PHH.cjs`),o=require(`./MText-DEJddMB5.cjs`),s=require(`./MHeading-BhCNoJeW.cjs`),c=require(`./MSubText-C-70zn0m.cjs`),l=require(`./MButton-DrkVdRDy.cjs`),u=require(`./MCheckbox-C40ESQRe.cjs`),d=require(`./MBadge-B4x-Lx7e.cjs`),f=require(`./MSkeleton-5j1h9s95.cjs`),p=require(`./MModal-DT5BBgNZ.cjs`),m=require(`./MDropdownMenu-BmfXSc46.cjs`),h=require(`./locale-CZyqh3ON.cjs`),g=require(`./MTimeAgo-DxZGVo2Y.cjs`),_=require(`./MImage-L_zgfWRY.cjs`),v=require(`./MAvatar-BVJh6kgW.cjs`),y=require(`./MInputSearch-DfoenJIm.cjs`),b=require(`./MSparkline-B6qpt5WM.cjs`),x=require(`./frameworkTexts-abkS5XZK.cjs`),S=require(`./MStack-Bh-R2opf.cjs`);require(`./core-AKWkE8Bx.cjs`);let C=require(`react`),w=require(`react/jsx-runtime`);var T=(0,C.createContext)({});function E(){return(0,C.useContext)(T)}function D(e,t){return(0,C.isValidElement)(e)&&!!e.type[t]}function O({variant:e=`inline`,open:i,onToggle:a,unreadCount:o,color:s=`primary`,className:c,children:u,...d}){let f=null,p=null,m=[];C.Children.forEach(u,e=>{if(D(e,`__chatHeader`)){f=e;return}if(D(e,`__chatConversationList`)){p=e;return}m.push(e)});let h=(0,C.useMemo)(()=>({color:s}),[s]),g=(0,w.jsx)(T.Provider,{value:h,children:(0,w.jsxs)(`div`,{className:n.t(`chat`,e,`color-${s}`,e===`floating`&&i&&`open`,c),...d,children:[p&&(0,w.jsx)(`div`,{className:`chat-sidebar`,children:p}),(0,w.jsxs)(`div`,{className:`chat-main`,children:[f,m]})]})});return e===`floating`?(0,w.jsx)(r.t,{children:(0,w.jsxs)(`div`,{className:n.t(`chat-floating-wrapper`,i&&`open`),children:[i&&g,(0,w.jsx)(l.t,{variant:`filled`,color:s,shape:`circle`,size:`lg`,className:`chat-floating-trigger`,onClick:a,"aria-label":i?`Close chat`:`Open chat`,badge:!i&&o?o:void 0,badgeColor:`error`,badgePulsing:!i&&!!o,children:(0,w.jsx)(t.At,{})})]})}):g}function k({bordered:e=!1,className:t,children:r,...i}){return(0,w.jsx)(`div`,{className:n.t(`chat-header`,e&&`bordered`,t),...i,children:r})}k.__chatHeader=!0;function A({status:e}){if(!e)return null;let t=e===`delivered`||e===`read`;return(0,w.jsx)(`span`,{className:n.t(`chat-status`,e===`read`?`chat-status-read`:``),"aria-label":e,children:t?`✓✓`:`✓`})}function j({message:e,showAvatar:t=!0,showTimestamp:r=!0,color:i,className:a,...s}){let{content:l,sender:u,timestamp:d,status:f,isOwn:p,images:m}=e;return(0,w.jsxs)(`div`,{className:n.t(`chat-message`,p&&`own`,i||void 0,a),...s,children:[t&&!p&&(0,w.jsx)(v.t,{src:u.avatar,name:u.name,size:`sm`,color:i,className:`chat-message-avatar`}),(0,w.jsxs)(`div`,{className:`chat-message-content`,children:[!p&&(0,w.jsx)(o.t,{className:`chat-message-sender`,color:`neutral`,children:u.name}),(0,w.jsxs)(`div`,{className:`chat-message-bubble`,children:[l&&(0,w.jsx)(o.t,{children:l}),m&&m.length>0&&(0,w.jsx)(`div`,{className:n.t(`chat-message-images`,m.length>1&&`grid`),children:m.map((e,t)=>(0,w.jsx)(_.t,{src:e,alt:``,fit:`cover`,rounded:!0,className:`chat-message-image`},t))})]}),(0,w.jsxs)(`div`,{className:`chat-message-meta`,children:[p&&(0,w.jsx)(A,{status:f}),r&&(0,w.jsx)(c.t,{className:`chat-message-time`,children:(0,w.jsx)(g.t,{value:d})})]})]})]})}function M({messages:e,onScrollTop:t,loading:r=!1,color:i,className:a,children:o,...s}){let{color:c}=E(),u=i??c,d=(0,C.useRef)(null),f=(0,C.useRef)(!0),p=(0,C.useRef)(0),m=(0,C.useCallback)(()=>{let e=d.current;e&&(e.scrollTop=e.scrollHeight)},[]);return(0,C.useEffect)(()=>{let t=e?.length??0;t>p.current&&f.current&&m(),p.current=t},[e?.length,m]),(0,C.useEffect)(()=>{m()},[m]),(0,w.jsxs)(`div`,{ref:d,className:n.t(`chat-body`,a),onScroll:()=>{let e=d.current;e&&(f.current=e.scrollHeight-e.scrollTop-e.clientHeight<40,e.scrollTop<40&&t&&!r&&t())},...s,children:[r&&(0,w.jsx)(`div`,{className:`chat-body-loader`,children:(0,w.jsx)(l.r,{size:`sm`})}),e?.map(e=>(0,w.jsx)(j,{message:e,color:u},e.id)),o]})}var N=[{label:`Smileys`,emojis:`😀.😃.😄.😁.😆.😅.🤣.😂.🙂.😊.😇.🥰.😍.🤩.😘.😗.😋.😛.😜.🤪.😝.🤗.🤔.🫡.🤐.🤨.😐.😑.😶.🫠.😏.😒.🙄.😬.😮💨.🤥.😌.😔.😪.🤤.😴.😷.🤒.🤕.🤢.🤮.🤧.🥵.🥶.😵.🤯.🥳.🥸.😎.🤓.🧐`.split(`.`)},{label:`Gestures`,emojis:`👋.🤚.🖐️.✋.🖖.🫱.🫲.👌.🤌.🤏.✌️.🤞.🫰.🤟.🤘.🤙.👈.👉.👆.👇.☝️.👍.👎.✊.👊.🤛.🤜.👏.🙌.🫶.👐.🤝`.split(`.`)},{label:`Hearts`,emojis:[`❤️`,`🧡`,`💛`,`💚`,`💙`,`💜`,`🖤`,`🤍`,`🤎`,`💔`,`❤️🔥`,`❤️🩹`,`💕`,`💞`,`💓`,`💗`,`💖`,`💘`,`💝`,`💟`]},{label:`Objects`,emojis:[`🔥`,`✨`,`🌟`,`💫`,`⚡`,`💥`,`🎉`,`🎊`,`🏆`,`🥇`,`🎯`,`💡`,`📌`,`📎`,`✅`,`❌`,`⭐`,`💬`,`👁️🗨️`,`🔔`]}],P=`image/png,image/jpeg,image/gif,image/webp`;function F({onSend:e,placeholder:r=`Type a message…`,disabled:a=!1,showEmoji:o=!0,showAttach:s=!0,onTyping:c,color:u,className:d,...f}){let{color:p}=E(),m=u??p,[h,g]=(0,C.useState)(``),[v,y]=(0,C.useState)(!1),[b,x]=(0,C.useState)([]),[S,T]=(0,C.useState)([]),[D,O]=(0,C.useState)(!1),k=(0,C.useRef)(null),A=(0,C.useRef)(null),j=(0,C.useRef)(null),M=(0,C.useRef)(!1),F=(0,C.useRef)(void 0),I=(0,C.useCallback)(e=>{let t=e.filter(e=>e.type.startsWith(`image/`));t.length!==0&&(x(e=>[...e,...t]),t.forEach(e=>{let t=URL.createObjectURL(e);T(e=>[...e,t])}))},[]),L=(0,C.useCallback)(e=>{T(t=>(URL.revokeObjectURL(t[e]),t.filter((t,n)=>n!==e))),x(t=>t.filter((t,n)=>n!==e))},[]);(0,C.useEffect)(()=>()=>S.forEach(e=>URL.revokeObjectURL(e)),[]);let R=(0,C.useCallback)(()=>{let t=h.trim();!t&&b.length===0||a||(e?.(t,b.length>0?b:void 0),g(``),x([]),T(e=>(e.forEach(e=>URL.revokeObjectURL(e)),[])),k.current&&(k.current.style.height=`auto`),M.current&&(M.current=!1,c?.(!1)))},[h,b,a,e,c]),ee=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),R())},te=e=>{g(e.target.value),z(e.target),c&&(M.current||(M.current=!0,c(!0)),clearTimeout(F.current),F.current=setTimeout(()=>{M.current=!1,c(!1)},1500))},z=e=>{e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,120)+`px`};(0,C.useEffect)(()=>()=>clearTimeout(F.current),[]);let ne=e=>{g(t=>t+e),y(!1),k.current?.focus()},B=e=>{e.preventDefault(),O(!0)},re=e=>{e.preventDefault(),O(!1)},V=e=>{e.preventDefault(),O(!1),I(Array.from(e.dataTransfer.files))},ie=()=>{let e=j.current?.files;e&&I(Array.from(e)),j.current&&(j.current.value=``)},ae=h.trim()||b.length>0;return(0,w.jsxs)(`div`,{className:n.t(`chat-input`,D&&`drag-over`,d),onDragOver:B,onDragLeave:re,onDrop:V,...f,children:[S.length>0&&(0,w.jsx)(`div`,{className:`chat-input-previews`,children:S.map((e,n)=>(0,w.jsxs)(`div`,{className:`chat-input-preview`,children:[(0,w.jsx)(_.t,{src:e,alt:``,fit:`cover`,rounded:!0,className:`chat-input-preview-img`}),(0,w.jsx)(`button`,{type:`button`,className:`chat-input-preview-remove`,onClick:()=>L(n),"aria-label":`Remove image`,children:(0,w.jsx)(t.Li,{})})]},n))}),(0,w.jsxs)(`div`,{className:`chat-input-field`,children:[o&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`button`,{ref:A,type:`button`,className:`chat-input-emoji-trigger`,onClick:()=>y(e=>!e),"aria-label":`Emoji`,disabled:a,children:`😊`}),(0,w.jsx)(i.t,{open:v,anchorRef:A,onClose:()=>y(!1),placement:`top-start`,children:(0,w.jsx)(`div`,{className:`chat-emoji-picker`,children:N.map(e=>(0,w.jsxs)(`div`,{className:`chat-emoji-category`,children:[(0,w.jsx)(`div`,{className:`chat-emoji-category-label`,children:e.label}),(0,w.jsx)(`div`,{className:`chat-emoji-grid`,children:e.emojis.map(e=>(0,w.jsx)(`button`,{type:`button`,className:`chat-emoji-btn`,onClick:()=>ne(e),children:e},e))})]},e.label))})})]}),s&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`input`,{ref:j,type:`file`,accept:P,multiple:!0,className:`chat-input-file-hidden`,onChange:ie,tabIndex:-1}),(0,w.jsx)(`button`,{type:`button`,className:`chat-input-attach-trigger`,onClick:()=>j.current?.click(),"aria-label":`Attach image`,disabled:a,children:(0,w.jsx)(t.Ei,{color:`inherit`})})]}),(0,w.jsx)(`textarea`,{ref:k,className:`chat-input-textarea`,value:h,onChange:te,onKeyDown:ee,placeholder:r,disabled:a,rows:1}),(0,w.jsx)(l.t,{variant:`filled`,size:`sm`,color:m??`primary`,iconOnly:!0,shape:`circle`,className:`chat-input-send`,onClick:R,disabled:a||!ae,"aria-label":`Send`,children:(0,w.jsx)(t.jt,{})})]})]})}function I({users:e=[],visible:t=!0,className:r,...i}){if(!t||e.length===0)return null;let a=e.length===1?`${e[0].name} is typing`:e.length===2?`${e[0].name} and ${e[1].name} are typing`:`${e[0].name} and ${e.length-1} others are typing`;return(0,w.jsxs)(`div`,{className:n.t(`chat-typing`,r),"aria-label":a,...i,children:[e.length===1&&(0,w.jsx)(v.t,{src:e[0].avatar,name:e[0].name,size:`sm`,className:`chat-typing-avatar`}),(0,w.jsxs)(`div`,{className:`chat-typing-dots`,children:[(0,w.jsx)(`span`,{className:`chat-typing-dot`}),(0,w.jsx)(`span`,{className:`chat-typing-dot`}),(0,w.jsx)(`span`,{className:`chat-typing-dot`})]})]})}function L({className:e,children:t,...r}){return(0,w.jsx)(`div`,{className:n.t(`chat-conversation-list`,e),...r,children:t})}L.__chatConversationList=!0;function R({conversation:e,active:t=!1,color:r,onClick:i,className:a,...s}){let{color:l}=E(),u=r??l,{title:f,participants:p,lastMessage:m,unreadCount:h}=e,_=f??p.map(e=>e.name).join(`, `),y=p[0],b=p.some(e=>e.online);return(0,w.jsxs)(`div`,{className:n.t(`chat-conversation-item`,t&&`active`,a),onClick:()=>i?.(e),role:`button`,tabIndex:0,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),i?.(e))},...s,children:[(0,w.jsx)(v.t,{src:y?.avatar,name:y?.name,size:`md`,color:u,badge:b,badgeColor:`success`,className:`chat-conversation-avatar`}),(0,w.jsxs)(`div`,{className:`chat-conversation-info`,children:[(0,w.jsxs)(`div`,{className:`chat-conversation-top`,children:[(0,w.jsx)(o.t,{className:`chat-conversation-name`,children:_}),m&&(0,w.jsx)(c.t,{className:`chat-conversation-time`,children:(0,w.jsx)(g.t,{value:m.timestamp})})]}),m&&(0,w.jsxs)(`div`,{className:`chat-conversation-bottom`,children:[(0,w.jsxs)(c.t,{className:`chat-conversation-preview`,children:[m.isOwn?`You: `:``,m.content]}),!!h&&h>0&&(0,w.jsx)(d.t,{color:u??`primary`,size:`sm`,rounded:!0,children:h})]})]})]})}var ee={pdf:(0,w.jsx)(t.ei,{}),ts:(0,w.jsx)(t.Ur,{}),tsx:(0,w.jsx)(t.Wr,{}),js:(0,w.jsx)(t.jr,{}),jsx:(0,w.jsx)(t.Qr,{}),css:(0,w.jsx)(t.wr,{}),scss:(0,w.jsx)(t.wr,{}),html:(0,w.jsx)(t.kr,{}),json:(0,w.jsx)(t.Mr,{}),md:(0,w.jsx)(t.Pr,{}),txt:(0,w.jsx)(t.Gr,{}),csv:(0,w.jsx)(t.Tr,{}),zip:(0,w.jsx)(t.Yr,{}),rar:(0,w.jsx)(t.Vr,{}),svg:(0,w.jsx)(t.Hr,{}),png:(0,w.jsx)(t.zr,{}),jpg:(0,w.jsx)(t.Ar,{}),jpeg:(0,w.jsx)(t.$r,{}),gif:(0,w.jsx)(t.Or,{}),webp:(0,w.jsx)(t.Kr,{}),php:(0,w.jsx)(t.Rr,{}),xml:(0,w.jsx)(t.Jr,{}),xls:(0,w.jsx)(t.qr,{}),ppt:(0,w.jsx)(t.Br,{}),odt:(0,w.jsx)(t.Lr,{}),exe:(0,w.jsx)(t.Dr,{}),mp3:(0,w.jsx)(t.Fr,{}),mp4:(0,w.jsx)(t.Ir,{})};function te(e){let t=e.lastIndexOf(`.`);return t<1?null:e.slice(t+1).toLowerCase()}function z(e){return e.kind===`folder`||!!e.children?.length}function ne(e){let n=te(e);return n?ee[n]??(0,w.jsx)(t.ti,{}):(0,w.jsx)(t.ii,{})}function B(e,n,r){return e.icon?e.icon:r?z(e)?n?(0,w.jsx)(t.Sr,{}):(0,w.jsx)(t.Cr,{}):ne(e.label):null}function re(e){let t=new Map,n=new Map;function r(e){t.set(e.id,e);let i=new Set;for(let t of e.children??[])i.add(t.id),r(t).forEach(e=>i.add(e));return n.set(e.id,i),i}return e.forEach(r),{nodeMap:t,descendants:n}}function V(e,t){return typeof window>`u`?{x:e,y:t}:{x:Math.max(8,Math.min(e,window.innerWidth-220)),y:Math.max(8,Math.min(t,window.innerHeight-16))}}function ie({node:e,level:r,expandable:i,selectable:a,expandedIds:o,selectedId:s,draggedId:c,dropTargetId:l,onToggle:u,onSelect:d,indent:f,showLines:p,fileIcons:m,draggable:h,canDropOnNode:g,onContextMenu:_,onDragStart:v,onDragOver:y,onDrop:b,onDragEnd:x}){let S=z(e),C=o.has(e.id),T=s===e.id,E=c===e.id,D=l===e.id,O=g?.(e),k=B(e,C,!!m);return(0,w.jsxs)(`li`,{role:`treeitem`,"aria-expanded":S?C:void 0,children:[(0,w.jsxs)(`div`,{className:n.t(`item`,T&&`selected`,e.disabled&&`disabled`,a&&!e.disabled&&`selectable`,h&&!e.disabled&&`draggable`,E&&`dragging`,O&&`can-drop`,D&&`drop-target`),style:{paddingLeft:r*f},draggable:h&&!e.disabled,onClick:()=>{e.disabled||(S&&i&&u(e.id),a&&d?.(e.id,e))},onContextMenu:t=>_?.(t,e),onDragStart:t=>v?.(t,e),onDragOver:t=>y?.(t,e),onDrop:t=>b?.(t,e),onDragEnd:x,children:[(0,w.jsx)(`span`,{className:`toggle`,children:S&&i?(0,w.jsx)(`span`,{className:n.t(`arrow`,C&&`expanded`),children:(0,w.jsx)(t.Pi,{})}):(0,w.jsx)(`span`,{className:`spacer`})}),k&&(0,w.jsx)(`span`,{className:`icon`,children:k}),(0,w.jsx)(`span`,{className:`label`,children:e.label})]}),S&&C&&(0,w.jsx)(`ul`,{className:`list`,role:`group`,style:p?{"--line-left":`${r*f+17}px`}:void 0,children:(e.children??[]).map(e=>(0,w.jsx)(ie,{node:e,level:r+1,expandable:i,selectable:a,expandedIds:o,selectedId:s,draggedId:c,dropTargetId:l,onToggle:u,onSelect:d,indent:f,showLines:p,fileIcons:m,draggable:h,canDropOnNode:g,onContextMenu:_,onDragStart:v,onDragOver:y,onDrop:b,onDragEnd:x},e.id))})]})}function ae({items:e,expandable:t=!0,selectable:i=!1,defaultExpanded:a=[],expanded:o,onExpandChange:s,selected:c,onSelect:l,indent:u=20,showLines:d=!0,fileIcons:f=!0,draggable:p=!1,canDrop:m,onMove:h,contextMenuItems:g,onContextMenuAction:_,className:v,...y}){let[b,x]=(0,C.useState)(a),[S,T]=(0,C.useState)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),[A,j]=(0,C.useState)(null),M=(0,C.useRef)(null),N=o??b,P=new Set(N),F=c===void 0?S:c,{nodeMap:I,descendants:L}=re(e),R=E?I.get(E)??null:null;(0,C.useEffect)(()=>{if(!A)return;function e(e){e&&M.current&&M.current.contains(e.target)||j(null)}function t(e){e.key===`Escape`&&j(null)}return document.addEventListener(`mousedown`,e),document.addEventListener(`scroll`,e,!0),window.addEventListener(`resize`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`scroll`,e,!0),window.removeEventListener(`resize`,e),document.removeEventListener(`keydown`,t)}},[A]);function ee(e){let t=P.has(e)?N.filter(t=>t!==e):[...N,e];s?s(t):x(t)}function te(e,t){l?l(e,t):T(e)}function ne(){D(null),k(null)}function B(e){return!R||!p||!h||e.disabled||!z(e)||e.id===R.id||L.get(R.id)?.has(e.id)?!1:m?m(R,e):!0}function ae(e,t){if(!g||t.disabled)return;let n=g(t).filter(Boolean);if(!n.length)return;e.preventDefault(),te(t.id,t);let r=V(e.clientX,e.clientY);j({node:t,items:n,x:r.x,y:r.y})}function oe(e,t){!p||t.disabled||(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t.id),j(null),D(t.id))}function se(e,t){B(t)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,k(t.id))}function ce(e,n){if(e.preventDefault(),!R||!B(n)){ne();return}h?.({draggedId:R.id,draggedNode:R,targetId:n.id,targetNode:n}),t&&!P.has(n.id)&&ee(n.id),ne()}return(0,w.jsxs)(`div`,{className:n.t(`tree`,d&&`lines`,v),...y,children:[(0,w.jsx)(`ul`,{className:`list`,role:`tree`,children:e.map(e=>(0,w.jsx)(ie,{node:e,level:0,expandable:t,selectable:i,expandedIds:P,selectedId:F,draggedId:E,dropTargetId:O,onToggle:ee,onSelect:te,indent:u,showLines:d,fileIcons:f,draggable:p,canDropOnNode:B,onContextMenu:ae,onDragStart:oe,onDragOver:se,onDrop:ce,onDragEnd:ne},e.id))}),A&&(0,w.jsx)(r.t,{children:(0,w.jsx)(`div`,{ref:M,className:`tree menu`,style:{top:A.y,left:A.x},role:`menu`,children:A.items.map(e=>(0,w.jsxs)(`button`,{type:`button`,className:n.t(`action`,e.color,e.disabled&&`disabled`),role:`menuitem`,disabled:e.disabled,onClick:()=>{e.disabled||(_?.(e.id,A.node),j(null))},children:[e.icon&&(0,w.jsx)(`span`,{className:`icon`,children:e.icon}),(0,w.jsx)(`span`,{children:e.label})]},e.id))})})]})}function oe({items:e,color:t=`primary`,strikethrough:r=!0,onChange:i,className:a,...o}){return(0,w.jsx)(`div`,{className:n.t(`task list`,`color-${t}`,a),role:`list`,...o,children:e.map(e=>(0,w.jsxs)(`div`,{className:n.t(`task item`,e.checked&&`checked`,e.disabled&&`disabled`),role:`listitem`,onClick:t=>{e.disabled||t.target.closest(`.checkbox`)||i?.(e.id,!(e.checked??!1))},children:[(0,w.jsx)(u.t,{className:`task control`,checked:e.checked??!1,color:t,size:`sm`,disabled:e.disabled,onChange:t=>i?.(e.id,t.target.checked),clickEffect:`ripple`}),(0,w.jsx)(`span`,{className:n.t(`task label`,e.checked&&r&&`done`),children:e.label})]},e.id))})}var se={pdf:(0,w.jsx)(t.ei,{}),ts:(0,w.jsx)(t.Ur,{}),tsx:(0,w.jsx)(t.Wr,{}),js:(0,w.jsx)(t.jr,{}),jsx:(0,w.jsx)(t.Qr,{}),css:(0,w.jsx)(t.wr,{}),scss:(0,w.jsx)(t.wr,{}),html:(0,w.jsx)(t.kr,{}),json:(0,w.jsx)(t.Mr,{}),md:(0,w.jsx)(t.Pr,{}),txt:(0,w.jsx)(t.Gr,{}),csv:(0,w.jsx)(t.Tr,{}),zip:(0,w.jsx)(t.Yr,{}),rar:(0,w.jsx)(t.Vr,{}),svg:(0,w.jsx)(t.Hr,{}),png:(0,w.jsx)(t.zr,{}),jpg:(0,w.jsx)(t.Ar,{}),jpeg:(0,w.jsx)(t.$r,{}),gif:(0,w.jsx)(t.Or,{}),webp:(0,w.jsx)(t.Kr,{}),php:(0,w.jsx)(t.Rr,{}),xml:(0,w.jsx)(t.Jr,{}),xls:(0,w.jsx)(t.qr,{}),ppt:(0,w.jsx)(t.Br,{}),odt:(0,w.jsx)(t.Lr,{}),exe:(0,w.jsx)(t.Dr,{}),mp3:(0,w.jsx)(t.Fr,{}),mp4:(0,w.jsx)(t.Ir,{})};function ce(e){let t=e.lastIndexOf(`.`);return t<1?null:e.slice(t+1).toLowerCase()}function H(e){return e?.kind===`folder`||!!e?.children?.length}function le(e){let n=ce(e);return n?se[n]??(0,w.jsx)(t.ti,{}):(0,w.jsx)(t.ii,{})}function U(e,n=!1){return e.icon?e.icon:H(e)?n?(0,w.jsx)(t.Sr,{}):(0,w.jsx)(t.Cr,{}):le(e.label)}function ue(e){if(!e||e<1)return null;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;let i=n>=100||r===0?0:1;return`${n.toFixed(i)} ${t[r]}`}function de(e,t){if(!e)return null;let n=e instanceof Date?e:new Date(e);return Number.isNaN(n.getTime())?null:new Intl.DateTimeFormat(t,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(n)}function fe(e){let t=new Map,n=new Map;function r(e,i){for(let a of e)t.set(a.id,a),n.set(a.id,i),a.children?.length&&r(a.children,a.id)}return r(e,null),{nodeMap:t,parentMap:n}}function pe(e){return e.flatMap(e=>H(e)?[{...e,kind:`folder`,children:pe(e.children??[])}]:[])}function me(e,t,n){let r=[],i=e;for(;i;){let e=t.get(i);if(!e)break;r.unshift(e),i=n.get(i)??null}return r}function he(e,t,n){if(!e)return null;let r=t.get(e);return r?H(r)?r.id:n.get(r.id)??null:null}function ge(e,t){return e?e.children??[]:t}function _e(e,t,n,r,i){let a=e?t.get(e)??null:null,o=a?n.get(a.id)??null:null;return{id:e,node:a,parentId:o,parentNode:o?t.get(o)??null:null,activeFolderId:r,activeFolder:i}}function W(e,n){return[...H(e)?[]:[{id:`download`,label:n.download,icon:(0,w.jsx)(t.tn,{}),color:`primary`}],{id:`rename`,label:n.rename,icon:(0,w.jsx)(t.nn,{})},{id:`move`,label:n.moveTo,icon:(0,w.jsx)(t.Ai,{})},{id:`delete`,label:n.delete,icon:(0,w.jsx)(t.dn,{}),color:`error`}]}function G(e,n){return[...H(e)?[{id:`new-folder`,label:n.newFolder,icon:(0,w.jsx)(t.xr,{})}]:[],...W(e,n)]}function K({items:e,locale:r,defaultExpanded:i=[],expanded:s,onExpandChange:c,folderId:u,defaultFolderId:f=null,onFolderChange:p,selectedId:g,onSelectionChange:_,view:v,defaultView:b=`list`,onViewChange:T,searchValue:E,defaultSearchValue:D=``,onSearchChange:O,searchable:k=!0,searchPlaceholder:A,showSidebar:j=!0,showPreview:M=!0,emptyText:N,toolbarActions:P=[],onToolbarAction:F,onOpenItem:I,onItemAction:L,onContextMenuAction:R,canDrop:ee,onMove:te,renderPreview:z,className:ne,...B}){let re=h.t(r),V=x.a(),[ie,oe]=(0,C.useState)(f),[se,ce]=(0,C.useState)(null),[le,K]=(0,C.useState)(b),[q,ve]=(0,C.useState)(D),{nodeMap:J,parentMap:ye}=(0,C.useMemo)(()=>fe(e),[e]),Y=(0,C.useMemo)(()=>pe(e),[e]),X=he(u===void 0?ie:u,J,ye),Z=X?J.get(X)??null:null,be=g===void 0?se:g,Q=be?J.get(be)??null:null,xe=Q?Q.id:null,Se=v??le,Ce=E??q,we=ge(Z,e),Te=Ce.trim().toLowerCase(),Ee=me(X,J,ye),De=A??V.searchPlaceholder,Oe=N??V.emptyText,ke=!!(L||R),Ae=(0,C.useMemo)(()=>Te?we.filter(e=>e.label.toLowerCase().includes(Te)):we,[we,Te]);function je(e){let t=he(e,J,ye),n=t?J.get(t)??null:null;p?p(t,n):oe(t)}function Me(e,t=X,n=Z){let r=_e(e,J,ye,t,n);_?_(r):ce(e)}function Ne(e){T?T(e):K(e)}function Pe(e){O?O(e):ve(e)}function Fe(e,t){je(e),Me(e,t.id,t)}function Ie(e){if(H(e)){je(e.id),Me(e.id,e.id,e);return}Me(e.id)}function Le(e){F&&F({..._e(xe,J,ye,X,Z),actionId:e,visibleItems:Ae})}function Re(e,t){(L??R)?.(e,t)}function ze(e,t){(R??L)?.(e,t)}function Be(e){let t=[],n=ue(e.size),r=de(e.modifiedAt,re);return H(e)&&t.push(V.itemsCount(e.children?.length??0)),n&&t.push(n),r&&t.push(r),t.join(` / `)}return(0,w.jsxs)(`div`,{className:n.t(`file-manager`,!j&&`no-sidebar`,!M&&`no-preview`,ne),...B,children:[(0,w.jsxs)(`div`,{className:`toolbar`,children:[(0,w.jsxs)(`div`,{className:`toolbar-main`,children:[(0,w.jsxs)(`div`,{className:`breadcrumbs`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`breadcrumb root`,onClick:()=>je(null),children:[(0,w.jsx)(t.vr,{}),(0,w.jsx)(o.t,{as:`span`,weight:`semibold`,children:V.home})]}),Ee.map(e=>(0,w.jsxs)(`div`,{className:`breadcrumbs`,children:[(0,w.jsx)(`span`,{className:`breadcrumb-separator`,children:`/`}),(0,w.jsx)(`button`,{type:`button`,className:`breadcrumb`,onClick:()=>je(e.id),children:(0,w.jsx)(o.t,{as:`span`,children:e.label})})]},e.id))]}),k&&(0,w.jsx)(y.t,{className:`toolbar-search`,size:`sm`,placeholder:De,value:Ce,onChange:e=>Pe(e.target.value),onClear:()=>Pe(``)})]}),(0,w.jsxs)(`div`,{className:`toolbar-actions`,children:[P.map(e=>(0,w.jsx)(l.t,{size:`sm`,variant:e.variant??`ghost`,color:e.color,disabled:e.disabled,onClick:()=>Le(e.id),startIcon:e.icon,children:e.label},e.id)),(0,w.jsxs)(`div`,{className:`view-switch`,children:[(0,w.jsx)(l.t,{size:`sm`,variant:Se===`list`?`secondary`:`ghost`,onClick:()=>Ne(`list`),children:V.listView}),(0,w.jsx)(l.t,{size:`sm`,variant:Se===`grid`?`secondary`:`ghost`,onClick:()=>Ne(`grid`),children:V.gridView})]})]})]}),(0,w.jsxs)(`div`,{className:`body`,children:[j&&(0,w.jsxs)(`aside`,{className:`panel`,children:[(0,w.jsxs)(`div`,{className:`panel-header`,children:[(0,w.jsx)(o.t,{weight:`semibold`,children:V.folders}),(0,w.jsx)(d.t,{size:`sm`,color:`info`,children:Y.length})]}),(0,w.jsx)(`div`,{className:`panel-body sidebar-body`,children:Y.length>0?(0,w.jsx)(ae,{items:Y,selectable:!0,fileIcons:!0,defaultExpanded:i,expanded:s,onExpandChange:c,selected:X,onSelect:(e,t)=>Fe(e,t),draggable:!!te,canDrop:ee?(e,t)=>ee(e,t):void 0,onMove:te?e=>te({draggedId:e.draggedId,draggedNode:e.draggedNode,targetId:e.targetId,targetNode:e.targetNode}):void 0,contextMenuItems:ke?e=>G(e,V):void 0,onContextMenuAction:ke?(e,t)=>ze(e,t):void 0}):(0,w.jsx)(`div`,{className:`empty-state`,children:V.noFoldersAvailable})})]}),(0,w.jsxs)(`section`,{className:`panel`,children:[(0,w.jsxs)(`div`,{className:`panel-header`,children:[(0,w.jsxs)(a.t,{align:`center`,wrap:`wrap`,children:[(0,w.jsx)(o.t,{weight:`semibold`,children:Z?.label??V.home}),(0,w.jsx)(d.t,{size:`sm`,children:Ae.length})]}),(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,children:Te?V.filteredBy(Ce):V.currentFolder})]}),(0,w.jsx)(`div`,{className:`panel-body`,children:Ae.length>0?(0,w.jsx)(`div`,{className:n.t(`content-items`,Se),children:Ae.map(e=>{let r=xe===e.id,i=Be(e),a=ke?W(e,V):[];return(0,w.jsxs)(`div`,{className:n.t(`item-card`,r&&`selected`),children:[(0,w.jsxs)(`button`,{type:`button`,className:`item-card-main`,onClick:()=>Ie(e),onDoubleClick:()=>I?.(e),children:[(0,w.jsx)(`span`,{className:`item-icon`,children:U(e)}),(0,w.jsxs)(`span`,{className:`item-text`,children:[(0,w.jsx)(o.t,{as:`span`,weight:`semibold`,truncate:!0,children:e.label}),e.description?(0,w.jsx)(o.t,{as:`span`,size:`sm`,tone:`muted`,truncate:2,children:e.description}):null,(0,w.jsxs)(`span`,{className:`item-meta`,children:[(0,w.jsx)(d.t,{size:`sm`,color:H(e)?`info`:`primary`,children:H(e)?V.folder:V.file}),i?(0,w.jsx)(o.t,{as:`span`,size:`sm`,tone:`muted`,truncate:!0,children:i}):null]})]})]}),a.length>0?(0,w.jsx)(`div`,{className:`item-card-actions`,children:(0,w.jsx)(m.i,{placement:`bottom-end`,trigger:(0,w.jsx)(l.t,{"aria-label":`${V.preview}: ${e.label}`,variant:`ghost`,size:`sm`,iconOnly:!0,children:(0,w.jsx)(t.sn,{})}),children:a.map(t=>(0,w.jsx)(m.r,{icon:t.icon,label:t.label,color:t.color,onClick:()=>Re(t.id,e)},t.id))})}):null]},e.id)})}):(0,w.jsx)(`div`,{className:`empty-state`,children:Oe})})]}),M&&(0,w.jsxs)(`aside`,{className:`panel`,children:[(0,w.jsxs)(`div`,{className:`panel-header`,children:[(0,w.jsx)(o.t,{weight:`semibold`,children:V.preview}),Q?(0,w.jsx)(d.t,{size:`sm`,color:H(Q)?`info`:`primary`,children:H(Q)?V.folder:V.file}):null]}),(0,w.jsx)(`div`,{className:`panel-body`,children:Q?(0,w.jsxs)(S.t,{children:[(0,w.jsx)(`div`,{className:`preview-visual`,children:z?z(Q):Q.preview?Q.preview:(0,w.jsx)(`span`,{className:`preview-icon`,children:U(Q,!0)})}),(0,w.jsx)(o.t,{weight:`semibold`,children:Q.label}),Q.description?(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,children:Q.description}):null,(0,w.jsxs)(`div`,{className:`preview-meta`,children:[(0,w.jsx)(d.t,{size:`sm`,color:H(Q)?`info`:`primary`,children:H(Q)?V.folder:V.file}),ue(Q.size)?(0,w.jsx)(d.t,{size:`sm`,children:ue(Q.size)}):null,de(Q.modifiedAt,re)?(0,w.jsx)(d.t,{size:`sm`,color:`neutral`,children:de(Q.modifiedAt,re)}):null]}),(0,w.jsxs)(o.t,{size:`sm`,tone:`muted`,children:[V.path,`:`,` `,[V.home,...me(Q.id,J,ye).map(e=>e.label)].join(` / `)]})]}):(0,w.jsx)(`div`,{className:`preview-empty`,children:V.selectItemToInspect})})]})]})]})}function q(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function ve(e){if(!e)return null;if(e instanceof Date)return q(e);let t=new Date(e);return Number.isNaN(t.getTime())?null:q(t)}function J(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ye(e){return ve(e.date)}function Y(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),q(n)}function X(e,t){let n=q(e);return Y(n,-((n.getDay()-t+7)%7))}function Z(e){return[...e].sort((e,t)=>{let n=e.startTime??`99:99`,r=t.startTime??`99:99`;return n.localeCompare(r)})}function be(e,t){let n=X(new Date(e.getFullYear(),e.getMonth(),1),t);return Array.from({length:42},(e,t)=>Y(n,t))}function Q(e){switch(e){case`active`:return`rgba(14, 165, 233, 1)`;case`done`:return`rgba(34, 197, 94, 1)`;case`cancelled`:return`rgba(239, 68, 68, 1)`;default:return`rgba(245, 158, 11, 1)`}}function xe(e,t){return new Intl.DateTimeFormat(t,{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`}).format(e)}function Se(e,t){let n=Y(e,6),r=new Intl.DateTimeFormat(t,{day:`numeric`,month:`short`});return`${r.format(e)} - ${r.format(n)}`}function Ce(e,t){return e.startTime&&e.endTime?`${e.startTime} - ${e.endTime}`:e.startTime?e.startTime:t.allDay}function we(e,t){let n=new Date,r=new Date(e);r.setHours(t,0,0,0);let i=new Date(r);return i.setHours(t+1,0,0,0),i<=n?`past`:r<=n&&i>n?`active`:`upcoming`}function Te(e){return Z(e).slice(0,4).map(e=>(0,w.jsx)(`span`,{className:`marker`,style:{background:e.color??Q(e.status)},"aria-hidden":`true`},e.id))}function Ee(e,t,n){if(!t.length||!n.length)return e;let r=t.filter(e=>n.includes(e.id));return r.length?e.filter(e=>r.some(t=>t.predicate(e))):e}function De(e,t,n,r){return t===`week`?Se(X(e,r),n):new Intl.DateTimeFormat(n,{month:`long`,year:`numeric`}).format(e)}function Oe(e,t){return e===`week`?t.weekView:t.monthView}function ke({date:e,events:t,locale:n,timelineStartHour:r,timelineEndHour:i,showTimeline:a,emptyStateText:c,renderEventItem:l}){if(!e)return null;let u=x.t();return(0,w.jsxs)(S.t,{children:[(0,w.jsxs)(S.t,{children:[(0,w.jsx)(s.t,{level:4,children:xe(e,n)}),(0,w.jsx)(o.t,{tone:`muted`,size:`sm`,children:t.length>0?u.itemsCount(t.length):c})]}),(0,w.jsx)(Pe,{events:t,locale:n,currentDate:e,emptyStateText:c,renderEventItem:l}),a&&(0,w.jsx)(Fe,{date:e,events:t,locale:n,startHour:r,endHour:i})]})}function Ae({filters:e,activeFilterIds:t,onToggle:n}){return e.length?(0,w.jsx)(`div`,{className:`calendar filters`,children:e.map(e=>{let r=t.includes(e.id);return(0,w.jsx)(l.t,{type:`button`,size:`sm`,variant:`outlined`,color:r?`primary`:`neutral`,active:r,className:`calendar filter button`,onClick:()=>n(e.id),children:e.label},e.id)})}):null}function je({days:e,eventsByDay:t,selectedDate:n,activeDate:r,onDayInteract:i,onDayHover:a,onDayLeave:o,dayBadge:s,renderDayCell:c}){let l=J(q(new Date));return(0,w.jsx)(`div`,{className:`calendar week`,children:e.map(e=>{let u=J(e),f=t.get(u)??[],p=s?.(e,f)??(f.length>0?(0,w.jsx)(d.t,{size:`sm`,children:f.length}):null),m=Te(f),h=!!(n&&J(n)===u),g={date:e,events:f,badge:p,isToday:u===l,isSelected:h,isOutsideMonth:!1};return(0,w.jsx)(`div`,{className:`calendar week column`,children:(0,w.jsx)(Me,{date:e,events:f,badge:p,markers:m,isToday:g.isToday,isSelected:h||!!(r&&J(r)===u),isOutsideMonth:!1,onClick:t=>i(e,t.currentTarget,f),onMouseEnter:t=>a(e,t.currentTarget,f),onMouseLeave:o,children:c?c(e,g):void 0})},u)})})}function Me({date:e,events:t=[],badge:r,markers:i,isToday:a=!1,isSelected:o=!1,isOutsideMonth:s=!1,className:c,children:l,...u}){return(0,w.jsx)(`button`,{type:`button`,className:n.t(`calendar day cell`,a&&`today`,o&&`selected`,s&&`outside-month`,c),...u,children:l??(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`div`,{className:`day header`,children:[(0,w.jsx)(`span`,{className:`day number`,children:e.getDate()}),(0,w.jsx)(`div`,{className:`day meta`,children:r})]}),(0,w.jsx)(`div`,{className:`markers`,children:i??Te(t)})]})})}function Ne({event:e,locale:t,className:r,currentDate:i,...a}){let c=h.t(t),l=x.t(),u=e.status===`cancelled`?`error`:e.status===`done`?`success`:e.status===`active`?`info`:`warning`;return(0,w.jsxs)(`div`,{className:n.t(`calendar event item`,r),...a,children:[(0,w.jsx)(`div`,{className:`event time`,children:Ce(e,l)}),(0,w.jsxs)(`div`,{className:`event content`,children:[(0,w.jsxs)(`div`,{className:`event title row`,children:[(0,w.jsx)(s.t,{level:5,children:e.title}),e.status&&(0,w.jsx)(d.t,{color:u,size:`sm`,children:e.status})]}),e.description&&(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,children:e.description}),(0,w.jsxs)(`div`,{className:`event details`,children:[e.type&&(0,w.jsx)(d.t,{color:`neutral`,size:`sm`,children:e.type}),e.badgeLabel&&(0,w.jsx)(d.t,{size:`sm`,children:e.badgeLabel}),e.user&&(0,w.jsxs)(`span`,{className:`event user`,children:[(0,w.jsx)(v.t,{size:`sm`,src:e.user.avatar,name:e.user.name,backgroundColor:e.user.color}),e.user.name]}),!e.startTime&&!e.endTime&&i&&(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,children:xe(i,c)})]})]})]})}function Pe({events:e,locale:t,currentDate:r,emptyStateText:i,renderEventItem:a,className:s,...c}){let l=h.t(t),u=x.t();return e.length?(0,w.jsx)(`div`,{className:n.t(`calendar event list`,s),...c,children:(0,w.jsx)(S.t,{children:Z(e).map(e=>a?(0,w.jsx)(`div`,{children:a(e)},e.id):(0,w.jsx)(Ne,{event:e,locale:l,currentDate:r},e.id))})}):(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,className:n.t(`calendar event list`,s),...c,children:i??u.emptyStateText})}function Fe({date:e,events:t,locale:r,startHour:i=6,endHour:a=22,emptyStateText:c,className:l,...u}){h.t(r);let d=x.t(),f=Array.from({length:Math.max(a-i+1,1)},(e,t)=>i+t);return(0,w.jsx)(`div`,{className:n.t(`calendar timeline`,l),...u,children:(0,w.jsxs)(S.t,{children:[(0,w.jsx)(s.t,{level:5,children:d.timelineTitle}),(0,w.jsx)(`div`,{className:`timeline slots`,children:f.map(r=>{let i=t.filter(e=>e.startTime?Number(e.startTime.split(`:`)[0])===r:!1);return(0,w.jsxs)(`div`,{className:n.t(`timeline slot`,we(e,r)),children:[(0,w.jsx)(`div`,{className:`slot time`,children:`${String(r).padStart(2,`0`)}:00`}),(0,w.jsx)(`div`,{className:`slot line`}),(0,w.jsx)(`div`,{className:`slot content`,children:i.length>0?(0,w.jsx)(S.t,{children:i.map(e=>(0,w.jsxs)(`div`,{className:`slot event`,children:[(0,w.jsx)(`span`,{className:`slot event dot`,style:{background:e.color??Q(e.status)}}),(0,w.jsx)(o.t,{size:`sm`,children:e.title})]},e.id))}):(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,children:c??d.timelineEmptyState})})]},r)})})]})})}function Ie({open:e,anchorRef:t,onClose:r,onPointerEnter:a,onPointerLeave:o,date:s,events:c,locale:l,timelineStartHour:u=6,timelineEndHour:d=22,showTimeline:p=!0,emptyStateText:m,renderEventItem:g,className:_,style:v}){let y=h.t(l),b=x.t();return(0,w.jsx)(i.t,{open:e,anchorRef:t,onClose:r,placement:`bottom-start`,className:n.t(`calendar popover`,_),style:v,children:(0,w.jsx)(f.n,{className:`calendar event popover`,onPointerEnter:a,onPointerLeave:o,children:(0,w.jsx)(f.r,{children:(0,w.jsx)(ke,{date:s,events:c,locale:y,timelineStartHour:u,timelineEndHour:d,showTimeline:p,emptyStateText:m??b.emptyStateText,renderEventItem:g})})})})}function Le({month:t,defaultMonth:r,onMonthChange:i,events:a=[],locale:c,weekStartsOn:u=1,view:f,defaultView:m=`month`,views:g=[`month`,`week`],onViewChange:_,selectedDate:v,defaultSelectedDate:y,onDayClick:b,dayBadge:T,renderDayCell:E,renderEventItem:D,detailsTrigger:O=`click`,detailsMode:k=`auto`,showTimeline:A=!0,timelineStartHour:j=6,timelineEndHour:M=22,emptyStateText:N,filters:P=[],activeFilters:F,defaultActiveFilters:I=[],onActiveFiltersChange:L,fullWidth:R=!1,className:ee,...te}){let z=h.t(c),ne=x.r(),B=x.t(),re=q(new Date),[V,ie]=(0,C.useState)(q(r??t??re)),[ae,oe]=(0,C.useState)(m),[se,ce]=(0,C.useState)(ve(y)),[H,le]=(0,C.useState)(I),[U,ue]=(0,C.useState)(null),[de,fe]=(0,C.useState)(!1),[pe,me]=(0,C.useState)(!1),he=(0,C.useRef)(null),ge=(0,C.useRef)(null),_e=t!==void 0&&typeof i==`function`,W=q(_e?t??V:V),G=f??ae,K=ve(v)??se,Z=F??H;(0,C.useEffect)(()=>{let t=window.matchMedia(`(max-width: ${e.t.md}px)`),n=()=>me(t.matches);return n(),t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)},[]),(0,C.useEffect)(()=>{_e&&t&&ie(q(t))},[_e,t]),(0,C.useEffect)(()=>{f&&oe(f)},[f]),(0,C.useEffect)(()=>{v!==void 0&&ce(ve(v))},[v]),(0,C.useEffect)(()=>()=>{ge.current&&window.clearTimeout(ge.current)},[]);let Q=(0,C.useMemo)(()=>Ee(a,P,Z),[a,P,Z]),Se=(0,C.useMemo)(()=>{let e=new Map;return Q.forEach(t=>{let n=ye(t);if(!n)return;let r=J(n),i=e.get(r)??[];i.push(t),e.set(r,i)}),e},[Q]),Ce=(0,C.useMemo)(()=>{if(G===`week`){let e=X(K??W,u);return Array.from({length:7},(t,n)=>Y(e,n))}return be(W,u)},[G,K,W,u]),we=k===`auto`?pe?`modal`:`popover`:k,Ne=U?Se.get(J(U))??[]:[],Pe=g.includes(`month`),Fe=g.includes(`week`),Le=e=>{let t=q(e);ie(t),i?.(t)},Re=e=>{if(G===`week`){let t=Y(K??W,e*7);Le(t),ce(t),ue(t),fe(!1);return}Le(new Date(W.getFullYear(),W.getMonth()+e,1)),fe(!1),ue(null)},ze=e=>{oe(e),_?.(e)},Be=(e,t)=>{let n=q(e);ce(n),b?.(n,t)},$=()=>{ge.current&&=(window.clearTimeout(ge.current),null)},Ve=()=>{$(),ge.current=window.setTimeout(()=>{fe(!1)},180)},He=(e,t,n)=>{he.current=t,ue(e),Be(e,n),fe(!0)},Ue=(e,t,n)=>{$(),He(e,t,n),G===`month`&&e.getMonth()!==W.getMonth()&&Le(new Date(e.getFullYear(),e.getMonth(),1))},We=(e,t,n)=>{O!==`hover`||we!==`popover`||($(),He(e,t,n))},Ge=e=>{let t=Z.includes(e)?Z.filter(t=>t!==e):[...Z,e];le(t),L?.(t)},Ke=X(G===`week`?K??W:W,u);return(0,w.jsxs)(`div`,{className:n.t(`calendar board`,R&&`full-width`,ee),...te,children:[(0,w.jsxs)(`div`,{className:`calendar header`,children:[(0,w.jsxs)(S.t,{children:[(0,w.jsx)(s.t,{level:3,children:De(W,G,z,u)}),(0,w.jsx)(o.t,{size:`sm`,tone:`muted`,children:Oe(G,B)})]}),(0,w.jsxs)(S.t,{align:`end`,children:[(0,w.jsxs)(`div`,{className:`calendar actions`,children:[(0,w.jsx)(l.t,{type:`button`,size:`sm`,variant:`outlined`,color:`neutral`,onClick:()=>Re(-1),children:G===`week`?B.previousWeek:ne.previousMonth}),(0,w.jsx)(l.t,{type:`button`,size:`sm`,variant:`outlined`,color:`neutral`,onClick:()=>Re(1),children:G===`week`?B.nextWeek:ne.nextMonth})]}),(Pe||Fe)&&(0,w.jsxs)(`div`,{className:`calendar views`,children:[Pe&&(0,w.jsx)(l.t,{type:`button`,size:`sm`,variant:`outlined`,color:G===`month`?`primary`:`neutral`,active:G===`month`,onClick:()=>ze(`month`),children:B.monthView}),Fe&&(0,w.jsx)(l.t,{type:`button`,size:`sm`,variant:`outlined`,color:G===`week`?`primary`:`neutral`,active:G===`week`,onClick:()=>ze(`week`),children:B.weekView})]})]})]}),(0,w.jsx)(Ae,{filters:P,activeFilterIds:Z,onToggle:Ge}),(0,w.jsx)(`div`,{className:`calendar days`,children:Array.from({length:7},(e,t)=>Y(Ke,t)).map(e=>(0,w.jsx)(`div`,{className:`calendar day`,children:new Intl.DateTimeFormat(z,{weekday:`short`}).format(e)},J(e)))}),G===`week`?(0,w.jsx)(je,{days:Ce,eventsByDay:Se,selectedDate:K,activeDate:U,onDayInteract:Ue,onDayHover:We,onDayLeave:()=>{O===`hover`&&we===`popover`&&Ve()},dayBadge:T,renderDayCell:E}):(0,w.jsx)(`div`,{className:`calendar grid`,children:Ce.map(e=>{let t=J(e),n=Se.get(t)??[],r=T?.(e,n)??(n.length>0?(0,w.jsx)(d.t,{size:`sm`,children:n.length}):null),i=t===J(re),a=!!(K&&t===J(K)),o=e.getMonth()!==W.getMonth(),s=Te(n),c={date:e,events:n,badge:r,isToday:i,isSelected:a,isOutsideMonth:o};return(0,w.jsx)(Me,{date:e,events:n,badge:r,markers:s,isToday:i,isSelected:a||!!(U&&t===J(U)),isOutsideMonth:o,onClick:t=>Ue(e,t.currentTarget,n),onMouseEnter:t=>We(e,t.currentTarget,n),onMouseLeave:()=>{O===`hover`&&we===`popover`&&Ve()},children:E?E(e,c):void 0},t)})}),we===`popover`?(0,w.jsx)(Ie,{open:de&&!!U&&!!he.current,anchorRef:he,onClose:()=>fe(!1),onPointerEnter:()=>$(),onPointerLeave:()=>Ve(),date:U,events:Ne,locale:z,timelineStartHour:j,timelineEndHour:M,showTimeline:A,emptyStateText:N??B.emptyStateText,renderEventItem:D}):(0,w.jsx)(p.t,{open:de&&!!U,onClose:()=>fe(!1),title:U?xe(U,z):void 0,description:U?B.itemsCount(Ne.length):void 0,size:`lg`,children:(0,w.jsx)(ke,{date:U,events:Ne,locale:z,timelineStartHour:j,timelineEndHour:M,showTimeline:A,emptyStateText:N??B.emptyStateText,renderEventItem:D})})]})}var Re=[`primary`,`info`,`success`,`warning`,`error`,`news`,`neutral`,`dark`],ze={top:20,right:20,bottom:40,left:50},Be={top:20,right:20,bottom:55,left:65};function $(e){return Math.abs(e)>=1e6?(e/1e6).toFixed(1).replace(/\.0$/,``)+`M`:Math.abs(e)>=1e3?(e/1e3).toFixed(1).replace(/\.0$/,``)+`k`:Number.isInteger(e)?String(e):e.toFixed(1)}function Ve(e){return e}function He({x:e,y:t,width:n,height:r,horizontalLines:i,verticalLines:a}){return(0,w.jsxs)(`g`,{className:`chart-grid`,children:[i.map((t,r)=>(0,w.jsx)(`line`,{x1:e,y1:t,x2:e+n,y2:t,className:`chart-grid-line`},`h${r}`)),a?.map((e,n)=>(0,w.jsx)(`line`,{x1:e,y1:t,x2:e,y2:t+r,className:`chart-grid-line chart-grid-line-vertical`},`v${n}`))]})}function Ue({type:e,x:t,y:n,length:r,ticks:i,title:a}){let o=e===`x`;return(0,w.jsxs)(`g`,{className:`chart-axis chart-axis-${e}`,children:[(0,w.jsx)(`line`,{x1:t,y1:n,x2:o?t+r:t,y2:o?n:n-r,className:`chart-axis-line`}),i.map((e,r)=>(0,w.jsx)(`g`,{children:o?(0,w.jsx)(`text`,{x:e.position,y:n+16,textAnchor:`middle`,className:`chart-axis-label`,children:e.label}):(0,w.jsx)(`text`,{x:t-8,y:e.position,textAnchor:`end`,dominantBaseline:`middle`,className:`chart-axis-label`,children:e.label})},r)),a&&(o?(0,w.jsx)(`text`,{x:t+r/2,y:n+36,textAnchor:`middle`,className:`chart-axis-title`,children:a}):(0,w.jsx)(`text`,{x:t-40,y:n-r/2,textAnchor:`middle`,dominantBaseline:`middle`,transform:`rotate(-90, ${t-40}, ${n-r/2})`,className:`chart-axis-title`,children:a}))]})}function We({data:e,colors:t,innerWidth:n,innerHeight:r,padding:i,xAxis:a,yAxis:o,showGrid:s,showXAxis:c,showYAxis:l,curved:u,animated:d,valueFormatter:f=$,onTooltip:p,onDataClick:m}){let[h,g]=(0,C.useState)(null),_=n-i.left-i.right,v=r-i.top-i.bottom,{yMin:y,yMax:x,yTicks:S,xLabels:T,seriesPoints:E}=(0,C.useMemo)(()=>{let t=e.map(e=>e.data),[n,r]=b.l(t),i=o?.min??b.f(n),s=o?.max??b.d(r,n),c=b.c(i,s,o?.ticks??5),l=Math.max(...t.map(e=>e.length),1),u=a?.labels??Array.from({length:l},(e,t)=>String(t)),d=b.s([0,Math.max(l-1,1)],[0,_]),f=b.s([i,s],[v,0]);return{yMin:i,yMax:s,yTicks:c,xLabels:u,seriesPoints:t.map(e=>e.map((e,t)=>({x:d(t),y:f(e)})))}},[e,_,v,a,o]),D=b.s([y,x],[v,0]),O=b.s([0,Math.max(T.length-1,1)],[0,_]),k=(0,C.useCallback)(r=>{let a=r.currentTarget.closest(`svg`);if(!a)return;let o=a.getBoundingClientRect(),s=n/o.width,c=(r.clientX-o.left)*s-i.left,l=Math.round(c/_*Math.max(T.length-1,1)),u=Math.max(0,Math.min(l,T.length-1));g(u),p({label:T[u],items:e.map((e,n)=>({name:e.label,value:e.data[u]??0,color:e.color??t[n%t.length]})),x:r.clientX-o.left,y:r.clientY-o.top})},[e,t,T,_,i.left,n,p]),A=(0,C.useCallback)(()=>{g(null),p(null)},[p]),j=S.map(e=>i.top+D(e)),M=T.map((e,t)=>i.left+O(t)),N=S.map(e=>({position:i.top+D(e),label:(o?.formatter??f)(e)})),P=T.map((e,t)=>({position:i.left+O(t),label:e}));return(0,w.jsxs)(`g`,{children:[s&&(0,w.jsx)(He,{x:i.left,y:i.top,width:_,height:v,horizontalLines:j,verticalLines:M}),l&&(0,w.jsx)(Ue,{type:`y`,x:i.left,y:i.top+v,length:v,ticks:N,title:o?.title}),c&&(0,w.jsx)(Ue,{type:`x`,x:i.left,y:i.top+v,length:_,ticks:P,title:a?.title}),(0,w.jsxs)(`g`,{onMouseMove:k,onMouseLeave:A,children:[(0,w.jsx)(`rect`,{x:i.left,y:i.top,width:_,height:v,fill:`transparent`}),E.map((n,r)=>{let a=e[r].color??t[r%t.length],o=u?b.r(n.map(e=>({x:e.x+i.left,y:e.y+i.top}))):b.i(n.map(e=>({x:e.x+i.left,y:e.y+i.top})));return(0,w.jsxs)(`g`,{children:[(0,w.jsx)(`path`,{className:`chart-line ${a} ${d?`animated`:``}`,d:o}),n.map((t,n)=>(0,w.jsx)(`circle`,{className:`chart-dot ${a} ${h===n?`active`:``}`,cx:t.x+i.left,cy:t.y+i.top,r:h===n?5:3,onClick:()=>m?.(r,n,e[r].data[n]),style:{cursor:m?`pointer`:void 0}},n))]},r)}),h!==null&&(0,w.jsx)(`line`,{className:`chart-crosshair`,x1:i.left+O(h),y1:i.top,x2:i.left+O(h),y2:i.top+v})]})]})}function Ge({data:e,colors:t,innerWidth:n,innerHeight:r,padding:i,xAxis:a,yAxis:o,showGrid:s,showXAxis:c,showYAxis:l,stacked:u,animated:d,valueFormatter:f=$,onTooltip:p,onDataClick:m}){let[h,g]=(0,C.useState)(null),_=n-i.left-i.right,v=r-i.top-i.bottom,{yMin:y,yMax:x,yTicks:S,xLabels:T,maxLen:E}=(0,C.useMemo)(()=>{let t=e.map(e=>e.data),n=Math.max(...t.map(e=>e.length),1),r,i;u?[r,i]=b.u(t):[r,i]=b.l(t);let s=o?.min??b.f(r),c=o?.max??b.d(i,r);return{yMin:s,yMax:c,yTicks:b.c(s,c,o?.ticks??5),xLabels:a?.labels??Array.from({length:n},(e,t)=>String(t)),maxLen:n}},[e,a,o,u]),D=b.s([y,x],[v,0]),O=_/E,k=Math.max(O*.1,2),A=e.length,j=(0,C.useCallback)((n,r,i)=>{g({di:n,pi:r});let a=i.currentTarget.closest(`svg`);if(!a)return;let o=a.getBoundingClientRect();p({label:T[r],items:u?e.map((e,n)=>({name:e.label,value:e.data[r]??0,color:e.color??t[n%t.length]})):[{name:e[n].label,value:e[n].data[r],color:e[n].color??t[n%t.length]}],x:i.clientX-o.left,y:i.clientY-o.top})},[e,t,T,u,p]),M=(0,C.useCallback)(()=>{g(null),p(null)},[p]),N=S.map(e=>i.top+D(e)),P=T.map((e,t)=>({position:i.left+O*t+O/2,label:e})),F=S.map(e=>({position:i.top+D(e),label:(o?.formatter??f)(e)})),I=D(0);return(0,w.jsxs)(`g`,{children:[s&&(0,w.jsx)(He,{x:i.left,y:i.top,width:_,height:v,horizontalLines:N}),l&&(0,w.jsx)(Ue,{type:`y`,x:i.left,y:i.top+v,length:v,ticks:F,title:o?.title}),c&&(0,w.jsx)(Ue,{type:`x`,x:i.left,y:i.top+v,length:_,ticks:P,title:a?.title}),(0,w.jsx)(`g`,{onMouseLeave:M,children:u?T.map((n,r)=>{let a=I,o=O-k*2,s=i.left+O*r+k;return(0,w.jsx)(`g`,{children:e.map((n,c)=>{let l=n.data[r]??0,u=I-D(l),f=a-u;a=f;let p=n.color??t[c%t.length],g=h?.di===c&&h?.pi===r;return(0,w.jsx)(`rect`,{className:`chart-bar ${p} ${d?`animated`:``} ${g?`active`:``}`,x:s,y:i.top+f,width:Math.max(o,1),height:Math.max(u,0),rx:c===e.length-1?3:0,onMouseEnter:e=>j(c,r,e),onClick:()=>m?.(c,r,l),style:{cursor:m?`pointer`:void 0}},c)})},r)}):e.map((e,n)=>{let r=(O-k*2)/A;return(0,w.jsx)(`g`,{children:e.data.map((a,o)=>{let s=I-D(a),c=i.left+O*o+k+r*n,l=Math.min(I,D(a)),u=e.color??t[n%t.length],f=h?.di===n&&h?.pi===o;return(0,w.jsx)(`rect`,{className:`chart-bar ${u} ${d?`animated`:``} ${f?`active`:``}`,x:c,y:i.top+l,width:Math.max(r,1),height:Math.max(Math.abs(s),0),rx:3,onMouseEnter:e=>j(n,o,e),onClick:()=>m?.(n,o,a),style:{cursor:m?`pointer`:void 0}},o)})},n)})})]})}function Ke({data:e,colors:t,innerWidth:n,innerHeight:r,padding:i,xAxis:a,yAxis:o,showGrid:s,showXAxis:c,showYAxis:l,curved:u,stacked:d,animated:f,valueFormatter:p=$,onTooltip:m,onDataClick:h}){let[g,_]=(0,C.useState)(null),v=n-i.left-i.right,y=r-i.top-i.bottom,{yMin:x,yMax:S,yTicks:T,xLabels:E,seriesPoints:D,stackedPaths:O}=(0,C.useMemo)(()=>{let t=e.map(e=>e.data),n=Math.max(...t.map(e=>e.length),1),r,s;d?[r,s]=b.u(t):[r,s]=b.l(t);let c=o?.min??b.f(r),l=o?.max??b.d(s,r),f=b.c(c,l,o?.ticks??5),p=a?.labels??Array.from({length:n},(e,t)=>String(t)),m=b.s([0,Math.max(n-1,1)],[0,v]),h=b.s([c,l],[y,0]);if(d){let e=[];for(let r=0;r<t.length;r++){e[r]=[];for(let i=0;i<n;i++)e[r][i]=(t[r][i]??0)+(r>0?e[r-1][i]:0)}return{yMin:c,yMax:l,yTicks:f,xLabels:p,seriesPoints:[],stackedPaths:e.map((t,n)=>{let r=t.map((e,t)=>({x:i.left+m(t),y:i.top+h(e)}));return{area:b.o(r,n===0?t.map((e,t)=>({x:i.left+m(t),y:i.top+h(0)})):e[n-1].map((e,t)=>({x:i.left+m(t),y:i.top+h(e)})),u),line:u?b.r(r):b.i(r),topPts:r}})}}return{yMin:c,yMax:l,yTicks:f,xLabels:p,seriesPoints:t.map(e=>e.map((e,t)=>({x:i.left+m(t),y:i.top+h(e)}))),stackedPaths:void 0}},[e,v,y,a,o,d,u,i]),k=b.s([x,S],[y,0]),A=b.s([0,Math.max(E.length-1,1)],[0,v]),j=(0,C.useCallback)(r=>{let a=r.currentTarget.closest(`svg`);if(!a)return;let o=a.getBoundingClientRect(),s=n/o.width,c=(r.clientX-o.left)*s-i.left,l=Math.round(c/v*Math.max(E.length-1,1)),u=Math.max(0,Math.min(l,E.length-1));_(u),m({label:E[u],items:e.map((e,n)=>({name:e.label,value:e.data[u]??0,color:e.color??t[n%t.length]})),x:r.clientX-o.left,y:r.clientY-o.top})},[e,t,E,v,i.left,n,m]),M=(0,C.useCallback)(()=>{_(null),m(null)},[m]),N=T.map(e=>i.top+k(e)),P=T.map(e=>({position:i.top+k(e),label:(o?.formatter??p)(e)})),F=E.map((e,t)=>({position:i.left+A(t),label:e}));return(0,w.jsxs)(`g`,{children:[s&&(0,w.jsx)(He,{x:i.left,y:i.top,width:v,height:y,horizontalLines:N}),l&&(0,w.jsx)(Ue,{type:`y`,x:i.left,y:i.top+y,length:y,ticks:P,title:o?.title}),c&&(0,w.jsx)(Ue,{type:`x`,x:i.left,y:i.top+y,length:v,ticks:F,title:a?.title}),(0,w.jsxs)(`g`,{onMouseMove:j,onMouseLeave:M,children:[(0,w.jsx)(`rect`,{x:i.left,y:i.top,width:v,height:y,fill:`transparent`}),d&&O?O.map((n,r)=>{let i=e[r].color??t[r%t.length];return(0,w.jsxs)(`g`,{children:[(0,w.jsx)(`path`,{className:`chart-area-fill ${i}`,d:n.area}),(0,w.jsx)(`path`,{className:`chart-line ${i} ${f?`animated`:``}`,d:n.line})]},r)}):D.map((n,r)=>{let a=e[r].color??t[r%t.length],o=u?b.r(n):b.i(n),s=b.n(n,i.top+y,u);return(0,w.jsxs)(`g`,{children:[(0,w.jsx)(`path`,{className:`chart-area-fill ${a}`,d:s}),(0,w.jsx)(`path`,{className:`chart-line ${a} ${f?`animated`:``}`,d:o}),n.map((t,n)=>(0,w.jsx)(`circle`,{className:`chart-dot ${a} ${g===n?`active`:``}`,cx:t.x,cy:t.y,r:g===n?5:3,onClick:()=>h?.(r,n,e[r].data[n]),style:{cursor:h?`pointer`:void 0}},n))]},r)}),g!==null&&(0,w.jsx)(`line`,{className:`chart-crosshair`,x1:i.left+A(g),y1:i.top,x2:i.left+A(g),y2:i.top+y})]})]})}function qe({data:e,colors:t,innerWidth:n,innerHeight:r,donut:i,donutWidth:a,animated:o,valueFormatter:s=$,xAxis:c,onTooltip:l,onDataClick:u}){let[d,f]=(0,C.useState)(null),p=n/2,m=r/2,h=Math.min(p,m)-10,g=i?h-(a??h*.4):0,_=(0,C.useMemo)(()=>{let n=e.length===1?e[0].data:e.map(e=>e.data[0]??0),r=e.length===1?c?.labels??n.map((e,t)=>`Segment ${t+1}`):e.map(e=>e.label),i=n.reduce((e,t)=>e+Math.max(t,0),0)||1,a=-Math.PI/2;return n.map((n,o)=>{let s=Math.max(n,0)/i*Math.PI*2,c={value:n,label:r[o]??`Segment ${o+1}`,color:(e.length===1?void 0:e[o].color)??t[o%t.length],startAngle:a,endAngle:a+s,percentage:Math.max(n,0)/i*100};return a+=s,c})},[e,t,c]),v=(0,C.useCallback)((e,t)=>{f(e);let n=t.currentTarget.closest(`svg`);if(!n)return;let r=n.getBoundingClientRect();l({label:_[e].label,items:[{name:_[e].label,value:_[e].value,color:_[e].color}],x:t.clientX-r.left,y:t.clientY-r.top})},[_,l]),y=(0,C.useCallback)(()=>{f(null),l(null)},[l]);return(0,w.jsxs)(`g`,{children:[_.map((e,t)=>{let n=d===t,r=b.a(p,m,n?h+4:h,g,e.startAngle,e.endAngle);return(0,w.jsx)(`path`,{className:`chart-pie-segment ${e.color} ${o?`animated`:``} ${n?`active`:``}`,d:r,onMouseEnter:e=>v(t,e),onMouseLeave:y,onMouseMove:t=>{let n=t.currentTarget.closest(`svg`);if(!n)return;let r=n.getBoundingClientRect();l({label:e.label,items:[{name:e.label,value:e.value,color:e.color}],x:t.clientX-r.left,y:t.clientY-r.top})},onClick:()=>u?.(0,t,e.value),style:{cursor:u?`pointer`:void 0}},t)}),i&&(0,w.jsx)(`text`,{x:p,y:m,textAnchor:`middle`,dominantBaseline:`middle`,className:`chart-pie-center`,children:s(d===null?_.reduce((e,t)=>e+t.value,0):_[d].value)})]})}var Je=[`primary`,`info`,`success`,`warning`,`error`,`news`,`neutral`,`dark`,`light`];function Ye(){return(0,w.jsxs)(`defs`,{children:[Je.map(e=>(0,w.jsxs)(`linearGradient`,{id:`chart-bar-grad-${e}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,w.jsx)(`stop`,{offset:`0%`,className:`chart-grad-stop-start ${e}`}),(0,w.jsx)(`stop`,{offset:`100%`,className:`chart-grad-stop-end ${e}`})]},`bar-${e}`)),Je.map(e=>(0,w.jsxs)(`linearGradient`,{id:`chart-pie-grad-${e}`,x1:`0.3`,y1:`0`,x2:`0.7`,y2:`1`,children:[(0,w.jsx)(`stop`,{offset:`0%`,className:`chart-grad-stop-start ${e}`}),(0,w.jsx)(`stop`,{offset:`100%`,className:`chart-grad-stop-end ${e}`})]},`pie-${e}`)),Je.map(e=>(0,w.jsxs)(`linearGradient`,{id:`chart-area-grad-${e}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,w.jsx)(`stop`,{offset:`0%`,className:`chart-grad-area-start ${e}`}),(0,w.jsx)(`stop`,{offset:`100%`,className:`chart-grad-area-end ${e}`})]},`area-${e}`))]})}function Xe({data:e,valueFormatter:t}){return e?(0,w.jsxs)(`div`,{className:`chart-tooltip`,style:{left:e.x,top:e.y},children:[(0,w.jsx)(`div`,{className:`chart-tooltip-label`,children:e.label}),e.items.map((e,n)=>(0,w.jsxs)(`div`,{className:`chart-tooltip-row`,children:[(0,w.jsx)(`span`,{className:`chart-tooltip-dot ${e.color}`}),(0,w.jsx)(`span`,{className:`chart-tooltip-name`,children:e.name}),(0,w.jsx)(`span`,{className:`chart-tooltip-value`,children:t(e.value)})]},n))]}):null}function Ze({items:e}){return e.length<=1?null:(0,w.jsx)(`div`,{className:`chart-legend`,children:e.map((e,t)=>(0,w.jsxs)(`div`,{className:`chart-legend-item`,children:[(0,w.jsx)(`span`,{className:`chart-legend-dot ${e.color}`}),(0,w.jsx)(`span`,{className:`chart-legend-label`,children:e.label})]},t))})}function Qe({type:e,data:t,width:r=`100%`,height:i=300,aspectRatio:a,xAxis:o,yAxis:s,showGrid:c=!0,showXAxis:l=!0,showYAxis:u=!0,showLegend:d=!0,showTooltip:f=!0,animated:p=!0,stacked:m=!1,curved:h=!1,donut:g=!1,donutWidth:_,valueFormatter:v=$,labelFormatter:y=Ve,onDataClick:b,className:x,style:S,...T}){let E=(0,C.useRef)(null),[D,O]=(0,C.useState)(null),k=Re,A=o?.title||s?.title?Be:ze,j=a?void 0:typeof i==`number`?i:300,M=j??300,N=(0,C.useCallback)(e=>{f&&O(e)},[f]),P=(0,C.useMemo)(()=>e===`pie`&&t.length===1?(o?.labels??t[0].data.map((e,t)=>`Segment ${t+1}`)).map((e,t)=>({label:e,color:k[t%k.length]})):t.map((e,t)=>({label:e.label,color:e.color??k[t%k.length]})),[t,k,e,o]),F={data:t,colors:k,innerWidth:600,innerHeight:M,padding:A,xAxis:o,yAxis:s,showGrid:c,showXAxis:l,showYAxis:u,animated:p,valueFormatter:v,onTooltip:N,onDataClick:b};return(0,w.jsxs)(`div`,{ref:E,className:n.t(`chart`,x),style:{width:r,height:a?void 0:j,aspectRatio:a?String(a):void 0,...S},...T,children:[(0,w.jsxs)(`svg`,{viewBox:`0 0 600 ${M}`,preserveAspectRatio:`xMidYMid meet`,className:`chart-svg`,children:[(0,w.jsx)(Ye,{}),e===`line`&&(0,w.jsx)(We,{...F,curved:h}),e===`bar`&&(0,w.jsx)(Ge,{...F,stacked:m}),e===`area`&&(0,w.jsx)(Ke,{...F,curved:h,stacked:m}),e===`pie`&&(0,w.jsx)(qe,{...F,donut:g,donutWidth:_})]}),f&&(0,w.jsx)(Xe,{data:D,valueFormatter:v}),d&&(0,w.jsx)(Ze,{items:P})]})}function $e(e){return(0,w.jsx)(Qe,{type:`line`,...e})}function et(e){return(0,w.jsx)(Qe,{type:`bar`,...e})}function tt(e){return(0,w.jsx)(Qe,{type:`area`,...e})}function nt(e){return(0,w.jsx)(Qe,{type:`pie`,...e})}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return j}});
|
|
2
|
-
//# sourceMappingURL=data-Bw9FSZ80.cjs.map
|