@banzamel/mineralui 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MAvatar-BHASnoyu.js → MAvatar-BcayQCnp.js} +2 -2
- package/dist/{MAvatar-BHASnoyu.js.map → MAvatar-BcayQCnp.js.map} +1 -1
- package/dist/{MAvatar-CV3xJOmx.cjs → MAvatar-BgevCYi3.cjs} +2 -2
- package/dist/{MAvatar-CV3xJOmx.cjs.map → MAvatar-BgevCYi3.cjs.map} +1 -1
- package/dist/MButton-8UCydOik.cjs +2 -0
- package/dist/MButton-8UCydOik.cjs.map +1 -0
- package/dist/{MButton-y9qXhhGt.js → MButton-DZLLrtQb.js} +38 -36
- package/dist/MButton-DZLLrtQb.js.map +1 -0
- package/dist/{MCheckbox-B-nT2OBE.js → MCheckbox-B7SpcD4H.js} +1 -1
- package/dist/{MCheckbox-B-nT2OBE.js.map → MCheckbox-B7SpcD4H.js.map} +1 -1
- package/dist/{MCheckbox-CdDWGVp3.cjs → MCheckbox-Dn3p_9-1.cjs} +2 -2
- package/dist/{MCheckbox-CdDWGVp3.cjs.map → MCheckbox-Dn3p_9-1.cjs.map} +1 -1
- package/dist/{MCookieBootstrap-3-wyz3Dk.cjs → MCookieBootstrap-BUqtJO3m.cjs} +1 -1
- package/dist/{MCookieBootstrap-3-wyz3Dk.cjs.map → MCookieBootstrap-BUqtJO3m.cjs.map} +1 -1
- package/dist/{MCookieBootstrap-CGvYxIK8.js → MCookieBootstrap-Btt49Iuq.js} +1 -1
- package/dist/{MCookieBootstrap-CGvYxIK8.js.map → MCookieBootstrap-Btt49Iuq.js.map} +1 -1
- package/dist/{MDataTable-C3v15no3.cjs → MDataTable-95_Mb6jE.cjs} +2 -2
- package/dist/MDataTable-95_Mb6jE.cjs.map +1 -0
- package/dist/{MDataTable-C_XiTGTF.js → MDataTable-DxDS5auV.js} +5 -5
- package/dist/MDataTable-DxDS5auV.js.map +1 -0
- package/dist/{MDrawer-W2WQs1sM.js → MDrawer-CXNHYwPO.js} +2 -2
- package/dist/{MDrawer-W2WQs1sM.js.map → MDrawer-CXNHYwPO.js.map} +1 -1
- package/dist/{MDrawer-BtA_Xgj0.cjs → MDrawer-DzqtHVeA.cjs} +2 -2
- package/dist/{MDrawer-BtA_Xgj0.cjs.map → MDrawer-DzqtHVeA.cjs.map} +1 -1
- package/dist/{MDropdownMenu-BWgf92rJ.js → MDropdownMenu-CeiC1tz3.js} +1 -1
- package/dist/{MDropdownMenu-BWgf92rJ.js.map → MDropdownMenu-CeiC1tz3.js.map} +1 -1
- package/dist/{MDropdownMenu-mGE19gCi.cjs → MDropdownMenu-c9U3sEcl.cjs} +2 -2
- package/dist/{MDropdownMenu-mGE19gCi.cjs.map → MDropdownMenu-c9U3sEcl.cjs.map} +1 -1
- package/dist/{MGalleryIllustration-D2agVuZM.cjs → MGalleryIllustration-Dglx_Ckc.cjs} +2 -2
- package/dist/{MGalleryIllustration-D2agVuZM.cjs.map → MGalleryIllustration-Dglx_Ckc.cjs.map} +1 -1
- package/dist/MGrid-C4kPZDSa.cjs +2 -0
- package/dist/MGrid-C4kPZDSa.cjs.map +1 -0
- package/dist/MGrid-DR0fHItF.js +182 -0
- package/dist/MGrid-DR0fHItF.js.map +1 -0
- package/dist/{MHeading-BQCe_JhE.cjs → MHeading-CKe5lcM_.cjs} +2 -2
- package/dist/{MHeading-BQCe_JhE.cjs.map → MHeading-CKe5lcM_.cjs.map} +1 -1
- package/dist/{MI18nProvider-CqAwaswx.cjs → MI18nProvider-DOh5xexz.cjs} +2 -2
- package/dist/{MI18nProvider-CqAwaswx.cjs.map → MI18nProvider-DOh5xexz.cjs.map} +1 -1
- package/dist/MImage-BZ6SrSao.cjs +2 -0
- package/dist/MImage-BZ6SrSao.cjs.map +1 -0
- package/dist/{MImage-I0LPhcqF.js → MImage-Btx_7g2Z.js} +5 -6
- package/dist/MImage-Btx_7g2Z.js.map +1 -0
- package/dist/{MInput-CNSvoRiu.js → MInput-7i0Dy1t4.js} +2 -2
- package/dist/{MInput-CNSvoRiu.js.map → MInput-7i0Dy1t4.js.map} +1 -1
- package/dist/{MInput-5-alcVsu.cjs → MInput-D_zaoWwX.cjs} +2 -2
- package/dist/{MInput-5-alcVsu.cjs.map → MInput-D_zaoWwX.cjs.map} +1 -1
- package/dist/MInputExpDate-DWWwjMYK.cjs +2 -0
- package/dist/MInputExpDate-DWWwjMYK.cjs.map +1 -0
- package/dist/{MInputCVC-BgougfgN.js → MInputExpDate-DhO5zN7L.js} +97 -97
- package/dist/MInputExpDate-DhO5zN7L.js.map +1 -0
- package/dist/{MInputSearch-BwR-BPh2.js → MInputSearch-CmzHPnmC.js} +2 -2
- package/dist/{MInputSearch-BwR-BPh2.js.map → MInputSearch-CmzHPnmC.js.map} +1 -1
- package/dist/{MInputSearch-X9yNPuTf.cjs → MInputSearch-DpHSVpmL.cjs} +2 -2
- package/dist/{MInputSearch-X9yNPuTf.cjs.map → MInputSearch-DpHSVpmL.cjs.map} +1 -1
- package/dist/MKbd-DWTS3iS5.cjs +2 -0
- package/dist/MKbd-DWTS3iS5.cjs.map +1 -0
- package/dist/MKbd-v6-tJ9sP.js +14 -0
- package/dist/MKbd-v6-tJ9sP.js.map +1 -0
- package/dist/{MLink-BakLkpKp.cjs → MLink-B3ImjkJV.cjs} +2 -2
- package/dist/{MLink-BakLkpKp.cjs.map → MLink-B3ImjkJV.cjs.map} +1 -1
- package/dist/{MModal-BYuPCSLG.cjs → MModal-CP0e31pv.cjs} +2 -2
- package/dist/{MModal-BYuPCSLG.cjs.map → MModal-CP0e31pv.cjs.map} +1 -1
- package/dist/{MModal-K73juXhN.js → MModal-DGmeQlWo.js} +2 -2
- package/dist/{MModal-K73juXhN.js.map → MModal-DGmeQlWo.js.map} +1 -1
- package/dist/{MPagination-B8BcGks_.cjs → MPagination-CS62B9kZ.cjs} +2 -2
- package/dist/{MPagination-B8BcGks_.cjs.map → MPagination-CS62B9kZ.cjs.map} +1 -1
- package/dist/{MPagination-BdBpF3Px.js → MPagination-Dr110are.js} +2 -2
- package/dist/{MPagination-BdBpF3Px.js.map → MPagination-Dr110are.js.map} +1 -1
- package/dist/{MPopover-DfEiRuM9.cjs → MPopover-CxxaY9kr.cjs} +2 -2
- package/dist/{MPopover-DfEiRuM9.cjs.map → MPopover-CxxaY9kr.cjs.map} +1 -1
- package/dist/{MPortal-CuBXhhl_.cjs → MPortal-BIxPtFYd.cjs} +2 -2
- package/dist/{MPortal-CuBXhhl_.cjs.map → MPortal-BIxPtFYd.cjs.map} +1 -1
- package/dist/{MQrCode-CCtTkkv9.js → MQrCode-6ANDcExA.js} +150 -100
- package/dist/MQrCode-6ANDcExA.js.map +1 -0
- package/dist/MQrCode-B0-Np-N3.cjs +2 -0
- package/dist/MQrCode-B0-Np-N3.cjs.map +1 -0
- package/dist/MSimpleGrid-Bojj4xKH.js +18 -0
- package/dist/MSimpleGrid-Bojj4xKH.js.map +1 -0
- package/dist/MSimpleGrid-CyLf-9R2.cjs +2 -0
- package/dist/MSimpleGrid-CyLf-9R2.cjs.map +1 -0
- package/dist/MSkeleton-BdwhPx-k.cjs +2 -0
- package/dist/MSkeleton-BdwhPx-k.cjs.map +1 -0
- package/dist/MSkeleton-BvXgnYs_.js +136 -0
- package/dist/MSkeleton-BvXgnYs_.js.map +1 -0
- package/dist/{MSlider-5141rKeH.js → MSlider-CqrusKJQ.js} +1 -1
- package/dist/{MSlider-5141rKeH.js.map → MSlider-CqrusKJQ.js.map} +1 -1
- package/dist/{MSlider-fhvfj0ft.cjs → MSlider-qCGmD4UA.cjs} +2 -2
- package/dist/{MSlider-fhvfj0ft.cjs.map → MSlider-qCGmD4UA.cjs.map} +1 -1
- package/dist/MStack-ByFYGSsy.cjs +2 -0
- package/dist/MStack-ByFYGSsy.cjs.map +1 -0
- package/dist/MStack-DFIc3S4_.js +70 -0
- package/dist/MStack-DFIc3S4_.js.map +1 -0
- package/dist/{MSubText-C1unzaCF.cjs → MSubText-1ilKSz8e.cjs} +2 -2
- package/dist/{MSubText-C1unzaCF.cjs.map → MSubText-1ilKSz8e.cjs.map} +1 -1
- package/dist/MSurface-CmVIQC1A.js +43 -0
- package/dist/MSurface-CmVIQC1A.js.map +1 -0
- package/dist/MSurface-CpAuwpHv.cjs +2 -0
- package/dist/MSurface-CpAuwpHv.cjs.map +1 -0
- package/dist/{MTabs-Dg31d-_D.js → MTabs-BQZ--mMq.js} +1 -1
- package/dist/{MTabs-Dg31d-_D.js.map → MTabs-BQZ--mMq.js.map} +1 -1
- package/dist/{MTabs-DuLqttVp.cjs → MTabs-DeUn6bIp.cjs} +2 -2
- package/dist/{MTabs-DuLqttVp.cjs.map → MTabs-DeUn6bIp.cjs.map} +1 -1
- package/dist/{MTag-CH5nMbm7.js → MTag-C4SUJly2.js} +2 -2
- package/dist/{MTag-CH5nMbm7.js.map → MTag-C4SUJly2.js.map} +1 -1
- package/dist/{MTag-CeLhZhqT.cjs → MTag-DwQ-j1sV.cjs} +2 -2
- package/dist/{MTag-CeLhZhqT.cjs.map → MTag-DwQ-j1sV.cjs.map} +1 -1
- package/dist/{MText-BbEkc0Ik.cjs → MText-D0fI_D_Q.cjs} +2 -2
- package/dist/{MText-BbEkc0Ik.cjs.map → MText-D0fI_D_Q.cjs.map} +1 -1
- package/dist/{MTimeAgo-Dd0JQRGj.cjs → MTimeAgo-DI3DF7bD.cjs} +2 -2
- package/dist/{MTimeAgo-Dd0JQRGj.cjs.map → MTimeAgo-DI3DF7bD.cjs.map} +1 -1
- package/dist/{MTimeAgo-C4p80NvI.js → MTimeAgo-Db8gOade.js} +2 -2
- package/dist/{MTimeAgo-C4p80NvI.js.map → MTimeAgo-Db8gOade.js.map} +1 -1
- package/dist/{MToggle-Dt1Ctr5e.js → MToggle-B6emKoKq.js} +1 -1
- package/dist/{MToggle-Dt1Ctr5e.js.map → MToggle-B6emKoKq.js.map} +1 -1
- package/dist/{MToggle-BZSwJw_z.cjs → MToggle-BVJm5Bdk.cjs} +2 -2
- package/dist/{MToggle-BZSwJw_z.cjs.map → MToggle-BVJm5Bdk.cjs.map} +1 -1
- package/dist/{MTooltip-BE0GcseJ.cjs → MTooltip-Dq2vYf3G.cjs} +2 -2
- package/dist/{MTooltip-BE0GcseJ.cjs.map → MTooltip-Dq2vYf3G.cjs.map} +1 -1
- package/dist/{MTooltip-C43aUKMP.js → MTooltip-jSf4VBtB.js} +1 -1
- package/dist/{MTooltip-C43aUKMP.js.map → MTooltip-jSf4VBtB.js.map} +1 -1
- package/dist/MTreeView-AqH8XMPz.js +516 -0
- package/dist/MTreeView-AqH8XMPz.js.map +1 -0
- package/dist/MTreeView-Dp9qbqQh.cjs +2 -0
- package/dist/MTreeView-Dp9qbqQh.cjs.map +1 -0
- package/dist/{arduino-C1gw-z1N.cjs → arduino-Bm509TuR.cjs} +1 -1
- package/dist/{arduino-C1gw-z1N.cjs.map → arduino-Bm509TuR.cjs.map} +1 -1
- package/dist/{arduino-5iMB2x4D.js → arduino-C5s1z3P1.js} +1 -1
- package/dist/{arduino-5iMB2x4D.js.map → arduino-C5s1z3P1.js.map} +1 -1
- package/dist/{bash-wzZkpJC-.cjs → bash-CyBbinAU.cjs} +1 -1
- package/dist/{bash-wzZkpJC-.cjs.map → bash-CyBbinAU.cjs.map} +1 -1
- package/dist/{bash-CNKpaaFe.js → bash-RIFbRcCe.js} +1 -1
- package/dist/{bash-CNKpaaFe.js.map → bash-RIFbRcCe.js.map} +1 -1
- package/dist/{c-BKjXPJPn.js → c-DAywn1DE.js} +1 -1
- package/dist/{c-BKjXPJPn.js.map → c-DAywn1DE.js.map} +1 -1
- package/dist/{c-BSPjDa0P.cjs → c-DGOxo0dj.cjs} +1 -1
- package/dist/{c-BSPjDa0P.cjs.map → c-DGOxo0dj.cjs.map} +1 -1
- package/dist/cards-B9g6Lf1n.cjs +2 -0
- package/dist/cards-B9g6Lf1n.cjs.map +1 -0
- package/dist/cards-D7oHIHmU.js +1535 -0
- package/dist/cards-D7oHIHmU.js.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +3 -3
- package/dist/components/cards/MCard/MCard.d.ts +1 -1
- package/dist/components/cards/MCard/MCard.types.d.ts +2 -5
- package/dist/components/cards/MCardActionArea/MCardActionArea.d.ts +2 -0
- package/dist/components/cards/MCardActionArea/MCardActionArea.types.d.ts +7 -0
- package/dist/components/cards/MCardActionArea/index.d.ts +2 -0
- package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.d.ts +2 -0
- package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.types.d.ts +41 -0
- package/dist/components/cards/MCardDaySchedule/index.d.ts +2 -0
- package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.d.ts +2 -0
- package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.types.d.ts +31 -0
- package/dist/components/cards/MCardDocumentTree/index.d.ts +2 -0
- package/dist/components/cards/MCardFinance/MCardFinance.d.ts +1 -1
- package/dist/components/cards/MCardFinance/MCardFinance.types.d.ts +2 -1
- package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
- package/dist/components/cards/MCardGrid/MCardGrid.types.d.ts +2 -0
- package/dist/components/cards/MCardPayment/MCardPayment.d.ts +1 -1
- package/dist/components/cards/MCardPayment/MCardPayment.types.d.ts +2 -1
- package/dist/components/cards/MCardTile/MCardTile.d.ts +1 -1
- package/dist/components/cards/MCardTile/MCardTile.types.d.ts +2 -4
- package/dist/components/cards/MCardWidget/MCardWidget.d.ts +1 -1
- package/dist/components/cards/MCardWidget/MCardWidget.types.d.ts +2 -1
- package/dist/components/cards/MStatCard/MStatCard.d.ts +3 -0
- package/dist/components/cards/MStatCard/MStatCard.types.d.ts +16 -0
- package/dist/components/cards/MStatCard/index.d.ts +2 -0
- package/dist/components/cards/index.d.ts +10 -0
- package/dist/components/cards/shared/MCardAction.types.d.ts +12 -0
- package/dist/components/cards/shared/MCardAction.utils.d.ts +16 -0
- package/dist/components/cards/shared/MCardColor.utils.d.ts +3 -0
- package/dist/components/cards/shared/index.d.ts +3 -0
- package/dist/components/controls/MButton/MButton.types.d.ts +2 -0
- package/dist/components/controls/MQuickActions/MQuickActions.d.ts +2 -0
- package/dist/components/controls/MQuickActions/MQuickActions.types.d.ts +33 -0
- package/dist/components/controls/MQuickActions/index.d.ts +2 -0
- package/dist/components/controls/index.d.ts +2 -0
- package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
- package/dist/components/data/MTreeView/MTreeView.types.d.ts +2 -0
- package/dist/components/display/MDetailList/MDetailList.d.ts +2 -0
- package/dist/components/display/MDetailList/MDetailList.types.d.ts +20 -0
- package/dist/components/display/MDetailList/index.d.ts +2 -0
- package/dist/components/display/index.d.ts +2 -0
- package/dist/components/layout/MAppMenu/MAppMenu.d.ts +2 -0
- package/dist/components/layout/MAppMenu/MAppMenu.types.d.ts +63 -0
- package/dist/components/layout/MAppMenu/index.d.ts +2 -0
- package/dist/components/layout/MInline/MInline.d.ts +1 -1
- package/dist/components/layout/MInline/MInline.types.d.ts +1 -1
- package/dist/components/layout/MSidebar/MSidebar.d.ts +1 -1
- package/dist/components/layout/MSidebar/MSidebar.types.d.ts +7 -0
- package/dist/components/layout/MStatGrid/MStatGrid.d.ts +2 -0
- package/dist/components/layout/MStatGrid/MStatGrid.types.d.ts +9 -0
- package/dist/components/layout/MStatGrid/index.d.ts +2 -0
- package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
- package/dist/components/layout/MSurface/MSurface.types.d.ts +6 -1
- package/dist/components/layout/index.d.ts +6 -0
- package/dist/components/media/MGallery/MGallery.types.d.ts +5 -0
- package/dist/components/overlays/MCommandPalette/MCommandPalette.d.ts +2 -0
- package/dist/components/overlays/MCommandPalette/MCommandPalette.types.d.ts +35 -0
- package/dist/components/overlays/MCommandPalette/index.d.ts +2 -0
- package/dist/components/overlays/index.d.ts +2 -0
- package/dist/components/typography/MHeading/MHeading.d.ts +3 -3
- package/dist/{controls-DCtMOoQe.js → controls-BczTk73I.js} +141 -100
- package/dist/controls-BczTk73I.js.map +1 -0
- package/dist/controls-BfV0vxeJ.cjs +2 -0
- package/dist/controls-BfV0vxeJ.cjs.map +1 -0
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +6 -6
- package/dist/cookie-consent-bootstrap.cjs +1 -1
- package/dist/cookie-consent-bootstrap.js +1 -1
- package/dist/{core-B8VC-Umz.js → core-BUYr52VU.js} +1 -1
- package/dist/{core-B8VC-Umz.js.map → core-BUYr52VU.js.map} +1 -1
- package/dist/{core-w629c4ND.cjs → core-DAox0BHy.cjs} +1 -1
- package/dist/{core-w629c4ND.cjs.map → core-DAox0BHy.cjs.map} +1 -1
- package/dist/{cpp-LIcuHkFj.cjs → cpp-D-FtdQo9.cjs} +1 -1
- package/dist/{cpp-LIcuHkFj.cjs.map → cpp-D-FtdQo9.cjs.map} +1 -1
- package/dist/{cpp-bNWmO1Au.js → cpp-Y9cHXDal.js} +1 -1
- package/dist/{cpp-bNWmO1Au.js.map → cpp-Y9cHXDal.js.map} +1 -1
- package/dist/{css-h_5aJA6y.js → css-C__ffGj6.js} +1 -1
- package/dist/{css-h_5aJA6y.js.map → css-C__ffGj6.js.map} +1 -1
- package/dist/{css-D6fGBtGV.cjs → css-DCYZ-Rs6.cjs} +1 -1
- package/dist/{css-D6fGBtGV.cjs.map → css-DCYZ-Rs6.cjs.map} +1 -1
- package/dist/data-7kG1MC1Z.cjs +2 -0
- package/dist/data-7kG1MC1Z.cjs.map +1 -0
- package/dist/{data-DT1ncDx_.js → data-z3e8XTSt.js} +762 -1067
- package/dist/data-z3e8XTSt.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +4 -4
- package/dist/display-Cw3-bTsm.cjs +3 -0
- package/dist/{display-BxVd6MMK.cjs.map → display-Cw3-bTsm.cjs.map} +1 -1
- package/dist/{display-CtVfcztO.js → display-DyC7084n.js} +34 -36
- package/dist/{display-CtVfcztO.js.map → display-DyC7084n.js.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +4 -4
- package/dist/{dropdowns-BgpcQ9Hq.cjs → dropdowns-6eO0b6eI.cjs} +2 -2
- package/dist/{dropdowns-BgpcQ9Hq.cjs.map → dropdowns-6eO0b6eI.cjs.map} +1 -1
- package/dist/{dropdowns-C58ur0qF.js → dropdowns-zXgrjNXZ.js} +7 -7
- package/dist/{dropdowns-C58ur0qF.js.map → dropdowns-zXgrjNXZ.js.map} +1 -1
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-BvRmoSzV.cjs +2 -0
- package/dist/{feedback-BJiO6j28.cjs.map → feedback-BvRmoSzV.cjs.map} +1 -1
- package/dist/{feedback-q3oO-E_X.js → feedback-DfBjzJAw.js} +299 -300
- package/dist/{feedback-q3oO-E_X.js.map → feedback-DfBjzJAw.js.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +6 -7
- package/dist/{form-DIOkVhd9.js → form-BiPQ8SRK.js} +1 -1
- package/dist/{form-DIOkVhd9.js.map → form-BiPQ8SRK.js.map} +1 -1
- package/dist/{form-D7OKrCBM.cjs → form-DlXWN2ul.cjs} +2 -2
- package/dist/{form-D7OKrCBM.cjs.map → form-DlXWN2ul.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{frameworkTexts-CJHzJHsg.cjs → frameworkTexts-BLJcGUXz.cjs} +2 -2
- package/dist/{frameworkTexts-CJHzJHsg.cjs.map → frameworkTexts-BLJcGUXz.cjs.map} +1 -1
- package/dist/{frameworkTexts-Bzd6bn9s.js → frameworkTexts-BTFyhWFD.js} +1 -1
- package/dist/{frameworkTexts-Bzd6bn9s.js.map → frameworkTexts-BTFyhWFD.js.map} +1 -1
- package/dist/i18n.cjs +1 -1
- package/dist/{icons-lUQfZ4Jr.cjs → icons-qCoE70hn.cjs} +2 -2
- package/dist/{icons-lUQfZ4Jr.cjs.map → icons-qCoE70hn.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/illustrations.cjs +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +90 -56
- package/dist/index.js.map +1 -0
- package/dist/{inputs-DOO1tKK9.cjs → inputs-C1I1SLZ8.cjs} +2 -2
- package/dist/{inputs-DOO1tKK9.cjs.map → inputs-C1I1SLZ8.cjs.map} +1 -1
- package/dist/{inputs-Dwjwa_SJ.js → inputs-Dy1WurNK.js} +16 -7
- package/dist/{inputs-Dwjwa_SJ.js.map → inputs-Dy1WurNK.js.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +5 -5
- package/dist/{javascript-BnTECToz.js → javascript-ClV78Svx.js} +1 -1
- package/dist/{javascript-BnTECToz.js.map → javascript-ClV78Svx.js.map} +1 -1
- package/dist/{javascript-Oy5hkezl.cjs → javascript-_Sr9cnsG.cjs} +1 -1
- package/dist/{javascript-Oy5hkezl.cjs.map → javascript-_Sr9cnsG.cjs.map} +1 -1
- package/dist/{json-BP8eqPWc.cjs → json-BFetU4Pi.cjs} +1 -1
- package/dist/{json-BP8eqPWc.cjs.map → json-BFetU4Pi.cjs.map} +1 -1
- package/dist/{json-Ci-bDynf.js → json-Dz6EkGZR.js} +1 -1
- package/dist/{json-Ci-bDynf.js.map → json-Dz6EkGZR.js.map} +1 -1
- package/dist/layout-D1-mF4xn.js +772 -0
- package/dist/layout-D1-mF4xn.js.map +1 -0
- package/dist/layout-Op6GWQ8w.cjs +2 -0
- package/dist/layout-Op6GWQ8w.cjs.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +8 -7
- package/dist/licensing-DmF0ObpG.cjs +2 -0
- package/dist/licensing-DmF0ObpG.cjs.map +1 -0
- package/dist/{licensing-CwzqhHH9.js → licensing-ZFCUU4Z8.js} +5 -1
- package/dist/licensing-ZFCUU4Z8.js.map +1 -0
- package/dist/{locale-Ba2yreFR.cjs → locale-Bz2JXxDZ.cjs} +2 -2
- package/dist/{locale-Ba2yreFR.cjs.map → locale-Bz2JXxDZ.cjs.map} +1 -1
- package/dist/{locale-JX_gX03k.js → locale-CS1-IY_I.js} +1 -1
- package/dist/{locale-JX_gX03k.js.map → locale-CS1-IY_I.js.map} +1 -1
- package/dist/media-DbToUupt.cjs +2 -0
- package/dist/media-DbToUupt.cjs.map +1 -0
- package/dist/{media-DdshnqJ1.js → media-DdChr0Cw.js} +7 -7
- package/dist/media-DdChr0Cw.js.map +1 -0
- package/dist/media.cjs +1 -1
- package/dist/media.js +3 -3
- package/dist/overlays-B0khU6Wb.js +392 -0
- package/dist/overlays-B0khU6Wb.js.map +1 -0
- package/dist/overlays-VAh5PqAe.cjs +2 -0
- package/dist/overlays-VAh5PqAe.cjs.map +1 -0
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +6 -6
- package/dist/{php-DJ5j7KZU.js → php-5Erp5xxI.js} +1 -1
- package/dist/{php-DJ5j7KZU.js.map → php-5Erp5xxI.js.map} +1 -1
- package/dist/{php-Cwjc-ZYq.cjs → php-jOdR0XS8.cjs} +1 -1
- package/dist/{php-Cwjc-ZYq.cjs.map → php-jOdR0XS8.cjs.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-Bb_NAEiZ.cjs → theme-BaroO-OB.cjs} +2 -2
- package/dist/{theme-Bb_NAEiZ.cjs.map → theme-BaroO-OB.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{typescript-QKlfKtex.cjs → typescript-C65sNL5w.cjs} +1 -1
- package/dist/{typescript-QKlfKtex.cjs.map → typescript-C65sNL5w.cjs.map} +1 -1
- package/dist/{typescript-DUexJ4gh.js → typescript-wdQKWfxO.js} +1 -1
- package/dist/{typescript-DUexJ4gh.js.map → typescript-wdQKWfxO.js.map} +1 -1
- package/dist/{typography-BSBsn0f8.js → typography-CldwDFse.js} +2 -11
- package/dist/typography-CldwDFse.js.map +1 -0
- package/dist/typography-D7COsP1O.cjs +2 -0
- package/dist/typography-D7COsP1O.cjs.map +1 -0
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +4 -3
- package/dist/{useGhostText-mibV4s1-.cjs → useGhostText-Dg4P606B.cjs} +2 -2
- package/dist/{useGhostText-mibV4s1-.cjs.map → useGhostText-Dg4P606B.cjs.map} +1 -1
- package/dist/{useInteractionEffect-CtXlbjhC.cjs → useInteractionEffect-Bo8285cg.cjs} +2 -2
- package/dist/{useInteractionEffect-CtXlbjhC.cjs.map → useInteractionEffect-Bo8285cg.cjs.map} +1 -1
- package/dist/{useKeyboardNav-CCUoRMgm.cjs → useKeyboardNav-CyeQtqF8.cjs} +2 -2
- package/dist/{useKeyboardNav-CCUoRMgm.cjs.map → useKeyboardNav-CyeQtqF8.cjs.map} +1 -1
- package/dist/utils/commandPaletteFromAppMenu.d.ts +42 -0
- package/dist/utils/licensing.d.ts +4 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/dist/{xml-DEtyywwU.cjs → xml-B2okahIr.cjs} +1 -1
- package/dist/{xml-DEtyywwU.cjs.map → xml-B2okahIr.cjs.map} +1 -1
- package/dist/{xml-DlZghN7m.js → xml-a3b-XevT.js} +1 -1
- package/dist/{xml-DlZghN7m.js.map → xml-a3b-XevT.js.map} +1 -1
- package/package.json +1 -1
- package/dist/MBadge-BoxsfX_h.cjs +0 -2
- package/dist/MBadge-BoxsfX_h.cjs.map +0 -1
- package/dist/MBadge-_BggwkrM.js +0 -19
- package/dist/MBadge-_BggwkrM.js.map +0 -1
- package/dist/MButton-B9k45kH-.cjs +0 -2
- package/dist/MButton-B9k45kH-.cjs.map +0 -1
- package/dist/MButton-y9qXhhGt.js.map +0 -1
- package/dist/MDataTable-C3v15no3.cjs.map +0 -1
- package/dist/MDataTable-C_XiTGTF.js.map +0 -1
- package/dist/MImage-I0LPhcqF.js.map +0 -1
- package/dist/MImage-hnSqIPaC.cjs +0 -2
- package/dist/MImage-hnSqIPaC.cjs.map +0 -1
- package/dist/MInline-CoMhfX5V.js +0 -39
- package/dist/MInline-CoMhfX5V.js.map +0 -1
- package/dist/MInline-FEXWkr71.cjs +0 -2
- package/dist/MInline-FEXWkr71.cjs.map +0 -1
- package/dist/MInputCVC-BgougfgN.js.map +0 -1
- package/dist/MInputCVC-CRWp1fYi.cjs +0 -2
- package/dist/MInputCVC-CRWp1fYi.cjs.map +0 -1
- package/dist/MQrCode-BXXTLtBP.cjs +0 -2
- package/dist/MQrCode-BXXTLtBP.cjs.map +0 -1
- package/dist/MQrCode-CCtTkkv9.js.map +0 -1
- package/dist/MSkeleton-BP7H_lsX.js +0 -98
- package/dist/MSkeleton-BP7H_lsX.js.map +0 -1
- package/dist/MSkeleton-QO2sI-Ni.cjs +0 -2
- package/dist/MSkeleton-QO2sI-Ni.cjs.map +0 -1
- package/dist/MSparkline-CcM1n7Kh.cjs +0 -2
- package/dist/MSparkline-CcM1n7Kh.cjs.map +0 -1
- package/dist/MSparkline-voNWOLNz.js +0 -207
- package/dist/MSparkline-voNWOLNz.js.map +0 -1
- package/dist/MStack-CSaEbepM.js +0 -39
- package/dist/MStack-CSaEbepM.js.map +0 -1
- package/dist/MStack-Dy8Zl6FW.cjs +0 -2
- package/dist/MStack-Dy8Zl6FW.cjs.map +0 -1
- package/dist/MSurface-f_3vN0sd.js +0 -39
- package/dist/MSurface-f_3vN0sd.js.map +0 -1
- package/dist/MSurface-wVqTsi1m.cjs +0 -2
- package/dist/MSurface-wVqTsi1m.cjs.map +0 -1
- package/dist/cards-BYX8bM2l.js +0 -1163
- package/dist/cards-BYX8bM2l.js.map +0 -1
- package/dist/cards-lCx9oEVk.cjs +0 -2
- package/dist/cards-lCx9oEVk.cjs.map +0 -1
- package/dist/controls-CZCxbJgq.cjs +0 -2
- package/dist/controls-CZCxbJgq.cjs.map +0 -1
- package/dist/controls-DCtMOoQe.js.map +0 -1
- package/dist/data-CcS-eYye.cjs +0 -2
- package/dist/data-CcS-eYye.cjs.map +0 -1
- package/dist/data-DT1ncDx_.js.map +0 -1
- package/dist/display-BxVd6MMK.cjs +0 -3
- package/dist/feedback-BJiO6j28.cjs +0 -2
- package/dist/layout-B3S9bvaP.cjs +0 -2
- package/dist/layout-B3S9bvaP.cjs.map +0 -1
- package/dist/layout-BqDbW0Qn.js +0 -854
- package/dist/layout-BqDbW0Qn.js.map +0 -1
- package/dist/licensing-CwzqhHH9.js.map +0 -1
- package/dist/licensing-Df1Z1rnQ.cjs +0 -2
- package/dist/licensing-Df1Z1rnQ.cjs.map +0 -1
- package/dist/media-C5atCcc6.cjs +0 -2
- package/dist/media-C5atCcc6.cjs.map +0 -1
- package/dist/media-DdshnqJ1.js.map +0 -1
- package/dist/overlays-BC_6IATL.cjs +0 -2
- package/dist/overlays-BC_6IATL.cjs.map +0 -1
- package/dist/overlays-zUoV_Jy7.js +0 -186
- package/dist/overlays-zUoV_Jy7.js.map +0 -1
- package/dist/typography-BSBsn0f8.js.map +0 -1
- package/dist/typography-CRKIyR-B.cjs +0 -2
- package/dist/typography-CRKIyR-B.cjs.map +0 -1
package/dist/MImage-hnSqIPaC.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-Bb_NAEiZ.cjs`),t=require(`./icons-lUQfZ4Jr.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./useInteractionEffect-CtXlbjhC.cjs`),i=require(`./MPortal-CuBXhhl_.cjs`),a=require(`./MButton-B9k45kH-.cjs`),o=require(`./MBadge-BoxsfX_h.cjs`),s=require(`./MSkeleton-QO2sI-Ni.cjs`);require(`./core-w629c4ND.cjs`);let c=require(`react`),l=require(`react/jsx-runtime`);function u({open:e,items:r,activeIndex:s,onClose:u,onActiveIndexChange:d}){let f=r[s],p=(0,c.useRef)(null),m=s>0,h=s<r.length-1;if((0,c.useEffect)(()=>{if(!e)return;let t=e=>{if(e.key===`Escape`){u();return}e.key===`ArrowLeft`&&m&&d(s-1),e.key===`ArrowRight`&&h&&d(s+1)};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[s,h,m,d,u,e]),(0,c.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]),!e||!f)return null;let g=e=>{let t=e.target;t&&p.current&&!p.current.contains(t)&&u()},_=f.alt||f.caption||`Image preview`;return(0,l.jsx)(i.t,{children:(0,l.jsx)(`div`,{className:n.t(`mineral-backdrop`,`media-lightbox-backdrop`),onMouseDown:g,children:(0,l.jsx)(`div`,{className:`media-lightbox-shell`,role:`dialog`,"aria-modal":`true`,"aria-label":_,children:(0,l.jsx)(`div`,{className:`media-lightbox-stage`,children:(0,l.jsxs)(`div`,{ref:p,className:`media-lightbox-frame`,children:[(0,l.jsxs)(`div`,{className:`media-lightbox-topbar`,children:[(0,l.jsx)(o.t,{color:`dark`,size:`sm`,rounded:!0,className:`media-lightbox-counter`,children:r.length>1?`${s+1} / ${r.length}`:`Preview`}),(0,l.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-action`,"aria-label":`Close preview`,onClick:u,children:(0,l.jsx)(t.Li,{})})]}),(0,l.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-prev`,"aria-label":`Previous image`,disabled:r.length<=1||!m,onClick:()=>m&&d(s-1),children:(0,l.jsx)(t.Fi,{})}),(0,l.jsx)(`img`,{className:`media-lightbox-image`,src:f.src,alt:f.alt||``}),(0,l.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-next`,"aria-label":`Next image`,disabled:r.length<=1||!h,onClick:()=>h&&d(s+1),children:(0,l.jsx)(t.Pi,{})}),f.caption||f.alt?(0,l.jsx)(o.t,{color:`dark`,size:`sm`,rounded:!0,className:`media-lightbox-caption`,children:f.caption||f.alt}):null]})})})})})}var d=new Map;function f(e,t,n){let r=d.get(e);return r||(r=new Map,d.set(e,r)),r.set(t,{id:t,...n}),()=>{let n=d.get(e);n&&(n.delete(t),n.size===0&&d.delete(e))}}function p(e){return Array.from(d.get(e)?.values()??[])}function m(e){return e===`ripple`||e===`zoom-ripple`}function h(e){return e===`zoom`||e===`zoom-ripple`}function g(e){return e===`dim`}function _(e){return e===`zoom`||e===`zoom-dim`}function v(e){return e===`dim`||e===`zoom-dim`}var y={"1:1":`1 / 1`,"4:3":`4 / 3`,"16:9":`16 / 9`,"21:9":`21 / 9`};function b(e){if(e!=null)return typeof e==`number`?`${e}px`:e}function x({src:t,fit:i=`cover`,ratio:a=`auto`,width:o,height:d,hidden:m,rounded:h=!1,bordered:g=!1,shadow:x=!1,preview:S=!1,previewGroup:C,hoverEffect:w=`none`,clickEffect:ee=`none`,fallback:T,skeleton:E=!1,className:D,style:te,alt:O,onError:ne,...k}){let[A,j]=(0,c.useState)(!1),[M,N]=(0,c.useState)(!1),[P,F]=(0,c.useState)([]),[I,L]=(0,c.useState)(0),R=(0,c.useId)(),{effectClassName:re,effectLayer:z,handlePointerDown:B}=r.t({effect:E?`none`:ee}),V=e=>{T&&!A&&(j(!0),e.currentTarget.src=T),ne?.(e)},H=b(o),U=b(d),W=H!=null||U!=null,G=a!==`auto`&&!!y[a],K={};H!=null&&(K.width=H),U!=null&&(K.height=U);let q={...te,...G?{aspectRatio:y[a]}:null,...K},J=A&&T?T:t,Y=(0,c.useMemo)(()=>({src:J||``,alt:O??``,caption:typeof k.title==`string`?k.title:void 0}),[O,J,k.title]);if((0,c.useEffect)(()=>{if(!(!S||!C||!J))return f(C,R,Y)},[S,C,R,Y,J]),E)return(0,l.jsx)(s.t,{variant:`rectangle`,animate:`pulse`,className:n.t(`image-skeleton`,h&&`rounded`,g&&`bordered`,D),style:q,"aria-label":`Loading`,...e.r(m)});let X=()=>{if(!(!S||!J)){if(C){let e=p(C),t=e.findIndex(e=>e.id===R);if(e.length>0&&t>=0){F(e.map(({id:e,...t})=>t)),L(t),N(!0);return}}F([Y]),L(0),N(!0)}},Z=n.t(`image`,i,!z&&h&&`rounded`,!z&&g&&`bordered`,!z&&x&&`shadow`),ie=G||W||!!z||S||w!==`none`,Q=n.t(`image-wrap`,G&&`has-ratio`,W&&`has-size`,h&&`rounded`,g&&`bordered`,x&&`shadow`,S&&`preview`,_(w)&&`effect-zoom`,v(w)&&`effect-dim`,re,D),$=(0,l.jsx)(`img`,{className:Z,onError:V,src:J,...k,alt:O??``});return ie?(0,l.jsxs)(l.Fragment,{children:[S?(0,l.jsxs)(`button`,{type:`button`,className:n.t(Q,`image-button`),"aria-label":`Preview ${O||`image`}`,onClick:X,onPointerDown:z?B:void 0,disabled:!J,...e.r(m),style:q,children:[z,$]}):(0,l.jsxs)(`span`,{className:Q,onPointerDown:z?B:void 0,...e.r(m),style:q,children:[z,$]}),(0,l.jsx)(u,{open:M,items:P,activeIndex:I,onActiveIndexChange:L,onClose:()=>N(!1)})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`img`,{className:n.t(Z,D),style:q,onError:V,src:J,...e.r(m),...k,alt:O??``}),(0,l.jsx)(u,{open:M,items:P,activeIndex:I,onActiveIndexChange:L,onClose:()=>N(!1)})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return x}});
|
|
2
|
-
//# sourceMappingURL=MImage-hnSqIPaC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MImage-hnSqIPaC.cjs","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MMediaLightbox.css'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose()\n return\n }\n\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || 'Image preview'\n\n return (\n <MPortal>\n <div className={cn('mineral-backdrop', 'media-lightbox-backdrop')} onMouseDown={handleBackdropMouseDown}>\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : 'Preview'}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label=\"Close preview\"\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label=\"Previous image\"\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label=\"Next image\"\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label=\"Loading\"\n {...getHiddenProps(hidden)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={`Preview ${alt || 'image'}`}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n"],"mappings":"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"}
|
package/dist/MInline-CoMhfX5V.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { r as e } from "./theme-D_f-cmSA.js";
|
|
2
|
-
import { t } from "./cn-YER3QsV1.js";
|
|
3
|
-
import { n, t as r } from "./layoutProps-CE5-ghKw.js";
|
|
4
|
-
import { jsx as i } from "react/jsx-runtime";
|
|
5
|
-
//#region src/components/layout/MInline/MInline.tsx
|
|
6
|
-
function a({ align: a = "center", justify: o = "start", wrap: s = "wrap", hidden: c, spacing: l, padding: u, fsize: d, mt: f, mb: p, ml: m, mr: h, mx: g, my: _, pt: v, pb: y, pl: b, pr: x, px: S, py: C, fullWidth: w, className: T, style: E, children: D, ...O }) {
|
|
7
|
-
let k = n({ fsize: d });
|
|
8
|
-
return /* @__PURE__ */ i("div", {
|
|
9
|
-
className: t("inline", a, `justify-${o}`, s, ...r({
|
|
10
|
-
spacing: l,
|
|
11
|
-
padding: u,
|
|
12
|
-
fsize: d,
|
|
13
|
-
mt: f,
|
|
14
|
-
mb: p,
|
|
15
|
-
ml: m,
|
|
16
|
-
mr: h,
|
|
17
|
-
mx: g,
|
|
18
|
-
my: _,
|
|
19
|
-
pt: v,
|
|
20
|
-
pb: y,
|
|
21
|
-
pl: b,
|
|
22
|
-
pr: x,
|
|
23
|
-
px: S,
|
|
24
|
-
py: C,
|
|
25
|
-
fullWidth: w
|
|
26
|
-
}), T),
|
|
27
|
-
style: {
|
|
28
|
-
...k,
|
|
29
|
-
...E
|
|
30
|
-
},
|
|
31
|
-
...e(c),
|
|
32
|
-
...O,
|
|
33
|
-
children: D
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
37
|
-
export { a as t };
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=MInline-CoMhfX5V.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MInline-CoMhfX5V.js","names":[],"sources":["../src/components/layout/MInline/MInline.tsx"],"sourcesContent":["import type {MInlineProps} from './MInline.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MInline.css'\n\n// Arrange children horizontally with shared alignment and wrapping helpers.\nexport function MInline({\n align = 'center',\n justify = 'start',\n wrap = 'wrap',\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MInlineProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n className={cn(\n 'inline',\n align,\n `justify-${justify}`,\n wrap,\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </div>\n )\n}\n"],"mappings":";;;;;AAOA,SAAgB,EAAQ,EACpB,WAAQ,UACR,aAAU,SACV,UAAO,QACP,WACA,YACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,cACA,cACA,UACA,aACA,GAAG,KACU;CACb,IAAM,IAAe,EAAuB,EAAC,UAAM,CAAC;AAEpD,QACI,kBAAC,OAAD;EACI,WAAW,EACP,UACA,GACA,WAAW,KACX,GACA,GAAG,EAA2B;GAC1B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACH,CAAC,EACF,EACH;EACD,OAAO;GAAC,GAAG;GAAc,GAAG;GAAM;EAClC,GAAI,EAAe,EAAO;EAC1B,GAAI;EAEH;EACC,CAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-Bb_NAEiZ.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./layoutProps-B8y2XwHy.cjs`);require(`./core-w629c4ND.cjs`);let r=require(`react/jsx-runtime`);function i({align:i=`center`,justify:a=`start`,wrap:o=`wrap`,hidden:s,spacing:c,padding:l,fsize:u,mt:d,mb:f,ml:p,mr:m,mx:h,my:g,pt:_,pb:v,pl:y,pr:b,px:x,py:S,fullWidth:C,className:w,style:T,children:E,...D}){let O=n.n({fsize:u});return(0,r.jsx)(`div`,{className:t.t(`inline`,i,`justify-${a}`,o,...n.t({spacing:c,padding:l,fsize:u,mt:d,mb:f,ml:p,mr:m,mx:h,my:g,pt:_,pb:v,pl:y,pr:b,px:x,py:S,fullWidth:C}),w),style:{...O,...T},...e.r(s),...D,children:E})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
|
2
|
-
//# sourceMappingURL=MInline-FEXWkr71.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MInline-FEXWkr71.cjs","names":[],"sources":["../src/components/layout/MInline/MInline.tsx"],"sourcesContent":["import type {MInlineProps} from './MInline.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MInline.css'\n\n// Arrange children horizontally with shared alignment and wrapping helpers.\nexport function MInline({\n align = 'center',\n justify = 'start',\n wrap = 'wrap',\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MInlineProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n className={cn(\n 'inline',\n align,\n `justify-${justify}`,\n wrap,\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </div>\n )\n}\n"],"mappings":"iLAOA,SAAgB,EAAQ,CACpB,QAAQ,SACR,UAAU,QACV,OAAO,OACP,SACA,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,YACA,QACA,WACA,GAAG,GACU,CACb,IAAM,EAAe,EAAA,EAAuB,CAAC,QAAM,CAAC,CAEpD,OACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,EAAA,EACP,SACA,EACA,WAAW,IACX,EACA,GAAG,EAAA,EAA2B,CAC1B,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACH,CAAC,CACF,EACH,CACD,MAAO,CAAC,GAAG,EAAc,GAAG,EAAM,CAClC,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,EAEH,WACC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MInputCVC-BgougfgN.js","names":[],"sources":["../src/components/inputs/MInputExpDate/MInputExpDate.tsx","../src/components/inputs/MInputCVC/MInputCVC.tsx"],"sourcesContent":["import {forwardRef, useCallback, useMemo, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputExpDateProps} from './MInputExpDate.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCloseIcon, MChevronDownIcon} from '../../../icons'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport '../MInput/MInput.css'\nimport './MInputExpDate.css'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction padMonth(value?: string) {\n if (!value) {\n return ''\n }\n\n return value.padStart(2, '0').slice(0, 2)\n}\n\nfunction formatValue(month?: string, year?: string) {\n const resolvedMonth = padMonth(month)\n const resolvedYear = year?.slice(0, 4) ?? ''\n\n if (!resolvedMonth && !resolvedYear) {\n return ''\n }\n\n if (!resolvedYear) {\n return resolvedMonth\n }\n\n return `${resolvedMonth}/${resolvedYear}`\n}\n\nfunction parseValue(value: string) {\n const digits = stripDigits(value).slice(0, 6)\n\n return {\n month: digits.slice(0, 2),\n year: digits.slice(2, 6),\n }\n}\n\nfunction resolveYearBounds(minYear?: number, maxYear?: number) {\n const currentYear = new Date().getFullYear()\n const resolvedMinYear = Math.max(minYear ?? currentYear, currentYear)\n const resolvedMaxYear = Math.max(maxYear ?? currentYear + 20, resolvedMinYear)\n\n return {\n resolvedMinYear,\n resolvedMaxYear,\n }\n}\n\nfunction validateExpDate(\n value: string,\n {minYear, maxYear}: Pick<MInputExpDateProps, 'minYear' | 'maxYear'>\n): ValidationResult {\n if (!value) {\n return OK\n }\n\n const {month: monthValue, year: yearValue} = parseValue(value)\n\n if (monthValue.length !== 2 || yearValue.length !== 4) {\n return {valid: false, error: 'Expiration date is incomplete'}\n }\n\n const month = parseInt(monthValue, 10)\n const year = parseInt(yearValue, 10)\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n\n if (Number.isNaN(month) || month < 1 || month > 12) {\n return {valid: false, error: 'Use a valid month'}\n }\n\n if (Number.isNaN(year)) {\n return {valid: false, error: 'Use a valid year'}\n }\n\n if (year < resolvedMinYear) {\n return {valid: false, error: `Year must be ${resolvedMinYear} or later`}\n }\n\n if (year > resolvedMaxYear) {\n return {valid: false, error: `Year must be ${resolvedMaxYear} or earlier`}\n }\n\n const now = new Date()\n const currentMonth = now.getMonth() + 1\n const currentYear = now.getFullYear()\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n return {valid: false, error: 'Card has expired'}\n }\n\n return OK\n}\n\nexport const MInputExpDate = forwardRef<HTMLInputElement, MInputExpDateProps>(function MInputExpDate(\n {\n validateOnBlur = true,\n validateOnChange = false,\n minYear,\n maxYear,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n name,\n id,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n rounded = false,\n label,\n helperText,\n errorText,\n startIcon,\n endIcon,\n clearable = false,\n error = false,\n success,\n onChange,\n onFocus,\n onBlur,\n onClear,\n className,\n style,\n labelClassName,\n },\n ref\n) {\n const inputRef = useRef<HTMLInputElement>(null)\n const rootRef = useRef<HTMLDivElement>(null)\n const {currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n const [focused, setFocused] = useState(false)\n const [monthMenuOpen, setMonthMenuOpen] = useState(false)\n const [yearMenuOpen, setYearMenuOpen] = useState(false)\n\n const {month, year} = parseValue(currentValue)\n const hasContent = Boolean(month || year)\n const segmentDisabled = disabled || readOnly\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n const yearOptions = useMemo(\n () => Array.from({length: resolvedMaxYear - resolvedMinYear + 1}, (_, index) => resolvedMinYear + index),\n [resolvedMaxYear, resolvedMinYear]\n )\n\n const runValidation = useCallback(\n (formattedValue: string) => {\n const result = validateExpDate(formattedValue, {minYear, maxYear})\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [maxYear, minYear, onValidationChange]\n )\n\n const syncValue = useCallback(\n (formattedValue: string) => {\n setCurrentValue(formattedValue)\n onValueChange?.(stripDigits(formattedValue), formattedValue)\n\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, formattedValue)\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n },\n [onValueChange, ref, setCurrentValue]\n )\n\n const updateValue = useCallback(\n (nextMonth?: string, nextYear?: string) => {\n const formattedValue = formatValue(nextMonth, nextYear)\n syncValue(formattedValue)\n\n if (validateOnChange && touched) {\n runValidation(formattedValue)\n }\n },\n [runValidation, syncValue, touched, validateOnChange]\n )\n\n const focusHiddenInput = useCallback(() => {\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n input?.focus()\n }, [ref])\n\n const handleRootFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (focused) {\n return\n }\n\n setFocused(true)\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input && event.target !== input) {\n onFocus?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n }\n },\n [focused, onFocus, ref]\n )\n\n const handleRootBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null\n\n if (nextTarget && rootRef.current?.contains(nextTarget)) {\n return\n }\n\n setFocused(false)\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleSelectMonth = useCallback(\n (nextMonth: string) => {\n focusHiddenInput()\n updateValue(nextMonth, year)\n },\n [focusHiddenInput, updateValue, year]\n )\n\n const handleSelectYear = useCallback(\n (nextYear: string) => {\n focusHiddenInput()\n updateValue(month, nextYear)\n },\n [focusHiddenInput, month, updateValue]\n )\n\n const handleClear = useCallback(() => {\n syncValue('')\n setTouched(false)\n setValidation(OK)\n onValidationChange?.(OK)\n onClear?.()\n focusHiddenInput()\n }, [focusHiddenInput, onClear, onValidationChange, syncValue])\n\n const hasError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !hasError && (success !== undefined ? success : touched && validation.valid && Boolean(month && year))\n const resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'input-error',\n isSuccess && !hasError && 'input-success',\n resolvedColorClass,\n disabled && 'disabled',\n rounded && 'rounded'\n )\n\n const monthLabel = month || 'MM'\n const yearLabel = year || 'YYYY'\n\n return (\n <div\n ref={rootRef}\n className={cn('input', 'input-exp-date', resolvedColorClass, fullWidth && 'full-width', className)}\n style={style}\n onFocusCapture={handleRootFocus}\n onBlurCapture={handleRootBlur}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'field-label',\n focused && 'focused',\n hasError && 'error',\n isSuccess && !hasError && 'success',\n required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div className={containerClasses} onClick={focusHiddenInput}>\n {startIcon && <span className=\"start-icon\">{startIcon}</span>}\n\n <input\n ref={ref ?? inputRef}\n type=\"text\"\n value={currentValue}\n name={name}\n id={id}\n readOnly\n required={required}\n autoFocus={autoFocus}\n className=\"input-exp-date-native\"\n tabIndex={-1}\n aria-hidden=\"true\"\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n\n <div className=\"input-exp-date-segments\" aria-label=\"Expiration date\">\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !month && 'placeholder', 'static')}>\n <span>{monthLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n monthMenuOpen && 'open',\n !month && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{monthLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setMonthMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {Array.from({length: 12}, (_, index) => {\n const option = String(index + 1).padStart(2, '0')\n\n return (\n <MDropdownItem\n key={option}\n label={option}\n active={month === option}\n onClick={() => handleSelectMonth(option)}\n />\n )\n })}\n </MDropdownMenu>\n )}\n\n <span className=\"input-exp-date-separator\">/</span>\n\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !year && 'placeholder', 'static')}>\n <span>{yearLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n yearMenuOpen && 'open',\n !year && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{yearLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setYearMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {yearOptions.map((option) => (\n <MDropdownItem\n key={option}\n label={String(option)}\n active={year === String(option)}\n onClick={() => handleSelectYear(String(option))}\n />\n ))}\n </MDropdownMenu>\n )}\n </div>\n\n {clearable && hasContent && !segmentDisabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onClick={(event) => {\n event.stopPropagation()\n handleClear()\n }}\n tabIndex={-1}\n aria-label=\"Clear input\"\n >\n <MCloseIcon />\n </button>\n )}\n\n {endIcon && <span className=\"end-icon\">{endIcon}</span>}\n </div>\n\n {(resolvedErrorText || helperText) && (\n <div className=\"bottom-row\">\n <span>\n {resolvedErrorText && (\n <span id={id ? `${id}-error` : undefined} className=\"field-error\" role=\"alert\">\n {resolvedErrorText}\n </span>\n )}\n {!resolvedErrorText && helperText && (\n <span id={id ? `${id}-helper` : undefined} className=\"field-helper\">\n {helperText}\n </span>\n )}\n </span>\n </div>\n )}\n </div>\n )\n})\n","import {forwardRef, useCallback, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputCVCProps} from './MInputCVC.types'\nimport {MInput} from '../MInput'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MInputCVC.css'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction validateCvc(value: string, length: 3 | 4): ValidationResult {\n if (!value) {\n return OK\n }\n\n const digits = stripDigits(value)\n\n if (digits.length !== length) {\n return {valid: false, error: `Security code must have ${length} digits`}\n }\n\n return OK\n}\n\nexport const MInputCVC = forwardRef<HTMLInputElement, MInputCVCProps>(function MInputCVC(\n {\n length = 3,\n validateOnBlur = true,\n validateOnChange = false,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n onKeyDown,\n error,\n errorText,\n success,\n placeholder,\n className,\n inputClassName,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(() =>\n stripDigits(defaultValue?.toString() ?? '').slice(0, length)\n )\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? stripDigits(value.toString()).slice(0, length) : internalValue\n\n const runValidation = useCallback(\n (nextValue: string) => {\n const result = validateCvc(nextValue, length)\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [length, onValidationChange]\n )\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextValue = stripDigits(event.target.value).slice(0, length)\n\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n\n if (validateOnChange && touched) {\n runValidation(nextValue)\n }\n\n onChange?.(event)\n },\n [length, onChange, onValueChange, runValidation, touched, validateOnChange, value]\n )\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n onKeyDown?.(event)\n return\n }\n\n if (event.ctrlKey || event.metaKey) {\n onKeyDown?.(event)\n return\n }\n\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault()\n }\n\n onKeyDown?.(event)\n },\n [onKeyDown]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess = !isError && (success !== undefined ? success : touched && currentValue.length === length)\n const endIcon = isSuccess ? <MCheckIcon /> : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder ?? ''.padEnd(length, '0')}\n maxLength={length}\n endIcon={endIcon}\n inputClassName={cn('input-cvc-field', inputClassName)}\n className={className}\n />\n )\n})\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./icons-lUQfZ4Jr.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MInput-5-alcVsu.cjs`),r=require(`./MDropdownMenu-mGE19gCi.cjs`);require(`./core-w629c4ND.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`);var o={valid:!0};function s(e){return e.replace(/\D/g,``)}function c(e){return e?e.padStart(2,`0`).slice(0,2):``}function l(e,t){let n=c(e),r=t?.slice(0,4)??``;return!n&&!r?``:r?`${n}/${r}`:n}function u(e){let t=s(e).slice(0,6);return{month:t.slice(0,2),year:t.slice(2,6)}}function d(e,t){let n=new Date().getFullYear(),r=Math.max(e??n,n);return{resolvedMinYear:r,resolvedMaxYear:Math.max(t??n+20,r)}}function f(e,{minYear:t,maxYear:n}){if(!e)return o;let{month:r,year:i}=u(e);if(r.length!==2||i.length!==4)return{valid:!1,error:`Expiration date is incomplete`};let a=parseInt(r,10),s=parseInt(i,10),{resolvedMinYear:c,resolvedMaxYear:l}=d(t,n);if(Number.isNaN(a)||a<1||a>12)return{valid:!1,error:`Use a valid month`};if(Number.isNaN(s))return{valid:!1,error:`Use a valid year`};if(s<c)return{valid:!1,error:`Year must be ${c} or later`};if(s>l)return{valid:!1,error:`Year must be ${l} or earlier`};let f=new Date,p=f.getMonth()+1,m=f.getFullYear();return s<m||s===m&&a<p?{valid:!1,error:`Card has expired`}:o}var p=(0,i.forwardRef)(function({validateOnBlur:c=!0,validateOnChange:p=!1,minYear:m,maxYear:h,onValidationChange:g,onValueChange:_,value:ee,defaultValue:v,name:y,id:b,disabled:x=!1,readOnly:te=!1,required:S=!1,autoFocus:ne=!1,variant:re=`outlined`,size:ie=`md`,color:C,fullWidth:ae=!1,rounded:w=!1,label:T,helperText:E,errorText:D,startIcon:O,endIcon:k,clearable:oe=!1,error:A=!1,success:j,onChange:M,onFocus:N,onBlur:P,onClear:se,className:ce,style:le,labelClassName:ue},F){let I=(0,i.useRef)(null),de=(0,i.useRef)(null),{currentValue:L,setCurrentValue:fe}=n.n(ee,v),[R,z]=(0,i.useState)(o),[B,V]=(0,i.useState)(!1),[H,U]=(0,i.useState)(!1),[pe,me]=(0,i.useState)(!1),[he,ge]=(0,i.useState)(!1),{month:W,year:G}=u(L),_e=!!(W||G),K=x||te,{resolvedMinYear:q,resolvedMaxYear:ve}=d(m,h),ye=(0,i.useMemo)(()=>Array.from({length:ve-q+1},(e,t)=>q+t),[ve,q]),J=(0,i.useCallback)(e=>{let t=f(e,{minYear:m,maxYear:h});return z(t),g?.(t),t},[h,m,g]),Y=(0,i.useCallback)(e=>{fe(e),_?.(s(e),e);let t=F?.current??I.current;t&&((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set)?.call(t,e),t.dispatchEvent(new Event(`input`,{bubbles:!0})))},[_,F,fe]),X=(0,i.useCallback)((e,t)=>{let n=l(e,t);Y(n),p&&B&&J(n)},[J,Y,B,p]),Z=(0,i.useCallback)(()=>{(F?.current??I.current)?.focus()},[F]),be=(0,i.useCallback)(e=>{if(H)return;U(!0);let t=F?.current??I.current;t&&e.target!==t&&N?.(e)},[H,N,F]),xe=(0,i.useCallback)(e=>{let t=e.relatedTarget;t&&de.current?.contains(t)||(U(!1),V(!0),c&&L&&J(L),P?.(e))},[L,P,J,c]),Se=(0,i.useCallback)(e=>{Z(),X(e,G)},[Z,X,G]),Ce=(0,i.useCallback)(e=>{Z(),X(W,e)},[Z,W,X]),we=(0,i.useCallback)(()=>{Y(``),V(!1),z(o),g?.(o),se?.(),Z()},[Z,se,g,Y]),Q=A||B&&!R.valid,$=D||(B&&!R.valid?R.error:void 0),Te=!Q&&(j===void 0?B&&R.valid&&!!(W&&G):j),Ee=Q?`color-error`:C?`color-${C}`:void 0,De=t.t(`container`,`field-${re}`,`field-${ie}`,H&&`focused`,Q&&`input-error`,Te&&!Q&&`input-success`,Ee,x&&`disabled`,w&&`rounded`),Oe=W||`MM`,ke=G||`YYYY`;return(0,a.jsxs)(`div`,{ref:de,className:t.t(`input`,`input-exp-date`,Ee,ae&&`full-width`,ce),style:le,onFocusCapture:be,onBlurCapture:xe,children:[T&&(0,a.jsx)(`label`,{htmlFor:b,className:t.t(`field-label`,H&&`focused`,Q&&`error`,Te&&!Q&&`success`,S&&`required`,ue),children:T}),(0,a.jsxs)(`div`,{className:De,onClick:Z,children:[O&&(0,a.jsx)(`span`,{className:`start-icon`,children:O}),(0,a.jsx)(`input`,{ref:F??I,type:`text`,value:L,name:y,id:b,readOnly:!0,required:S,autoFocus:ne,className:`input-exp-date-native`,tabIndex:-1,"aria-hidden":`true`,onChange:M,onFocus:N,onBlur:P}),(0,a.jsxs)(`div`,{className:`input-exp-date-segments`,"aria-label":`Expiration date`,children:[K?(0,a.jsx)(`span`,{className:t.t(`input-exp-date-trigger`,!W&&`placeholder`,`static`),children:(0,a.jsx)(`span`,{children:Oe})}):(0,a.jsx)(r.i,{trigger:(0,a.jsxs)(`span`,{className:t.t(`input-exp-date-trigger`,pe&&`open`,!W&&`placeholder`),onMouseDown:Z,children:[(0,a.jsx)(`span`,{children:Oe}),(0,a.jsx)(e.Ni,{size:16})]}),openOn:`click`,closeOnSelect:!0,onOpenChange:me,popoverClassName:`input-exp-date-popover`,children:Array.from({length:12},(e,t)=>{let n=String(t+1).padStart(2,`0`);return(0,a.jsx)(r.r,{label:n,active:W===n,onClick:()=>Se(n)},n)})}),(0,a.jsx)(`span`,{className:`input-exp-date-separator`,children:`/`}),K?(0,a.jsx)(`span`,{className:t.t(`input-exp-date-trigger`,!G&&`placeholder`,`static`),children:(0,a.jsx)(`span`,{children:ke})}):(0,a.jsx)(r.i,{trigger:(0,a.jsxs)(`span`,{className:t.t(`input-exp-date-trigger`,he&&`open`,!G&&`placeholder`),onMouseDown:Z,children:[(0,a.jsx)(`span`,{children:ke}),(0,a.jsx)(e.Ni,{size:16})]}),openOn:`click`,closeOnSelect:!0,onOpenChange:ge,popoverClassName:`input-exp-date-popover`,children:ye.map(e=>(0,a.jsx)(r.r,{label:String(e),active:G===String(e),onClick:()=>Ce(String(e))},e))})]}),oe&&_e&&!K&&(0,a.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:e=>{e.stopPropagation(),we()},tabIndex:-1,"aria-label":`Clear input`,children:(0,a.jsx)(e.Li,{})}),k&&(0,a.jsx)(`span`,{className:`end-icon`,children:k})]}),($||E)&&(0,a.jsx)(`div`,{className:`bottom-row`,children:(0,a.jsxs)(`span`,{children:[$&&(0,a.jsx)(`span`,{id:b?`${b}-error`:void 0,className:`field-error`,role:`alert`,children:$}),!$&&E&&(0,a.jsx)(`span`,{id:b?`${b}-helper`:void 0,className:`field-helper`,children:E})]})})]})}),m={valid:!0};function h(e){return e.replace(/\D/g,``)}function g(e,t){return e?h(e).length===t?m:{valid:!1,error:`Security code must have ${t} digits`}:m}var _=(0,i.forwardRef)(function({length:r=3,validateOnBlur:o=!0,validateOnChange:s=!1,onValidationChange:c,onValueChange:l,value:u,defaultValue:d,onChange:f,onBlur:p,onKeyDown:_,error:ee,errorText:v,success:y,placeholder:b,className:x,inputClassName:te,...S},ne){let[re,ie]=(0,i.useState)(()=>h(d?.toString()??``).slice(0,r)),[C,ae]=(0,i.useState)(m),[w,T]=(0,i.useState)(!1),E=u===void 0?re:h(u.toString()).slice(0,r),D=(0,i.useCallback)(e=>{let t=g(e,r);return ae(t),c?.(t),t},[r,c]),O=(0,i.useCallback)(e=>{let t=h(e.target.value).slice(0,r);u===void 0&&ie(t),l?.(t),s&&w&&D(t),f?.(e)},[r,f,l,D,w,s,u]),k=(0,i.useCallback)(e=>{T(!0),o&&E&&D(E),p?.(e)},[E,p,D,o]),oe=(0,i.useCallback)(e=>{if([`Backspace`,`Delete`,`Tab`,`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key)){_?.(e);return}if(e.ctrlKey||e.metaKey){_?.(e);return}/^\d$/.test(e.key)||e.preventDefault(),_?.(e)},[_]),A=ee||w&&!C.valid,j=v||(w&&!C.valid?C.error:void 0),M=!A&&(y===void 0?w&&E.length===r:y),N=M?(0,a.jsx)(e.Ii,{}):void 0;return(0,a.jsx)(n.t,{...S,ref:ne,type:`text`,inputMode:`numeric`,value:E,onChange:O,onBlur:k,onKeyDown:oe,error:A,errorText:j,success:M,placeholder:b??``.padEnd(r,`0`),maxLength:r,endIcon:N,inputClassName:t.t(`input-cvc-field`,te),className:x})});Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return _}});
|
|
2
|
-
//# sourceMappingURL=MInputCVC-CRWp1fYi.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MInputCVC-CRWp1fYi.cjs","names":[],"sources":["../src/components/inputs/MInputExpDate/MInputExpDate.tsx","../src/components/inputs/MInputCVC/MInputCVC.tsx"],"sourcesContent":["import {forwardRef, useCallback, useMemo, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputExpDateProps} from './MInputExpDate.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCloseIcon, MChevronDownIcon} from '../../../icons'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport '../MInput/MInput.css'\nimport './MInputExpDate.css'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction padMonth(value?: string) {\n if (!value) {\n return ''\n }\n\n return value.padStart(2, '0').slice(0, 2)\n}\n\nfunction formatValue(month?: string, year?: string) {\n const resolvedMonth = padMonth(month)\n const resolvedYear = year?.slice(0, 4) ?? ''\n\n if (!resolvedMonth && !resolvedYear) {\n return ''\n }\n\n if (!resolvedYear) {\n return resolvedMonth\n }\n\n return `${resolvedMonth}/${resolvedYear}`\n}\n\nfunction parseValue(value: string) {\n const digits = stripDigits(value).slice(0, 6)\n\n return {\n month: digits.slice(0, 2),\n year: digits.slice(2, 6),\n }\n}\n\nfunction resolveYearBounds(minYear?: number, maxYear?: number) {\n const currentYear = new Date().getFullYear()\n const resolvedMinYear = Math.max(minYear ?? currentYear, currentYear)\n const resolvedMaxYear = Math.max(maxYear ?? currentYear + 20, resolvedMinYear)\n\n return {\n resolvedMinYear,\n resolvedMaxYear,\n }\n}\n\nfunction validateExpDate(\n value: string,\n {minYear, maxYear}: Pick<MInputExpDateProps, 'minYear' | 'maxYear'>\n): ValidationResult {\n if (!value) {\n return OK\n }\n\n const {month: monthValue, year: yearValue} = parseValue(value)\n\n if (monthValue.length !== 2 || yearValue.length !== 4) {\n return {valid: false, error: 'Expiration date is incomplete'}\n }\n\n const month = parseInt(monthValue, 10)\n const year = parseInt(yearValue, 10)\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n\n if (Number.isNaN(month) || month < 1 || month > 12) {\n return {valid: false, error: 'Use a valid month'}\n }\n\n if (Number.isNaN(year)) {\n return {valid: false, error: 'Use a valid year'}\n }\n\n if (year < resolvedMinYear) {\n return {valid: false, error: `Year must be ${resolvedMinYear} or later`}\n }\n\n if (year > resolvedMaxYear) {\n return {valid: false, error: `Year must be ${resolvedMaxYear} or earlier`}\n }\n\n const now = new Date()\n const currentMonth = now.getMonth() + 1\n const currentYear = now.getFullYear()\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n return {valid: false, error: 'Card has expired'}\n }\n\n return OK\n}\n\nexport const MInputExpDate = forwardRef<HTMLInputElement, MInputExpDateProps>(function MInputExpDate(\n {\n validateOnBlur = true,\n validateOnChange = false,\n minYear,\n maxYear,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n name,\n id,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n rounded = false,\n label,\n helperText,\n errorText,\n startIcon,\n endIcon,\n clearable = false,\n error = false,\n success,\n onChange,\n onFocus,\n onBlur,\n onClear,\n className,\n style,\n labelClassName,\n },\n ref\n) {\n const inputRef = useRef<HTMLInputElement>(null)\n const rootRef = useRef<HTMLDivElement>(null)\n const {currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n const [focused, setFocused] = useState(false)\n const [monthMenuOpen, setMonthMenuOpen] = useState(false)\n const [yearMenuOpen, setYearMenuOpen] = useState(false)\n\n const {month, year} = parseValue(currentValue)\n const hasContent = Boolean(month || year)\n const segmentDisabled = disabled || readOnly\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n const yearOptions = useMemo(\n () => Array.from({length: resolvedMaxYear - resolvedMinYear + 1}, (_, index) => resolvedMinYear + index),\n [resolvedMaxYear, resolvedMinYear]\n )\n\n const runValidation = useCallback(\n (formattedValue: string) => {\n const result = validateExpDate(formattedValue, {minYear, maxYear})\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [maxYear, minYear, onValidationChange]\n )\n\n const syncValue = useCallback(\n (formattedValue: string) => {\n setCurrentValue(formattedValue)\n onValueChange?.(stripDigits(formattedValue), formattedValue)\n\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, formattedValue)\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n },\n [onValueChange, ref, setCurrentValue]\n )\n\n const updateValue = useCallback(\n (nextMonth?: string, nextYear?: string) => {\n const formattedValue = formatValue(nextMonth, nextYear)\n syncValue(formattedValue)\n\n if (validateOnChange && touched) {\n runValidation(formattedValue)\n }\n },\n [runValidation, syncValue, touched, validateOnChange]\n )\n\n const focusHiddenInput = useCallback(() => {\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n input?.focus()\n }, [ref])\n\n const handleRootFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (focused) {\n return\n }\n\n setFocused(true)\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input && event.target !== input) {\n onFocus?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n }\n },\n [focused, onFocus, ref]\n )\n\n const handleRootBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null\n\n if (nextTarget && rootRef.current?.contains(nextTarget)) {\n return\n }\n\n setFocused(false)\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleSelectMonth = useCallback(\n (nextMonth: string) => {\n focusHiddenInput()\n updateValue(nextMonth, year)\n },\n [focusHiddenInput, updateValue, year]\n )\n\n const handleSelectYear = useCallback(\n (nextYear: string) => {\n focusHiddenInput()\n updateValue(month, nextYear)\n },\n [focusHiddenInput, month, updateValue]\n )\n\n const handleClear = useCallback(() => {\n syncValue('')\n setTouched(false)\n setValidation(OK)\n onValidationChange?.(OK)\n onClear?.()\n focusHiddenInput()\n }, [focusHiddenInput, onClear, onValidationChange, syncValue])\n\n const hasError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !hasError && (success !== undefined ? success : touched && validation.valid && Boolean(month && year))\n const resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'input-error',\n isSuccess && !hasError && 'input-success',\n resolvedColorClass,\n disabled && 'disabled',\n rounded && 'rounded'\n )\n\n const monthLabel = month || 'MM'\n const yearLabel = year || 'YYYY'\n\n return (\n <div\n ref={rootRef}\n className={cn('input', 'input-exp-date', resolvedColorClass, fullWidth && 'full-width', className)}\n style={style}\n onFocusCapture={handleRootFocus}\n onBlurCapture={handleRootBlur}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'field-label',\n focused && 'focused',\n hasError && 'error',\n isSuccess && !hasError && 'success',\n required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div className={containerClasses} onClick={focusHiddenInput}>\n {startIcon && <span className=\"start-icon\">{startIcon}</span>}\n\n <input\n ref={ref ?? inputRef}\n type=\"text\"\n value={currentValue}\n name={name}\n id={id}\n readOnly\n required={required}\n autoFocus={autoFocus}\n className=\"input-exp-date-native\"\n tabIndex={-1}\n aria-hidden=\"true\"\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n\n <div className=\"input-exp-date-segments\" aria-label=\"Expiration date\">\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !month && 'placeholder', 'static')}>\n <span>{monthLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n monthMenuOpen && 'open',\n !month && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{monthLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setMonthMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {Array.from({length: 12}, (_, index) => {\n const option = String(index + 1).padStart(2, '0')\n\n return (\n <MDropdownItem\n key={option}\n label={option}\n active={month === option}\n onClick={() => handleSelectMonth(option)}\n />\n )\n })}\n </MDropdownMenu>\n )}\n\n <span className=\"input-exp-date-separator\">/</span>\n\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !year && 'placeholder', 'static')}>\n <span>{yearLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n yearMenuOpen && 'open',\n !year && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{yearLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setYearMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {yearOptions.map((option) => (\n <MDropdownItem\n key={option}\n label={String(option)}\n active={year === String(option)}\n onClick={() => handleSelectYear(String(option))}\n />\n ))}\n </MDropdownMenu>\n )}\n </div>\n\n {clearable && hasContent && !segmentDisabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onClick={(event) => {\n event.stopPropagation()\n handleClear()\n }}\n tabIndex={-1}\n aria-label=\"Clear input\"\n >\n <MCloseIcon />\n </button>\n )}\n\n {endIcon && <span className=\"end-icon\">{endIcon}</span>}\n </div>\n\n {(resolvedErrorText || helperText) && (\n <div className=\"bottom-row\">\n <span>\n {resolvedErrorText && (\n <span id={id ? `${id}-error` : undefined} className=\"field-error\" role=\"alert\">\n {resolvedErrorText}\n </span>\n )}\n {!resolvedErrorText && helperText && (\n <span id={id ? `${id}-helper` : undefined} className=\"field-helper\">\n {helperText}\n </span>\n )}\n </span>\n </div>\n )}\n </div>\n )\n})\n","import {forwardRef, useCallback, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputCVCProps} from './MInputCVC.types'\nimport {MInput} from '../MInput'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MInputCVC.css'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction validateCvc(value: string, length: 3 | 4): ValidationResult {\n if (!value) {\n return OK\n }\n\n const digits = stripDigits(value)\n\n if (digits.length !== length) {\n return {valid: false, error: `Security code must have ${length} digits`}\n }\n\n return OK\n}\n\nexport const MInputCVC = forwardRef<HTMLInputElement, MInputCVCProps>(function MInputCVC(\n {\n length = 3,\n validateOnBlur = true,\n validateOnChange = false,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n onKeyDown,\n error,\n errorText,\n success,\n placeholder,\n className,\n inputClassName,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(() =>\n stripDigits(defaultValue?.toString() ?? '').slice(0, length)\n )\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? stripDigits(value.toString()).slice(0, length) : internalValue\n\n const runValidation = useCallback(\n (nextValue: string) => {\n const result = validateCvc(nextValue, length)\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [length, onValidationChange]\n )\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextValue = stripDigits(event.target.value).slice(0, length)\n\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n\n if (validateOnChange && touched) {\n runValidation(nextValue)\n }\n\n onChange?.(event)\n },\n [length, onChange, onValueChange, runValidation, touched, validateOnChange, value]\n )\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n onKeyDown?.(event)\n return\n }\n\n if (event.ctrlKey || event.metaKey) {\n onKeyDown?.(event)\n return\n }\n\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault()\n }\n\n onKeyDown?.(event)\n },\n [onKeyDown]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess = !isError && (success !== undefined ? success : touched && currentValue.length === length)\n const endIcon = isSuccess ? <MCheckIcon /> : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder ?? ''.padEnd(length, '0')}\n maxLength={length}\n endIcon={endIcon}\n inputClassName={cn('input-cvc-field', inputClassName)}\n className={className}\n />\n )\n})\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./icons-lUQfZ4Jr.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-B9k45kH-.cjs`);require(`./core-w629c4ND.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a({value:n=0,max:a=5,color:o=`warning`,size:s=`md`,readOnly:c=!1,onChange:l,className:u,...d}){let[f,p]=(0,r.useState)(null),m=f??n,h=e=>{c||l?.(e)};return(0,i.jsx)(`div`,{className:t.t(`rating`,`color-${o}`,s,c&&`read-only`,u),role:`radiogroup`,"aria-label":`MRating`,onMouseLeave:()=>p(null),...d,children:Array.from({length:a},(t,n)=>{let r=n+1,a=m>=r;return(0,i.jsx)(`button`,{type:`button`,className:`rating-star`,onClick:()=>h(r),onMouseEnter:()=>!c&&p(r),"aria-label":`${r} star${r>1?`s`:``}`,tabIndex:c?-1:0,disabled:c,children:(0,i.jsx)(`span`,{className:`star-icon`,"aria-hidden":`true`,children:a?(0,i.jsx)(e.ai,{}):(0,i.jsx)(e.oi,{})})},n)})})}var o=[{version:1,size:21,dataWords:19,ecWords:7,byteLimit:17,align:[]},{version:2,size:25,dataWords:34,ecWords:10,byteLimit:32,align:[6,18]},{version:3,size:29,dataWords:55,ecWords:15,byteLimit:53,align:[6,22]},{version:4,size:33,dataWords:80,ecWords:20,byteLimit:78,align:[6,26]},{version:5,size:37,dataWords:108,ecWords:26,byteLimit:106,align:[6,30]}],s=[`111011111000100`,`111001011110011`,`111110110101010`,`111100010011101`,`110011000101111`,`110001100011000`,`110110001000001`,`110100101110110`],c=Array(512).fill(0),l=Array(256).fill(0),u=new TextEncoder,d=!1;function f(){if(d)return;let e=1;for(let t=0;t<255;t+=1)c[t]=e,l[e]=t,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e+=1)c[e]=c[e-255];d=!0}function p(e,t){return!e||!t?0:(f(),c[l[e]+l[t]])}function m(e,t){let n=Array(e.length+t.length-1).fill(0);for(let r=0;r<e.length;r+=1)for(let i=0;i<t.length;i+=1)n[r+i]^=p(e[r],t[i]);return n}function h(e){f();let t=[1];for(let n=0;n<e;n+=1)t=m(t,[1,c[n]]);return t}function g(e,t){let n=h(t),r=[...e,...Array(t).fill(0)];for(let t=0;t<e.length;t+=1){let e=r[t];if(e)for(let i=0;i<n.length;i+=1)r[t+i]^=p(n[i],e)}return r.slice(-t)}function _(e,t,n){for(let r=n-1;r>=0;--r)e.push(t>>r&1)}function v(e){let t=[];for(let n=0;n<e.length;n+=8){let r=0;for(let t=0;t<8;t+=1)r=r<<1|(e[n+t]??0);t.push(r)}return t}function y(e){return o.find(t=>e<=t.byteLimit)??null}function b(e,t){let n=Array.from(u.encode(e)),r=[],i=t.dataWords*8;for(_(r,4,4),_(r,n.length,8),n.forEach(e=>_(r,e,8)),_(r,0,Math.min(4,i-r.length));r.length%8!=0;)r.push(0);let a=[236,17];for(let e=0;r.length<i;e+=1)_(r,a[e%2],8);let o=v(r);return[...o,...g(o,t.ecWords)]}function x(e){return Array.from({length:e},()=>Array(e).fill(null))}function S(e,t,n,r,i){n<0||r<0||n>=e.length||r>=e.length||(e[n][r]=i,t[n][r]=!0)}function C(e,t,n,r){for(let i=-1;i<=7;i+=1)for(let a=-1;a<=7;a+=1){let o=i===-1||i===7||a===-1||a===7,s=i===0||i===6||a===0||a===6,c=i>=2&&i<=4&&a>=2&&a<=4;S(e,t,n+i,r+a,!o&&(s||c))}}function w(e,t,n,r){if(!t[n][r])for(let i=-2;i<=2;i+=1)for(let a=-2;a<=2;a+=1){let o=Math.max(Math.abs(i),Math.abs(a))===2,s=i===0&&a===0;S(e,t,n+i,r+a,o||s)}}function T(e){let t=e.length,n=[[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,7],[8,8],[7,8],[5,8],[4,8],[3,8],[2,8],[1,8],[0,8]],r=[[t-1,8],[t-2,8],[t-3,8],[t-4,8],[t-5,8],[t-6,8],[t-7,8],[8,t-8],[8,t-7],[8,t-6],[8,t-5],[8,t-4],[8,t-3],[8,t-2],[8,t-1]];[...n,...r].forEach(([t,n])=>{e[t][n]=!0})}function E(e){let t=x(e.size),n=Array.from({length:e.size},()=>Array(e.size).fill(!1));C(t,n,0,0),C(t,n,0,e.size-7),C(t,n,e.size-7,0);for(let r=8;r<e.size-8;r+=1)S(t,n,6,r,r%2==0),S(t,n,r,6,r%2==0);return e.align.forEach(r=>{e.align.forEach(e=>{w(t,n,r,e)})}),T(n),S(t,n,e.version*4+9,8,!0),{grid:t,marks:n}}function D(e,t,n){let r=e.length,i=[];n.forEach(e=>_(i,e,8));let a=0,o=!0;for(let n=r-1;n>0;n-=2){n===6&&--n;let s=o?r-1:0;for(;s>=0&&s<r;){for(let r=0;r<2;r+=1){let o=n-r;t[s][o]||(e[s][o]=i[a]===1,a+=1)}s+=o?-1:1}o=!o}for(let n=0;n<r;n+=1)for(let i=0;i<r;i+=1)!t[n][i]&&e[n][i]==null&&(e[n][i]=!1)}function O(e,t,n){switch(e){case 0:return(t+n)%2==0;case 1:return t%2==0;case 2:return n%3==0;case 3:return(t+n)%3==0;case 4:return(Math.floor(t/2)+Math.floor(n/3))%2==0;case 5:return t*n%2+t*n%3==0;case 6:return(t*n%2+t*n%3)%2==0;case 7:return((t+n)%2+t*n%3)%2==0;default:return!1}}function k(e,t,n){return e.map((e,r)=>e.map((e,i)=>t[r][i]?!!e:O(n,r,i)?!e:!!e))}function A(e,t){let n=e.length,r=s[t],i=[[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,7],[8,8],[7,8],[5,8],[4,8],[3,8],[2,8],[1,8],[0,8]],a=[[n-1,8],[n-2,8],[n-3,8],[n-4,8],[n-5,8],[n-6,8],[n-7,8],[8,n-8],[8,n-7],[8,n-6],[8,n-5],[8,n-4],[8,n-3],[8,n-2],[8,n-1]],o=e.map(e=>[...e]);return r.split(``).forEach((e,t)=>{let n=e===`1`,[r,s]=i[t],[c,l]=a[t];o[r][s]=n,o[c][l]=n}),o}function j(e){let t=0,n=1;for(let r=1;r<=e.length;r+=1){if(e[r]===e[r-1]){n+=1;continue}n>=5&&(t+=n-2),n=1}return t}function M(e){let t=0;for(let n=0;n<e.length-1;n+=1)for(let r=0;r<e.length-1;r+=1){let i=e[n][r];i===e[n][r+1]&&i===e[n+1][r]&&i===e[n+1][r+1]&&(t+=3)}return t}function N(e){let t=0;for(let n=0;n<=e.length-11;n+=1){let r=e.slice(n,n+11).map(e=>e?`1`:`0`).join(``);(r===`10111010000`||r===`00001011101`)&&(t+=40)}return t}function P(e){let t=e.length*e.length,n=e.flat().filter(Boolean).length*100/t;return Math.floor(Math.abs(n-50)/5)*10}function F(e){let t=0;for(let n=0;n<e.length;n+=1)t+=j(e[n]),t+=N(e[n]);for(let n=0;n<e.length;n+=1){let r=e.map(e=>e[n]);t+=j(r),t+=N(r)}return t+=M(e),t+=P(e),t}function I(e){let t=y(Array.from(u.encode(e)).length);if(!t)return null;let{grid:n,marks:r}=E(t);D(n,r,b(e,t));let i=0,a=A(k(n,r,0),0),o=F(a);for(let e=1;e<8;e+=1){let t=A(k(n,r,e),e),s=F(t);s<o&&(i=e,a=t,o=s)}return{grid:a,mask:i}}function L({value:r,size:a=144,padding:o=4,fg:s=`#111827`,bg:c=`#ffffff`,status:l=`idle`,statusLabel:u,className:d,style:f,...p}){let m=I(r);if(!m)return null;let h=m.grid.length+o*2,g={"--qr-size":`${a}px`,...f},_=l===`success`?`success`:l===`error`?`error`:`primary`;return(0,i.jsxs)(`div`,{className:t.t(`qr-code`,l!==`idle`&&`status-${l}`,d),style:g,"aria-busy":l===`loading`||void 0,...p,children:[(0,i.jsxs)(`svg`,{className:t.t(l!==`idle`&&`dimmed`),viewBox:`0 0 ${h} ${h}`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,role:`img`,"aria-label":`QR code`,children:[(0,i.jsx)(`rect`,{width:h,height:h,fill:c}),m.grid.map((e,t)=>e.map((e,n)=>e?(0,i.jsx)(`rect`,{x:n+o,y:t+o,width:`1`,height:`1`,fill:s},`${t}-${n}`):null))]}),l!==`idle`&&(0,i.jsx)(`div`,{className:`qr-status-center`,"aria-label":u??`QR code ${l}`,role:`status`,children:l===`loading`?(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,loading:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`}):l===`success`?(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`,children:(0,i.jsx)(e.ui,{})}):(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`,children:(0,i.jsx)(e.di,{})})})]})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return L}});
|
|
2
|
-
//# sourceMappingURL=MQrCode-BXXTLtBP.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MQrCode-BXXTLtBP.cjs","names":[],"sources":["../src/components/display/MRating/MRating.tsx","../src/components/display/MQrCode/MQrCode.tsx"],"sourcesContent":["import {useState} from 'react'\nimport type {MRatingProps} from './MRating.types'\nimport {MStarFillIcon, MStarIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MRating.css'\n\n// Render an interactive star-based rating control.\nexport function MRating({\n value = 0,\n max = 5,\n color = 'warning',\n size = 'md',\n readOnly = false,\n onChange,\n className,\n ...rest\n}: MRatingProps) {\n const [hovered, setHovered] = useState<number | null>(null)\n const displayValue = hovered ?? value\n\n const handleClick = (index: number) => {\n if (readOnly) return\n onChange?.(index)\n }\n\n return (\n <div\n className={cn('rating', `color-${color}`, size, readOnly && 'read-only', className)}\n role=\"radiogroup\"\n aria-label=\"MRating\"\n onMouseLeave={() => setHovered(null)}\n {...rest}\n >\n {Array.from({length: max}, (_, i) => {\n const starIndex = i + 1\n const filled = displayValue >= starIndex\n return (\n <button\n key={i}\n type=\"button\"\n className=\"rating-star\"\n onClick={() => handleClick(starIndex)}\n onMouseEnter={() => !readOnly && setHovered(starIndex)}\n aria-label={`${starIndex} star${starIndex > 1 ? 's' : ''}`}\n tabIndex={readOnly ? -1 : 0}\n disabled={readOnly}\n >\n <span className=\"star-icon\" aria-hidden=\"true\">\n {filled ? <MStarFillIcon /> : <MStarIcon />}\n </span>\n </button>\n )\n })}\n </div>\n )\n}\n","import type {CSSProperties} from 'react'\nimport type {MQrCodeProps} from './MQrCode.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls/MButton'\nimport {MErrorIcon, MSuccessIcon} from '../../../icons'\nimport './MQrCode.css'\n\ntype VersionInfo = {\n version: number\n size: number\n dataWords: number\n ecWords: number\n byteLimit: number\n align: number[]\n}\n\nconst versions: VersionInfo[] = [\n {version: 1, size: 21, dataWords: 19, ecWords: 7, byteLimit: 17, align: []},\n {version: 2, size: 25, dataWords: 34, ecWords: 10, byteLimit: 32, align: [6, 18]},\n {version: 3, size: 29, dataWords: 55, ecWords: 15, byteLimit: 53, align: [6, 22]},\n {version: 4, size: 33, dataWords: 80, ecWords: 20, byteLimit: 78, align: [6, 26]},\n {version: 5, size: 37, dataWords: 108, ecWords: 26, byteLimit: 106, align: [6, 30]},\n]\n\nconst formatBits = [\n '111011111000100',\n '111001011110011',\n '111110110101010',\n '111100010011101',\n '110011000101111',\n '110001100011000',\n '110110001000001',\n '110100101110110',\n]\n\nconst expTable = new Array<number>(512).fill(0)\nconst logTable = new Array<number>(256).fill(0)\nconst encoder = new TextEncoder()\n\nlet fieldReady = false\n\n// Prepare log/exp lookup tables for QR Reed-Solomon math.\nfunction ensureField() {\n if (fieldReady) return\n\n let value = 1\n\n for (let i = 0; i < 255; i += 1) {\n expTable[i] = value\n logTable[value] = i\n value <<= 1\n\n if (value & 0x100) {\n value ^= 0x11d\n }\n }\n\n for (let i = 255; i < 512; i += 1) {\n expTable[i] = expTable[i - 255]\n }\n\n fieldReady = true\n}\n\n// Multiply two values inside the QR Galois field.\nfunction gfMul(a: number, b: number) {\n if (!a || !b) return 0\n ensureField()\n return expTable[logTable[a] + logTable[b]]\n}\n\n// Multiply generator polynomials used for error correction.\nfunction polyMul(left: number[], right: number[]) {\n const next = new Array(left.length + right.length - 1).fill(0)\n\n for (let row = 0; row < left.length; row += 1) {\n for (let col = 0; col < right.length; col += 1) {\n next[row + col] ^= gfMul(left[row], right[col])\n }\n }\n\n return next\n}\n\n// Build the generator polynomial for the chosen correction size.\nfunction makeGenerator(ecWords: number) {\n ensureField()\n\n let poly = [1]\n\n for (let i = 0; i < ecWords; i += 1) {\n poly = polyMul(poly, [1, expTable[i]])\n }\n\n return poly\n}\n\n// Compute Reed-Solomon error words for the current payload.\nfunction makeErrorWords(data: number[], ecWords: number) {\n const poly = makeGenerator(ecWords)\n const work = [...data, ...new Array(ecWords).fill(0)]\n\n for (let i = 0; i < data.length; i += 1) {\n const factor = work[i]\n\n if (!factor) continue\n\n for (let j = 0; j < poly.length; j += 1) {\n work[i + j] ^= gfMul(poly[j], factor)\n }\n }\n\n return work.slice(-ecWords)\n}\n\n// Push bits in MSB order so QR payload building stays explicit.\nfunction pushBits(target: number[], value: number, size: number) {\n for (let bit = size - 1; bit >= 0; bit -= 1) {\n target.push((value >> bit) & 1)\n }\n}\n\n// Repack a flat bit list into QR codewords.\nfunction bitsToBytes(bits: number[]) {\n const bytes: number[] = []\n\n for (let i = 0; i < bits.length; i += 8) {\n let byte = 0\n\n for (let bit = 0; bit < 8; bit += 1) {\n byte = (byte << 1) | (bits[i + bit] ?? 0)\n }\n\n bytes.push(byte)\n }\n\n return bytes\n}\n\n// Pick the smallest supported QR version for the payload.\nfunction pickVersion(length: number) {\n return versions.find((item) => length <= item.byteLimit) ?? null\n}\n\n// Encode a string as byte mode payload plus correction words.\nfunction encodeData(value: string, info: VersionInfo) {\n const data = Array.from(encoder.encode(value))\n const bits: number[] = []\n const capacity = info.dataWords * 8\n\n pushBits(bits, 0b0100, 4)\n pushBits(bits, data.length, 8)\n\n data.forEach((byte) => pushBits(bits, byte, 8))\n\n pushBits(bits, 0, Math.min(4, capacity - bits.length))\n\n while (bits.length % 8 !== 0) {\n bits.push(0)\n }\n\n const pads = [0xec, 0x11]\n\n for (let i = 0; bits.length < capacity; i += 1) {\n pushBits(bits, pads[i % 2], 8)\n }\n\n const dataWords = bitsToBytes(bits)\n return [...dataWords, ...makeErrorWords(dataWords, info.ecWords)]\n}\n\n// Create an empty matrix before function patterns are placed.\nfunction makeGrid(size: number) {\n return Array.from({length: size}, () => Array<boolean | null>(size).fill(null))\n}\n\n// Write a module and mark it as reserved.\nfunction setCell(grid: (boolean | null)[][], marks: boolean[][], row: number, col: number, dark: boolean) {\n if (row < 0 || col < 0 || row >= grid.length || col >= grid.length) return\n grid[row][col] = dark\n marks[row][col] = true\n}\n\n// Place one finder pattern with its quiet white border.\nfunction placeFinder(grid: (boolean | null)[][], marks: boolean[][], top: number, left: number) {\n for (let row = -1; row <= 7; row += 1) {\n for (let col = -1; col <= 7; col += 1) {\n const edge = row === -1 || row === 7 || col === -1 || col === 7\n const outer = row === 0 || row === 6 || col === 0 || col === 6\n const inner = row >= 2 && row <= 4 && col >= 2 && col <= 4\n setCell(grid, marks, top + row, left + col, !edge && (outer || inner))\n }\n }\n}\n\n// Place one alignment pattern unless another function block already owns it.\nfunction placeAlign(grid: (boolean | null)[][], marks: boolean[][], center: number, middle: number) {\n if (marks[center][middle]) return\n\n for (let row = -2; row <= 2; row += 1) {\n for (let col = -2; col <= 2; col += 1) {\n const edge = Math.max(Math.abs(row), Math.abs(col)) === 2\n const dot = row === 0 && col === 0\n setCell(grid, marks, center + row, middle + col, edge || dot)\n }\n }\n}\n\n// Reserve format info cells before data placement starts.\nfunction markFormat(marks: boolean[][]) {\n const size = marks.length\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n\n ;[...left, ...right].forEach(([row, col]) => {\n marks[row][col] = true\n })\n}\n\n// Build the static QR scaffolding: finders, timing and align blocks.\nfunction makeBase(info: VersionInfo) {\n const grid = makeGrid(info.size)\n const marks = Array.from({length: info.size}, () => Array<boolean>(info.size).fill(false))\n\n placeFinder(grid, marks, 0, 0)\n placeFinder(grid, marks, 0, info.size - 7)\n placeFinder(grid, marks, info.size - 7, 0)\n\n for (let i = 8; i < info.size - 8; i += 1) {\n setCell(grid, marks, 6, i, i % 2 === 0)\n setCell(grid, marks, i, 6, i % 2 === 0)\n }\n\n info.align.forEach((row) => {\n info.align.forEach((col) => {\n placeAlign(grid, marks, row, col)\n })\n })\n\n markFormat(marks)\n setCell(grid, marks, info.version * 4 + 9, 8, true)\n\n return {grid, marks}\n}\n\n// Fill open cells with payload bits using the QR zig-zag path.\nfunction placeData(grid: (boolean | null)[][], marks: boolean[][], words: number[]) {\n const size = grid.length\n const bits: number[] = []\n\n words.forEach((word) => pushBits(bits, word, 8))\n\n let index = 0\n let up = true\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) {\n col -= 1\n }\n\n let row = up ? size - 1 : 0\n\n while (row >= 0 && row < size) {\n for (let offset = 0; offset < 2; offset += 1) {\n const x = col - offset\n\n if (marks[row][x]) continue\n\n grid[row][x] = bits[index] === 1\n index += 1\n }\n\n row += up ? -1 : 1\n }\n\n up = !up\n }\n\n for (let row = 0; row < size; row += 1) {\n for (let col = 0; col < size; col += 1) {\n if (!marks[row][col] && grid[row][col] == null) {\n grid[row][col] = false\n }\n }\n }\n}\n\n// Check whether the current mask flips this module.\nfunction shouldFlip(mask: number, row: number, col: number) {\n switch (mask) {\n case 0:\n return (row + col) % 2 === 0\n case 1:\n return row % 2 === 0\n case 2:\n return col % 3 === 0\n case 3:\n return (row + col) % 3 === 0\n case 4:\n return (Math.floor(row / 2) + Math.floor(col / 3)) % 2 === 0\n case 5:\n return ((row * col) % 2) + ((row * col) % 3) === 0\n case 6:\n return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0\n case 7:\n return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0\n default:\n return false\n }\n}\n\n// Apply one mask while leaving reserved cells untouched.\nfunction applyMask(grid: (boolean | null)[][], marks: boolean[][], mask: number) {\n return grid.map((line, row) =>\n line.map((cell, col) => {\n if (marks[row][col]) return Boolean(cell)\n return shouldFlip(mask, row, col) ? !cell : Boolean(cell)\n })\n )\n}\n\n// Write format bits into both reserved format strips.\nfunction withFormat(grid: boolean[][], mask: number) {\n const size = grid.length\n const bits = formatBits[mask]\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n const next = grid.map((line) => [...line])\n\n bits.split('').forEach((bit, index) => {\n const dark = bit === '1'\n const [leftRow, leftCol] = left[index]\n const [rightRow, rightCol] = right[index]\n\n next[leftRow][leftCol] = dark\n next[rightRow][rightCol] = dark\n })\n\n return next\n}\n\n// Penalize long runs of the same color.\nfunction runPenalty(values: boolean[]) {\n let score = 0\n let run = 1\n\n for (let i = 1; i <= values.length; i += 1) {\n if (values[i] === values[i - 1]) {\n run += 1\n continue\n }\n\n if (run >= 5) {\n score += run - 2\n }\n\n run = 1\n }\n\n return score\n}\n\n// Penalize large flat blocks that scan poorly.\nfunction blockPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length - 1; row += 1) {\n for (let col = 0; col < grid.length - 1; col += 1) {\n const cell = grid[row][col]\n\n if (cell === grid[row][col + 1] && cell === grid[row + 1][col] && cell === grid[row + 1][col + 1]) {\n score += 3\n }\n }\n }\n\n return score\n}\n\n// Penalize patterns that look too similar to finder markers.\nfunction finderPenalty(values: boolean[]) {\n const matchA = '10111010000'\n const matchB = '00001011101'\n let score = 0\n\n for (let i = 0; i <= values.length - 11; i += 1) {\n const slice = values\n .slice(i, i + 11)\n .map((cell) => (cell ? '1' : '0'))\n .join('')\n\n if (slice === matchA || slice === matchB) {\n score += 40\n }\n }\n\n return score\n}\n\n// Keep the dark/light balance near the QR target.\nfunction ratioPenalty(grid: boolean[][]) {\n const total = grid.length * grid.length\n const dark = grid.flat().filter(Boolean).length\n const ratio = (dark * 100) / total\n return Math.floor(Math.abs(ratio - 50) / 5) * 10\n}\n\n// Sum the standard QR penalties for one candidate matrix.\nfunction getPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length; row += 1) {\n score += runPenalty(grid[row])\n score += finderPenalty(grid[row])\n }\n\n for (let col = 0; col < grid.length; col += 1) {\n const line = grid.map((row) => row[col])\n score += runPenalty(line)\n score += finderPenalty(line)\n }\n\n score += blockPenalty(grid)\n score += ratioPenalty(grid)\n\n return score\n}\n\n// Build the final matrix and pick the mask with the lowest penalty.\nfunction makeMatrix(value: string) {\n const data = Array.from(encoder.encode(value))\n const info = pickVersion(data.length)\n\n if (!info) {\n return null\n }\n\n const {grid, marks} = makeBase(info)\n placeData(grid, marks, encodeData(value, info))\n\n let bestMask = 0\n let bestGrid = withFormat(applyMask(grid, marks, 0), 0)\n let bestScore = getPenalty(bestGrid)\n\n for (let mask = 1; mask < 8; mask += 1) {\n const masked = withFormat(applyMask(grid, marks, mask), mask)\n const score = getPenalty(masked)\n\n if (score < bestScore) {\n bestMask = mask\n bestGrid = masked\n bestScore = score\n }\n }\n\n return {grid: bestGrid, mask: bestMask}\n}\n\n// Render a local SVG QR code without adding a runtime dependency.\nexport function MQrCode({\n value,\n size = 144,\n padding = 4,\n fg = '#111827',\n bg = '#ffffff',\n status = 'idle',\n statusLabel,\n className,\n style,\n ...rest\n}: MQrCodeProps) {\n const qr = makeMatrix(value)\n\n if (!qr) {\n return null\n }\n\n const dimension = qr.grid.length + padding * 2\n const nextStyle = {\n '--qr-size': `${size}px`,\n ...style,\n } as CSSProperties\n const statusColor = status === 'success' ? 'success' : status === 'error' ? 'error' : 'primary'\n\n return (\n <div\n className={cn('qr-code', status !== 'idle' && `status-${status}`, className)}\n style={nextStyle}\n aria-busy={status === 'loading' || undefined}\n {...rest}\n >\n <svg\n className={cn(status !== 'idle' && 'dimmed')}\n viewBox={`0 0 ${dimension} ${dimension}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"QR code\"\n >\n <rect width={dimension} height={dimension} fill={bg} />\n {qr.grid.map((line, row) =>\n line.map((cell, col) =>\n cell ? (\n <rect\n key={`${row}-${col}`}\n x={col + padding}\n y={row + padding}\n width=\"1\"\n height=\"1\"\n fill={fg}\n />\n ) : null\n )\n )}\n </svg>\n {status !== 'idle' && (\n <div className=\"qr-status-center\" aria-label={statusLabel ?? `QR code ${status}`} role=\"status\">\n {status === 'loading' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n loading\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n />\n ) : status === 'success' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MSuccessIcon />\n </MButton>\n ) : (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MErrorIcon />\n </MButton>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MQrCode-CCtTkkv9.js","names":[],"sources":["../src/components/display/MRating/MRating.tsx","../src/components/display/MQrCode/MQrCode.tsx"],"sourcesContent":["import {useState} from 'react'\nimport type {MRatingProps} from './MRating.types'\nimport {MStarFillIcon, MStarIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MRating.css'\n\n// Render an interactive star-based rating control.\nexport function MRating({\n value = 0,\n max = 5,\n color = 'warning',\n size = 'md',\n readOnly = false,\n onChange,\n className,\n ...rest\n}: MRatingProps) {\n const [hovered, setHovered] = useState<number | null>(null)\n const displayValue = hovered ?? value\n\n const handleClick = (index: number) => {\n if (readOnly) return\n onChange?.(index)\n }\n\n return (\n <div\n className={cn('rating', `color-${color}`, size, readOnly && 'read-only', className)}\n role=\"radiogroup\"\n aria-label=\"MRating\"\n onMouseLeave={() => setHovered(null)}\n {...rest}\n >\n {Array.from({length: max}, (_, i) => {\n const starIndex = i + 1\n const filled = displayValue >= starIndex\n return (\n <button\n key={i}\n type=\"button\"\n className=\"rating-star\"\n onClick={() => handleClick(starIndex)}\n onMouseEnter={() => !readOnly && setHovered(starIndex)}\n aria-label={`${starIndex} star${starIndex > 1 ? 's' : ''}`}\n tabIndex={readOnly ? -1 : 0}\n disabled={readOnly}\n >\n <span className=\"star-icon\" aria-hidden=\"true\">\n {filled ? <MStarFillIcon /> : <MStarIcon />}\n </span>\n </button>\n )\n })}\n </div>\n )\n}\n","import type {CSSProperties} from 'react'\nimport type {MQrCodeProps} from './MQrCode.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls/MButton'\nimport {MErrorIcon, MSuccessIcon} from '../../../icons'\nimport './MQrCode.css'\n\ntype VersionInfo = {\n version: number\n size: number\n dataWords: number\n ecWords: number\n byteLimit: number\n align: number[]\n}\n\nconst versions: VersionInfo[] = [\n {version: 1, size: 21, dataWords: 19, ecWords: 7, byteLimit: 17, align: []},\n {version: 2, size: 25, dataWords: 34, ecWords: 10, byteLimit: 32, align: [6, 18]},\n {version: 3, size: 29, dataWords: 55, ecWords: 15, byteLimit: 53, align: [6, 22]},\n {version: 4, size: 33, dataWords: 80, ecWords: 20, byteLimit: 78, align: [6, 26]},\n {version: 5, size: 37, dataWords: 108, ecWords: 26, byteLimit: 106, align: [6, 30]},\n]\n\nconst formatBits = [\n '111011111000100',\n '111001011110011',\n '111110110101010',\n '111100010011101',\n '110011000101111',\n '110001100011000',\n '110110001000001',\n '110100101110110',\n]\n\nconst expTable = new Array<number>(512).fill(0)\nconst logTable = new Array<number>(256).fill(0)\nconst encoder = new TextEncoder()\n\nlet fieldReady = false\n\n// Prepare log/exp lookup tables for QR Reed-Solomon math.\nfunction ensureField() {\n if (fieldReady) return\n\n let value = 1\n\n for (let i = 0; i < 255; i += 1) {\n expTable[i] = value\n logTable[value] = i\n value <<= 1\n\n if (value & 0x100) {\n value ^= 0x11d\n }\n }\n\n for (let i = 255; i < 512; i += 1) {\n expTable[i] = expTable[i - 255]\n }\n\n fieldReady = true\n}\n\n// Multiply two values inside the QR Galois field.\nfunction gfMul(a: number, b: number) {\n if (!a || !b) return 0\n ensureField()\n return expTable[logTable[a] + logTable[b]]\n}\n\n// Multiply generator polynomials used for error correction.\nfunction polyMul(left: number[], right: number[]) {\n const next = new Array(left.length + right.length - 1).fill(0)\n\n for (let row = 0; row < left.length; row += 1) {\n for (let col = 0; col < right.length; col += 1) {\n next[row + col] ^= gfMul(left[row], right[col])\n }\n }\n\n return next\n}\n\n// Build the generator polynomial for the chosen correction size.\nfunction makeGenerator(ecWords: number) {\n ensureField()\n\n let poly = [1]\n\n for (let i = 0; i < ecWords; i += 1) {\n poly = polyMul(poly, [1, expTable[i]])\n }\n\n return poly\n}\n\n// Compute Reed-Solomon error words for the current payload.\nfunction makeErrorWords(data: number[], ecWords: number) {\n const poly = makeGenerator(ecWords)\n const work = [...data, ...new Array(ecWords).fill(0)]\n\n for (let i = 0; i < data.length; i += 1) {\n const factor = work[i]\n\n if (!factor) continue\n\n for (let j = 0; j < poly.length; j += 1) {\n work[i + j] ^= gfMul(poly[j], factor)\n }\n }\n\n return work.slice(-ecWords)\n}\n\n// Push bits in MSB order so QR payload building stays explicit.\nfunction pushBits(target: number[], value: number, size: number) {\n for (let bit = size - 1; bit >= 0; bit -= 1) {\n target.push((value >> bit) & 1)\n }\n}\n\n// Repack a flat bit list into QR codewords.\nfunction bitsToBytes(bits: number[]) {\n const bytes: number[] = []\n\n for (let i = 0; i < bits.length; i += 8) {\n let byte = 0\n\n for (let bit = 0; bit < 8; bit += 1) {\n byte = (byte << 1) | (bits[i + bit] ?? 0)\n }\n\n bytes.push(byte)\n }\n\n return bytes\n}\n\n// Pick the smallest supported QR version for the payload.\nfunction pickVersion(length: number) {\n return versions.find((item) => length <= item.byteLimit) ?? null\n}\n\n// Encode a string as byte mode payload plus correction words.\nfunction encodeData(value: string, info: VersionInfo) {\n const data = Array.from(encoder.encode(value))\n const bits: number[] = []\n const capacity = info.dataWords * 8\n\n pushBits(bits, 0b0100, 4)\n pushBits(bits, data.length, 8)\n\n data.forEach((byte) => pushBits(bits, byte, 8))\n\n pushBits(bits, 0, Math.min(4, capacity - bits.length))\n\n while (bits.length % 8 !== 0) {\n bits.push(0)\n }\n\n const pads = [0xec, 0x11]\n\n for (let i = 0; bits.length < capacity; i += 1) {\n pushBits(bits, pads[i % 2], 8)\n }\n\n const dataWords = bitsToBytes(bits)\n return [...dataWords, ...makeErrorWords(dataWords, info.ecWords)]\n}\n\n// Create an empty matrix before function patterns are placed.\nfunction makeGrid(size: number) {\n return Array.from({length: size}, () => Array<boolean | null>(size).fill(null))\n}\n\n// Write a module and mark it as reserved.\nfunction setCell(grid: (boolean | null)[][], marks: boolean[][], row: number, col: number, dark: boolean) {\n if (row < 0 || col < 0 || row >= grid.length || col >= grid.length) return\n grid[row][col] = dark\n marks[row][col] = true\n}\n\n// Place one finder pattern with its quiet white border.\nfunction placeFinder(grid: (boolean | null)[][], marks: boolean[][], top: number, left: number) {\n for (let row = -1; row <= 7; row += 1) {\n for (let col = -1; col <= 7; col += 1) {\n const edge = row === -1 || row === 7 || col === -1 || col === 7\n const outer = row === 0 || row === 6 || col === 0 || col === 6\n const inner = row >= 2 && row <= 4 && col >= 2 && col <= 4\n setCell(grid, marks, top + row, left + col, !edge && (outer || inner))\n }\n }\n}\n\n// Place one alignment pattern unless another function block already owns it.\nfunction placeAlign(grid: (boolean | null)[][], marks: boolean[][], center: number, middle: number) {\n if (marks[center][middle]) return\n\n for (let row = -2; row <= 2; row += 1) {\n for (let col = -2; col <= 2; col += 1) {\n const edge = Math.max(Math.abs(row), Math.abs(col)) === 2\n const dot = row === 0 && col === 0\n setCell(grid, marks, center + row, middle + col, edge || dot)\n }\n }\n}\n\n// Reserve format info cells before data placement starts.\nfunction markFormat(marks: boolean[][]) {\n const size = marks.length\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n\n ;[...left, ...right].forEach(([row, col]) => {\n marks[row][col] = true\n })\n}\n\n// Build the static QR scaffolding: finders, timing and align blocks.\nfunction makeBase(info: VersionInfo) {\n const grid = makeGrid(info.size)\n const marks = Array.from({length: info.size}, () => Array<boolean>(info.size).fill(false))\n\n placeFinder(grid, marks, 0, 0)\n placeFinder(grid, marks, 0, info.size - 7)\n placeFinder(grid, marks, info.size - 7, 0)\n\n for (let i = 8; i < info.size - 8; i += 1) {\n setCell(grid, marks, 6, i, i % 2 === 0)\n setCell(grid, marks, i, 6, i % 2 === 0)\n }\n\n info.align.forEach((row) => {\n info.align.forEach((col) => {\n placeAlign(grid, marks, row, col)\n })\n })\n\n markFormat(marks)\n setCell(grid, marks, info.version * 4 + 9, 8, true)\n\n return {grid, marks}\n}\n\n// Fill open cells with payload bits using the QR zig-zag path.\nfunction placeData(grid: (boolean | null)[][], marks: boolean[][], words: number[]) {\n const size = grid.length\n const bits: number[] = []\n\n words.forEach((word) => pushBits(bits, word, 8))\n\n let index = 0\n let up = true\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) {\n col -= 1\n }\n\n let row = up ? size - 1 : 0\n\n while (row >= 0 && row < size) {\n for (let offset = 0; offset < 2; offset += 1) {\n const x = col - offset\n\n if (marks[row][x]) continue\n\n grid[row][x] = bits[index] === 1\n index += 1\n }\n\n row += up ? -1 : 1\n }\n\n up = !up\n }\n\n for (let row = 0; row < size; row += 1) {\n for (let col = 0; col < size; col += 1) {\n if (!marks[row][col] && grid[row][col] == null) {\n grid[row][col] = false\n }\n }\n }\n}\n\n// Check whether the current mask flips this module.\nfunction shouldFlip(mask: number, row: number, col: number) {\n switch (mask) {\n case 0:\n return (row + col) % 2 === 0\n case 1:\n return row % 2 === 0\n case 2:\n return col % 3 === 0\n case 3:\n return (row + col) % 3 === 0\n case 4:\n return (Math.floor(row / 2) + Math.floor(col / 3)) % 2 === 0\n case 5:\n return ((row * col) % 2) + ((row * col) % 3) === 0\n case 6:\n return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0\n case 7:\n return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0\n default:\n return false\n }\n}\n\n// Apply one mask while leaving reserved cells untouched.\nfunction applyMask(grid: (boolean | null)[][], marks: boolean[][], mask: number) {\n return grid.map((line, row) =>\n line.map((cell, col) => {\n if (marks[row][col]) return Boolean(cell)\n return shouldFlip(mask, row, col) ? !cell : Boolean(cell)\n })\n )\n}\n\n// Write format bits into both reserved format strips.\nfunction withFormat(grid: boolean[][], mask: number) {\n const size = grid.length\n const bits = formatBits[mask]\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n const next = grid.map((line) => [...line])\n\n bits.split('').forEach((bit, index) => {\n const dark = bit === '1'\n const [leftRow, leftCol] = left[index]\n const [rightRow, rightCol] = right[index]\n\n next[leftRow][leftCol] = dark\n next[rightRow][rightCol] = dark\n })\n\n return next\n}\n\n// Penalize long runs of the same color.\nfunction runPenalty(values: boolean[]) {\n let score = 0\n let run = 1\n\n for (let i = 1; i <= values.length; i += 1) {\n if (values[i] === values[i - 1]) {\n run += 1\n continue\n }\n\n if (run >= 5) {\n score += run - 2\n }\n\n run = 1\n }\n\n return score\n}\n\n// Penalize large flat blocks that scan poorly.\nfunction blockPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length - 1; row += 1) {\n for (let col = 0; col < grid.length - 1; col += 1) {\n const cell = grid[row][col]\n\n if (cell === grid[row][col + 1] && cell === grid[row + 1][col] && cell === grid[row + 1][col + 1]) {\n score += 3\n }\n }\n }\n\n return score\n}\n\n// Penalize patterns that look too similar to finder markers.\nfunction finderPenalty(values: boolean[]) {\n const matchA = '10111010000'\n const matchB = '00001011101'\n let score = 0\n\n for (let i = 0; i <= values.length - 11; i += 1) {\n const slice = values\n .slice(i, i + 11)\n .map((cell) => (cell ? '1' : '0'))\n .join('')\n\n if (slice === matchA || slice === matchB) {\n score += 40\n }\n }\n\n return score\n}\n\n// Keep the dark/light balance near the QR target.\nfunction ratioPenalty(grid: boolean[][]) {\n const total = grid.length * grid.length\n const dark = grid.flat().filter(Boolean).length\n const ratio = (dark * 100) / total\n return Math.floor(Math.abs(ratio - 50) / 5) * 10\n}\n\n// Sum the standard QR penalties for one candidate matrix.\nfunction getPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length; row += 1) {\n score += runPenalty(grid[row])\n score += finderPenalty(grid[row])\n }\n\n for (let col = 0; col < grid.length; col += 1) {\n const line = grid.map((row) => row[col])\n score += runPenalty(line)\n score += finderPenalty(line)\n }\n\n score += blockPenalty(grid)\n score += ratioPenalty(grid)\n\n return score\n}\n\n// Build the final matrix and pick the mask with the lowest penalty.\nfunction makeMatrix(value: string) {\n const data = Array.from(encoder.encode(value))\n const info = pickVersion(data.length)\n\n if (!info) {\n return null\n }\n\n const {grid, marks} = makeBase(info)\n placeData(grid, marks, encodeData(value, info))\n\n let bestMask = 0\n let bestGrid = withFormat(applyMask(grid, marks, 0), 0)\n let bestScore = getPenalty(bestGrid)\n\n for (let mask = 1; mask < 8; mask += 1) {\n const masked = withFormat(applyMask(grid, marks, mask), mask)\n const score = getPenalty(masked)\n\n if (score < bestScore) {\n bestMask = mask\n bestGrid = masked\n bestScore = score\n }\n }\n\n return {grid: bestGrid, mask: bestMask}\n}\n\n// Render a local SVG QR code without adding a runtime dependency.\nexport function MQrCode({\n value,\n size = 144,\n padding = 4,\n fg = '#111827',\n bg = '#ffffff',\n status = 'idle',\n statusLabel,\n className,\n style,\n ...rest\n}: MQrCodeProps) {\n const qr = makeMatrix(value)\n\n if (!qr) {\n return null\n }\n\n const dimension = qr.grid.length + padding * 2\n const nextStyle = {\n '--qr-size': `${size}px`,\n ...style,\n } as CSSProperties\n const statusColor = status === 'success' ? 'success' : status === 'error' ? 'error' : 'primary'\n\n return (\n <div\n className={cn('qr-code', status !== 'idle' && `status-${status}`, className)}\n style={nextStyle}\n aria-busy={status === 'loading' || undefined}\n {...rest}\n >\n <svg\n className={cn(status !== 'idle' && 'dimmed')}\n viewBox={`0 0 ${dimension} ${dimension}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"QR code\"\n >\n <rect width={dimension} height={dimension} fill={bg} />\n {qr.grid.map((line, row) =>\n line.map((cell, col) =>\n cell ? (\n <rect\n key={`${row}-${col}`}\n x={col + padding}\n y={row + padding}\n width=\"1\"\n height=\"1\"\n fill={fg}\n />\n ) : null\n )\n )}\n </svg>\n {status !== 'idle' && (\n <div className=\"qr-status-center\" aria-label={statusLabel ?? `QR code ${status}`} role=\"status\">\n {status === 'loading' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n loading\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n />\n ) : status === 'success' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MSuccessIcon />\n </MButton>\n ) : (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MErrorIcon />\n </MButton>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-YER3QsV1.js";
|
|
2
|
-
import { t } from "./useInteractionEffect-DtpbVd77.js";
|
|
3
|
-
import { t as n } from "./MSurface-f_3vN0sd.js";
|
|
4
|
-
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
-
//#region src/components/cards/MCard/MCard.tsx
|
|
6
|
-
function a({ interactive: a = !1, stretch: o = !0, tone: s = "raised", padded: c = !1, color: l, clickEffect: d, rippleColor: f, skeleton: p = !1, spacing: m, mt: h, mb: g, ml: _, mr: v, mx: y, my: b, className: x, children: S, onPointerDown: C, ...w }) {
|
|
7
|
-
let { effectClassName: T, effectLayer: E, handlePointerDown: D } = t({
|
|
8
|
-
effect: d ?? (a ? "ripple" : "none"),
|
|
9
|
-
disabled: !a || p,
|
|
10
|
-
color: f
|
|
11
|
-
});
|
|
12
|
-
return /* @__PURE__ */ i(n, {
|
|
13
|
-
tone: s,
|
|
14
|
-
padded: c,
|
|
15
|
-
spacing: m,
|
|
16
|
-
mt: h,
|
|
17
|
-
mb: g,
|
|
18
|
-
ml: _,
|
|
19
|
-
mr: v,
|
|
20
|
-
mx: y,
|
|
21
|
-
my: b,
|
|
22
|
-
className: e("card", !o && "no-stretch", l && `color-${l}`, a && !p && "interactive", p && "skeleton", T, x),
|
|
23
|
-
onPointerDown: (e) => {
|
|
24
|
-
D(e), C?.(e);
|
|
25
|
-
},
|
|
26
|
-
...w,
|
|
27
|
-
children: [E, p ? /* @__PURE__ */ i("div", {
|
|
28
|
-
className: "card-skeleton-content",
|
|
29
|
-
children: [/* @__PURE__ */ r(u, {
|
|
30
|
-
variant: "rectangle",
|
|
31
|
-
height: "8rem"
|
|
32
|
-
}), /* @__PURE__ */ r(u, {
|
|
33
|
-
variant: "text",
|
|
34
|
-
lines: 3,
|
|
35
|
-
className: "card-skeleton-lines"
|
|
36
|
-
})]
|
|
37
|
-
}) : S]
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
function o({ className: t, children: n, ...i }) {
|
|
41
|
-
return /* @__PURE__ */ r("div", {
|
|
42
|
-
className: e("header", t),
|
|
43
|
-
...i,
|
|
44
|
-
children: n
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function s({ className: t, children: n, ...i }) {
|
|
48
|
-
return /* @__PURE__ */ r("div", {
|
|
49
|
-
className: e("body", t),
|
|
50
|
-
...i,
|
|
51
|
-
children: n
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
function c({ className: t, children: n, ...i }) {
|
|
55
|
-
return /* @__PURE__ */ r("div", {
|
|
56
|
-
className: e("footer", t),
|
|
57
|
-
...i,
|
|
58
|
-
children: n
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
//#endregion
|
|
62
|
-
//#region src/components/feedback/MSkeleton/MSkeleton.tsx
|
|
63
|
-
function l(e, t) {
|
|
64
|
-
return t <= 1 ? "100%" : e === t - 1 ? "68%" : e === t - 2 && t > 3 ? "88%" : "100%";
|
|
65
|
-
}
|
|
66
|
-
function u({ variant: t = "text", width: n, height: i, radius: a, lines: o = 3, gap: s, animate: c = !0, className: u, style: d, ...f }) {
|
|
67
|
-
let p = c === !1 ? "none" : c === !0 ? "shimmer" : c;
|
|
68
|
-
return t === "text" ? /* @__PURE__ */ r("div", {
|
|
69
|
-
className: e("skeleton-group", u),
|
|
70
|
-
style: {
|
|
71
|
-
width: n ?? void 0,
|
|
72
|
-
gap: s ?? void 0,
|
|
73
|
-
...d
|
|
74
|
-
},
|
|
75
|
-
...f,
|
|
76
|
-
children: Array.from({ length: o }, (t, n) => /* @__PURE__ */ r("div", {
|
|
77
|
-
className: e("skeleton", "text", p),
|
|
78
|
-
style: {
|
|
79
|
-
width: l(n, o),
|
|
80
|
-
height: i ?? void 0,
|
|
81
|
-
borderRadius: a ?? void 0
|
|
82
|
-
}
|
|
83
|
-
}, n))
|
|
84
|
-
}) : /* @__PURE__ */ r("div", {
|
|
85
|
-
className: e("skeleton", t, p, u),
|
|
86
|
-
style: {
|
|
87
|
-
width: n ?? void 0,
|
|
88
|
-
height: i ?? void 0,
|
|
89
|
-
borderRadius: a ?? void 0,
|
|
90
|
-
...d
|
|
91
|
-
},
|
|
92
|
-
...f
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
//#endregion
|
|
96
|
-
export { o as a, c as i, a as n, s as r, u as t };
|
|
97
|
-
|
|
98
|
-
//# sourceMappingURL=MSkeleton-BP7H_lsX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MSkeleton-BP7H_lsX.js","names":[],"sources":["../src/components/cards/MCard/MCard.tsx","../src/components/feedback/MSkeleton/MSkeleton.tsx"],"sourcesContent":["import type {MCardProps, MCardSectionProps} from './MCard.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSurface} from '../../layout'\nimport {MSkeleton} from '../../feedback'\nimport './MCard.css'\n\n// Compose elevated content blocks that can optionally behave like an interactive surface.\nexport function MCard({\n interactive = false,\n stretch = true,\n tone = 'raised',\n padded = false,\n color,\n clickEffect,\n rippleColor,\n skeleton = false,\n spacing,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n className,\n children,\n onPointerDown,\n ...rest\n}: MCardProps) {\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLDivElement>({\n effect: clickEffect ?? (interactive ? 'ripple' : 'none'),\n disabled: !interactive || skeleton,\n color: rippleColor,\n })\n\n return (\n <MSurface\n tone={tone}\n padded={padded}\n spacing={spacing}\n mt={mt}\n mb={mb}\n ml={ml}\n mr={mr}\n mx={mx}\n my={my}\n className={cn(\n 'card',\n !stretch && 'no-stretch',\n color && `color-${color}`,\n interactive && !skeleton && 'interactive',\n skeleton && 'skeleton',\n effectClassName,\n className\n )}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...rest}\n >\n {effectLayer}\n {skeleton ? (\n <div className=\"card-skeleton-content\">\n <MSkeleton variant=\"rectangle\" height=\"8rem\" />\n <MSkeleton variant=\"text\" lines={3} className=\"card-skeleton-lines\" />\n </div>\n ) : (\n children\n )}\n </MSurface>\n )\n}\n\n// Render the top section of a card.\nexport function MCardHeader({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('header', className)} {...rest}>\n {children}\n </div>\n )\n}\n\n// Render the main content section of a card.\nexport function MCardBody({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('body', className)} {...rest}>\n {children}\n </div>\n )\n}\n\n// Render the bottom section of a card.\nexport function MCardFooter({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('footer', className)} {...rest}>\n {children}\n </div>\n )\n}\n","import type {MSkeletonProps} from './MSkeleton.types'\nimport {cn} from '../../../utils/cn'\nimport './MSkeleton.css'\n\nfunction getTextLineWidth(index: number, lines: number) {\n if (lines <= 1) {\n return '100%'\n }\n\n if (index === lines - 1) {\n return '68%'\n }\n\n if (index === lines - 2 && lines > 3) {\n return '88%'\n }\n\n return '100%'\n}\n\n// Animated placeholder shown while content is loading.\nexport function MSkeleton({\n variant = 'text',\n width,\n height,\n radius,\n lines = 3,\n gap,\n animate = true,\n className,\n style,\n ...rest\n}: MSkeletonProps) {\n const animation = animate === false ? 'none' : animate === true ? 'shimmer' : animate\n\n if (variant === 'text') {\n return (\n <div\n className={cn('skeleton-group', className)}\n style={{width: width ?? undefined, gap: gap ?? undefined, ...style}}\n {...rest}\n >\n {Array.from({length: lines}, (_, i) => (\n <div\n key={i}\n className={cn('skeleton', 'text', animation)}\n style={{\n width: getTextLineWidth(i, lines),\n height: height ?? undefined,\n borderRadius: radius ?? undefined,\n }}\n />\n ))}\n </div>\n )\n }\n\n return (\n <div\n className={cn('skeleton', variant, animation, className)}\n style={{\n width: width ?? undefined,\n height: height ?? undefined,\n borderRadius: radius ?? undefined,\n ...style,\n }}\n {...rest}\n />\n )\n}\n"],"mappings":";;;;;AAQA,SAAgB,EAAM,EAClB,iBAAc,IACd,aAAU,IACV,UAAO,UACP,YAAS,IACT,UACA,gBACA,gBACA,cAAW,IACX,YACA,OACA,OACA,OACA,OACA,OACA,OACA,cACA,aACA,kBACA,GAAG,KACQ;CACX,IAAM,EAAC,oBAAiB,gBAAa,yBAAqB,EAAqC;EAC3F,QAAQ,MAAgB,IAAc,WAAW;EACjD,UAAU,CAAC,KAAe;EAC1B,OAAO;EACV,CAAC;AAEF,QACI,kBAAC,GAAD;EACU;EACE;EACC;EACL;EACA;EACA;EACA;EACA;EACA;EACJ,WAAW,EACP,QACA,CAAC,KAAW,cACZ,KAAS,SAAS,KAClB,KAAe,CAAC,KAAY,eAC5B,KAAY,YACZ,GACA,EACH;EACD,gBAAgB,MAAU;AAEtB,GADA,EAAkB,EAAM,EACxB,IAAgB,EAAM;;EAE1B,GAAI;YAvBR,CAyBK,GACA,IACG,kBAAC,OAAD;GAAK,WAAU;aAAf,CACI,kBAAC,GAAD;IAAW,SAAQ;IAAY,QAAO;IAAS,CAAA,EAC/C,kBAAC,GAAD;IAAW,SAAQ;IAAO,OAAO;IAAG,WAAU;IAAwB,CAAA,CACpE;OAEN,EAEG;;;AAKnB,SAAgB,EAAY,EAAC,cAAW,aAAU,GAAG,KAA0B;AAC3E,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,EAAU;EAAE,GAAI;EACxC;EACC,CAAA;;AAKd,SAAgB,EAAU,EAAC,cAAW,aAAU,GAAG,KAA0B;AACzE,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,QAAQ,EAAU;EAAE,GAAI;EACtC;EACC,CAAA;;AAKd,SAAgB,EAAY,EAAC,cAAW,aAAU,GAAG,KAA0B;AAC3E,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,EAAU;EAAE,GAAI;EACxC;EACC,CAAA;;;;AC7Fd,SAAS,EAAiB,GAAe,GAAe;AAapD,QAZI,KAAS,IACF,SAGP,MAAU,IAAQ,IACX,QAGP,MAAU,IAAQ,KAAK,IAAQ,IACxB,QAGJ;;AAIX,SAAgB,EAAU,EACtB,aAAU,QACV,UACA,WACA,WACA,WAAQ,GACR,QACA,aAAU,IACV,cACA,UACA,GAAG,KACY;CACf,IAAM,IAAY,MAAY,KAAQ,SAAS,MAAY,KAAO,YAAY;AAwB9E,QAtBI,MAAY,SAER,kBAAC,OAAD;EACI,WAAW,EAAG,kBAAkB,EAAU;EAC1C,OAAO;GAAC,OAAO,KAAS,KAAA;GAAW,KAAK,KAAO,KAAA;GAAW,GAAG;GAAM;EACnE,GAAI;YAEH,MAAM,KAAK,EAAC,QAAQ,GAAM,GAAG,GAAG,MAC7B,kBAAC,OAAD;GAEI,WAAW,EAAG,YAAY,QAAQ,EAAU;GAC5C,OAAO;IACH,OAAO,EAAiB,GAAG,EAAM;IACjC,QAAQ,KAAU,KAAA;IAClB,cAAc,KAAU,KAAA;IAC3B;GACH,EAPO,EAOP,CACJ;EACA,CAAA,GAKV,kBAAC,OAAD;EACI,WAAW,EAAG,YAAY,GAAS,GAAW,EAAU;EACxD,OAAO;GACH,OAAO,KAAS,KAAA;GAChB,QAAQ,KAAU,KAAA;GAClB,cAAc,KAAU,KAAA;GACxB,GAAG;GACN;EACD,GAAI;EACN,CAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./cn-CU5TNITO.cjs`),t=require(`./useInteractionEffect-CtXlbjhC.cjs`),n=require(`./MSurface-wVqTsi1m.cjs`);require(`./core-w629c4ND.cjs`);let r=require(`react/jsx-runtime`);function i({interactive:i=!1,stretch:a=!0,tone:o=`raised`,padded:s=!1,color:c,clickEffect:u,rippleColor:d,skeleton:f=!1,spacing:p,mt:m,mb:h,ml:g,mr:_,mx:v,my:y,className:b,children:x,onPointerDown:S,...C}){let{effectClassName:w,effectLayer:T,handlePointerDown:E}=t.t({effect:u??(i?`ripple`:`none`),disabled:!i||f,color:d});return(0,r.jsxs)(n.t,{tone:o,padded:s,spacing:p,mt:m,mb:h,ml:g,mr:_,mx:v,my:y,className:e.t(`card`,!a&&`no-stretch`,c&&`color-${c}`,i&&!f&&`interactive`,f&&`skeleton`,w,b),onPointerDown:e=>{E(e),S?.(e)},...C,children:[T,f?(0,r.jsxs)(`div`,{className:`card-skeleton-content`,children:[(0,r.jsx)(l,{variant:`rectangle`,height:`8rem`}),(0,r.jsx)(l,{variant:`text`,lines:3,className:`card-skeleton-lines`})]}):x]})}function a({className:t,children:n,...i}){return(0,r.jsx)(`div`,{className:e.t(`header`,t),...i,children:n})}function o({className:t,children:n,...i}){return(0,r.jsx)(`div`,{className:e.t(`body`,t),...i,children:n})}function s({className:t,children:n,...i}){return(0,r.jsx)(`div`,{className:e.t(`footer`,t),...i,children:n})}function c(e,t){return t<=1?`100%`:e===t-1?`68%`:e===t-2&&t>3?`88%`:`100%`}function l({variant:t=`text`,width:n,height:i,radius:a,lines:o=3,gap:s,animate:l=!0,className:u,style:d,...f}){let p=l===!1?`none`:l===!0?`shimmer`:l;return t===`text`?(0,r.jsx)(`div`,{className:e.t(`skeleton-group`,u),style:{width:n??void 0,gap:s??void 0,...d},...f,children:Array.from({length:o},(t,n)=>(0,r.jsx)(`div`,{className:e.t(`skeleton`,`text`,p),style:{width:c(n,o),height:i??void 0,borderRadius:a??void 0}},n))}):(0,r.jsx)(`div`,{className:e.t(`skeleton`,t,p,u),style:{width:n??void 0,height:i??void 0,borderRadius:a??void 0,...d},...f})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
|
|
2
|
-
//# sourceMappingURL=MSkeleton-QO2sI-Ni.cjs.map
|