@banzamel/mineralui 1.6.4 → 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/README.md +1 -1
- 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-BVJh6kgW.cjs → MAvatar-BgevCYi3.cjs} +2 -2
- package/dist/{MAvatar-BVJh6kgW.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-C40ESQRe.cjs → MCheckbox-Dn3p_9-1.cjs} +2 -2
- package/dist/{MCheckbox-C40ESQRe.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-95_Mb6jE.cjs +2 -0
- package/dist/MDataTable-95_Mb6jE.cjs.map +1 -0
- package/dist/MDataTable-DxDS5auV.js +297 -0
- 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-DFkrFrnD.cjs → MDrawer-DzqtHVeA.cjs} +2 -2
- package/dist/{MDrawer-DFkrFrnD.cjs.map → MDrawer-DzqtHVeA.cjs.map} +1 -1
- package/dist/{MDropdownMenu-D79Cm5aS.js → MDropdownMenu-CeiC1tz3.js} +5 -5
- package/dist/MDropdownMenu-CeiC1tz3.js.map +1 -0
- package/dist/MDropdownMenu-c9U3sEcl.cjs +2 -0
- package/dist/MDropdownMenu-c9U3sEcl.cjs.map +1 -0
- package/dist/{MGalleryIllustration-BB3DoCl_.cjs → MGalleryIllustration-Dglx_Ckc.cjs} +2 -2
- package/dist/{MGalleryIllustration-BB3DoCl_.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-BhCNoJeW.cjs → MHeading-CKe5lcM_.cjs} +2 -2
- package/dist/{MHeading-BhCNoJeW.cjs.map → MHeading-CKe5lcM_.cjs.map} +1 -1
- package/dist/{MI18nProvider-B2sE0x5D.cjs → MI18nProvider-DOh5xexz.cjs} +2 -2
- package/dist/{MI18nProvider-B2sE0x5D.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-BKX-xBm3.js → MImage-Btx_7g2Z.js} +5 -6
- package/dist/MImage-Btx_7g2Z.js.map +1 -0
- package/dist/{MInput-bzSwK880.js → MInput-7i0Dy1t4.js} +3 -2
- package/dist/{MInput-bzSwK880.js.map → MInput-7i0Dy1t4.js.map} +1 -1
- package/dist/{MInput-DYqV3-rQ.cjs → MInput-D_zaoWwX.cjs} +2 -2
- package/dist/{MInput-DYqV3-rQ.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-BHpMHTO5.js → MInputExpDate-DhO5zN7L.js} +97 -97
- package/dist/MInputExpDate-DhO5zN7L.js.map +1 -0
- package/dist/{MInputSearch-Dh4C3Tz5.js → MInputSearch-CmzHPnmC.js} +2 -2
- package/dist/{MInputSearch-Dh4C3Tz5.js.map → MInputSearch-CmzHPnmC.js.map} +1 -1
- package/dist/{MInputSearch-DfoenJIm.cjs → MInputSearch-DpHSVpmL.cjs} +2 -2
- package/dist/{MInputSearch-DfoenJIm.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-CY45UR_j.cjs → MLink-B3ImjkJV.cjs} +2 -2
- package/dist/{MLink-CY45UR_j.cjs.map → MLink-B3ImjkJV.cjs.map} +1 -1
- package/dist/{MModal-DT5BBgNZ.cjs → MModal-CP0e31pv.cjs} +2 -2
- package/dist/{MModal-DT5BBgNZ.cjs.map → MModal-CP0e31pv.cjs.map} +1 -1
- package/dist/{MModal-BDTAgnrm.js → MModal-DGmeQlWo.js} +2 -2
- package/dist/{MModal-BDTAgnrm.js.map → MModal-DGmeQlWo.js.map} +1 -1
- package/dist/{MPagination-CZEJMJzZ.cjs → MPagination-CS62B9kZ.cjs} +2 -2
- package/dist/{MPagination-CZEJMJzZ.cjs.map → MPagination-CS62B9kZ.cjs.map} +1 -1
- package/dist/{MPagination-CTnaW5AW.js → MPagination-Dr110are.js} +2 -2
- package/dist/{MPagination-CTnaW5AW.js.map → MPagination-Dr110are.js.map} +1 -1
- package/dist/{MPopover-B4IUb9f0.cjs → MPopover-CxxaY9kr.cjs} +2 -2
- package/dist/{MPopover-B4IUb9f0.cjs.map → MPopover-CxxaY9kr.cjs.map} +1 -1
- package/dist/{MPortal-Bi24xTGW.cjs → MPortal-BIxPtFYd.cjs} +2 -2
- package/dist/{MPortal-Bi24xTGW.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-Ch3VjAJC.cjs → MSlider-qCGmD4UA.cjs} +2 -2
- package/dist/{MSlider-Ch3VjAJC.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-C-70zn0m.cjs → MSubText-1ilKSz8e.cjs} +2 -2
- package/dist/{MSubText-C-70zn0m.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-BQZ--mMq.js +89 -0
- package/dist/MTabs-BQZ--mMq.js.map +1 -0
- package/dist/MTabs-DeUn6bIp.cjs +2 -0
- package/dist/MTabs-DeUn6bIp.cjs.map +1 -0
- 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-Y4Tswmli.cjs → MTag-DwQ-j1sV.cjs} +2 -2
- package/dist/{MTag-Y4Tswmli.cjs.map → MTag-DwQ-j1sV.cjs.map} +1 -1
- package/dist/{MText-DEJddMB5.cjs → MText-D0fI_D_Q.cjs} +2 -2
- package/dist/{MText-DEJddMB5.cjs.map → MText-D0fI_D_Q.cjs.map} +1 -1
- package/dist/{MTimeAgo-DxZGVo2Y.cjs → MTimeAgo-DI3DF7bD.cjs} +2 -2
- package/dist/{MTimeAgo-DxZGVo2Y.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-C8vYRzpC.cjs → MToggle-BVJm5Bdk.cjs} +2 -2
- package/dist/{MToggle-C8vYRzpC.cjs.map → MToggle-BVJm5Bdk.cjs.map} +1 -1
- package/dist/{MTooltip-kSTMMpvu.cjs → MTooltip-Dq2vYf3G.cjs} +2 -2
- package/dist/{MTooltip-kSTMMpvu.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-CXUo7Bjy.cjs → arduino-Bm509TuR.cjs} +1 -1
- package/dist/{arduino-CXUo7Bjy.cjs.map → arduino-Bm509TuR.cjs.map} +1 -1
- package/dist/{arduino-Eif5KI8O.js → arduino-C5s1z3P1.js} +1 -1
- package/dist/{arduino-Eif5KI8O.js.map → arduino-C5s1z3P1.js.map} +1 -1
- package/dist/{bash-W4h3o_nx.cjs → bash-CyBbinAU.cjs} +1 -1
- package/dist/{bash-W4h3o_nx.cjs.map → bash-CyBbinAU.cjs.map} +1 -1
- package/dist/{bash-CCF_TYbb.js → bash-RIFbRcCe.js} +1 -1
- package/dist/{bash-CCF_TYbb.js.map → bash-RIFbRcCe.js.map} +1 -1
- package/dist/{c-DVgkp6T3.js → c-DAywn1DE.js} +1 -1
- package/dist/{c-DVgkp6T3.js.map → c-DAywn1DE.js.map} +1 -1
- package/dist/{c-Dm60JY-W.cjs → c-DGOxo0dj.cjs} +1 -1
- package/dist/{c-Dm60JY-W.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 +23 -5
- 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 +2 -0
- package/dist/components/cards/MCardTile/MCardTile.types.d.ts +26 -0
- package/dist/components/cards/MCardTile/index.d.ts +2 -0
- 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/ServiceCardsShared/ServiceCardsShared.d.ts +1 -1
- package/dist/components/cards/ServiceCardsShared/ServiceCardsShared.types.d.ts +1 -3
- package/dist/components/cards/index.d.ts +12 -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/MCalendarBoard/MCalendarBoard.d.ts +8 -7
- package/dist/components/data/MCalendarBoard/MCalendarBoard.types.d.ts +75 -6
- package/dist/components/data/MCalendarBoard/index.d.ts +2 -2
- package/dist/components/data/MDataTable/MDataTable.d.ts +1 -1
- package/dist/components/data/MDataTable/MDataTable.types.d.ts +23 -0
- package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
- package/dist/components/data/MTreeView/MTreeView.types.d.ts +11 -1
- package/dist/components/data/index.d.ts +2 -2
- package/dist/components/display/MBlur/MBlur.d.ts +2 -0
- package/dist/components/display/MBlur/MBlur.types.d.ts +13 -0
- package/dist/components/display/MBlur/index.d.ts +2 -0
- package/dist/components/display/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 +4 -0
- package/dist/components/inputs/MInputIBAN/MInputIBAN.types.d.ts +3 -3
- package/dist/components/inputs/MInputPhone/MInputPhone.types.d.ts +2 -0
- package/dist/components/layout/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/MGrid/MGrid.d.ts +2 -2
- package/dist/components/layout/MGrid/MGrid.types.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/media/MMediaLightbox/MMediaLightbox.d.ts +1 -1
- 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/MTooltip/MTooltip.types.d.ts +2 -2
- 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-CB9-PTLK.js → core-BUYr52VU.js} +1 -1
- package/dist/{core-CB9-PTLK.js.map → core-BUYr52VU.js.map} +1 -1
- package/dist/{core-AKWkE8Bx.cjs → core-DAox0BHy.cjs} +1 -1
- package/dist/{core-AKWkE8Bx.cjs.map → core-DAox0BHy.cjs.map} +1 -1
- package/dist/{cpp-DyKt1H8n.cjs → cpp-D-FtdQo9.cjs} +1 -1
- package/dist/{cpp-DyKt1H8n.cjs.map → cpp-D-FtdQo9.cjs.map} +1 -1
- package/dist/{cpp-OOenfB17.js → cpp-Y9cHXDal.js} +1 -1
- package/dist/{cpp-OOenfB17.js.map → cpp-Y9cHXDal.js.map} +1 -1
- package/dist/creditCards-D_HwRUBz.cjs +2 -0
- package/dist/creditCards-D_HwRUBz.cjs.map +1 -0
- package/dist/{creditCards-CCysEwry.js → creditCards-D_iWmtG6.js} +14 -8
- package/dist/creditCards-D_iWmtG6.js.map +1 -0
- package/dist/{css-u5LSEAra.js → css-C__ffGj6.js} +1 -1
- package/dist/{css-u5LSEAra.js.map → css-C__ffGj6.js.map} +1 -1
- package/dist/{css-DxVbPJLu.cjs → css-DCYZ-Rs6.cjs} +1 -1
- package/dist/{css-DxVbPJLu.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-BiwK5rfx.js → data-z3e8XTSt.js} +1039 -874
- 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-Cw3-bTsm.cjs.map +1 -0
- package/dist/{display-Zxj9YHu_.js → display-DyC7084n.js} +68 -41
- package/dist/display-DyC7084n.js.map +1 -0
- package/dist/display.cjs +1 -1
- package/dist/display.js +4 -4
- package/dist/dropdowns-6eO0b6eI.cjs +2 -0
- package/dist/dropdowns-6eO0b6eI.cjs.map +1 -0
- package/dist/{dropdowns-Bw8obCYl.js → dropdowns-zXgrjNXZ.js} +586 -559
- package/dist/dropdowns-zXgrjNXZ.js.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-BvRmoSzV.cjs +2 -0
- package/dist/{feedback-Di0SEpRe.cjs.map → feedback-BvRmoSzV.cjs.map} +1 -1
- package/dist/{feedback-8H3bmQw5.js → feedback-DfBjzJAw.js} +299 -300
- package/dist/{feedback-8H3bmQw5.js.map → feedback-DfBjzJAw.js.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +6 -7
- package/dist/{form-JHlvtP9r.js → form-BiPQ8SRK.js} +2 -2
- package/dist/{form-JHlvtP9r.js.map → form-BiPQ8SRK.js.map} +1 -1
- package/dist/{form-BYz99Py5.cjs → form-DlXWN2ul.cjs} +2 -2
- package/dist/{form-BYz99Py5.cjs.map → form-DlXWN2ul.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/frameworkTexts-BLJcGUXz.cjs +2 -0
- package/dist/frameworkTexts-BLJcGUXz.cjs.map +1 -0
- package/dist/{frameworkTexts-CvxcWRXp.js → frameworkTexts-BTFyhWFD.js} +3 -1
- package/dist/frameworkTexts-BTFyhWFD.js.map +1 -0
- package/dist/i18n/frameworkTexts.d.ts +2 -0
- package/dist/i18n.cjs +1 -1
- package/dist/icons-CfpYxnfg.js.map +1 -1
- package/dist/{icons-DWMgDKgt.cjs → icons-qCoE70hn.cjs} +2 -2
- package/dist/{icons-DWMgDKgt.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 +88 -53
- package/dist/index.js.map +1 -0
- package/dist/inputs-C1I1SLZ8.cjs +2 -0
- package/dist/inputs-C1I1SLZ8.cjs.map +1 -0
- package/dist/{inputs-Bcwd_UTr.js → inputs-Dy1WurNK.js} +556 -441
- package/dist/inputs-Dy1WurNK.js.map +1 -0
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +5 -5
- package/dist/{javascript-CXjsxb-I.js → javascript-ClV78Svx.js} +1 -1
- package/dist/{javascript-CXjsxb-I.js.map → javascript-ClV78Svx.js.map} +1 -1
- package/dist/{javascript-CzjCTQxn.cjs → javascript-_Sr9cnsG.cjs} +1 -1
- package/dist/{javascript-CzjCTQxn.cjs.map → javascript-_Sr9cnsG.cjs.map} +1 -1
- package/dist/{json-9Qq5guN0.cjs → json-BFetU4Pi.cjs} +1 -1
- package/dist/{json-9Qq5guN0.cjs.map → json-BFetU4Pi.cjs.map} +1 -1
- package/dist/{json-CyV5VF8D.js → json-Dz6EkGZR.js} +1 -1
- package/dist/{json-CyV5VF8D.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 -6
- 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-CZyqh3ON.cjs → locale-Bz2JXxDZ.cjs} +2 -2
- package/dist/{locale-CZyqh3ON.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-IM9mfVAn.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-deNqvHeU.js → php-5Erp5xxI.js} +1 -1
- package/dist/{php-deNqvHeU.js.map → php-5Erp5xxI.js.map} +1 -1
- package/dist/{php-Br75m0HU.cjs → php-jOdR0XS8.cjs} +1 -1
- package/dist/{php-Br75m0HU.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-CgS-bND3.cjs → theme-BaroO-OB.cjs} +2 -2
- package/dist/{theme-CgS-bND3.cjs.map → theme-BaroO-OB.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{typescript-CRgqVaw_.cjs → typescript-C65sNL5w.cjs} +1 -1
- package/dist/{typescript-CRgqVaw_.cjs.map → typescript-C65sNL5w.cjs.map} +1 -1
- package/dist/{typescript-jNfCpQvl.js → typescript-wdQKWfxO.js} +1 -1
- package/dist/{typescript-jNfCpQvl.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-tv1LiSPs.cjs → useGhostText-Dg4P606B.cjs} +2 -2
- package/dist/{useGhostText-tv1LiSPs.cjs.map → useGhostText-Dg4P606B.cjs.map} +1 -1
- package/dist/{useInteractionEffect-D1ZdNbKU.cjs → useInteractionEffect-Bo8285cg.cjs} +2 -2
- package/dist/{useInteractionEffect-D1ZdNbKU.cjs.map → useInteractionEffect-Bo8285cg.cjs.map} +1 -1
- package/dist/{useKeyboardNav-CkIlAagq.cjs → useKeyboardNav-CyeQtqF8.cjs} +2 -2
- package/dist/{useKeyboardNav-CkIlAagq.cjs.map → useKeyboardNav-CyeQtqF8.cjs.map} +1 -1
- package/dist/utils/commandPaletteFromAppMenu.d.ts +42 -0
- package/dist/utils/creditCards.d.ts +1 -0
- package/dist/utils/licensing.d.ts +4 -0
- package/dist/utils/validators.d.ts +2 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +4 -4
- package/dist/{validators-H8tNxb8O.js → validators-D5OCyV2h.js} +23 -20
- package/dist/validators-D5OCyV2h.js.map +1 -0
- package/dist/{validators-BeNTD8mf.cjs → validators-DRhikiAi.cjs} +2 -2
- package/dist/validators-DRhikiAi.cjs.map +1 -0
- package/dist/{xml-C_ksWBRH.cjs → xml-B2okahIr.cjs} +1 -1
- package/dist/{xml-C_ksWBRH.cjs.map → xml-B2okahIr.cjs.map} +1 -1
- package/dist/{xml-0Th6YIDv.js → xml-a3b-XevT.js} +1 -1
- package/dist/{xml-0Th6YIDv.js.map → xml-a3b-XevT.js.map} +1 -1
- package/package.json +1 -1
- package/dist/MBadge-B4x-Lx7e.cjs +0 -2
- package/dist/MBadge-B4x-Lx7e.cjs.map +0 -1
- package/dist/MBadge-_BggwkrM.js +0 -19
- package/dist/MBadge-_BggwkrM.js.map +0 -1
- package/dist/MButton-DrkVdRDy.cjs +0 -2
- package/dist/MButton-DrkVdRDy.cjs.map +0 -1
- package/dist/MButton-y9qXhhGt.js.map +0 -1
- package/dist/MDataTable-Bx7W-Ari.cjs +0 -2
- package/dist/MDataTable-Bx7W-Ari.cjs.map +0 -1
- package/dist/MDataTable-ByvNQqNP.js +0 -149
- package/dist/MDataTable-ByvNQqNP.js.map +0 -1
- package/dist/MDropdownMenu-BmfXSc46.cjs +0 -2
- package/dist/MDropdownMenu-BmfXSc46.cjs.map +0 -1
- package/dist/MDropdownMenu-D79Cm5aS.js.map +0 -1
- package/dist/MImage-BKX-xBm3.js.map +0 -1
- package/dist/MImage-YbDKE-1t.cjs +0 -2
- package/dist/MImage-YbDKE-1t.cjs.map +0 -1
- package/dist/MInline-CHrh3PHH.cjs +0 -2
- package/dist/MInline-CHrh3PHH.cjs.map +0 -1
- package/dist/MInline-CoMhfX5V.js +0 -39
- package/dist/MInline-CoMhfX5V.js.map +0 -1
- package/dist/MInputCVC-5NkYSxV8.cjs +0 -2
- package/dist/MInputCVC-5NkYSxV8.cjs.map +0 -1
- package/dist/MInputCVC-BHpMHTO5.js.map +0 -1
- package/dist/MQrCode-ByfmG33y.cjs +0 -2
- package/dist/MQrCode-ByfmG33y.cjs.map +0 -1
- package/dist/MQrCode-CCtTkkv9.js.map +0 -1
- package/dist/MSkeleton-5j1h9s95.cjs +0 -2
- package/dist/MSkeleton-5j1h9s95.cjs.map +0 -1
- package/dist/MSkeleton-DGhtNmpI.js +0 -98
- package/dist/MSkeleton-DGhtNmpI.js.map +0 -1
- package/dist/MSparkline-B6qpt5WM.cjs +0 -2
- package/dist/MSparkline-B6qpt5WM.cjs.map +0 -1
- package/dist/MSparkline-voNWOLNz.js +0 -207
- package/dist/MSparkline-voNWOLNz.js.map +0 -1
- package/dist/MStack-Bh-R2opf.cjs +0 -2
- package/dist/MStack-Bh-R2opf.cjs.map +0 -1
- package/dist/MStack-CSaEbepM.js +0 -39
- package/dist/MStack-CSaEbepM.js.map +0 -1
- package/dist/MSurface-CpiV1-7f.cjs +0 -2
- package/dist/MSurface-CpiV1-7f.cjs.map +0 -1
- package/dist/MSurface-DJYSftdM.js +0 -39
- package/dist/MSurface-DJYSftdM.js.map +0 -1
- package/dist/cards-BiYdorB0.cjs +0 -2
- package/dist/cards-BiYdorB0.cjs.map +0 -1
- package/dist/cards-fn61xD_5.js +0 -1013
- package/dist/cards-fn61xD_5.js.map +0 -1
- package/dist/controls-C5PtrGZf.cjs +0 -2
- package/dist/controls-C5PtrGZf.cjs.map +0 -1
- package/dist/controls-DCtMOoQe.js.map +0 -1
- package/dist/creditCards-CCysEwry.js.map +0 -1
- package/dist/creditCards-ljs044xt.cjs +0 -2
- package/dist/creditCards-ljs044xt.cjs.map +0 -1
- package/dist/data-BiwK5rfx.js.map +0 -1
- package/dist/data-DOuPqg8d.cjs +0 -2
- package/dist/data-DOuPqg8d.cjs.map +0 -1
- package/dist/display-BafEcBK_.cjs +0 -3
- package/dist/display-BafEcBK_.cjs.map +0 -1
- package/dist/display-Zxj9YHu_.js.map +0 -1
- package/dist/dropdowns-Bw8obCYl.js.map +0 -1
- package/dist/dropdowns-DN7j1HhE.cjs +0 -2
- package/dist/dropdowns-DN7j1HhE.cjs.map +0 -1
- package/dist/feedback-Di0SEpRe.cjs +0 -2
- package/dist/frameworkTexts-CvxcWRXp.js.map +0 -1
- package/dist/frameworkTexts-abkS5XZK.cjs +0 -2
- package/dist/frameworkTexts-abkS5XZK.cjs.map +0 -1
- package/dist/inputs-Bcwd_UTr.js.map +0 -1
- package/dist/inputs-FP545Yri.cjs +0 -2
- package/dist/inputs-FP545Yri.cjs.map +0 -1
- package/dist/layout-BpEnTocp.js +0 -936
- package/dist/layout-BpEnTocp.js.map +0 -1
- package/dist/layout-rtlHrjDb.cjs +0 -2
- package/dist/layout-rtlHrjDb.cjs.map +0 -1
- package/dist/licensing-CwzqhHH9.js.map +0 -1
- package/dist/licensing-ezfo7ZTh.cjs +0 -2
- package/dist/licensing-ezfo7ZTh.cjs.map +0 -1
- package/dist/media-CiHsgOmu.cjs +0 -2
- package/dist/media-CiHsgOmu.cjs.map +0 -1
- package/dist/media-IM9mfVAn.js.map +0 -1
- package/dist/overlays-CGlqD3rl.js +0 -186
- package/dist/overlays-CGlqD3rl.js.map +0 -1
- package/dist/overlays-DrSGzbbA.cjs +0 -2
- package/dist/overlays-DrSGzbbA.cjs.map +0 -1
- package/dist/typography-BSBsn0f8.js.map +0 -1
- package/dist/typography-Zo4Usx9I.cjs +0 -2
- package/dist/typography-Zo4Usx9I.cjs.map +0 -1
- package/dist/validators-BeNTD8mf.cjs.map +0 -1
- package/dist/validators-H8tNxb8O.js.map +0 -1
package/dist/MBadge-B4x-Lx7e.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-CgS-bND3.cjs`),t=require(`./cn-CU5TNITO.cjs`);require(`./core-AKWkE8Bx.cjs`);let n=require(`react/jsx-runtime`);function r({color:r=`primary`,size:i=`md`,hidden:a,pulsing:o=!1,rounded:s=!1,fullWidth:c=!1,icon:l,className:u,children:d,...f}){return(0,n.jsxs)(`span`,{className:t.t(`badge`,`color-${r}`,i,o&&`pulsing`,s&&`rounded`,c&&`full-width`,u),...e.r(a),...f,children:[l&&(0,n.jsx)(`span`,{className:`badge-icon`,children:l}),d]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
-
//# sourceMappingURL=MBadge-B4x-Lx7e.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MBadge-B4x-Lx7e.cjs","names":[],"sources":["../src/components/feedback/MBadge/MBadge.tsx"],"sourcesContent":["import type {MBadgeProps} from './MBadge.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MBadge.css'\n\n// Render a compact semantic label for status and metadata.\nexport function MBadge({\n color = 'primary',\n size = 'md',\n hidden,\n pulsing = false,\n rounded = false,\n fullWidth = false,\n icon,\n className,\n children,\n ...rest\n}: MBadgeProps) {\n return (\n <span\n className={cn(\n 'badge',\n `color-${color}`,\n size,\n pulsing && 'pulsing',\n rounded && 'rounded',\n fullWidth && 'full-width',\n className\n )}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {icon && <span className=\"badge-icon\">{icon}</span>}\n {children}\n </span>\n )\n}\n"],"mappings":"yIAMA,SAAgB,EAAO,CACnB,QAAQ,UACR,OAAO,KACP,SACA,UAAU,GACV,UAAU,GACV,YAAY,GACZ,OACA,YACA,WACA,GAAG,GACS,CACZ,OACI,EAAA,EAAA,MAAC,OAAD,CACI,UAAW,EAAA,EACP,QACA,SAAS,IACT,EACA,GAAW,UACX,GAAW,UACX,GAAa,aACb,EACH,CACD,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,WAXR,CAaK,IAAQ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sBAAc,EAAY,CAAA,CAClD,EACE"}
|
package/dist/MBadge-_BggwkrM.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { r as e } from "./theme-D_f-cmSA.js";
|
|
2
|
-
import { t } from "./cn-YER3QsV1.js";
|
|
3
|
-
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
-
//#region src/components/feedback/MBadge/MBadge.tsx
|
|
5
|
-
function i({ color: i = "primary", size: a = "md", hidden: o, pulsing: s = !1, rounded: c = !1, fullWidth: l = !1, icon: u, className: d, children: f, ...p }) {
|
|
6
|
-
return /* @__PURE__ */ r("span", {
|
|
7
|
-
className: t("badge", `color-${i}`, a, s && "pulsing", c && "rounded", l && "full-width", d),
|
|
8
|
-
...e(o),
|
|
9
|
-
...p,
|
|
10
|
-
children: [u && /* @__PURE__ */ n("span", {
|
|
11
|
-
className: "badge-icon",
|
|
12
|
-
children: u
|
|
13
|
-
}), f]
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//#endregion
|
|
17
|
-
export { i as t };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=MBadge-_BggwkrM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MBadge-_BggwkrM.js","names":[],"sources":["../src/components/feedback/MBadge/MBadge.tsx"],"sourcesContent":["import type {MBadgeProps} from './MBadge.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MBadge.css'\n\n// Render a compact semantic label for status and metadata.\nexport function MBadge({\n color = 'primary',\n size = 'md',\n hidden,\n pulsing = false,\n rounded = false,\n fullWidth = false,\n icon,\n className,\n children,\n ...rest\n}: MBadgeProps) {\n return (\n <span\n className={cn(\n 'badge',\n `color-${color}`,\n size,\n pulsing && 'pulsing',\n rounded && 'rounded',\n fullWidth && 'full-width',\n className\n )}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {icon && <span className=\"badge-icon\">{icon}</span>}\n {children}\n </span>\n )\n}\n"],"mappings":";;;;AAMA,SAAgB,EAAO,EACnB,WAAQ,WACR,UAAO,MACP,WACA,aAAU,IACV,aAAU,IACV,eAAY,IACZ,SACA,cACA,aACA,GAAG,KACS;AACZ,QACI,kBAAC,QAAD;EACI,WAAW,EACP,SACA,SAAS,KACT,GACA,KAAW,WACX,KAAW,WACX,KAAa,cACb,EACH;EACD,GAAI,EAAe,EAAO;EAC1B,GAAI;YAXR,CAaK,KAAQ,kBAAC,QAAD;GAAM,WAAU;aAAc;GAAY,CAAA,EAClD,EACE"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-CgS-bND3.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./useInteractionEffect-D1ZdNbKU.cjs`);require(`./core-AKWkE8Bx.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=(0,r.createContext)(null);function o(){return(0,r.useContext)(a)}function s({color:e=`primary`,size:n=`md`,label:r=`Loading`,className:a,style:o,...s}){let c=typeof n==`number`?{width:`${n}px`,height:`${n}px`,...o}:o||{};return(0,i.jsx)(`span`,{className:t.t(`spinner`,typeof n==`string`&&n,e&&`color-${e}`,a),style:c,role:`status`,"aria-label":r,...s})}function c(e){return e!=null&&e!==!1}function l({badge:e,badgeColor:t,badgePulsing:n}){return c(e)}function u({badge:e,badgeColor:n=`primary`,badgePulsing:r=!1,className:a}){if(!l({badge:e,badgeColor:n,badgePulsing:r}))return null;let o=e===!0;return(0,i.jsx)(`span`,{className:t.t(`overlay-badge`,`color-${n}`,o&&`dot`,r&&`pulsing`,a),"aria-hidden":`true`,children:o?null:e})}var d=(0,r.forwardRef)(function({component:r,to:a,href:c,variant:l,size:d,color:f,hidden:p,fullWidth:m=!1,rounded:h=!1,shape:g,iconOnly:_=!1,loading:v=!1,active:y=!1,pulsing:b=!1,badge:x,badgeColor:S,badgePulsing:C=!1,startIcon:w,endIcon:T,clickEffect:E=`ripple`,rippleColor:D,className:O,style:k,children:A,disabled:j=!1,type:M=`button`,onClick:N,onPointerDown:P,onKeyDown:F,...I},L){let R=r??`button`,z=!r||R===`button`,B=o(),V=l??B?.variant??`filled`,H=d??B?.size??`md`,U=f??B?.color??`primary`,W=j||v,{effectClassName:G,effectLayer:K,handlePointerDown:q,triggerEffect:J}=n.t({effect:E,disabled:W,centered:_,color:D});function Y(e){if(W&&!z){e.preventDefault();return}N?.(e)}return(0,i.jsxs)(R,{ref:L,type:z?M:void 0,to:r?W?void 0:a:void 0,href:r?W?void 0:c:void 0,className:t.t(`button`,V,H,`color-${U}`,m&&`full-width`,h&&`rounded`,g===`circle`&&`circle`,_&&`icon-only`,v&&`loading`,y&&`active`,b&&`pulsing`,W&&`disabled`,G,O),style:k,disabled:z?W:void 0,"aria-busy":v||void 0,"aria-disabled":!z&&W?!0:void 0,onClick:Y,onPointerDown:e=>{q(e),P?.(e)},onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&J(e.currentTarget),F?.(e)},...e.r(p),...I,children:[K,u({badge:x,badgeColor:S,badgePulsing:C}),v&&(0,i.jsx)(s,{size:`sm`,color:`inherit`,"aria-hidden":`true`}),w&&(0,i.jsx)(`span`,{className:`icon start`,children:w}),A&&(0,i.jsx)(`span`,{className:`content`,children:A}),T&&(0,i.jsx)(`span`,{className:`icon end`,children:T})]})});Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
|
|
2
|
-
//# sourceMappingURL=MButton-DrkVdRDy.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MButton-DrkVdRDy.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroupContext.ts","../src/components/feedback/MSpinner/MSpinner.tsx","../src/utils/overlayBadge.tsx","../src/components/controls/MButton/MButton.tsx"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {MButtonVariant} from '../MButton/MButton.types'\nimport type {MColor, MSize} from '../../../theme'\n\nexport interface MButtonGroupContextValue {\n variant?: MButtonVariant\n size?: MSize\n color?: MColor\n}\n\nexport const ButtonGroupContext = createContext<MButtonGroupContextValue | null>(null)\n\nexport function useButtonGroup(): MButtonGroupContextValue | null {\n return useContext(ButtonGroupContext)\n}\n","import type {CSSProperties} from 'react'\nimport type {MSpinnerProps} from './MSpinner.types'\nimport {cn} from '../../../utils/cn'\nimport './MSpinner.css'\n\n// Render a minimal semantic loading indicator with token-aware sizing and color.\nexport function MSpinner({\n color = 'primary',\n size = 'md',\n label = 'Loading',\n className,\n style,\n ...rest\n}: MSpinnerProps) {\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n }\n : style || {}\n\n return (\n <span\n className={cn('spinner', typeof size === 'string' && size, color && `color-${color}`, className)}\n style={inlineStyle}\n role=\"status\"\n aria-label={label}\n {...rest}\n />\n )\n}\n","import type {ReactNode} from 'react'\nimport type {MColor} from '../theme'\nimport {cn} from './cn'\n\nexport interface MOverlayBadgeProps {\n badge?: ReactNode | number | boolean\n badgeColor?: MColor\n badgePulsing?: boolean\n className?: string\n}\n\nfunction hasBadgeContent(badge: MOverlayBadgeProps['badge']) {\n return badge !== undefined && badge !== null && badge !== false\n}\n\nexport function shouldRenderOverlayBadge({badge, badgeColor, badgePulsing}: MOverlayBadgeProps) {\n return hasBadgeContent(badge)\n}\n\nexport function renderOverlayBadge({\n badge,\n badgeColor = 'primary',\n badgePulsing = false,\n className,\n}: MOverlayBadgeProps) {\n if (!shouldRenderOverlayBadge({badge, badgeColor, badgePulsing})) {\n return null\n }\n\n const dotOnly = badge === true\n\n return (\n <span\n className={cn(\n 'overlay-badge',\n `color-${badgeColor}`,\n dotOnly && 'dot',\n badgePulsing && 'pulsing',\n className\n )}\n aria-hidden=\"true\"\n >\n {dotOnly ? null : badge}\n </span>\n )\n}\n","import {forwardRef} from 'react'\nimport type {KeyboardEvent, MouseEvent, PointerEvent} from 'react'\nimport type {MButtonProps} from './MButton.types'\nimport {getHiddenProps} from '../../../theme'\nimport {useButtonGroup} from '../MButtonGroup/MButtonGroupContext'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MButton.css'\n\n// Render the main action primitive with semantic variants and built-in click feedback.\nexport const MButton = forwardRef<HTMLElement, MButtonProps>(function MButton(\n {\n component,\n to,\n href,\n variant: variantProp,\n size: sizeProp,\n color: colorProp,\n hidden,\n fullWidth = false,\n rounded = false,\n shape,\n iconOnly = false,\n loading = false,\n active = false,\n pulsing = false,\n badge,\n badgeColor,\n badgePulsing = false,\n startIcon,\n endIcon,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onClick,\n onPointerDown,\n onKeyDown,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'button'\n const isNativeButton = !component || Component === 'button'\n const group = useButtonGroup()\n const variant = variantProp ?? group?.variant ?? 'filled'\n const size = sizeProp ?? group?.size ?? 'md'\n const color = colorProp ?? group?.color ?? 'primary'\n\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n function handleClick(event: MouseEvent<HTMLElement>) {\n if (isDisabled && !isNativeButton) {\n event.preventDefault()\n return\n }\n\n onClick?.(event as never)\n }\n\n return (\n <Component\n ref={ref}\n type={isNativeButton ? type : undefined}\n to={component ? (isDisabled ? undefined : to) : undefined}\n href={component ? (isDisabled ? undefined : href) : undefined}\n className={cn(\n 'button',\n variant,\n size,\n `color-${color}`,\n fullWidth && 'full-width',\n rounded && 'rounded',\n shape === 'circle' && 'circle',\n iconOnly && 'icon-only',\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isNativeButton ? isDisabled : undefined}\n aria-busy={loading || undefined}\n aria-disabled={!isNativeButton && isDisabled ? true : undefined}\n onClick={handleClick}\n onPointerDown={(event: PointerEvent<HTMLElement>) => {\n handlePointerDown(event as never)\n onPointerDown?.(event as never)\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget as HTMLElement)\n }\n\n onKeyDown?.(event as never)\n }}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({badge, badgeColor, badgePulsing})}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" aria-hidden=\"true\" />}\n {startIcon && <span className=\"icon start\">{startIcon}</span>}\n {children && <span className=\"content\">{children}</span>}\n {endIcon && <span className=\"icon end\">{endIcon}</span>}\n </Component>\n )\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MButton-y9qXhhGt.js","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroupContext.ts","../src/components/feedback/MSpinner/MSpinner.tsx","../src/utils/overlayBadge.tsx","../src/components/controls/MButton/MButton.tsx"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {MButtonVariant} from '../MButton/MButton.types'\nimport type {MColor, MSize} from '../../../theme'\n\nexport interface MButtonGroupContextValue {\n variant?: MButtonVariant\n size?: MSize\n color?: MColor\n}\n\nexport const ButtonGroupContext = createContext<MButtonGroupContextValue | null>(null)\n\nexport function useButtonGroup(): MButtonGroupContextValue | null {\n return useContext(ButtonGroupContext)\n}\n","import type {CSSProperties} from 'react'\nimport type {MSpinnerProps} from './MSpinner.types'\nimport {cn} from '../../../utils/cn'\nimport './MSpinner.css'\n\n// Render a minimal semantic loading indicator with token-aware sizing and color.\nexport function MSpinner({\n color = 'primary',\n size = 'md',\n label = 'Loading',\n className,\n style,\n ...rest\n}: MSpinnerProps) {\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n }\n : style || {}\n\n return (\n <span\n className={cn('spinner', typeof size === 'string' && size, color && `color-${color}`, className)}\n style={inlineStyle}\n role=\"status\"\n aria-label={label}\n {...rest}\n />\n )\n}\n","import type {ReactNode} from 'react'\nimport type {MColor} from '../theme'\nimport {cn} from './cn'\n\nexport interface MOverlayBadgeProps {\n badge?: ReactNode | number | boolean\n badgeColor?: MColor\n badgePulsing?: boolean\n className?: string\n}\n\nfunction hasBadgeContent(badge: MOverlayBadgeProps['badge']) {\n return badge !== undefined && badge !== null && badge !== false\n}\n\nexport function shouldRenderOverlayBadge({badge, badgeColor, badgePulsing}: MOverlayBadgeProps) {\n return hasBadgeContent(badge)\n}\n\nexport function renderOverlayBadge({\n badge,\n badgeColor = 'primary',\n badgePulsing = false,\n className,\n}: MOverlayBadgeProps) {\n if (!shouldRenderOverlayBadge({badge, badgeColor, badgePulsing})) {\n return null\n }\n\n const dotOnly = badge === true\n\n return (\n <span\n className={cn(\n 'overlay-badge',\n `color-${badgeColor}`,\n dotOnly && 'dot',\n badgePulsing && 'pulsing',\n className\n )}\n aria-hidden=\"true\"\n >\n {dotOnly ? null : badge}\n </span>\n )\n}\n","import {forwardRef} from 'react'\nimport type {KeyboardEvent, MouseEvent, PointerEvent} from 'react'\nimport type {MButtonProps} from './MButton.types'\nimport {getHiddenProps} from '../../../theme'\nimport {useButtonGroup} from '../MButtonGroup/MButtonGroupContext'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MButton.css'\n\n// Render the main action primitive with semantic variants and built-in click feedback.\nexport const MButton = forwardRef<HTMLElement, MButtonProps>(function MButton(\n {\n component,\n to,\n href,\n variant: variantProp,\n size: sizeProp,\n color: colorProp,\n hidden,\n fullWidth = false,\n rounded = false,\n shape,\n iconOnly = false,\n loading = false,\n active = false,\n pulsing = false,\n badge,\n badgeColor,\n badgePulsing = false,\n startIcon,\n endIcon,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onClick,\n onPointerDown,\n onKeyDown,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'button'\n const isNativeButton = !component || Component === 'button'\n const group = useButtonGroup()\n const variant = variantProp ?? group?.variant ?? 'filled'\n const size = sizeProp ?? group?.size ?? 'md'\n const color = colorProp ?? group?.color ?? 'primary'\n\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n function handleClick(event: MouseEvent<HTMLElement>) {\n if (isDisabled && !isNativeButton) {\n event.preventDefault()\n return\n }\n\n onClick?.(event as never)\n }\n\n return (\n <Component\n ref={ref}\n type={isNativeButton ? type : undefined}\n to={component ? (isDisabled ? undefined : to) : undefined}\n href={component ? (isDisabled ? undefined : href) : undefined}\n className={cn(\n 'button',\n variant,\n size,\n `color-${color}`,\n fullWidth && 'full-width',\n rounded && 'rounded',\n shape === 'circle' && 'circle',\n iconOnly && 'icon-only',\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isNativeButton ? isDisabled : undefined}\n aria-busy={loading || undefined}\n aria-disabled={!isNativeButton && isDisabled ? true : undefined}\n onClick={handleClick}\n onPointerDown={(event: PointerEvent<HTMLElement>) => {\n handlePointerDown(event as never)\n onPointerDown?.(event as never)\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget as HTMLElement)\n }\n\n onKeyDown?.(event as never)\n }}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({badge, badgeColor, badgePulsing})}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" aria-hidden=\"true\" />}\n {startIcon && <span className=\"icon start\">{startIcon}</span>}\n {children && <span className=\"content\">{children}</span>}\n {endIcon && <span className=\"icon end\">{endIcon}</span>}\n </Component>\n )\n})\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./icons-DWMgDKgt.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MCheckbox-C40ESQRe.cjs`),r=require(`./MInputSearch-DfoenJIm.cjs`),i=require(`./MPagination-CZEJMJzZ.cjs`);require(`./core-AKWkE8Bx.cjs`);let a=require(`react`),o=require(`react/jsx-runtime`);function s(e,t,n){return typeof n==`function`?n(e,t):String(typeof n==`string`?e[n]:e.id??t)}function c({columns:c,data:l,rowKey:u,sortable:d=!1,filterable:f=!1,selectable:p=!1,pagination:m=!1,pageSize:h=10,striped:g=!1,compact:_=!1,stickyHeader:v=!1,sort:y,onSortChange:b,selectedKeys:x,onSelectionChange:S,emptyText:C=`No data`,filterPlaceholder:w=`Search...`,className:T,...E}){let[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)([]),[j,M]=(0,a.useState)(``),[N,P]=(0,a.useState)(0),F=y===void 0?D:y,I=x??k,L=S??A;function R(e){let t;t=F?.key===e?F.dir===`asc`?{key:e,dir:`desc`}:null:{key:e,dir:`asc`},b?b(t):O(t),P(0)}let z=(0,a.useMemo)(()=>{if(!f||!j.trim())return l;let e=j.toLowerCase();return l.filter(t=>c.some(n=>{if(n.filterable===!1)return!1;let r=t[n.key];return r!=null&&String(r).toLowerCase().includes(e)}))},[l,j,f,c]),B=(0,a.useMemo)(()=>{if(!F||!c.find(e=>e.key===F.key)?.sortable&&!d)return z;let e=F.dir===`asc`?1:-1;return[...z].sort((t,n)=>{let r=t[F.key],i=n[F.key];return r==null&&i==null?0:r==null?1:i==null?-1:typeof r==`number`&&typeof i==`number`?(r-i)*e:String(r).localeCompare(String(i))*e})},[z,F,c,d]),V=m?Math.max(1,Math.ceil(B.length/h)):1,H=m?B.slice(N*h,(N+1)*h):B,U=H.map((e,t)=>s(e,N*h+t,u)),W=U.length>0&&U.every(e=>I.includes(e));function G(){L(W?I.filter(e=>!U.includes(e)):[...new Set([...I,...U])])}function K(e){L(I.includes(e)?I.filter(t=>t!==e):[...I,e])}function q(e,t){t.target.closest(`button, a, [data-no-row-select]`)||K(e)}return(0,o.jsxs)(`div`,{className:t.t(`data-table`,T),...E,children:[f&&(0,o.jsx)(`div`,{className:`toolbar`,children:(0,o.jsx)(r.t,{className:`filter-search`,size:`sm`,fullWidth:!0,placeholder:w,value:j,onChange:e=>{M(e.target.value),P(0)},onClear:()=>{M(``),P(0)}})}),(0,o.jsx)(`div`,{className:`scroll`,children:(0,o.jsxs)(`table`,{className:t.t(`root`,g&&`striped`,_&&`compact`),children:[(0,o.jsx)(`thead`,{className:t.t(`head`,v&&`sticky`),children:(0,o.jsxs)(`tr`,{children:[p&&(0,o.jsx)(`th`,{className:`th check-col`,children:(0,o.jsx)(n.t,{checked:W,onChange:G,size:`sm`,clickEffect:`none`})}),c.map(n=>{let r=n.sortable??d,i=F?.key===n.key;return(0,o.jsx)(`th`,{className:t.t(`th`,r&&`sortable`,i&&`sorted-${F.dir}`),style:{width:n.width,textAlign:n.align},onClick:r?()=>R(n.key):void 0,children:(0,o.jsxs)(`span`,{className:`th-content`,children:[n.label,r&&(0,o.jsx)(`span`,{className:`sort-icon`,children:i?F.dir===`asc`?(0,o.jsx)(e.ki,{"aria-hidden":`true`}):(0,o.jsx)(e.Oi,{"aria-hidden":`true`}):(0,o.jsx)(e.Di,{"aria-hidden":`true`})})]})},n.key)})]})}),(0,o.jsxs)(`tbody`,{children:[H.length===0&&(0,o.jsx)(`tr`,{children:(0,o.jsx)(`td`,{className:`empty`,colSpan:c.length+ +!!p,children:C})}),H.map((e,r)=>{let i=s(e,N*h+r,u),a=I.includes(i);return(0,o.jsxs)(`tr`,{className:t.t(`row`,a&&`selected`,p&&`selectable`),onClick:p?e=>q(i,e):void 0,children:[p&&(0,o.jsx)(`td`,{className:`td check-col`,children:(0,o.jsx)(n.t,{checked:a,onChange:()=>{},size:`sm`,clickEffect:`none`})}),c.map(t=>(0,o.jsx)(`td`,{className:`td`,style:{textAlign:t.align},children:t.render?t.render(e[t.key],e,N*h+r):e[t.key]},t.key))]},i)})]})]})}),m&&V>1&&(0,o.jsx)(i.t,{total:B.length,page:N+1,pageSize:h,onChange:e=>P(e-1)})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
|
|
2
|
-
//# sourceMappingURL=MDataTable-Bx7W-Ari.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MDataTable-Bx7W-Ari.cjs","names":[],"sources":["../src/components/data/MDataTable/MDataTable.tsx"],"sourcesContent":["import {useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {MDataTableProps, MDataTableSort} from './MDataTable.types'\nimport {MCheckbox} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MPagination} from '../../layout'\nimport {MArrowDownIcon, MArrowUpDownIcon, MArrowUpIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MDataTable.css'\n\nfunction getRowKey<T>(row: T, index: number, rowKey?: string | ((row: T, index: number) => string)): string {\n if (typeof rowKey === 'function') return rowKey(row, index)\n if (typeof rowKey === 'string') return String((row as any)[rowKey])\n return String((row as any).id ?? index)\n}\n\nexport function MDataTable<T = any>({\n columns,\n data,\n rowKey,\n sortable = false,\n filterable = false,\n selectable = false,\n pagination = false,\n pageSize = 10,\n striped = false,\n compact = false,\n stickyHeader = false,\n sort: controlledSort,\n onSortChange,\n selectedKeys: controlledSelected,\n onSelectionChange,\n emptyText = 'No data',\n filterPlaceholder = 'Search...',\n className,\n ...rest\n}: MDataTableProps<T>) {\n const [internalSort, setInternalSort] = useState<MDataTableSort | null>(null)\n const [internalSelected, setInternalSelected] = useState<string[]>([])\n const [filter, setFilter] = useState('')\n const [page, setPage] = useState(0)\n\n const activeSort = controlledSort !== undefined ? controlledSort : internalSort\n const selected = controlledSelected ?? internalSelected\n const setSelected = onSelectionChange ?? setInternalSelected\n\n function handleSort(key: string) {\n let next: MDataTableSort | null\n\n if (activeSort?.key === key) {\n next = activeSort.dir === 'asc' ? {key, dir: 'desc'} : null\n } else {\n next = {key, dir: 'asc'}\n }\n\n if (onSortChange) onSortChange(next)\n else setInternalSort(next)\n\n setPage(0)\n }\n\n const filtered = useMemo(() => {\n if (!filterable || !filter.trim()) return data\n\n const query = filter.toLowerCase()\n\n return data.filter((row) =>\n columns.some((col) => {\n if (col.filterable === false) return false\n\n const value = (row as any)[col.key]\n return value != null && String(value).toLowerCase().includes(query)\n })\n )\n }, [data, filter, filterable, columns])\n\n const sorted = useMemo(() => {\n if (!activeSort) return filtered\n\n const col = columns.find((item) => item.key === activeSort.key)\n if (!col?.sortable && !sortable) return filtered\n\n const dir = activeSort.dir === 'asc' ? 1 : -1\n\n return [...filtered].sort((a, b) => {\n const va = (a as any)[activeSort.key]\n const vb = (b as any)[activeSort.key]\n\n if (va == null && vb == null) return 0\n if (va == null) return 1\n if (vb == null) return -1\n if (typeof va === 'number' && typeof vb === 'number') return (va - vb) * dir\n\n return String(va).localeCompare(String(vb)) * dir\n })\n }, [filtered, activeSort, columns, sortable])\n\n const totalPages = pagination ? Math.max(1, Math.ceil(sorted.length / pageSize)) : 1\n const pageData = pagination ? sorted.slice(page * pageSize, (page + 1) * pageSize) : sorted\n\n const allKeys = pageData.map((row, index) => getRowKey(row, page * pageSize + index, rowKey))\n const allSelected = allKeys.length > 0 && allKeys.every((key) => selected.includes(key))\n\n function toggleAll() {\n if (allSelected) {\n setSelected(selected.filter((key) => !allKeys.includes(key)))\n } else {\n setSelected([...new Set([...selected, ...allKeys])])\n }\n }\n\n function toggleRow(key: string) {\n setSelected(selected.includes(key) ? selected.filter((item) => item !== key) : [...selected, key])\n }\n\n function handleRowClick(key: string, event: React.MouseEvent) {\n const target = event.target as HTMLElement\n if (target.closest('button, a, [data-no-row-select]')) return\n toggleRow(key)\n }\n\n return (\n <div className={cn('data-table', className)} {...rest}>\n {filterable && (\n <div className=\"toolbar\">\n <MInputSearch\n className=\"filter-search\"\n size=\"sm\"\n fullWidth\n placeholder={filterPlaceholder}\n value={filter}\n onChange={(event) => {\n setFilter(event.target.value)\n setPage(0)\n }}\n onClear={() => {\n setFilter('')\n setPage(0)\n }}\n />\n </div>\n )}\n <div className=\"scroll\">\n <table className={cn('root', striped && 'striped', compact && 'compact')}>\n <thead className={cn('head', stickyHeader && 'sticky')}>\n <tr>\n {selectable && (\n <th className=\"th check-col\">\n <MCheckbox\n checked={allSelected}\n onChange={toggleAll}\n size=\"sm\"\n clickEffect=\"none\"\n />\n </th>\n )}\n {columns.map((col) => {\n const isSortable = col.sortable ?? sortable\n const isSorted = activeSort?.key === col.key\n\n return (\n <th\n key={col.key}\n className={cn(\n 'th',\n isSortable && 'sortable',\n isSorted && `sorted-${activeSort!.dir}`\n )}\n style={{\n width: col.width,\n textAlign: col.align,\n }}\n onClick={isSortable ? () => handleSort(col.key) : undefined}\n >\n <span className=\"th-content\">\n {col.label}\n {isSortable && (\n <span className=\"sort-icon\">\n {isSorted ? (\n activeSort!.dir === 'asc' ? (\n <MArrowUpIcon aria-hidden=\"true\" />\n ) : (\n <MArrowDownIcon aria-hidden=\"true\" />\n )\n ) : (\n <MArrowUpDownIcon aria-hidden=\"true\" />\n )}\n </span>\n )}\n </span>\n </th>\n )\n })}\n </tr>\n </thead>\n <tbody>\n {pageData.length === 0 && (\n <tr>\n <td className=\"empty\" colSpan={columns.length + (selectable ? 1 : 0)}>\n {emptyText}\n </td>\n </tr>\n )}\n {pageData.map((row, index) => {\n const key = getRowKey(row, page * pageSize + index, rowKey)\n const isSelected = selected.includes(key)\n\n return (\n <tr\n key={key}\n className={cn('row', isSelected && 'selected', selectable && 'selectable')}\n onClick={selectable ? (event) => handleRowClick(key, event) : undefined}\n >\n {selectable && (\n <td className=\"td check-col\">\n <MCheckbox\n checked={isSelected}\n onChange={() => {}}\n size=\"sm\"\n clickEffect=\"none\"\n />\n </td>\n )}\n {columns.map((col) => (\n <td key={col.key} className=\"td\" style={{textAlign: col.align}}>\n {col.render\n ? col.render((row as any)[col.key], row, page * pageSize + index)\n : (row as any)[col.key]}\n </td>\n ))}\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n {pagination && totalPages > 1 && (\n <MPagination\n total={sorted.length}\n page={page + 1}\n pageSize={pageSize}\n onChange={(nextPage) => setPage(nextPage - 1)}\n />\n )}\n </div>\n )\n}\n"],"mappings":"mRAUA,SAAS,EAAa,EAAQ,EAAe,EAA+D,CAGxG,OAFI,OAAO,GAAW,WAAmB,EAAO,EAAK,EAAM,CACpB,OAAnC,OAAO,GAAW,SAAyB,EAAY,GAC5C,EAAY,IAAM,EADkC,CAIvE,SAAgB,EAAoB,CAChC,UACA,OACA,SACA,WAAW,GACX,aAAa,GACb,aAAa,GACb,aAAa,GACb,WAAW,GACX,UAAU,GACV,UAAU,GACV,eAAe,GACf,KAAM,EACN,eACA,aAAc,EACd,oBACA,YAAY,UACZ,oBAAoB,YACpB,YACA,GAAG,GACgB,CACnB,GAAM,CAAC,EAAc,IAAA,EAAA,EAAA,UAAmD,KAAK,CACvE,CAAC,EAAkB,IAAA,EAAA,EAAA,UAA0C,EAAE,CAAC,CAChE,CAAC,EAAQ,IAAA,EAAA,EAAA,UAAsB,GAAG,CAClC,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,EAAE,CAE7B,EAAa,IAAmB,IAAA,GAA6B,EAAjB,EAC5C,EAAW,GAAsB,EACjC,EAAc,GAAqB,EAEzC,SAAS,EAAW,EAAa,CAC7B,IAAI,EAEJ,AAGI,EAHA,GAAY,MAAQ,EACb,EAAW,MAAQ,MAAQ,CAAC,MAAK,IAAK,OAAO,CAAG,KAEhD,CAAC,MAAK,IAAK,MAAM,CAGxB,EAAc,EAAa,EAAK,CAC/B,EAAgB,EAAK,CAE1B,EAAQ,EAAE,CAGd,IAAM,GAAA,EAAA,EAAA,aAAyB,CAC3B,GAAI,CAAC,GAAc,CAAC,EAAO,MAAM,CAAE,OAAO,EAE1C,IAAM,EAAQ,EAAO,aAAa,CAElC,OAAO,EAAK,OAAQ,GAChB,EAAQ,KAAM,GAAQ,CAClB,GAAI,EAAI,aAAe,GAAO,MAAO,GAErC,IAAM,EAAS,EAAY,EAAI,KAC/B,OAAO,GAAS,MAAQ,OAAO,EAAM,CAAC,aAAa,CAAC,SAAS,EAAM,EACrE,CACL,EACF,CAAC,EAAM,EAAQ,EAAY,EAAQ,CAAC,CAEjC,GAAA,EAAA,EAAA,aAAuB,CAIzB,GAHI,CAAC,GAGD,CADQ,EAAQ,KAAM,GAAS,EAAK,MAAQ,EAAW,IAAI,EACrD,UAAY,CAAC,EAAU,OAAO,EAExC,IAAM,EAAM,EAAW,MAAQ,MAAQ,EAAI,GAE3C,MAAO,CAAC,GAAG,EAAS,CAAC,MAAM,EAAG,IAAM,CAChC,IAAM,EAAM,EAAU,EAAW,KAC3B,EAAM,EAAU,EAAW,KAOjC,OALI,GAAM,MAAQ,GAAM,KAAa,EACjC,GAAM,KAAa,EACnB,GAAM,KAAa,GACnB,OAAO,GAAO,UAAY,OAAO,GAAO,UAAkB,EAAK,GAAM,EAElE,OAAO,EAAG,CAAC,cAAc,OAAO,EAAG,CAAC,CAAG,GAChD,EACH,CAAC,EAAU,EAAY,EAAS,EAAS,CAAC,CAEvC,EAAa,EAAa,KAAK,IAAI,EAAG,KAAK,KAAK,EAAO,OAAS,EAAS,CAAC,CAAG,EAC7E,EAAW,EAAa,EAAO,MAAM,EAAO,GAAW,EAAO,GAAK,EAAS,CAAG,EAE/E,EAAU,EAAS,KAAK,EAAK,IAAU,EAAU,EAAK,EAAO,EAAW,EAAO,EAAO,CAAC,CACvF,EAAc,EAAQ,OAAS,GAAK,EAAQ,MAAO,GAAQ,EAAS,SAAS,EAAI,CAAC,CAExF,SAAS,GAAY,CAEb,EADA,EACY,EAAS,OAAQ,GAAQ,CAAC,EAAQ,SAAS,EAAI,CAAC,CAEhD,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAU,GAAG,EAAQ,CAAC,CAAC,CAAC,CAI5D,SAAS,EAAU,EAAa,CAC5B,EAAY,EAAS,SAAS,EAAI,CAAG,EAAS,OAAQ,GAAS,IAAS,EAAI,CAAG,CAAC,GAAG,EAAU,EAAI,CAAC,CAGtG,SAAS,EAAe,EAAa,EAAyB,CAC3C,EAAM,OACV,QAAQ,kCAAkC,EACrD,EAAU,EAAI,CAGlB,OACI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,EAAG,aAAc,EAAU,CAAE,GAAI,WAAjD,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oBACX,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,UAAU,gBACV,KAAK,KACL,UAAA,GACA,YAAa,EACb,MAAO,EACP,SAAW,GAAU,CACjB,EAAU,EAAM,OAAO,MAAM,CAC7B,EAAQ,EAAE,EAEd,YAAe,CACX,EAAU,GAAG,CACb,EAAQ,EAAE,EAEhB,CAAA,CACA,CAAA,EAEV,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mBACX,EAAA,EAAA,MAAC,QAAD,CAAO,UAAW,EAAA,EAAG,OAAQ,GAAW,UAAW,GAAW,UAAU,UAAxE,EACI,EAAA,EAAA,KAAC,QAAD,CAAO,UAAW,EAAA,EAAG,OAAQ,GAAgB,SAAS,WAClD,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yBACV,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAS,EACT,SAAU,EACV,KAAK,KACL,YAAY,OACd,CAAA,CACD,CAAA,CAER,EAAQ,IAAK,GAAQ,CAClB,IAAM,EAAa,EAAI,UAAY,EAC7B,EAAW,GAAY,MAAQ,EAAI,IAEzC,OACI,EAAA,EAAA,KAAC,KAAD,CAEI,UAAW,EAAA,EACP,KACA,GAAc,WACd,GAAY,UAAU,EAAY,MACrC,CACD,MAAO,CACH,MAAO,EAAI,MACX,UAAW,EAAI,MAClB,CACD,QAAS,MAAmB,EAAW,EAAI,IAAI,CAAG,IAAA,aAElD,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,sBAAhB,CACK,EAAI,MACJ,IACG,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qBACX,EACG,EAAY,MAAQ,OAChB,EAAA,EAAA,KAAC,EAAA,GAAD,CAAc,cAAY,OAAS,CAAA,EAEnC,EAAA,EAAA,KAAC,EAAA,GAAD,CAAgB,cAAY,OAAS,CAAA,EAGzC,EAAA,EAAA,KAAC,EAAA,GAAD,CAAkB,cAAY,OAAS,CAAA,CAExC,CAAA,CAER,GACN,CA5BI,EAAI,IA4BR,EAEX,CACD,CAAA,CAAA,CACD,CAAA,EACR,EAAA,EAAA,MAAC,QAAD,CAAA,SAAA,CACK,EAAS,SAAW,IACjB,EAAA,EAAA,KAAC,KAAD,CAAA,UACI,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,QAAQ,QAAS,EAAQ,QAAU,cAC5C,EACA,CAAA,CACJ,CAAA,CAER,EAAS,KAAK,EAAK,IAAU,CAC1B,IAAM,EAAM,EAAU,EAAK,EAAO,EAAW,EAAO,EAAO,CACrD,EAAa,EAAS,SAAS,EAAI,CAEzC,OACI,EAAA,EAAA,MAAC,KAAD,CAEI,UAAW,EAAA,EAAG,MAAO,GAAc,WAAY,GAAc,aAAa,CAC1E,QAAS,EAAc,GAAU,EAAe,EAAK,EAAM,CAAG,IAAA,YAHlE,CAKK,IACG,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yBACV,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAS,EACT,aAAgB,GAChB,KAAK,KACL,YAAY,OACd,CAAA,CACD,CAAA,CAER,EAAQ,IAAK,IACV,EAAA,EAAA,KAAC,KAAD,CAAkB,UAAU,KAAK,MAAO,CAAC,UAAW,EAAI,MAAM,UACzD,EAAI,OACC,EAAI,OAAQ,EAAY,EAAI,KAAM,EAAK,EAAO,EAAW,EAAM,CAC9D,EAAY,EAAI,KACtB,CAJI,EAAI,IAIR,CACP,CACD,EArBI,EAqBJ,EAEX,CACE,CAAA,CAAA,CACJ,GACN,CAAA,CACL,GAAc,EAAa,IACxB,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,MAAO,EAAO,OACd,KAAM,EAAO,EACH,WACV,SAAW,GAAa,EAAQ,EAAW,EAAE,CAC/C,CAAA,CAEJ"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { Di as e, Oi as t, ki as n } from "./icons-CfpYxnfg.js";
|
|
2
|
-
import { t as r } from "./cn-YER3QsV1.js";
|
|
3
|
-
import { t as i } from "./MCheckbox-B-nT2OBE.js";
|
|
4
|
-
import { t as a } from "./MInputSearch-Dh4C3Tz5.js";
|
|
5
|
-
import { t as o } from "./MPagination-CTnaW5AW.js";
|
|
6
|
-
import { useMemo as s, useState as c } from "react";
|
|
7
|
-
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
|
-
//#region src/components/data/MDataTable/MDataTable.tsx
|
|
9
|
-
function d(e, t, n) {
|
|
10
|
-
return typeof n == "function" ? n(e, t) : String(typeof n == "string" ? e[n] : e.id ?? t);
|
|
11
|
-
}
|
|
12
|
-
function f({ columns: f, data: p, rowKey: m, sortable: h = !1, filterable: g = !1, selectable: _ = !1, pagination: v = !1, pageSize: y = 10, striped: b = !1, compact: x = !1, stickyHeader: S = !1, sort: C, onSortChange: w, selectedKeys: T, onSelectionChange: E, emptyText: D = "No data", filterPlaceholder: O = "Search...", className: k, ...A }) {
|
|
13
|
-
let [j, M] = c(null), [N, P] = c([]), [F, I] = c(""), [L, R] = c(0), z = C === void 0 ? j : C, B = T ?? N, V = E ?? P;
|
|
14
|
-
function H(e) {
|
|
15
|
-
let t;
|
|
16
|
-
t = z?.key === e ? z.dir === "asc" ? {
|
|
17
|
-
key: e,
|
|
18
|
-
dir: "desc"
|
|
19
|
-
} : null : {
|
|
20
|
-
key: e,
|
|
21
|
-
dir: "asc"
|
|
22
|
-
}, w ? w(t) : M(t), R(0);
|
|
23
|
-
}
|
|
24
|
-
let U = s(() => {
|
|
25
|
-
if (!g || !F.trim()) return p;
|
|
26
|
-
let e = F.toLowerCase();
|
|
27
|
-
return p.filter((t) => f.some((n) => {
|
|
28
|
-
if (n.filterable === !1) return !1;
|
|
29
|
-
let r = t[n.key];
|
|
30
|
-
return r != null && String(r).toLowerCase().includes(e);
|
|
31
|
-
}));
|
|
32
|
-
}, [
|
|
33
|
-
p,
|
|
34
|
-
F,
|
|
35
|
-
g,
|
|
36
|
-
f
|
|
37
|
-
]), W = s(() => {
|
|
38
|
-
if (!z || !f.find((e) => e.key === z.key)?.sortable && !h) return U;
|
|
39
|
-
let e = z.dir === "asc" ? 1 : -1;
|
|
40
|
-
return [...U].sort((t, n) => {
|
|
41
|
-
let r = t[z.key], i = n[z.key];
|
|
42
|
-
return r == null && i == null ? 0 : r == null ? 1 : i == null ? -1 : typeof r == "number" && typeof i == "number" ? (r - i) * e : String(r).localeCompare(String(i)) * e;
|
|
43
|
-
});
|
|
44
|
-
}, [
|
|
45
|
-
U,
|
|
46
|
-
z,
|
|
47
|
-
f,
|
|
48
|
-
h
|
|
49
|
-
]), G = v ? Math.max(1, Math.ceil(W.length / y)) : 1, K = v ? W.slice(L * y, (L + 1) * y) : W, q = K.map((e, t) => d(e, L * y + t, m)), J = q.length > 0 && q.every((e) => B.includes(e));
|
|
50
|
-
function Y() {
|
|
51
|
-
V(J ? B.filter((e) => !q.includes(e)) : [...new Set([...B, ...q])]);
|
|
52
|
-
}
|
|
53
|
-
function X(e) {
|
|
54
|
-
V(B.includes(e) ? B.filter((t) => t !== e) : [...B, e]);
|
|
55
|
-
}
|
|
56
|
-
function Z(e, t) {
|
|
57
|
-
t.target.closest("button, a, [data-no-row-select]") || X(e);
|
|
58
|
-
}
|
|
59
|
-
return /* @__PURE__ */ u("div", {
|
|
60
|
-
className: r("data-table", k),
|
|
61
|
-
...A,
|
|
62
|
-
children: [
|
|
63
|
-
g && /* @__PURE__ */ l("div", {
|
|
64
|
-
className: "toolbar",
|
|
65
|
-
children: /* @__PURE__ */ l(a, {
|
|
66
|
-
className: "filter-search",
|
|
67
|
-
size: "sm",
|
|
68
|
-
fullWidth: !0,
|
|
69
|
-
placeholder: O,
|
|
70
|
-
value: F,
|
|
71
|
-
onChange: (e) => {
|
|
72
|
-
I(e.target.value), R(0);
|
|
73
|
-
},
|
|
74
|
-
onClear: () => {
|
|
75
|
-
I(""), R(0);
|
|
76
|
-
}
|
|
77
|
-
})
|
|
78
|
-
}),
|
|
79
|
-
/* @__PURE__ */ l("div", {
|
|
80
|
-
className: "scroll",
|
|
81
|
-
children: /* @__PURE__ */ u("table", {
|
|
82
|
-
className: r("root", b && "striped", x && "compact"),
|
|
83
|
-
children: [/* @__PURE__ */ l("thead", {
|
|
84
|
-
className: r("head", S && "sticky"),
|
|
85
|
-
children: /* @__PURE__ */ u("tr", { children: [_ && /* @__PURE__ */ l("th", {
|
|
86
|
-
className: "th check-col",
|
|
87
|
-
children: /* @__PURE__ */ l(i, {
|
|
88
|
-
checked: J,
|
|
89
|
-
onChange: Y,
|
|
90
|
-
size: "sm",
|
|
91
|
-
clickEffect: "none"
|
|
92
|
-
})
|
|
93
|
-
}), f.map((i) => {
|
|
94
|
-
let a = i.sortable ?? h, o = z?.key === i.key;
|
|
95
|
-
return /* @__PURE__ */ l("th", {
|
|
96
|
-
className: r("th", a && "sortable", o && `sorted-${z.dir}`),
|
|
97
|
-
style: {
|
|
98
|
-
width: i.width,
|
|
99
|
-
textAlign: i.align
|
|
100
|
-
},
|
|
101
|
-
onClick: a ? () => H(i.key) : void 0,
|
|
102
|
-
children: /* @__PURE__ */ u("span", {
|
|
103
|
-
className: "th-content",
|
|
104
|
-
children: [i.label, a && /* @__PURE__ */ l("span", {
|
|
105
|
-
className: "sort-icon",
|
|
106
|
-
children: o ? z.dir === "asc" ? /* @__PURE__ */ l(n, { "aria-hidden": "true" }) : /* @__PURE__ */ l(t, { "aria-hidden": "true" }) : /* @__PURE__ */ l(e, { "aria-hidden": "true" })
|
|
107
|
-
})]
|
|
108
|
-
})
|
|
109
|
-
}, i.key);
|
|
110
|
-
})] })
|
|
111
|
-
}), /* @__PURE__ */ u("tbody", { children: [K.length === 0 && /* @__PURE__ */ l("tr", { children: /* @__PURE__ */ l("td", {
|
|
112
|
-
className: "empty",
|
|
113
|
-
colSpan: f.length + +!!_,
|
|
114
|
-
children: D
|
|
115
|
-
}) }), K.map((e, t) => {
|
|
116
|
-
let n = d(e, L * y + t, m), a = B.includes(n);
|
|
117
|
-
return /* @__PURE__ */ u("tr", {
|
|
118
|
-
className: r("row", a && "selected", _ && "selectable"),
|
|
119
|
-
onClick: _ ? (e) => Z(n, e) : void 0,
|
|
120
|
-
children: [_ && /* @__PURE__ */ l("td", {
|
|
121
|
-
className: "td check-col",
|
|
122
|
-
children: /* @__PURE__ */ l(i, {
|
|
123
|
-
checked: a,
|
|
124
|
-
onChange: () => {},
|
|
125
|
-
size: "sm",
|
|
126
|
-
clickEffect: "none"
|
|
127
|
-
})
|
|
128
|
-
}), f.map((n) => /* @__PURE__ */ l("td", {
|
|
129
|
-
className: "td",
|
|
130
|
-
style: { textAlign: n.align },
|
|
131
|
-
children: n.render ? n.render(e[n.key], e, L * y + t) : e[n.key]
|
|
132
|
-
}, n.key))]
|
|
133
|
-
}, n);
|
|
134
|
-
})] })]
|
|
135
|
-
})
|
|
136
|
-
}),
|
|
137
|
-
v && G > 1 && /* @__PURE__ */ l(o, {
|
|
138
|
-
total: W.length,
|
|
139
|
-
page: L + 1,
|
|
140
|
-
pageSize: y,
|
|
141
|
-
onChange: (e) => R(e - 1)
|
|
142
|
-
})
|
|
143
|
-
]
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
//#endregion
|
|
147
|
-
export { f as t };
|
|
148
|
-
|
|
149
|
-
//# sourceMappingURL=MDataTable-ByvNQqNP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MDataTable-ByvNQqNP.js","names":[],"sources":["../src/components/data/MDataTable/MDataTable.tsx"],"sourcesContent":["import {useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {MDataTableProps, MDataTableSort} from './MDataTable.types'\nimport {MCheckbox} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MPagination} from '../../layout'\nimport {MArrowDownIcon, MArrowUpDownIcon, MArrowUpIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MDataTable.css'\n\nfunction getRowKey<T>(row: T, index: number, rowKey?: string | ((row: T, index: number) => string)): string {\n if (typeof rowKey === 'function') return rowKey(row, index)\n if (typeof rowKey === 'string') return String((row as any)[rowKey])\n return String((row as any).id ?? index)\n}\n\nexport function MDataTable<T = any>({\n columns,\n data,\n rowKey,\n sortable = false,\n filterable = false,\n selectable = false,\n pagination = false,\n pageSize = 10,\n striped = false,\n compact = false,\n stickyHeader = false,\n sort: controlledSort,\n onSortChange,\n selectedKeys: controlledSelected,\n onSelectionChange,\n emptyText = 'No data',\n filterPlaceholder = 'Search...',\n className,\n ...rest\n}: MDataTableProps<T>) {\n const [internalSort, setInternalSort] = useState<MDataTableSort | null>(null)\n const [internalSelected, setInternalSelected] = useState<string[]>([])\n const [filter, setFilter] = useState('')\n const [page, setPage] = useState(0)\n\n const activeSort = controlledSort !== undefined ? controlledSort : internalSort\n const selected = controlledSelected ?? internalSelected\n const setSelected = onSelectionChange ?? setInternalSelected\n\n function handleSort(key: string) {\n let next: MDataTableSort | null\n\n if (activeSort?.key === key) {\n next = activeSort.dir === 'asc' ? {key, dir: 'desc'} : null\n } else {\n next = {key, dir: 'asc'}\n }\n\n if (onSortChange) onSortChange(next)\n else setInternalSort(next)\n\n setPage(0)\n }\n\n const filtered = useMemo(() => {\n if (!filterable || !filter.trim()) return data\n\n const query = filter.toLowerCase()\n\n return data.filter((row) =>\n columns.some((col) => {\n if (col.filterable === false) return false\n\n const value = (row as any)[col.key]\n return value != null && String(value).toLowerCase().includes(query)\n })\n )\n }, [data, filter, filterable, columns])\n\n const sorted = useMemo(() => {\n if (!activeSort) return filtered\n\n const col = columns.find((item) => item.key === activeSort.key)\n if (!col?.sortable && !sortable) return filtered\n\n const dir = activeSort.dir === 'asc' ? 1 : -1\n\n return [...filtered].sort((a, b) => {\n const va = (a as any)[activeSort.key]\n const vb = (b as any)[activeSort.key]\n\n if (va == null && vb == null) return 0\n if (va == null) return 1\n if (vb == null) return -1\n if (typeof va === 'number' && typeof vb === 'number') return (va - vb) * dir\n\n return String(va).localeCompare(String(vb)) * dir\n })\n }, [filtered, activeSort, columns, sortable])\n\n const totalPages = pagination ? Math.max(1, Math.ceil(sorted.length / pageSize)) : 1\n const pageData = pagination ? sorted.slice(page * pageSize, (page + 1) * pageSize) : sorted\n\n const allKeys = pageData.map((row, index) => getRowKey(row, page * pageSize + index, rowKey))\n const allSelected = allKeys.length > 0 && allKeys.every((key) => selected.includes(key))\n\n function toggleAll() {\n if (allSelected) {\n setSelected(selected.filter((key) => !allKeys.includes(key)))\n } else {\n setSelected([...new Set([...selected, ...allKeys])])\n }\n }\n\n function toggleRow(key: string) {\n setSelected(selected.includes(key) ? selected.filter((item) => item !== key) : [...selected, key])\n }\n\n function handleRowClick(key: string, event: React.MouseEvent) {\n const target = event.target as HTMLElement\n if (target.closest('button, a, [data-no-row-select]')) return\n toggleRow(key)\n }\n\n return (\n <div className={cn('data-table', className)} {...rest}>\n {filterable && (\n <div className=\"toolbar\">\n <MInputSearch\n className=\"filter-search\"\n size=\"sm\"\n fullWidth\n placeholder={filterPlaceholder}\n value={filter}\n onChange={(event) => {\n setFilter(event.target.value)\n setPage(0)\n }}\n onClear={() => {\n setFilter('')\n setPage(0)\n }}\n />\n </div>\n )}\n <div className=\"scroll\">\n <table className={cn('root', striped && 'striped', compact && 'compact')}>\n <thead className={cn('head', stickyHeader && 'sticky')}>\n <tr>\n {selectable && (\n <th className=\"th check-col\">\n <MCheckbox\n checked={allSelected}\n onChange={toggleAll}\n size=\"sm\"\n clickEffect=\"none\"\n />\n </th>\n )}\n {columns.map((col) => {\n const isSortable = col.sortable ?? sortable\n const isSorted = activeSort?.key === col.key\n\n return (\n <th\n key={col.key}\n className={cn(\n 'th',\n isSortable && 'sortable',\n isSorted && `sorted-${activeSort!.dir}`\n )}\n style={{\n width: col.width,\n textAlign: col.align,\n }}\n onClick={isSortable ? () => handleSort(col.key) : undefined}\n >\n <span className=\"th-content\">\n {col.label}\n {isSortable && (\n <span className=\"sort-icon\">\n {isSorted ? (\n activeSort!.dir === 'asc' ? (\n <MArrowUpIcon aria-hidden=\"true\" />\n ) : (\n <MArrowDownIcon aria-hidden=\"true\" />\n )\n ) : (\n <MArrowUpDownIcon aria-hidden=\"true\" />\n )}\n </span>\n )}\n </span>\n </th>\n )\n })}\n </tr>\n </thead>\n <tbody>\n {pageData.length === 0 && (\n <tr>\n <td className=\"empty\" colSpan={columns.length + (selectable ? 1 : 0)}>\n {emptyText}\n </td>\n </tr>\n )}\n {pageData.map((row, index) => {\n const key = getRowKey(row, page * pageSize + index, rowKey)\n const isSelected = selected.includes(key)\n\n return (\n <tr\n key={key}\n className={cn('row', isSelected && 'selected', selectable && 'selectable')}\n onClick={selectable ? (event) => handleRowClick(key, event) : undefined}\n >\n {selectable && (\n <td className=\"td check-col\">\n <MCheckbox\n checked={isSelected}\n onChange={() => {}}\n size=\"sm\"\n clickEffect=\"none\"\n />\n </td>\n )}\n {columns.map((col) => (\n <td key={col.key} className=\"td\" style={{textAlign: col.align}}>\n {col.render\n ? col.render((row as any)[col.key], row, page * pageSize + index)\n : (row as any)[col.key]}\n </td>\n ))}\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n {pagination && totalPages > 1 && (\n <MPagination\n total={sorted.length}\n page={page + 1}\n pageSize={pageSize}\n onChange={(nextPage) => setPage(nextPage - 1)}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./cn-CU5TNITO.cjs`),t=require(`./useKeyboardNav-CkIlAagq.cjs`),n=require(`./MPopover-B4IUb9f0.cjs`);require(`./core-AKWkE8Bx.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a(e){return e.props}function o(e){return!!e.type.__dropdownItem}function s(e){return!!e.type.__dropdownGroup}function c(e){let t=[];return r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&(o(e)?t.push(e):s(e)&&r.Children.forEach(a(e).children,e=>{(0,r.isValidElement)(e)&&o(e)&&t.push(e)}))}),t}function l({trigger:l,placement:u=`bottom-start`,closeOnSelect:d=!0,openOn:f=`click`,onOpenChange:p,className:m,style:h,popoverClassName:g,popoverStyle:_,children:v}){let[y,b]=(0,r.useState)(!1),x=(0,r.useRef)(null),S=(0,r.useRef)(null),C=c(v),w=C.filter(e=>!a(e).disabled).length,T=(0,r.useCallback)(e=>{b(t=>{let n=typeof e==`function`?e(t):e;return p?.(n),n})},[p]),{activeIndex:E,setActiveIndex:D,onKeyDown:O}=t.t({itemCount:w,onSelect:(0,r.useCallback)(e=>{let t=0;for(let n of C){let r=a(n);if(!r.disabled){if(t===e){r.onClick?.();break}t++}}d&&T(!1)},[C,d,T]),onClose:()=>b(!1),isOpen:y}),k=()=>T(e=>!e),A=e=>{(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),T(!0)),y&&O(e)},j=0,M=e=>{if(!(0,r.isValidElement)(e))return e;if(o(e)){let t=a(e),n=t.disabled,i=n?-1:j++;return(0,r.cloneElement)(e,{_active:i===E,_onHover:n?void 0:()=>D(i),_onClick:()=>{n||(t.onClick?.(),d&&T(!1))}})}return s(e)?(0,r.cloneElement)(e,{children:r.Children.map(a(e).children,M)}):e},N=f===`hover`?{onMouseEnter:()=>{S.current&&clearTimeout(S.current),T(!0)},onMouseLeave:()=>{S.current=setTimeout(()=>T(!1),150)}}:{};return(0,i.jsxs)(`div`,{className:e.t(`dropdown menu anchor`,m),style:h,...N,children:[(0,i.jsx)(`div`,{ref:x,onClick:f===`click`?k:void 0,onKeyDown:A,role:`button`,tabIndex:0,className:`dropdown menu trigger`,children:l}),(0,i.jsx)(n.t,{open:y,anchorRef:x,onClose:()=>T(!1),placement:u,className:e.t(`dropdown menu popover`,g),style:_,children:(0,i.jsx)(`div`,{className:`dropdown menu list`,role:`menu`,...N,children:r.Children.map(v,M)})})]})}function u({icon:t,label:n,href:r,to:a,onClick:o,color:s,disabled:c=!1,active:l=!1,component:u,className:d,_active:f,_onHover:p,_onClick:m}){let h=f??l,g=(0,i.jsxs)(i.Fragment,{children:[t&&(0,i.jsx)(`span`,{className:`dropdown menu icon`,children:t}),(0,i.jsx)(`span`,{className:`dropdown menu label`,children:n})]}),_=e.t(`dropdown menu item`,h&&`active`,c&&`disabled`,s,d),v=e=>{if(c){e.preventDefault();return}o?.(),m?.()},y=u??(r||a?`a`:`button`),b=u?{...r?{href:r}:{},...a?{to:a}:{}}:r?{href:r}:a?{href:a}:{};return(0,i.jsx)(y,{className:_,role:`menuitem`,tabIndex:-1,onClick:v,onMouseEnter:p,"aria-disabled":c||void 0,...b,children:g})}u.__dropdownItem=!0;function d({label:e,children:t}){return(0,i.jsxs)(`div`,{className:`dropdown menu group`,role:`group`,children:[(0,i.jsx)(`div`,{className:`dropdown menu group-label`,children:e}),t]})}d.__dropdownGroup=!0;function f({className:t}){return(0,i.jsx)(`div`,{className:e.t(`dropdown menu divider`,t),role:`separator`})}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
|
|
2
|
-
//# sourceMappingURL=MDropdownMenu-BmfXSc46.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MDropdownMenu-BmfXSc46.cjs","names":[],"sources":["../src/components/overlays/MDropdownMenu/MDropdownMenu.tsx"],"sourcesContent":["import {useState, useRef, useCallback, Children, isValidElement, cloneElement} from 'react'\nimport type * as React from 'react'\nimport {MPopover} from '../../primitives'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport {cn} from '../../../utils/cn'\nimport type {\n MDropdownMenuProps,\n MDropdownItemProps,\n MDropdownGroupProps,\n MDropdownDividerProps,\n} from './MDropdownMenu.types'\nimport './MDropdownMenu.css'\n\ntype AnyProps = Record<string, any>\n\nfunction getProps(el: React.ReactElement): AnyProps {\n return el.props as AnyProps\n}\n\nfunction isItem(child: React.ReactElement): boolean {\n return !!(child.type as any).__dropdownItem\n}\n\nfunction isGroup(child: React.ReactElement): boolean {\n return !!(child.type as any).__dropdownGroup\n}\n\n// Collect all MDropdownItem elements from children (including inside groups).\nfunction collectItems(children: React.ReactNode): React.ReactElement[] {\n const items: React.ReactElement[] = []\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return\n if (isItem(child)) {\n items.push(child)\n } else if (isGroup(child)) {\n Children.forEach(getProps(child).children, (gc: React.ReactNode) => {\n if (isValidElement(gc) && isItem(gc)) {\n items.push(gc)\n }\n })\n }\n })\n return items\n}\n\nexport function MDropdownMenu({\n trigger,\n placement = 'bottom-start',\n closeOnSelect = true,\n openOn = 'click',\n onOpenChange,\n className,\n style,\n popoverClassName,\n popoverStyle,\n children,\n}: MDropdownMenuProps) {\n const [open, setOpen] = useState(false)\n const anchorRef = useRef<HTMLDivElement>(null)\n const hoverTimeout = useRef<ReturnType<typeof setTimeout>>(null)\n\n const items = collectItems(children)\n const enabledCount = items.filter((i) => !getProps(i).disabled).length\n\n const setMenuOpen = useCallback(\n (next: boolean | ((prev: boolean) => boolean)) => {\n setOpen((prev) => {\n const resolved = typeof next === 'function' ? next(prev) : next\n onOpenChange?.(resolved)\n return resolved\n })\n },\n [onOpenChange]\n )\n\n const handleSelect = useCallback(\n (index: number) => {\n let enabledIdx = 0\n for (const item of items) {\n const p = getProps(item)\n if (p.disabled) continue\n if (enabledIdx === index) {\n p.onClick?.()\n break\n }\n enabledIdx++\n }\n if (closeOnSelect) setMenuOpen(false)\n },\n [items, closeOnSelect, setMenuOpen]\n )\n\n const {activeIndex, setActiveIndex, onKeyDown} = useKeyboardNav({\n itemCount: enabledCount,\n onSelect: handleSelect,\n onClose: () => setOpen(false),\n isOpen: open,\n })\n\n const handleTriggerClick = () => setMenuOpen((o) => !o)\n\n const handleTriggerKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setMenuOpen(true)\n }\n if (open) onKeyDown(e as any)\n }\n\n // Map active index back to flat child rendering with enabled-only tracking.\n let enabledIdx = 0\n const renderChild = (child: React.ReactNode): React.ReactNode => {\n if (!isValidElement(child)) return child\n\n if (isItem(child)) {\n const p = getProps(child)\n const isDisabled = p.disabled\n const idx = isDisabled ? -1 : enabledIdx++\n return cloneElement(child, {\n _active: idx === activeIndex,\n _onHover: isDisabled ? undefined : () => setActiveIndex(idx),\n _onClick: () => {\n if (isDisabled) return\n p.onClick?.()\n if (closeOnSelect) setMenuOpen(false)\n },\n } as AnyProps)\n }\n\n if (isGroup(child)) {\n return cloneElement(child, {\n children: Children.map(getProps(child).children, renderChild),\n } as AnyProps)\n }\n\n return child\n }\n\n const hoverHandlers =\n openOn === 'hover'\n ? {\n onMouseEnter: () => {\n if (hoverTimeout.current) clearTimeout(hoverTimeout.current)\n setMenuOpen(true)\n },\n onMouseLeave: () => {\n hoverTimeout.current = setTimeout(() => setMenuOpen(false), 150)\n },\n }\n : {}\n\n return (\n <div className={cn('dropdown menu anchor', className)} style={style} {...hoverHandlers}>\n <div\n ref={anchorRef}\n onClick={openOn === 'click' ? handleTriggerClick : undefined}\n onKeyDown={handleTriggerKeyDown}\n role=\"button\"\n tabIndex={0}\n className=\"dropdown menu trigger\"\n >\n {trigger}\n </div>\n <MPopover\n open={open}\n anchorRef={anchorRef}\n onClose={() => setMenuOpen(false)}\n placement={placement}\n className={cn('dropdown menu popover', popoverClassName)}\n style={popoverStyle}\n >\n <div className=\"dropdown menu list\" role=\"menu\" {...hoverHandlers}>\n {Children.map(children, renderChild)}\n </div>\n </MPopover>\n </div>\n )\n}\n\nexport function MDropdownItem({\n icon,\n label,\n href,\n to,\n onClick,\n color,\n disabled = false,\n active = false,\n component,\n className,\n _active,\n _onHover,\n _onClick,\n}: MDropdownItemProps & {_active?: boolean; _onHover?: () => void; _onClick?: () => void}) {\n const isHighlighted = _active ?? active\n\n const content = (\n <>\n {icon && <span className=\"dropdown menu icon\">{icon}</span>}\n <span className=\"dropdown menu label\">{label}</span>\n </>\n )\n\n const cls = cn('dropdown menu item', isHighlighted && 'active', disabled && 'disabled', color, className)\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault()\n return\n }\n onClick?.()\n _onClick?.()\n }\n\n const Tag = component ?? (href || to ? 'a' : 'button')\n const linkProps = component ? {...(href ? {href} : {}), ...(to ? {to} : {})} : href ? {href} : to ? {href: to} : {}\n\n return (\n <Tag\n className={cls}\n role=\"menuitem\"\n tabIndex={-1}\n onClick={handleClick}\n onMouseEnter={_onHover}\n aria-disabled={disabled || undefined}\n {...linkProps}\n >\n {content}\n </Tag>\n )\n}\n;(MDropdownItem as any).__dropdownItem = true\n\nexport function MDropdownGroup({label, children}: MDropdownGroupProps) {\n return (\n <div className=\"dropdown menu group\" role=\"group\">\n <div className=\"dropdown menu group-label\">{label}</div>\n {children}\n </div>\n )\n}\n;(MDropdownGroup as any).__dropdownGroup = true\n\nexport function MDropdownDivider({className}: MDropdownDividerProps) {\n return <div className={cn('dropdown menu divider', className)} role=\"separator\" />\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MDropdownMenu-D79Cm5aS.js","names":[],"sources":["../src/components/overlays/MDropdownMenu/MDropdownMenu.tsx"],"sourcesContent":["import {useState, useRef, useCallback, Children, isValidElement, cloneElement} from 'react'\nimport type * as React from 'react'\nimport {MPopover} from '../../primitives'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport {cn} from '../../../utils/cn'\nimport type {\n MDropdownMenuProps,\n MDropdownItemProps,\n MDropdownGroupProps,\n MDropdownDividerProps,\n} from './MDropdownMenu.types'\nimport './MDropdownMenu.css'\n\ntype AnyProps = Record<string, any>\n\nfunction getProps(el: React.ReactElement): AnyProps {\n return el.props as AnyProps\n}\n\nfunction isItem(child: React.ReactElement): boolean {\n return !!(child.type as any).__dropdownItem\n}\n\nfunction isGroup(child: React.ReactElement): boolean {\n return !!(child.type as any).__dropdownGroup\n}\n\n// Collect all MDropdownItem elements from children (including inside groups).\nfunction collectItems(children: React.ReactNode): React.ReactElement[] {\n const items: React.ReactElement[] = []\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return\n if (isItem(child)) {\n items.push(child)\n } else if (isGroup(child)) {\n Children.forEach(getProps(child).children, (gc: React.ReactNode) => {\n if (isValidElement(gc) && isItem(gc)) {\n items.push(gc)\n }\n })\n }\n })\n return items\n}\n\nexport function MDropdownMenu({\n trigger,\n placement = 'bottom-start',\n closeOnSelect = true,\n openOn = 'click',\n onOpenChange,\n className,\n style,\n popoverClassName,\n popoverStyle,\n children,\n}: MDropdownMenuProps) {\n const [open, setOpen] = useState(false)\n const anchorRef = useRef<HTMLDivElement>(null)\n const hoverTimeout = useRef<ReturnType<typeof setTimeout>>(null)\n\n const items = collectItems(children)\n const enabledCount = items.filter((i) => !getProps(i).disabled).length\n\n const setMenuOpen = useCallback(\n (next: boolean | ((prev: boolean) => boolean)) => {\n setOpen((prev) => {\n const resolved = typeof next === 'function' ? next(prev) : next\n onOpenChange?.(resolved)\n return resolved\n })\n },\n [onOpenChange]\n )\n\n const handleSelect = useCallback(\n (index: number) => {\n let enabledIdx = 0\n for (const item of items) {\n const p = getProps(item)\n if (p.disabled) continue\n if (enabledIdx === index) {\n p.onClick?.()\n break\n }\n enabledIdx++\n }\n if (closeOnSelect) setMenuOpen(false)\n },\n [items, closeOnSelect, setMenuOpen]\n )\n\n const {activeIndex, setActiveIndex, onKeyDown} = useKeyboardNav({\n itemCount: enabledCount,\n onSelect: handleSelect,\n onClose: () => setOpen(false),\n isOpen: open,\n })\n\n const handleTriggerClick = () => setMenuOpen((o) => !o)\n\n const handleTriggerKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setMenuOpen(true)\n }\n if (open) onKeyDown(e as any)\n }\n\n // Map active index back to flat child rendering with enabled-only tracking.\n let enabledIdx = 0\n const renderChild = (child: React.ReactNode): React.ReactNode => {\n if (!isValidElement(child)) return child\n\n if (isItem(child)) {\n const p = getProps(child)\n const isDisabled = p.disabled\n const idx = isDisabled ? -1 : enabledIdx++\n return cloneElement(child, {\n _active: idx === activeIndex,\n _onHover: isDisabled ? undefined : () => setActiveIndex(idx),\n _onClick: () => {\n if (isDisabled) return\n p.onClick?.()\n if (closeOnSelect) setMenuOpen(false)\n },\n } as AnyProps)\n }\n\n if (isGroup(child)) {\n return cloneElement(child, {\n children: Children.map(getProps(child).children, renderChild),\n } as AnyProps)\n }\n\n return child\n }\n\n const hoverHandlers =\n openOn === 'hover'\n ? {\n onMouseEnter: () => {\n if (hoverTimeout.current) clearTimeout(hoverTimeout.current)\n setMenuOpen(true)\n },\n onMouseLeave: () => {\n hoverTimeout.current = setTimeout(() => setMenuOpen(false), 150)\n },\n }\n : {}\n\n return (\n <div className={cn('dropdown menu anchor', className)} style={style} {...hoverHandlers}>\n <div\n ref={anchorRef}\n onClick={openOn === 'click' ? handleTriggerClick : undefined}\n onKeyDown={handleTriggerKeyDown}\n role=\"button\"\n tabIndex={0}\n className=\"dropdown menu trigger\"\n >\n {trigger}\n </div>\n <MPopover\n open={open}\n anchorRef={anchorRef}\n onClose={() => setMenuOpen(false)}\n placement={placement}\n className={cn('dropdown menu popover', popoverClassName)}\n style={popoverStyle}\n >\n <div className=\"dropdown menu list\" role=\"menu\" {...hoverHandlers}>\n {Children.map(children, renderChild)}\n </div>\n </MPopover>\n </div>\n )\n}\n\nexport function MDropdownItem({\n icon,\n label,\n href,\n to,\n onClick,\n color,\n disabled = false,\n active = false,\n component,\n className,\n _active,\n _onHover,\n _onClick,\n}: MDropdownItemProps & {_active?: boolean; _onHover?: () => void; _onClick?: () => void}) {\n const isHighlighted = _active ?? active\n\n const content = (\n <>\n {icon && <span className=\"dropdown menu icon\">{icon}</span>}\n <span className=\"dropdown menu label\">{label}</span>\n </>\n )\n\n const cls = cn('dropdown menu item', isHighlighted && 'active', disabled && 'disabled', color, className)\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault()\n return\n }\n onClick?.()\n _onClick?.()\n }\n\n const Tag = component ?? (href || to ? 'a' : 'button')\n const linkProps = component ? {...(href ? {href} : {}), ...(to ? {to} : {})} : href ? {href} : to ? {href: to} : {}\n\n return (\n <Tag\n className={cls}\n role=\"menuitem\"\n tabIndex={-1}\n onClick={handleClick}\n onMouseEnter={_onHover}\n aria-disabled={disabled || undefined}\n {...linkProps}\n >\n {content}\n </Tag>\n )\n}\n;(MDropdownItem as any).__dropdownItem = true\n\nexport function MDropdownGroup({label, children}: MDropdownGroupProps) {\n return (\n <div className=\"dropdown menu group\" role=\"group\">\n <div className=\"dropdown menu group-label\">{label}</div>\n {children}\n </div>\n )\n}\n;(MDropdownGroup as any).__dropdownGroup = true\n\nexport function MDropdownDivider({className}: MDropdownDividerProps) {\n return <div className={cn('dropdown menu divider', className)} role=\"separator\" />\n}\n"],"mappings":";;;;;;AAeA,SAAS,EAAS,GAAkC;AAChD,QAAO,EAAG;;AAGd,SAAS,EAAO,GAAoC;AAChD,QAAO,CAAC,CAAE,EAAM,KAAa;;AAGjC,SAAS,EAAQ,GAAoC;AACjD,QAAO,CAAC,CAAE,EAAM,KAAa;;AAIjC,SAAS,EAAa,GAAiD;CACnE,IAAM,IAA8B,EAAE;AAatC,QAZA,EAAS,QAAQ,IAAW,MAAU;AAC7B,IAAe,EAAM,KACtB,EAAO,EAAM,GACb,EAAM,KAAK,EAAM,GACV,EAAQ,EAAM,IACrB,EAAS,QAAQ,EAAS,EAAM,CAAC,WAAW,MAAwB;AAChE,GAAI,EAAe,EAAG,IAAI,EAAO,EAAG,IAChC,EAAM,KAAK,EAAG;IAEpB;GAER,EACK;;AAGX,SAAgB,EAAc,EAC1B,YACA,eAAY,gBACZ,mBAAgB,IAChB,YAAS,SACT,iBACA,cACA,UACA,qBACA,iBACA,eACmB;CACnB,IAAM,CAAC,GAAM,KAAW,EAAS,GAAM,EACjC,IAAY,EAAuB,KAAK,EACxC,IAAe,EAAsC,KAAK,EAE1D,IAAQ,EAAa,EAAS,EAC9B,IAAe,EAAM,QAAQ,MAAM,CAAC,EAAS,EAAE,CAAC,SAAS,CAAC,QAE1D,IAAc,GACf,MAAiD;AAC9C,KAAS,MAAS;GACd,IAAM,IAAW,OAAO,KAAS,aAAa,EAAK,EAAK,GAAG;AAE3D,UADA,IAAe,EAAS,EACjB;IACT;IAEN,CAAC,EAAa,CACjB,EAmBK,EAAC,gBAAa,mBAAgB,iBAAa,EAAe;EAC5D,WAAW;EACX,UAnBiB,GAChB,MAAkB;GACf,IAAI,IAAa;AACjB,QAAK,IAAM,KAAQ,GAAO;IACtB,IAAM,IAAI,EAAS,EAAK;AACpB,WAAE,UACN;SAAI,MAAe,GAAO;AACtB,QAAE,WAAW;AACb;;AAEJ;;;AAEJ,GAAI,KAAe,EAAY,GAAM;KAEzC;GAAC;GAAO;GAAe;GAAY,CACtC;EAKG,eAAe,EAAQ,GAAM;EAC7B,QAAQ;EACX,CAAC,EAEI,UAA2B,GAAa,MAAM,CAAC,EAAE,EAEjD,KAAwB,MAA2B;AAKrD,GAJI,EAAE,QAAQ,eAAe,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACxD,EAAE,gBAAgB,EAClB,EAAY,GAAK,GAEjB,KAAM,EAAU,EAAS;IAI7B,IAAa,GACX,KAAe,MAA4C;AAC7D,MAAI,CAAC,EAAe,EAAM,CAAE,QAAO;AAEnC,MAAI,EAAO,EAAM,EAAE;GACf,IAAM,IAAI,EAAS,EAAM,EACnB,IAAa,EAAE,UACf,IAAM,IAAa,KAAK;AAC9B,UAAO,EAAa,GAAO;IACvB,SAAS,MAAQ;IACjB,UAAU,IAAa,KAAA,UAAkB,EAAe,EAAI;IAC5D,gBAAgB;AACR,WACJ,EAAE,WAAW,EACT,KAAe,EAAY,GAAM;;IAE5C,CAAa;;AASlB,SANI,EAAQ,EAAM,GACP,EAAa,GAAO,EACvB,UAAU,EAAS,IAAI,EAAS,EAAM,CAAC,UAAU,EAAY,EAChE,CAAa,GAGX;IAGL,IACF,MAAW,UACL;EACI,oBAAoB;AAEhB,GADI,EAAa,WAAS,aAAa,EAAa,QAAQ,EAC5D,EAAY,GAAK;;EAErB,oBAAoB;AAChB,KAAa,UAAU,iBAAiB,EAAY,GAAM,EAAE,IAAI;;EAEvE,GACD,EAAE;AAEZ,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,wBAAwB,EAAU;EAAS;EAAO,GAAI;YAAzE,CACI,kBAAC,OAAD;GACI,KAAK;GACL,SAAS,MAAW,UAAU,IAAqB,KAAA;GACnD,WAAW;GACX,MAAK;GACL,UAAU;GACV,WAAU;aAET;GACC,CAAA,EACN,kBAAC,GAAD;GACU;GACK;GACX,eAAe,EAAY,GAAM;GACtB;GACX,WAAW,EAAG,yBAAyB,EAAiB;GACxD,OAAO;aAEP,kBAAC,OAAD;IAAK,WAAU;IAAqB,MAAK;IAAO,GAAI;cAC/C,EAAS,IAAI,GAAU,EAAY;IAClC,CAAA;GACC,CAAA,CACT;;;AAId,SAAgB,EAAc,EAC1B,SACA,UACA,SACA,OACA,YACA,UACA,cAAW,IACX,YAAS,IACT,cACA,cACA,YACA,aACA,eACuF;CACvF,IAAM,IAAgB,KAAW,GAE3B,IACF,kBAAA,GAAA,EAAA,UAAA,CACK,KAAQ,kBAAC,QAAD;EAAM,WAAU;YAAsB;EAAY,CAAA,EAC3D,kBAAC,QAAD;EAAM,WAAU;YAAuB;EAAa,CAAA,CACrD,EAAA,CAAA,EAGD,IAAM,EAAG,sBAAsB,KAAiB,UAAU,KAAY,YAAY,GAAO,EAAU,EAEnG,KAAe,MAAwB;AACzC,MAAI,GAAU;AACV,KAAE,gBAAgB;AAClB;;AAGJ,EADA,KAAW,EACX,KAAY;IAGV,IAAM,MAAc,KAAQ,IAAK,MAAM,WACvC,IAAY,IAAY;EAAC,GAAI,IAAO,EAAC,SAAK,GAAG,EAAE;EAAG,GAAI,IAAK,EAAC,OAAG,GAAG,EAAE;EAAE,GAAG,IAAO,EAAC,SAAK,GAAG,IAAK,EAAC,MAAM,GAAG,GAAG,EAAE;AAEnH,QACI,kBAAC,GAAD;EACI,WAAW;EACX,MAAK;EACL,UAAU;EACV,SAAS;EACT,cAAc;EACd,iBAAe,KAAY,KAAA;EAC3B,GAAI;YAEH;EACC,CAAA;;AAGb,EAAuB,iBAAiB;AAEzC,SAAgB,EAAe,EAAC,UAAO,eAAgC;AACnE,QACI,kBAAC,OAAD;EAAK,WAAU;EAAsB,MAAK;YAA1C,CACI,kBAAC,OAAD;GAAK,WAAU;aAA6B;GAAY,CAAA,EACvD,EACC;;;AAGb,EAAwB,kBAAkB;AAE3C,SAAgB,EAAiB,EAAC,gBAAmC;AACjE,QAAO,kBAAC,OAAD;EAAK,WAAW,EAAG,yBAAyB,EAAU;EAAE,MAAK;EAAc,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MImage-BKX-xBm3.js","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({\n open,\n items,\n activeIndex,\n onClose,\n onActiveIndexChange,\n}: 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\n className={cn('mineral-backdrop', 'media-lightbox-backdrop')}\n onMouseDown={handleBackdropMouseDown}\n >\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 =\n 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/MImage-YbDKE-1t.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-CgS-bND3.cjs`),t=require(`./icons-DWMgDKgt.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./useInteractionEffect-D1ZdNbKU.cjs`),i=require(`./MPortal-Bi24xTGW.cjs`),a=require(`./MButton-DrkVdRDy.cjs`),o=require(`./MBadge-B4x-Lx7e.cjs`),s=require(`./MSkeleton-5j1h9s95.cjs`);require(`./core-AKWkE8Bx.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-YbDKE-1t.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MImage-YbDKE-1t.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({\n open,\n items,\n activeIndex,\n onClose,\n onActiveIndexChange,\n}: 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\n className={cn('mineral-backdrop', 'media-lightbox-backdrop')}\n onMouseDown={handleBackdropMouseDown}\n >\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 =\n 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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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./theme-CgS-bND3.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./layoutProps-B8y2XwHy.cjs`);require(`./core-AKWkE8Bx.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-CHrh3PHH.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MInline-CHrh3PHH.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"}
|
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"}
|