@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-D1-mF4xn.js","names":[],"sources":["../src/components/layout/MContainer/MContainer.tsx","../src/components/layout/MHeader/MHeader.tsx","../src/components/layout/MFooter/MFooter.tsx","../src/components/layout/MNavs/MNavs.tsx","../src/components/layout/MNavbar/MNavbar.tsx","../src/components/layout/MTopbar/MTopbar.tsx","../src/components/layout/MSidebar/MSidebar.tsx","../src/components/layout/MAppMenu/MAppMenu.tsx","../src/components/layout/MSection/MSection.tsx","../src/components/layout/MStatGrid/MStatGrid.tsx","../src/components/layout/MDivider/MDivider.tsx","../src/components/layout/MBreadcrumb/MBreadcrumb.tsx","../src/components/layout/MAppShell/MAppShell.tsx"],"sourcesContent":["import type {MContainerProps} from './MContainer.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MContainer.css'\n\n// Constrain page content widths and apply shared spacing utilities.\nexport function MContainer({\n size = 'content',\n padded = true,\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}: MContainerProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n className={cn(\n 'container',\n size,\n padded && 'padded',\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","import type {MHeaderProps} from './MHeader.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport './MHeader.css'\n\n// Render a reusable page header shell aligned to a shared container.\nexport function MHeader({\n container = 'wide',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n layout = 'split',\n hidden,\n className,\n children,\n ...rest\n}: MHeaderProps) {\n return (\n <header\n className={cn('header', tone, bordered && 'bordered', sticky && 'sticky', className)}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className={cn('inner', `layout-${layout}`)}>\n {children}\n </MContainer>\n </header>\n )\n}\n","import type {MFooterProps} from './MFooter.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport {MContainer} from '../MContainer'\nimport './MFooter.css'\n\n// Render a reusable page footer shell with shared spacing utilities.\nexport function MFooter({\n container = 'wide',\n padded = true,\n bordered = true,\n tone = 'surface',\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}: MFooterProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <footer\n className={cn(\n 'footer',\n tone,\n bordered && 'bordered',\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 <MContainer size={container} padded={padded} className=\"inner\" fullWidth>\n {children}\n </MContainer>\n </footer>\n )\n}\n","import type {MNavsProps} from './MNavs.types'\nimport {cn} from '../../../utils/cn'\nimport {MLink} from '../../typography'\nimport './MNavs.css'\n\n// Render a lightweight navigation list from data or custom children.\nexport function MNavs({items, orientation = 'horizontal', wrap = false, className, children, ...rest}: MNavsProps) {\n return (\n <div className={cn('navs', orientation, wrap && 'wrap', className)} {...rest}>\n {items\n ? items.map((item) => {\n const Icon = item.icon\n const hideLabel = item.iconOnly === true && Icon != null\n const labelAsString = typeof item.label === 'string' ? item.label : undefined\n const ariaLabel = hideLabel ? labelAsString : undefined\n const linkTitle = item.title ?? (hideLabel ? labelAsString : undefined)\n\n return (\n <MLink\n key={item.key ?? item.href ?? item.title?.toString() ?? labelAsString ?? ''}\n component={item.component}\n href={item.href}\n to={item.to}\n target={item.target}\n rel={item.rel}\n title={linkTitle}\n current={item.current}\n disabled={item.disabled}\n className={cn('link', hideLabel && 'icon-only', item.className)}\n aria-label={ariaLabel}\n >\n {Icon ? (\n <span className=\"icon\" aria-hidden={!hideLabel || undefined}>\n <Icon size={item.iconSize} />\n </span>\n ) : null}\n {!hideLabel ? item.label : null}\n </MLink>\n )\n })\n : children}\n </div>\n )\n}\n","import {Children, cloneElement, isValidElement, useEffect, useId, useRef, useState} from 'react'\nimport type {MouseEvent as ReactMouseEvent, ReactElement} from 'react'\nimport type {MNavbarProps} from './MNavbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MInline} from '../MInline'\nimport type {MInlineProps} from '../MInline'\nimport {MNavs} from '../MNavs'\nimport type {MNavsProps} from '../MNavs'\nimport {MButton} from '../../controls/MButton'\nimport {MMenuIcon} from '../../../icons'\nimport './MNavbar.css'\n\n// Render a horizontal app or site navigation shell with container alignment.\n// Below the md breakpoint MNavs children are collapsed behind a hamburger toggle\n// that opens either a dropdown panel or a side drawer with the navigation items.\nexport function MNavbar({\n container = 'content',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'between',\n wrap = false,\n mobileMenu = 'dropdown',\n mobileMenuContent,\n mobileMenuLabel = 'Open navigation',\n mobileBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n children,\n ...rest\n}: MNavbarProps) {\n const [open, setOpen] = useState(false)\n const rootRef = useRef<HTMLElement | null>(null)\n const menuId = useId()\n const mobile = useMaxWidth(mobileBreakpoint)\n\n const childArray = Children.toArray(children)\n\n const mobileNavs = childArray\n .filter((child): child is ReactElement<MNavsProps> => isValidElement(child) && child.type === MNavs)\n .map((child, index) =>\n cloneElement(child, {\n key: `mnavbar-mobile-navs-${index}`,\n orientation: 'vertical',\n })\n )\n\n const toggleButton = (\n <MButton\n key=\"mnavbar-toggle\"\n type=\"button\"\n variant=\"ghost\"\n size=\"md\"\n iconOnly\n className=\"navbar-toggle\"\n aria-label={mobileMenuLabel}\n aria-expanded={open}\n aria-controls={menuId}\n onClick={handleToggleClick}\n >\n <MMenuIcon />\n </MButton>\n )\n\n let lastInlineIndex = -1\n for (let index = childArray.length - 1; index >= 0; index -= 1) {\n const child = childArray[index]\n if (isValidElement(child) && child.type === MInline) {\n lastInlineIndex = index\n break\n }\n }\n\n const renderedChildren =\n lastInlineIndex === -1\n ? [...childArray, toggleButton]\n : childArray.map((child, index) => {\n if (index !== lastInlineIndex) return child\n const inlineChild = child as ReactElement<MInlineProps>\n const inlineChildren = Children.toArray(inlineChild.props.children)\n return cloneElement(inlineChild, {\n key: inlineChild.key ?? `mnavbar-inline-${index}`,\n children: [...inlineChildren, toggleButton],\n })\n })\n\n useEffect(() => {\n if (!open) return\n\n function handlePointerDown(event: PointerEvent) {\n const root = rootRef.current\n if (!root) return\n if (event.target instanceof Node && root.contains(event.target)) return\n setOpen(false)\n }\n\n function handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') setOpen(false)\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n document.addEventListener('keydown', handleKeydown)\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n document.removeEventListener('keydown', handleKeydown)\n }\n }, [open])\n\n useEffect(() => {\n if (!mobile) {\n setOpen(false)\n }\n }, [mobile])\n\n function handleToggleClick() {\n setOpen((previous) => !previous)\n }\n\n function handleMenuClick(event: ReactMouseEvent<HTMLDivElement>) {\n const target = event.target as HTMLElement | null\n if (!target) return\n if (target.closest('a, [role=\"menuitem\"]')) {\n setOpen(false)\n }\n }\n\n return (\n <nav\n ref={rootRef}\n className={cn(\n 'navbar',\n tone,\n bordered && 'bordered',\n sticky && 'sticky',\n mobile && 'mobile-view',\n open && 'mobile-open',\n `mobile-${mobileMenu}`,\n className\n )}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"container\">\n <div className={cn('inner', justify, wrap && 'wrap')}>{renderedChildren}</div>\n </MContainer>\n\n {mobileMenu === 'drawer' && <div className={cn('mobile-backdrop', open && 'visible')} aria-hidden />}\n\n <div\n id={menuId}\n className={cn('mobile-menu', mobileMenu, open && 'open')}\n role=\"menu\"\n aria-hidden={!open || undefined}\n onClick={handleMenuClick}\n >\n {mobileNavs}\n {mobileMenuContent}\n </div>\n </nav>\n )\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {ReactNode} from 'react'\nimport type {MTopbarItem, MTopbarProps} from './MTopbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MButton} from '../../controls'\nimport {MLink} from '../../typography'\nimport {MChevronDownIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {MDropdownGroup, MDropdownItem, MDropdownMenu} from '../../overlays/MDropdownMenu'\nimport './MTopbar.css'\n\nfunction getItemKey(item: MTopbarItem): string {\n return item.key ?? item.to ?? item.href ?? String(item.label)\n}\n\nfunction itemHasActiveDescendant(item: MTopbarItem): boolean {\n if (item.active) return true\n return (item.children ?? []).some(itemHasActiveDescendant)\n}\n\nfunction renderItemContent(item: MTopbarItem, withChevron = false, isOpen = false): ReactNode {\n return (\n <>\n {item.icon ? <span className=\"topbar-icon\">{item.icon}</span> : null}\n <span>{item.label}</span>\n {item.badge ? <span className=\"topbar-badge\">{item.badge}</span> : null}\n {withChevron ? (\n <span className={cn('topbar-chevron', isOpen && 'open')} aria-hidden=\"true\">\n <MChevronDownIcon size=\"sm\" />\n </span>\n ) : null}\n </>\n )\n}\n\nfunction renderDropdownChildren(children: MTopbarItem[]): ReactNode {\n return children.map((child) => {\n if (child.children?.length) {\n return (\n <MDropdownGroup key={getItemKey(child)} label={String(child.label)}>\n {renderDropdownChildren(child.children)}\n </MDropdownGroup>\n )\n }\n\n return (\n <MDropdownItem\n key={getItemKey(child)}\n icon={child.icon}\n label={child.label}\n href={child.href}\n to={child.to}\n onClick={child.onClick}\n color={child.color}\n disabled={child.disabled}\n active={child.active}\n component={child.component}\n className={child.className}\n />\n )\n })\n}\n\nexport function MTopbar({\n items,\n container = 'full',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'left',\n size = 'md',\n openOn = 'hover',\n dropdownPlacement = 'bottom-start',\n compactBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n style,\n ...rest\n}: MTopbarProps) {\n const hiddenOnCompact = useMaxWidth(compactBreakpoint)\n const [coarsePointer, setCoarsePointer] = useState(false)\n const [openMap, setOpenMap] = useState<Record<string, boolean>>({})\n const [hasOverflow, setHasOverflow] = useState(false)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const [canScrollRight, setCanScrollRight] = useState(false)\n const viewportRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const media = window.matchMedia('(pointer: coarse)')\n const sync = () => setCoarsePointer(media.matches)\n\n sync()\n\n if (typeof media.addEventListener === 'function') {\n media.addEventListener('change', sync)\n return () => media.removeEventListener('change', sync)\n }\n\n media.addListener(sync)\n return () => media.removeListener(sync)\n }, [])\n\n useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const updateOverflow = () => {\n const nextHasOverflow = viewport.scrollWidth > viewport.clientWidth + 1\n setHasOverflow(nextHasOverflow)\n setCanScrollLeft(viewport.scrollLeft > 4)\n setCanScrollRight(viewport.scrollLeft + viewport.clientWidth < viewport.scrollWidth - 4)\n }\n\n updateOverflow()\n\n viewport.addEventListener('scroll', updateOverflow, {passive: true})\n\n const observer = new ResizeObserver(updateOverflow)\n observer.observe(viewport)\n Array.from(viewport.children).forEach((child) => observer.observe(child))\n\n return () => {\n viewport.removeEventListener('scroll', updateOverflow)\n observer.disconnect()\n }\n }, [items, justify, size, tone, bordered, padded, container])\n\n const resolvedOpenOn = useMemo(() => (coarsePointer ? 'click' : openOn), [coarsePointer, openOn])\n\n if (hiddenOnCompact) {\n return null\n }\n\n const scrollByAmount = (direction: 'left' | 'right') => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const amount = Math.max(180, Math.floor(viewport.clientWidth * 0.45))\n viewport.scrollBy({\n left: direction === 'left' ? -amount : amount,\n behavior: 'smooth',\n })\n }\n\n return (\n <nav\n className={cn('topbar', tone, size, bordered && 'bordered', sticky && 'sticky', className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"topbar-container\">\n <div className={cn('topbar-scroll-shell', hasOverflow && 'overflowing')}>\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'left', !canScrollLeft && 'hidden')}\n onClick={() => scrollByAmount('left')}\n aria-label=\"Scroll topbar left\"\n >\n <MChevronLeftIcon />\n </MButton>\n )}\n\n <div ref={viewportRef} className=\"topbar-viewport\">\n <div className={cn('topbar-list', `justify-${justify}`, hasOverflow && 'overflowing')}>\n {items.map((item) => {\n const itemKey = getItemKey(item)\n const isActive = itemHasActiveDescendant(item)\n const isOpen = !!openMap[itemKey]\n\n if (item.children?.length) {\n if (item.disabled) {\n return (\n <div\n key={itemKey}\n className={cn('topbar-trigger', item.color, 'disabled', item.className)}\n aria-disabled=\"true\"\n >\n {renderItemContent(item, true)}\n </div>\n )\n }\n\n return (\n <MDropdownMenu\n key={itemKey}\n trigger={\n <div\n className={cn(\n 'topbar-trigger',\n item.color,\n isActive && 'active',\n isOpen && 'open',\n item.disabled && 'disabled',\n item.className\n )}\n >\n {renderItemContent(item, true, isOpen)}\n </div>\n }\n openOn={item.openOn ?? resolvedOpenOn}\n onOpenChange={(nextOpen) =>\n setOpenMap((prev) => ({...prev, [itemKey]: nextOpen}))\n }\n placement={dropdownPlacement}\n popoverClassName=\"topbar-dropdown-popover\"\n >\n {renderDropdownChildren(item.children)}\n </MDropdownMenu>\n )\n }\n\n return (\n <MLink\n key={itemKey}\n component={item.component}\n href={item.href}\n to={item.to}\n onClick={item.onClick}\n current={item.active}\n disabled={item.disabled}\n underline=\"none\"\n tone=\"inherit\"\n className={cn(\n 'topbar-link',\n item.color,\n item.className,\n item.active && 'active'\n )}\n >\n {renderItemContent(item)}\n </MLink>\n )\n })}\n </div>\n </div>\n\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'right', !canScrollRight && 'hidden')}\n onClick={() => scrollByAmount('right')}\n aria-label=\"Scroll topbar right\"\n >\n <MChevronRightIcon />\n </MButton>\n )}\n </div>\n </MContainer>\n </nav>\n )\n}\n","import {createContext, useContext, useState, useEffect, useCallback, useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronRightIcon, MMenuIcon} from '../../../icons'\nimport {MDropdownMenu, MTooltip} from '../../overlays'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport type {\n MSidebarProps,\n MSidebarHeaderProps,\n MSidebarBodyProps,\n MSidebarNavProps,\n MSidebarItemProps,\n MSidebarGroupProps,\n MSidebarFooterProps,\n MSidebarDividerProps,\n MSidebarMode,\n} from './MSidebar.types'\nimport './MSidebar.css'\n\nconst STORAGE_KEY = 'mineralui-sidebar'\n\ninterface SidebarContextValue {\n mode: MSidebarMode\n mobile: boolean\n mobileOpen: boolean\n canToggle: boolean\n toggleMode: () => void\n}\n\nconst SidebarCtx = createContext<SidebarContextValue>({\n mode: 'expanded',\n mobile: false,\n mobileOpen: false,\n canToggle: false,\n toggleMode: () => {},\n})\n\n// Read shared sidebar state inside slot components.\nfunction useSidebar() {\n return useContext(SidebarCtx)\n}\n\n// Render the sidebar shell and coordinate desktop and mobile behavior.\nexport function MSidebar({\n mode: modeProp = 'auto',\n defaultMode = 'expanded',\n onModeChange,\n persist = false,\n side = 'left',\n tone = 'subtle',\n bordered = true,\n mobileBreakpoint = MShellBreakpoints.mobile,\n compactBreakpoint = MShellBreakpoints.compact,\n className,\n style,\n children,\n}: MSidebarProps) {\n const resolvedCompactBreakpoint = Math.max(compactBreakpoint, mobileBreakpoint)\n const mobile = useMaxWidth(mobileBreakpoint)\n const compactViewport = useMaxWidth(resolvedCompactBreakpoint)\n const compact = !mobile && compactViewport\n const [mobileOpen, setMobileOpen] = useState(false)\n\n const [internalMode, setInternalMode] = useState<MSidebarMode>(() => {\n if (persist) {\n try {\n const v = localStorage.getItem(STORAGE_KEY)\n if (v === 'expanded' || v === 'collapsed') return v\n } catch {\n /* noop */\n }\n }\n\n return defaultMode\n })\n\n const resolvedMode: MSidebarMode = mobile\n ? 'expanded'\n : compact\n ? 'collapsed'\n : modeProp === 'auto'\n ? internalMode\n : modeProp === 'collapsed'\n ? 'collapsed'\n : 'expanded'\n\n // MToggle only the desktop width state. Mobile uses its own overlay flow.\n const toggleMode = useCallback(() => {\n const next: MSidebarMode = resolvedMode === 'expanded' ? 'collapsed' : 'expanded'\n\n setInternalMode(next)\n onModeChange?.(next)\n\n if (persist) {\n try {\n localStorage.setItem(STORAGE_KEY, next)\n } catch {\n /* noop */\n }\n }\n }, [resolvedMode, onModeChange, persist])\n\n const closeMobile = useCallback(() => setMobileOpen(false), [])\n\n // Let Escape close the temporary mobile drawer.\n useEffect(() => {\n if (!mobileOpen) return\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setMobileOpen(false)\n }\n\n document.addEventListener('keydown', handler)\n return () => document.removeEventListener('keydown', handler)\n }, [mobileOpen])\n\n useEffect(() => {\n if (!mobile) {\n setMobileOpen(false)\n }\n }, [mobile])\n\n const canToggle = !mobile && !compact && modeProp === 'auto'\n\n const ctx = useMemo<SidebarContextValue>(\n () => ({mode: resolvedMode, mobile, mobileOpen, canToggle, toggleMode}),\n [resolvedMode, mobile, mobileOpen, canToggle, toggleMode]\n )\n\n const isCollapsed = !mobile && resolvedMode === 'collapsed'\n\n const sidebarCls = cn(\n 'sidebar',\n tone,\n side,\n isCollapsed && 'collapsed',\n compact && 'compact',\n bordered && 'bordered',\n mobile && 'mobile',\n mobile && mobileOpen && 'mobile-open',\n className\n )\n\n return (\n <SidebarCtx.Provider value={ctx}>\n {mobile && mobileOpen && <div className=\"sidebar-backdrop\" onClick={closeMobile} />}\n\n <aside className={sidebarCls} style={style}>\n {children}\n </aside>\n\n {mobile && !mobileOpen && (\n <button\n className={cn('sidebar-hamburger', side)}\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n >\n <span className=\"sidebar-hamburger-icon\" aria-hidden=\"true\">\n <MMenuIcon />\n </span>\n </button>\n )}\n </SidebarCtx.Provider>\n )\n}\n\n// Render the top area with branding and an optional collapse toggle.\nexport function MSidebarHeader({bordered = false, className, children}: MSidebarHeaderProps) {\n const {mode, mobile, canToggle, toggleMode} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n return (\n <div className={cn('sidebar-header', bordered && 'bordered', className)}>\n <div className=\"sidebar-header-content\">{children}</div>\n {canToggle && (\n <MButton\n variant=\"outlined\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={toggleMode}\n aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n className=\"sidebar-toggle\"\n >\n <span className={cn('sidebar-chevron', isCollapsed && 'flipped')}>\n <MChevronRightIcon />\n </span>\n </MButton>\n )}\n </div>\n )\n}\n\n// Wrap the scrollable middle area between header and footer.\nexport function MSidebarBody({className, children}: MSidebarBodyProps) {\n return <div className={cn('sidebar-body', className)}>{children}</div>\n}\n\n// Wrap sidebar links in a navigation landmark.\nexport function MSidebarNav({className, children}: MSidebarNavProps) {\n return <nav className={cn('sidebar-nav', className)}>{children}</nav>\n}\n\n// Render one clickable sidebar row as a link, button or custom component.\nexport function MSidebarItem({\n icon,\n label,\n description,\n href,\n to,\n onClick,\n active = false,\n disabled = false,\n badge,\n color,\n component,\n className,\n}: MSidebarItemProps) {\n const {mode, mobile} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n // ONE tooltip per row: prefer description, fall back to label. The HTML\n // title attribute used in collapsed mode mirrors the same priority but is\n // limited to strings (browsers can't render ReactNodes).\n const tooltipContent = description ?? label\n const titleAttr = typeof description === 'string'\n ? description\n : typeof label === 'string'\n ? label\n : undefined\n\n const Tag = component ?? (href || to ? 'a' : 'button')\n const linkProps = component ? (to ? {to} : href ? {href} : {}) : href ? {href} : to ? {href: to} : {}\n const cls = cn('sidebar-item', active && 'active', disabled && 'disabled', color, className)\n\n return (\n <Tag\n className={cls}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled || undefined}\n title={isCollapsed ? titleAttr : undefined}\n {...linkProps}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!isCollapsed && (\n <MTooltip content={tooltipContent} placement=\"top\" className=\"sidebar-item-label-tooltip\">\n <span className=\"sidebar-item-label\">{label}</span>\n </MTooltip>\n )}\n {!isCollapsed && badge && <span className=\"sidebar-item-badge\">{badge}</span>}\n </Tag>\n )\n}\n\n// Group related sidebar items and swap to a dropdown when collapsed.\nexport function MSidebarGroup({\n label,\n icon,\n active = false,\n defaultOpen = true,\n collapsible = true,\n children,\n className,\n}: MSidebarGroupProps) {\n const sidebarCtx = useSidebar()\n const {mode, mobile} = sidebarCtx\n const isCollapsed = !mobile && mode === 'collapsed'\n const [open, setOpen] = useState(defaultOpen)\n\n const expandedCtx = useMemo<SidebarContextValue>(() => ({...sidebarCtx, mode: 'expanded'}), [sidebarCtx])\n\n // Keep expand/collapse local to this group.\n const toggle = () => {\n if (collapsible) setOpen((o) => !o)\n }\n\n if (isCollapsed) {\n const trigger = (\n <span className={cn('sidebar-group-icon collapsed', active && 'active')} title={label}>\n {icon}\n </span>\n )\n\n return (\n <div className={cn('sidebar-group', className)}>\n <MDropdownMenu trigger={trigger} placement=\"right-start\" closeOnSelect openOn=\"hover\">\n <SidebarCtx.Provider value={expandedCtx}>{children}</SidebarCtx.Provider>\n </MDropdownMenu>\n </div>\n )\n }\n\n return (\n <div className={cn('sidebar-group', className)}>\n <button className={cn('sidebar-group-header', active && 'active')} onClick={toggle} aria-expanded={open}>\n {icon && <span className=\"sidebar-group-icon\">{icon}</span>}\n <span className=\"sidebar-group-label\">{label}</span>\n {collapsible && (\n <span className={cn('sidebar-group-arrow', open && 'open')}>\n <MChevronRightIcon />\n </span>\n )}\n </button>\n {open && <div className=\"sidebar-group-items\">{children}</div>}\n </div>\n )\n}\n\n// Render the bottom slot for version info or quick actions.\nexport function MSidebarFooter({bordered = false, className, children}: MSidebarFooterProps) {\n return <div className={cn('sidebar-footer', bordered && 'bordered', className)}>{children}</div>\n}\n\n// Render a spacing-aware divider between sidebar regions.\nexport function MSidebarDivider({className, spacing = 'md'}: MSidebarDividerProps) {\n return <hr className={cn('sidebar-divider', spacing, className)} />\n}\n","import {cloneElement, createElement, isValidElement} from 'react'\nimport type {ComponentType, ReactNode} from 'react'\nimport type {MAppMenuIcon, MAppMenuItem, MAppMenuProps} from './MAppMenu.types'\nimport {MNavs} from '../MNavs'\nimport {MSidebarGroup, MSidebarItem, MSidebarNav} from '../MSidebar'\nimport {MTopbar} from '../MTopbar'\nimport type {MTopbarItem} from '../MTopbar'\nimport {MTooltip} from '../../overlays/MTooltip'\nimport type {MTooltipPlacement} from '../../overlays/MTooltip'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport './MAppMenu.css'\n\nfunction toIconComponent(icon?: MAppMenuIcon): ComponentType<any> | undefined {\n if (!icon) {\n return undefined\n }\n\n if (isValidElement(icon)) {\n return function AppMenuIconComponent(props) {\n return cloneElement(icon, props)\n }\n }\n\n return icon as ComponentType<any>\n}\n\nfunction toNode(icon?: MAppMenuIcon): ReactNode {\n if (!icon) {\n return null\n }\n\n if (isValidElement(icon)) {\n return icon\n }\n\n return createElement(icon as ComponentType<any>)\n}\n\nfunction withDescriptionTooltip(\n label: ReactNode,\n description: MAppMenuItem['description'],\n placement: MTooltipPlacement,\n skip: boolean\n): ReactNode {\n if (skip || !description) {\n return label\n }\n\n return (\n <MTooltip content={description} placement={placement}>\n <span className=\"app-menu-item-label\">{label}</span>\n </MTooltip>\n )\n}\n\nexport function MAppMenu({\n groups,\n as = 'navs',\n primaryOnly = as === 'navs',\n wrap,\n openOn = 'click',\n dropdownPlacement = 'bottom-start',\n orientation = 'horizontal',\n size = 'sm',\n tone = 'default',\n justify = 'left',\n container,\n padded,\n bordered,\n sticky,\n className,\n ...rest\n}: MAppMenuProps) {\n // Tooltips are pure desktop affordance — touch devices either don't trigger\n // hover at all or trigger after a long-press, neither of which is useful on\n // a phone-sized navigation. Skip the wrap entirely below the mobile breakpoint.\n const skipTooltip = useMaxWidth(MShellBreakpoints.mobile)\n if (as === 'sidebar') {\n return (\n <MSidebarNav className={className}>\n {groups.map((group) => (\n <MSidebarGroup\n key={group.key ?? group.label?.toString()}\n label={group.label?.toString() ?? ''}\n icon={toNode(group.icon)}\n collapsible={group.collapsible ?? true}\n defaultOpen={group.defaultOpen ?? true}\n >\n {group.items.map((item) => (\n // MSidebarItem owns the tooltip — passing `description` here lets it\n // pick ONE source (description ?? label) without an outer wrap that\n // would stack a second tooltip on top of the built-in label tooltip.\n <MSidebarItem\n key={item.key ?? item.to ?? item.href ?? item.label?.toString()}\n icon={toNode(item.icon)}\n label={item.label}\n description={skipTooltip ? undefined : item.description}\n href={item.href}\n to={item.to}\n onClick={item.onClick}\n active={item.active}\n disabled={item.disabled}\n badge={item.badge}\n color={item.color}\n component={item.component}\n className={item.className}\n />\n ))}\n </MSidebarGroup>\n ))}\n </MSidebarNav>\n )\n }\n\n if (as === 'topbar') {\n const topbarItems: MTopbarItem[] = groups.map((group) => ({\n key: group.key ?? String(group.label),\n label: group.label,\n icon: toNode(group.icon),\n children: group.items.map((item) => ({\n key: item.key ?? item.to ?? item.href ?? String(item.label),\n label: withDescriptionTooltip(item.label, item.description, 'bottom', skipTooltip),\n icon: toNode(item.icon),\n href: item.href,\n to: item.to,\n onClick: item.onClick,\n badge: item.badge,\n color: item.color,\n active: item.active,\n disabled: item.disabled,\n component: item.component,\n className: item.className,\n })),\n }))\n\n return (\n <MTopbar\n items={topbarItems}\n tone={tone}\n justify={justify}\n size={size}\n openOn={openOn}\n dropdownPlacement={dropdownPlacement}\n container={container}\n padded={padded}\n bordered={bordered}\n sticky={sticky}\n className={className}\n {...rest}\n />\n )\n }\n\n const navItems = groups\n .flatMap((group) => group.items)\n .filter((item) => (primaryOnly ? item.primary : true))\n .map((item) => ({\n key: item.key ?? item.to ?? item.href ?? item.label?.toString(),\n label: withDescriptionTooltip(item.label, item.description, 'bottom', skipTooltip),\n icon: toIconComponent(item.icon),\n href: item.href,\n to: item.to,\n title: item.title,\n current: item.active,\n disabled: item.disabled,\n className: item.className,\n component: item.component,\n }))\n\n return <MNavs items={navItems} orientation={orientation} wrap={wrap} className={className} {...rest} />\n}\n","import type React from 'react'\nimport type {MSectionProps} from './MSection.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MSection.css'\n\n// Render a semantic page section with predefined spacing and tone.\nexport function MSection({\n as = 'section',\n spacing = 'lg',\n tone = 'default',\n hidden,\n className,\n style,\n children,\n ...rest\n}: MSectionProps) {\n const Component = as\n\n return (\n <Component\n className={cn('section', spacing, tone, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n}\n","import type {MStatGridProps} from './MStatGrid.types'\nimport {MSimpleGrid} from '../MSimpleGrid'\n\nexport function MStatGrid<T>({\n items,\n renderItem,\n children,\n columns = 4,\n minItemWidth = '15rem',\n ...rest\n}: MStatGridProps<T>) {\n return (\n <MSimpleGrid columns={columns} minItemWidth={minItemWidth} {...rest}>\n {items && renderItem ? items.map((item, index) => renderItem(item, index)) : children}\n </MSimpleGrid>\n )\n}\n","import type {MDividerProps} from './MDivider.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MDivider.css'\n\n// Render a semantic divider line between related content blocks.\nexport function MDivider({\n orientation = 'horizontal',\n variant = 'solid',\n hidden,\n className,\n style,\n ...rest\n}: MDividerProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn('divider', orientation, variant, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n />\n )\n}\n","import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport type {MBreadcrumbProps} from './MBreadcrumb.types'\nimport './MBreadcrumb.css'\n\n// Render a compact path and collapse the middle when needed.\nexport function MBreadcrumb({items, separator = '/', maxItems, className, ...rest}: MBreadcrumbProps) {\n // Keep the current page visible while shortening deep paths.\n const visible = useMemo(() => {\n if (!maxItems || maxItems >= items.length) return items\n if (maxItems < 2) return [items[items.length - 1]]\n const head = items.slice(0, 1)\n const tail = items.slice(-(maxItems - 1))\n return [...head, null, ...tail]\n }, [items, maxItems])\n\n return (\n <nav aria-label=\"breadcrumb\" className={cn('breadcrumb', className)} {...rest}>\n <ol className=\"trail\">\n {visible.map((item, i) => {\n if (item === null) {\n return (\n <li key=\"ellipsis\" className=\"crumb dots\">\n <span className=\"sep\">{separator}</span>\n <span>…</span>\n </li>\n )\n }\n\n const isLast = i === visible.length - 1\n\n return (\n <li key={i} className={cn('crumb', isLast && 'active')}>\n {i > 0 && <span className=\"sep\">{separator}</span>}\n {item.href && !isLast ? (\n <a href={item.href} className=\"link\" onClick={item.onClick}>\n {item.label}\n </a>\n ) : item.onClick && !isLast ? (\n <button type=\"button\" className=\"link btn\" onClick={item.onClick}>\n {item.label}\n </button>\n ) : (\n <span className=\"current\" aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n","import {forwardRef, Children, isValidElement} from 'react'\nimport type * as React from 'react'\nimport type {MAppShellProps, MBodyProps} from './MAppShell.types'\nimport {cn} from '../../../utils/cn'\nimport {MSidebar} from '../MSidebar'\nimport './MAppShell.css'\n\nexport const MAppShell = forwardRef<HTMLDivElement, MAppShellProps>(function MAppShell(\n {className, children, ...rest},\n ref\n) {\n const sidebarElements: React.ReactNode[] = []\n const otherElements: React.ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === MSidebar) {\n sidebarElements.push(child)\n } else {\n otherElements.push(child)\n }\n })\n\n return (\n <div ref={ref} className={cn('app-shell', className)} {...rest}>\n {sidebarElements}\n <div className=\"app-main\">{otherElements}</div>\n </div>\n )\n})\n\nexport const MBody = forwardRef<HTMLDivElement, MBodyProps>(function MBody({className, children, ...rest}, ref) {\n return (\n <div ref={ref} className={cn('app-body', className)} {...rest}>\n {children}\n </div>\n )\n})\n"],"mappings":";;;;;;;;;;;;;AAOA,SAAgB,EAAW,EACvB,UAAO,WACP,YAAS,IACT,WACA,YACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,cACA,cACA,UACA,aACA,GAAG,KACa;CAChB,IAAM,IAAe,EAAuB,EAAC,UAAM,CAAC;AAEpD,QACI,kBAAC,OAAD;EACI,WAAW,EACP,aACA,GACA,KAAU,UACV,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;;;;AC1Dd,SAAgB,EAAQ,EACpB,eAAY,QACZ,YAAS,IACT,cAAW,IACX,YAAS,IACT,UAAO,WACP,YAAS,SACT,WACA,cACA,aACA,GAAG,KACU;AACb,QACI,kBAAC,UAAD;EACI,WAAW,EAAG,UAAU,GAAM,KAAY,YAAY,KAAU,UAAU,EAAU;EACpF,GAAI,EAAe,EAAO;EAC1B,GAAI;YAEJ,kBAAC,GAAD;GAAY,MAAM;GAAmB;GAAQ,WAAW,EAAG,SAAS,UAAU,IAAS;GAClF;GACQ,CAAA;EACR,CAAA;;;;ACpBjB,SAAgB,EAAQ,EACpB,eAAY,QACZ,YAAS,IACT,cAAW,IACX,UAAO,WACP,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,UAAD;EACI,WAAW,EACP,UACA,GACA,KAAY,YACZ,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,G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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./theme-BaroO-OB.cjs`),t=require(`./icons-qCoE70hn.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./layoutProps-B8y2XwHy.cjs`),i=require(`./MStack-ByFYGSsy.cjs`),a=require(`./MLink-B3ImjkJV.cjs`),o=require(`./MButton-8UCydOik.cjs`),s=require(`./MTooltip-Dq2vYf3G.cjs`),c=require(`./MDropdownMenu-c9U3sEcl.cjs`),l=require(`./MSimpleGrid-CyLf-9R2.cjs`);require(`./core-DAox0BHy.cjs`);let u=require(`react`),d=require(`react/jsx-runtime`);function f({size:t=`content`,padded:i=!0,hidden:a,spacing:o,padding:s,fsize:c,mt:l,mb:u,ml:f,mr:p,mx:m,my:h,pt:g,pb:_,pl:v,pr:y,px:b,py:x,fullWidth:S,className:C,style:w,children:T,...E}){let D=r.n({fsize:c});return(0,d.jsx)(`div`,{className:n.t(`container`,t,i&&`padded`,...r.t({spacing:o,padding:s,fsize:c,mt:l,mb:u,ml:f,mr:p,mx:m,my:h,pt:g,pb:_,pl:v,pr:y,px:b,py:x,fullWidth:S}),C),style:{...D,...w},...e.r(a),...E,children:T})}function p({container:t=`wide`,padded:r=!0,bordered:i=!0,sticky:a=!1,tone:o=`surface`,layout:s=`split`,hidden:c,className:l,children:u,...p}){return(0,d.jsx)(`header`,{className:n.t(`header`,o,i&&`bordered`,a&&`sticky`,l),...e.r(c),...p,children:(0,d.jsx)(f,{size:t,padded:r,className:n.t(`inner`,`layout-${s}`),children:u})})}function m({container:t=`wide`,padded:i=!0,bordered:a=!0,tone:o=`surface`,hidden:s,spacing:c,padding:l,fsize:u,mt:p,mb:m,ml:h,mr:g,mx:_,my:v,pt:y,pb:b,pl:x,pr:S,px:C,py:w,fullWidth:T,className:E,style:D,children:O,...k}){let A=r.n({fsize:u});return(0,d.jsx)(`footer`,{className:n.t(`footer`,o,a&&`bordered`,...r.t({spacing:c,padding:l,fsize:u,mt:p,mb:m,ml:h,mr:g,mx:_,my:v,pt:y,pb:b,pl:x,pr:S,px:C,py:w,fullWidth:T}),E),style:{...A,...D},...e.r(s),...k,children:(0,d.jsx)(f,{size:t,padded:i,className:`inner`,fullWidth:!0,children:O})})}function h({items:e,orientation:t=`horizontal`,wrap:r=!1,className:i,children:o,...s}){return(0,d.jsx)(`div`,{className:n.t(`navs`,t,r&&`wrap`,i),...s,children:e?e.map(e=>{let t=e.icon,r=e.iconOnly===!0&&t!=null,i=typeof e.label==`string`?e.label:void 0,o=r?i:void 0,s=e.title??(r?i:void 0);return(0,d.jsxs)(a.t,{component:e.component,href:e.href,to:e.to,target:e.target,rel:e.rel,title:s,current:e.current,disabled:e.disabled,className:n.t(`link`,r&&`icon-only`,e.className),"aria-label":o,children:[t?(0,d.jsx)(`span`,{className:`icon`,"aria-hidden":!r||void 0,children:(0,d.jsx)(t,{size:e.iconSize})}):null,r?null:e.label]},e.key??e.href??e.title?.toString()??i??``)}):o})}function g({container:r=`content`,padded:a=!0,bordered:s=!0,sticky:c=!1,tone:l=`surface`,justify:p=`between`,wrap:m=!1,mobileMenu:g=`dropdown`,mobileMenuContent:_,mobileMenuLabel:v=`Open navigation`,mobileBreakpoint:y=e.n.compact,hidden:b,className:x,children:S,...C}){let[w,T]=(0,u.useState)(!1),E=(0,u.useRef)(null),D=(0,u.useId)(),O=e.i(y),k=u.Children.toArray(S),A=k.filter(e=>(0,u.isValidElement)(e)&&e.type===h).map((e,t)=>(0,u.cloneElement)(e,{key:`mnavbar-mobile-navs-${t}`,orientation:`vertical`})),j=(0,d.jsx)(o.t,{type:`button`,variant:`ghost`,size:`md`,iconOnly:!0,className:`navbar-toggle`,"aria-label":v,"aria-expanded":w,"aria-controls":D,onClick:P,children:(0,d.jsx)(t.cn,{})},`mnavbar-toggle`),M=-1;for(let e=k.length-1;e>=0;--e){let t=k[e];if((0,u.isValidElement)(t)&&t.type===i.n){M=e;break}}let N=M===-1?[...k,j]:k.map((e,t)=>{if(t!==M)return e;let n=e,r=u.Children.toArray(n.props.children);return(0,u.cloneElement)(n,{key:n.key??`mnavbar-inline-${t}`,children:[...r,j]})});(0,u.useEffect)(()=>{if(!w)return;function e(e){let t=E.current;t&&(e.target instanceof Node&&t.contains(e.target)||T(!1))}function t(e){e.key===`Escape`&&T(!1)}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[w]),(0,u.useEffect)(()=>{O||T(!1)},[O]);function P(){T(e=>!e)}function F(e){let t=e.target;t&&t.closest(`a, [role="menuitem"]`)&&T(!1)}return(0,d.jsxs)(`nav`,{ref:E,className:n.t(`navbar`,l,s&&`bordered`,c&&`sticky`,O&&`mobile-view`,w&&`mobile-open`,`mobile-${g}`,x),...e.r(b),...C,children:[(0,d.jsx)(f,{size:r,padded:a,className:`container`,children:(0,d.jsx)(`div`,{className:n.t(`inner`,p,m&&`wrap`),children:N})}),g===`drawer`&&(0,d.jsx)(`div`,{className:n.t(`mobile-backdrop`,w&&`visible`),"aria-hidden":!0}),(0,d.jsxs)(`div`,{id:D,className:n.t(`mobile-menu`,g,w&&`open`),role:`menu`,"aria-hidden":!w||void 0,onClick:F,children:[A,_]})]})}function _(e){return e.key??e.to??e.href??String(e.label)}function v(e){return e.active?!0:(e.children??[]).some(v)}function y(e,r=!1,i=!1){return(0,d.jsxs)(d.Fragment,{children:[e.icon?(0,d.jsx)(`span`,{className:`topbar-icon`,children:e.icon}):null,(0,d.jsx)(`span`,{children:e.label}),e.badge?(0,d.jsx)(`span`,{className:`topbar-badge`,children:e.badge}):null,r?(0,d.jsx)(`span`,{className:n.t(`topbar-chevron`,i&&`open`),"aria-hidden":`true`,children:(0,d.jsx)(t.Ni,{size:`sm`})}):null]})}function b(e){return e.map(e=>e.children?.length?(0,d.jsx)(c.n,{label:String(e.label),children:b(e.children)},_(e)):(0,d.jsx)(c.r,{icon:e.icon,label:e.label,href:e.href,to:e.to,onClick:e.onClick,color:e.color,disabled:e.disabled,active:e.active,component:e.component,className:e.className},_(e)))}function x({items:r,container:i=`full`,padded:s=!0,bordered:l=!0,sticky:p=!1,tone:m=`surface`,justify:h=`left`,size:g=`md`,openOn:x=`hover`,dropdownPlacement:S=`bottom-start`,compactBreakpoint:C=e.n.compact,hidden:w,className:T,style:E,...D}){let O=e.i(C),[k,A]=(0,u.useState)(!1),[j,M]=(0,u.useState)({}),[N,P]=(0,u.useState)(!1),[F,I]=(0,u.useState)(!1),[L,R]=(0,u.useState)(!1),z=(0,u.useRef)(null);(0,u.useEffect)(()=>{let e=window.matchMedia(`(pointer: coarse)`),t=()=>A(e.matches);return t(),typeof e.addEventListener==`function`?(e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)):(e.addListener(t),()=>e.removeListener(t))},[]),(0,u.useEffect)(()=>{let e=z.current;if(!e)return;let t=()=>{P(e.scrollWidth>e.clientWidth+1),I(e.scrollLeft>4),R(e.scrollLeft+e.clientWidth<e.scrollWidth-4)};t(),e.addEventListener(`scroll`,t,{passive:!0});let n=new ResizeObserver(t);return n.observe(e),Array.from(e.children).forEach(e=>n.observe(e)),()=>{e.removeEventListener(`scroll`,t),n.disconnect()}},[r,h,g,m,l,s,i]);let B=(0,u.useMemo)(()=>k?`click`:x,[k,x]);if(O)return null;let V=e=>{let t=z.current;if(!t)return;let n=Math.max(180,Math.floor(t.clientWidth*.45));t.scrollBy({left:e===`left`?-n:n,behavior:`smooth`})};return(0,d.jsx)(`nav`,{className:n.t(`topbar`,m,g,l&&`bordered`,p&&`sticky`,T),style:E,...e.r(w),...D,children:(0,d.jsx)(f,{size:i,padded:s,className:`topbar-container`,children:(0,d.jsxs)(`div`,{className:n.t(`topbar-scroll-shell`,N&&`overflowing`),children:[N&&(0,d.jsx)(o.t,{variant:`ghost`,color:`neutral`,iconOnly:!0,shape:`circle`,className:n.t(`topbar-scroll-button`,`left`,!F&&`hidden`),onClick:()=>V(`left`),"aria-label":`Scroll topbar left`,children:(0,d.jsx)(t.Fi,{})}),(0,d.jsx)(`div`,{ref:z,className:`topbar-viewport`,children:(0,d.jsx)(`div`,{className:n.t(`topbar-list`,`justify-${h}`,N&&`overflowing`),children:r.map(e=>{let t=_(e),r=v(e),i=!!j[t];return e.children?.length?e.disabled?(0,d.jsx)(`div`,{className:n.t(`topbar-trigger`,e.color,`disabled`,e.className),"aria-disabled":`true`,children:y(e,!0)},t):(0,d.jsx)(c.i,{trigger:(0,d.jsx)(`div`,{className:n.t(`topbar-trigger`,e.color,r&&`active`,i&&`open`,e.disabled&&`disabled`,e.className),children:y(e,!0,i)}),openOn:e.openOn??B,onOpenChange:e=>M(n=>({...n,[t]:e})),placement:S,popoverClassName:`topbar-dropdown-popover`,children:b(e.children)},t):(0,d.jsx)(a.t,{component:e.component,href:e.href,to:e.to,onClick:e.onClick,current:e.active,disabled:e.disabled,underline:`none`,tone:`inherit`,className:n.t(`topbar-link`,e.color,e.className,e.active&&`active`),children:y(e)},t)})})}),N&&(0,d.jsx)(o.t,{variant:`ghost`,color:`neutral`,iconOnly:!0,shape:`circle`,className:n.t(`topbar-scroll-button`,`right`,!L&&`hidden`),onClick:()=>V(`right`),"aria-label":`Scroll topbar right`,children:(0,d.jsx)(t.Pi,{})})]})})})}var S=`mineralui-sidebar`,C=(0,u.createContext)({mode:`expanded`,mobile:!1,mobileOpen:!1,canToggle:!1,toggleMode:()=>{}});function w(){return(0,u.useContext)(C)}function T({mode:r=`auto`,defaultMode:i=`expanded`,onModeChange:a,persist:o=!1,side:s=`left`,tone:c=`subtle`,bordered:l=!0,mobileBreakpoint:f=e.n.mobile,compactBreakpoint:p=e.n.compact,className:m,style:h,children:g}){let _=Math.max(p,f),v=e.i(f),y=e.i(_),b=!v&&y,[x,w]=(0,u.useState)(!1),[T,E]=(0,u.useState)(()=>{if(o)try{let e=localStorage.getItem(S);if(e===`expanded`||e===`collapsed`)return e}catch{}return i}),D=v?`expanded`:b?`collapsed`:r===`auto`?T:r===`collapsed`?`collapsed`:`expanded`,O=(0,u.useCallback)(()=>{let e=D===`expanded`?`collapsed`:`expanded`;if(E(e),a?.(e),o)try{localStorage.setItem(S,e)}catch{}},[D,a,o]),k=(0,u.useCallback)(()=>w(!1),[]);(0,u.useEffect)(()=>{if(!x)return;let e=e=>{e.key===`Escape`&&w(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[x]),(0,u.useEffect)(()=>{v||w(!1)},[v]);let A=!v&&!b&&r===`auto`,j=(0,u.useMemo)(()=>({mode:D,mobile:v,mobileOpen:x,canToggle:A,toggleMode:O}),[D,v,x,A,O]),M=n.t(`sidebar`,c,s,!v&&D===`collapsed`&&`collapsed`,b&&`compact`,l&&`bordered`,v&&`mobile`,v&&x&&`mobile-open`,m);return(0,d.jsxs)(C.Provider,{value:j,children:[v&&x&&(0,d.jsx)(`div`,{className:`sidebar-backdrop`,onClick:k}),(0,d.jsx)(`aside`,{className:M,style:h,children:g}),v&&!x&&(0,d.jsx)(`button`,{className:n.t(`sidebar-hamburger`,s),onClick:()=>w(!0),"aria-label":`Open menu`,children:(0,d.jsx)(`span`,{className:`sidebar-hamburger-icon`,"aria-hidden":`true`,children:(0,d.jsx)(t.cn,{})})})]})}function E({bordered:e=!1,className:r,children:i}){let{mode:a,mobile:s,canToggle:c,toggleMode:l}=w(),u=!s&&a===`collapsed`;return(0,d.jsxs)(`div`,{className:n.t(`sidebar-header`,e&&`bordered`,r),children:[(0,d.jsx)(`div`,{className:`sidebar-header-content`,children:i}),c&&(0,d.jsx)(o.t,{variant:`outlined`,color:`neutral`,iconOnly:!0,size:`sm`,onClick:l,"aria-label":u?`Expand sidebar`:`Collapse sidebar`,className:`sidebar-toggle`,children:(0,d.jsx)(`span`,{className:n.t(`sidebar-chevron`,u&&`flipped`),children:(0,d.jsx)(t.Pi,{})})})]})}function D({className:e,children:t}){return(0,d.jsx)(`div`,{className:n.t(`sidebar-body`,e),children:t})}function O({className:e,children:t}){return(0,d.jsx)(`nav`,{className:n.t(`sidebar-nav`,e),children:t})}function k({icon:e,label:t,description:r,href:i,to:a,onClick:o,active:c=!1,disabled:l=!1,badge:u,color:f,component:p,className:m}){let{mode:h,mobile:g}=w(),_=!g&&h===`collapsed`,v=r??t,y=typeof r==`string`?r:typeof t==`string`?t:void 0,b=p??(i||a?`a`:`button`),x=p?a?{to:a}:i?{href:i}:{}:i?{href:i}:a?{href:a}:{};return(0,d.jsxs)(b,{className:n.t(`sidebar-item`,c&&`active`,l&&`disabled`,f,m),onClick:l?void 0:o,"aria-disabled":l||void 0,title:_?y:void 0,...x,children:[e&&(0,d.jsx)(`span`,{className:`sidebar-item-icon`,children:e}),!_&&(0,d.jsx)(s.t,{content:v,placement:`top`,className:`sidebar-item-label-tooltip`,children:(0,d.jsx)(`span`,{className:`sidebar-item-label`,children:t})}),!_&&u&&(0,d.jsx)(`span`,{className:`sidebar-item-badge`,children:u})]})}function A({label:e,icon:r,active:i=!1,defaultOpen:a=!0,collapsible:o=!0,children:s,className:l}){let f=w(),{mode:p,mobile:m}=f,h=!m&&p===`collapsed`,[g,_]=(0,u.useState)(a),v=(0,u.useMemo)(()=>({...f,mode:`expanded`}),[f]),y=()=>{o&&_(e=>!e)};if(h){let t=(0,d.jsx)(`span`,{className:n.t(`sidebar-group-icon collapsed`,i&&`active`),title:e,children:r});return(0,d.jsx)(`div`,{className:n.t(`sidebar-group`,l),children:(0,d.jsx)(c.i,{trigger:t,placement:`right-start`,closeOnSelect:!0,openOn:`hover`,children:(0,d.jsx)(C.Provider,{value:v,children:s})})})}return(0,d.jsxs)(`div`,{className:n.t(`sidebar-group`,l),children:[(0,d.jsxs)(`button`,{className:n.t(`sidebar-group-header`,i&&`active`),onClick:y,"aria-expanded":g,children:[r&&(0,d.jsx)(`span`,{className:`sidebar-group-icon`,children:r}),(0,d.jsx)(`span`,{className:`sidebar-group-label`,children:e}),o&&(0,d.jsx)(`span`,{className:n.t(`sidebar-group-arrow`,g&&`open`),children:(0,d.jsx)(t.Pi,{})})]}),g&&(0,d.jsx)(`div`,{className:`sidebar-group-items`,children:s})]})}function j({bordered:e=!1,className:t,children:r}){return(0,d.jsx)(`div`,{className:n.t(`sidebar-footer`,e&&`bordered`,t),children:r})}function M({className:e,spacing:t=`md`}){return(0,d.jsx)(`hr`,{className:n.t(`sidebar-divider`,t,e)})}function N(e){if(e)return(0,u.isValidElement)(e)?function(t){return(0,u.cloneElement)(e,t)}:e}function P(e){return e?(0,u.isValidElement)(e)?e:(0,u.createElement)(e):null}function F(e,t,n,r){return r||!t?e:(0,d.jsx)(s.t,{content:t,placement:n,children:(0,d.jsx)(`span`,{className:`app-menu-item-label`,children:e})})}function I({groups:t,as:n=`navs`,primaryOnly:r=n===`navs`,wrap:i,openOn:a=`click`,dropdownPlacement:o=`bottom-start`,orientation:s=`horizontal`,size:c=`sm`,tone:l=`default`,justify:u=`left`,container:f,padded:p,bordered:m,sticky:g,className:_,...v}){let y=e.i(e.n.mobile);return n===`sidebar`?(0,d.jsx)(O,{className:_,children:t.map(e=>(0,d.jsx)(A,{label:e.label?.toString()??``,icon:P(e.icon),collapsible:e.collapsible??!0,defaultOpen:e.defaultOpen??!0,children:e.items.map(e=>(0,d.jsx)(k,{icon:P(e.icon),label:e.label,description:y?void 0:e.description,href:e.href,to:e.to,onClick:e.onClick,active:e.active,disabled:e.disabled,badge:e.badge,color:e.color,component:e.component,className:e.className},e.key??e.to??e.href??e.label?.toString()))},e.key??e.label?.toString()))}):n===`topbar`?(0,d.jsx)(x,{items:t.map(e=>({key:e.key??String(e.label),label:e.label,icon:P(e.icon),children:e.items.map(e=>({key:e.key??e.to??e.href??String(e.label),label:F(e.label,e.description,`bottom`,y),icon:P(e.icon),href:e.href,to:e.to,onClick:e.onClick,badge:e.badge,color:e.color,active:e.active,disabled:e.disabled,component:e.component,className:e.className}))})),tone:l,justify:u,size:c,openOn:a,dropdownPlacement:o,container:f,padded:p,bordered:m,sticky:g,className:_,...v}):(0,d.jsx)(h,{items:t.flatMap(e=>e.items).filter(e=>r?e.primary:!0).map(e=>({key:e.key??e.to??e.href??e.label?.toString(),label:F(e.label,e.description,`bottom`,y),icon:N(e.icon),href:e.href,to:e.to,title:e.title,current:e.active,disabled:e.disabled,className:e.className,component:e.component})),orientation:s,wrap:i,className:_,...v})}function L({as:t=`section`,spacing:r=`lg`,tone:i=`default`,hidden:a,className:o,style:s,children:c,...l}){return(0,d.jsx)(t,{className:n.t(`section`,r,i,o),style:s,...e.r(a),...l,children:c})}function R({items:e,renderItem:t,children:n,columns:r=4,minItemWidth:i=`15rem`,...a}){return(0,d.jsx)(l.t,{columns:r,minItemWidth:i,...a,children:e&&t?e.map((e,n)=>t(e,n)):n})}function z({orientation:t=`horizontal`,variant:r=`solid`,hidden:i,className:a,style:o,...s}){return(0,d.jsx)(`div`,{role:`separator`,"aria-orientation":t,className:n.t(`divider`,t,r,a),style:o,...e.r(i),...s})}function B({items:e,separator:t=`/`,maxItems:r,className:i,...a}){let o=(0,u.useMemo)(()=>{if(!r||r>=e.length)return e;if(r<2)return[e[e.length-1]];let t=e.slice(0,1),n=e.slice(-(r-1));return[...t,null,...n]},[e,r]);return(0,d.jsx)(`nav`,{"aria-label":`breadcrumb`,className:n.t(`breadcrumb`,i),...a,children:(0,d.jsx)(`ol`,{className:`trail`,children:o.map((e,r)=>{if(e===null)return(0,d.jsxs)(`li`,{className:`crumb dots`,children:[(0,d.jsx)(`span`,{className:`sep`,children:t}),(0,d.jsx)(`span`,{children:`…`})]},`ellipsis`);let i=r===o.length-1;return(0,d.jsxs)(`li`,{className:n.t(`crumb`,i&&`active`),children:[r>0&&(0,d.jsx)(`span`,{className:`sep`,children:t}),e.href&&!i?(0,d.jsx)(`a`,{href:e.href,className:`link`,onClick:e.onClick,children:e.label}):e.onClick&&!i?(0,d.jsx)(`button`,{type:`button`,className:`link btn`,onClick:e.onClick,children:e.label}):(0,d.jsx)(`span`,{className:`current`,"aria-current":i?`page`:void 0,children:e.label})]},r)})})})}var V=(0,u.forwardRef)(function({className:e,children:t,...r},i){let a=[],o=[];return u.Children.forEach(t,e=>{(0,u.isValidElement)(e)&&e.type===T?a.push(e):o.push(e)}),(0,d.jsxs)(`div`,{ref:i,className:n.t(`app-shell`,e),...r,children:[a,(0,d.jsx)(`div`,{className:`app-main`,children:o})]})}),H=(0,u.forwardRef)(function({className:e,children:t,...r},i){return(0,d.jsx)(`div`,{ref:i,className:n.t(`app-body`,e),...r,children:t})});Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return m}});
|
|
2
|
+
//# sourceMappingURL=layout-Op6GWQ8w.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-Op6GWQ8w.cjs","names":[],"sources":["../src/components/layout/MContainer/MContainer.tsx","../src/components/layout/MHeader/MHeader.tsx","../src/components/layout/MFooter/MFooter.tsx","../src/components/layout/MNavs/MNavs.tsx","../src/components/layout/MNavbar/MNavbar.tsx","../src/components/layout/MTopbar/MTopbar.tsx","../src/components/layout/MSidebar/MSidebar.tsx","../src/components/layout/MAppMenu/MAppMenu.tsx","../src/components/layout/MSection/MSection.tsx","../src/components/layout/MStatGrid/MStatGrid.tsx","../src/components/layout/MDivider/MDivider.tsx","../src/components/layout/MBreadcrumb/MBreadcrumb.tsx","../src/components/layout/MAppShell/MAppShell.tsx"],"sourcesContent":["import type {MContainerProps} from './MContainer.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MContainer.css'\n\n// Constrain page content widths and apply shared spacing utilities.\nexport function MContainer({\n size = 'content',\n padded = true,\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}: MContainerProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n className={cn(\n 'container',\n size,\n padded && 'padded',\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","import type {MHeaderProps} from './MHeader.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport './MHeader.css'\n\n// Render a reusable page header shell aligned to a shared container.\nexport function MHeader({\n container = 'wide',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n layout = 'split',\n hidden,\n className,\n children,\n ...rest\n}: MHeaderProps) {\n return (\n <header\n className={cn('header', tone, bordered && 'bordered', sticky && 'sticky', className)}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className={cn('inner', `layout-${layout}`)}>\n {children}\n </MContainer>\n </header>\n )\n}\n","import type {MFooterProps} from './MFooter.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport {MContainer} from '../MContainer'\nimport './MFooter.css'\n\n// Render a reusable page footer shell with shared spacing utilities.\nexport function MFooter({\n container = 'wide',\n padded = true,\n bordered = true,\n tone = 'surface',\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}: MFooterProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <footer\n className={cn(\n 'footer',\n tone,\n bordered && 'bordered',\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 <MContainer size={container} padded={padded} className=\"inner\" fullWidth>\n {children}\n </MContainer>\n </footer>\n )\n}\n","import type {MNavsProps} from './MNavs.types'\nimport {cn} from '../../../utils/cn'\nimport {MLink} from '../../typography'\nimport './MNavs.css'\n\n// Render a lightweight navigation list from data or custom children.\nexport function MNavs({items, orientation = 'horizontal', wrap = false, className, children, ...rest}: MNavsProps) {\n return (\n <div className={cn('navs', orientation, wrap && 'wrap', className)} {...rest}>\n {items\n ? items.map((item) => {\n const Icon = item.icon\n const hideLabel = item.iconOnly === true && Icon != null\n const labelAsString = typeof item.label === 'string' ? item.label : undefined\n const ariaLabel = hideLabel ? labelAsString : undefined\n const linkTitle = item.title ?? (hideLabel ? labelAsString : undefined)\n\n return (\n <MLink\n key={item.key ?? item.href ?? item.title?.toString() ?? labelAsString ?? ''}\n component={item.component}\n href={item.href}\n to={item.to}\n target={item.target}\n rel={item.rel}\n title={linkTitle}\n current={item.current}\n disabled={item.disabled}\n className={cn('link', hideLabel && 'icon-only', item.className)}\n aria-label={ariaLabel}\n >\n {Icon ? (\n <span className=\"icon\" aria-hidden={!hideLabel || undefined}>\n <Icon size={item.iconSize} />\n </span>\n ) : null}\n {!hideLabel ? item.label : null}\n </MLink>\n )\n })\n : children}\n </div>\n )\n}\n","import {Children, cloneElement, isValidElement, useEffect, useId, useRef, useState} from 'react'\nimport type {MouseEvent as ReactMouseEvent, ReactElement} from 'react'\nimport type {MNavbarProps} from './MNavbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MInline} from '../MInline'\nimport type {MInlineProps} from '../MInline'\nimport {MNavs} from '../MNavs'\nimport type {MNavsProps} from '../MNavs'\nimport {MButton} from '../../controls/MButton'\nimport {MMenuIcon} from '../../../icons'\nimport './MNavbar.css'\n\n// Render a horizontal app or site navigation shell with container alignment.\n// Below the md breakpoint MNavs children are collapsed behind a hamburger toggle\n// that opens either a dropdown panel or a side drawer with the navigation items.\nexport function MNavbar({\n container = 'content',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'between',\n wrap = false,\n mobileMenu = 'dropdown',\n mobileMenuContent,\n mobileMenuLabel = 'Open navigation',\n mobileBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n children,\n ...rest\n}: MNavbarProps) {\n const [open, setOpen] = useState(false)\n const rootRef = useRef<HTMLElement | null>(null)\n const menuId = useId()\n const mobile = useMaxWidth(mobileBreakpoint)\n\n const childArray = Children.toArray(children)\n\n const mobileNavs = childArray\n .filter((child): child is ReactElement<MNavsProps> => isValidElement(child) && child.type === MNavs)\n .map((child, index) =>\n cloneElement(child, {\n key: `mnavbar-mobile-navs-${index}`,\n orientation: 'vertical',\n })\n )\n\n const toggleButton = (\n <MButton\n key=\"mnavbar-toggle\"\n type=\"button\"\n variant=\"ghost\"\n size=\"md\"\n iconOnly\n className=\"navbar-toggle\"\n aria-label={mobileMenuLabel}\n aria-expanded={open}\n aria-controls={menuId}\n onClick={handleToggleClick}\n >\n <MMenuIcon />\n </MButton>\n )\n\n let lastInlineIndex = -1\n for (let index = childArray.length - 1; index >= 0; index -= 1) {\n const child = childArray[index]\n if (isValidElement(child) && child.type === MInline) {\n lastInlineIndex = index\n break\n }\n }\n\n const renderedChildren =\n lastInlineIndex === -1\n ? [...childArray, toggleButton]\n : childArray.map((child, index) => {\n if (index !== lastInlineIndex) return child\n const inlineChild = child as ReactElement<MInlineProps>\n const inlineChildren = Children.toArray(inlineChild.props.children)\n return cloneElement(inlineChild, {\n key: inlineChild.key ?? `mnavbar-inline-${index}`,\n children: [...inlineChildren, toggleButton],\n })\n })\n\n useEffect(() => {\n if (!open) return\n\n function handlePointerDown(event: PointerEvent) {\n const root = rootRef.current\n if (!root) return\n if (event.target instanceof Node && root.contains(event.target)) return\n setOpen(false)\n }\n\n function handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') setOpen(false)\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n document.addEventListener('keydown', handleKeydown)\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n document.removeEventListener('keydown', handleKeydown)\n }\n }, [open])\n\n useEffect(() => {\n if (!mobile) {\n setOpen(false)\n }\n }, [mobile])\n\n function handleToggleClick() {\n setOpen((previous) => !previous)\n }\n\n function handleMenuClick(event: ReactMouseEvent<HTMLDivElement>) {\n const target = event.target as HTMLElement | null\n if (!target) return\n if (target.closest('a, [role=\"menuitem\"]')) {\n setOpen(false)\n }\n }\n\n return (\n <nav\n ref={rootRef}\n className={cn(\n 'navbar',\n tone,\n bordered && 'bordered',\n sticky && 'sticky',\n mobile && 'mobile-view',\n open && 'mobile-open',\n `mobile-${mobileMenu}`,\n className\n )}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"container\">\n <div className={cn('inner', justify, wrap && 'wrap')}>{renderedChildren}</div>\n </MContainer>\n\n {mobileMenu === 'drawer' && <div className={cn('mobile-backdrop', open && 'visible')} aria-hidden />}\n\n <div\n id={menuId}\n className={cn('mobile-menu', mobileMenu, open && 'open')}\n role=\"menu\"\n aria-hidden={!open || undefined}\n onClick={handleMenuClick}\n >\n {mobileNavs}\n {mobileMenuContent}\n </div>\n </nav>\n )\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {ReactNode} from 'react'\nimport type {MTopbarItem, MTopbarProps} from './MTopbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MButton} from '../../controls'\nimport {MLink} from '../../typography'\nimport {MChevronDownIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {MDropdownGroup, MDropdownItem, MDropdownMenu} from '../../overlays/MDropdownMenu'\nimport './MTopbar.css'\n\nfunction getItemKey(item: MTopbarItem): string {\n return item.key ?? item.to ?? item.href ?? String(item.label)\n}\n\nfunction itemHasActiveDescendant(item: MTopbarItem): boolean {\n if (item.active) return true\n return (item.children ?? []).some(itemHasActiveDescendant)\n}\n\nfunction renderItemContent(item: MTopbarItem, withChevron = false, isOpen = false): ReactNode {\n return (\n <>\n {item.icon ? <span className=\"topbar-icon\">{item.icon}</span> : null}\n <span>{item.label}</span>\n {item.badge ? <span className=\"topbar-badge\">{item.badge}</span> : null}\n {withChevron ? (\n <span className={cn('topbar-chevron', isOpen && 'open')} aria-hidden=\"true\">\n <MChevronDownIcon size=\"sm\" />\n </span>\n ) : null}\n </>\n )\n}\n\nfunction renderDropdownChildren(children: MTopbarItem[]): ReactNode {\n return children.map((child) => {\n if (child.children?.length) {\n return (\n <MDropdownGroup key={getItemKey(child)} label={String(child.label)}>\n {renderDropdownChildren(child.children)}\n </MDropdownGroup>\n )\n }\n\n return (\n <MDropdownItem\n key={getItemKey(child)}\n icon={child.icon}\n label={child.label}\n href={child.href}\n to={child.to}\n onClick={child.onClick}\n color={child.color}\n disabled={child.disabled}\n active={child.active}\n component={child.component}\n className={child.className}\n />\n )\n })\n}\n\nexport function MTopbar({\n items,\n container = 'full',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'left',\n size = 'md',\n openOn = 'hover',\n dropdownPlacement = 'bottom-start',\n compactBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n style,\n ...rest\n}: MTopbarProps) {\n const hiddenOnCompact = useMaxWidth(compactBreakpoint)\n const [coarsePointer, setCoarsePointer] = useState(false)\n const [openMap, setOpenMap] = useState<Record<string, boolean>>({})\n const [hasOverflow, setHasOverflow] = useState(false)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const [canScrollRight, setCanScrollRight] = useState(false)\n const viewportRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const media = window.matchMedia('(pointer: coarse)')\n const sync = () => setCoarsePointer(media.matches)\n\n sync()\n\n if (typeof media.addEventListener === 'function') {\n media.addEventListener('change', sync)\n return () => media.removeEventListener('change', sync)\n }\n\n media.addListener(sync)\n return () => media.removeListener(sync)\n }, [])\n\n useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const updateOverflow = () => {\n const nextHasOverflow = viewport.scrollWidth > viewport.clientWidth + 1\n setHasOverflow(nextHasOverflow)\n setCanScrollLeft(viewport.scrollLeft > 4)\n setCanScrollRight(viewport.scrollLeft + viewport.clientWidth < viewport.scrollWidth - 4)\n }\n\n updateOverflow()\n\n viewport.addEventListener('scroll', updateOverflow, {passive: true})\n\n const observer = new ResizeObserver(updateOverflow)\n observer.observe(viewport)\n Array.from(viewport.children).forEach((child) => observer.observe(child))\n\n return () => {\n viewport.removeEventListener('scroll', updateOverflow)\n observer.disconnect()\n }\n }, [items, justify, size, tone, bordered, padded, container])\n\n const resolvedOpenOn = useMemo(() => (coarsePointer ? 'click' : openOn), [coarsePointer, openOn])\n\n if (hiddenOnCompact) {\n return null\n }\n\n const scrollByAmount = (direction: 'left' | 'right') => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const amount = Math.max(180, Math.floor(viewport.clientWidth * 0.45))\n viewport.scrollBy({\n left: direction === 'left' ? -amount : amount,\n behavior: 'smooth',\n })\n }\n\n return (\n <nav\n className={cn('topbar', tone, size, bordered && 'bordered', sticky && 'sticky', className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"topbar-container\">\n <div className={cn('topbar-scroll-shell', hasOverflow && 'overflowing')}>\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'left', !canScrollLeft && 'hidden')}\n onClick={() => scrollByAmount('left')}\n aria-label=\"Scroll topbar left\"\n >\n <MChevronLeftIcon />\n </MButton>\n )}\n\n <div ref={viewportRef} className=\"topbar-viewport\">\n <div className={cn('topbar-list', `justify-${justify}`, hasOverflow && 'overflowing')}>\n {items.map((item) => {\n const itemKey = getItemKey(item)\n const isActive = itemHasActiveDescendant(item)\n const isOpen = !!openMap[itemKey]\n\n if (item.children?.length) {\n if (item.disabled) {\n return (\n <div\n key={itemKey}\n className={cn('topbar-trigger', item.color, 'disabled', item.className)}\n aria-disabled=\"true\"\n >\n {renderItemContent(item, true)}\n </div>\n )\n }\n\n return (\n <MDropdownMenu\n key={itemKey}\n trigger={\n <div\n className={cn(\n 'topbar-trigger',\n item.color,\n isActive && 'active',\n isOpen && 'open',\n item.disabled && 'disabled',\n item.className\n )}\n >\n {renderItemContent(item, true, isOpen)}\n </div>\n }\n openOn={item.openOn ?? resolvedOpenOn}\n onOpenChange={(nextOpen) =>\n setOpenMap((prev) => ({...prev, [itemKey]: nextOpen}))\n }\n placement={dropdownPlacement}\n popoverClassName=\"topbar-dropdown-popover\"\n >\n {renderDropdownChildren(item.children)}\n </MDropdownMenu>\n )\n }\n\n return (\n <MLink\n key={itemKey}\n component={item.component}\n href={item.href}\n to={item.to}\n onClick={item.onClick}\n current={item.active}\n disabled={item.disabled}\n underline=\"none\"\n tone=\"inherit\"\n className={cn(\n 'topbar-link',\n item.color,\n item.className,\n item.active && 'active'\n )}\n >\n {renderItemContent(item)}\n </MLink>\n )\n })}\n </div>\n </div>\n\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'right', !canScrollRight && 'hidden')}\n onClick={() => scrollByAmount('right')}\n aria-label=\"Scroll topbar right\"\n >\n <MChevronRightIcon />\n </MButton>\n )}\n </div>\n </MContainer>\n </nav>\n )\n}\n","import {createContext, useContext, useState, useEffect, useCallback, useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronRightIcon, MMenuIcon} from '../../../icons'\nimport {MDropdownMenu, MTooltip} from '../../overlays'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport type {\n MSidebarProps,\n MSidebarHeaderProps,\n MSidebarBodyProps,\n MSidebarNavProps,\n MSidebarItemProps,\n MSidebarGroupProps,\n MSidebarFooterProps,\n MSidebarDividerProps,\n MSidebarMode,\n} from './MSidebar.types'\nimport './MSidebar.css'\n\nconst STORAGE_KEY = 'mineralui-sidebar'\n\ninterface SidebarContextValue {\n mode: MSidebarMode\n mobile: boolean\n mobileOpen: boolean\n canToggle: boolean\n toggleMode: () => void\n}\n\nconst SidebarCtx = createContext<SidebarContextValue>({\n mode: 'expanded',\n mobile: false,\n mobileOpen: false,\n canToggle: false,\n toggleMode: () => {},\n})\n\n// Read shared sidebar state inside slot components.\nfunction useSidebar() {\n return useContext(SidebarCtx)\n}\n\n// Render the sidebar shell and coordinate desktop and mobile behavior.\nexport function MSidebar({\n mode: modeProp = 'auto',\n defaultMode = 'expanded',\n onModeChange,\n persist = false,\n side = 'left',\n tone = 'subtle',\n bordered = true,\n mobileBreakpoint = MShellBreakpoints.mobile,\n compactBreakpoint = MShellBreakpoints.compact,\n className,\n style,\n children,\n}: MSidebarProps) {\n const resolvedCompactBreakpoint = Math.max(compactBreakpoint, mobileBreakpoint)\n const mobile = useMaxWidth(mobileBreakpoint)\n const compactViewport = useMaxWidth(resolvedCompactBreakpoint)\n const compact = !mobile && compactViewport\n const [mobileOpen, setMobileOpen] = useState(false)\n\n const [internalMode, setInternalMode] = useState<MSidebarMode>(() => {\n if (persist) {\n try {\n const v = localStorage.getItem(STORAGE_KEY)\n if (v === 'expanded' || v === 'collapsed') return v\n } catch {\n /* noop */\n }\n }\n\n return defaultMode\n })\n\n const resolvedMode: MSidebarMode = mobile\n ? 'expanded'\n : compact\n ? 'collapsed'\n : modeProp === 'auto'\n ? internalMode\n : modeProp === 'collapsed'\n ? 'collapsed'\n : 'expanded'\n\n // MToggle only the desktop width state. Mobile uses its own overlay flow.\n const toggleMode = useCallback(() => {\n const next: MSidebarMode = resolvedMode === 'expanded' ? 'collapsed' : 'expanded'\n\n setInternalMode(next)\n onModeChange?.(next)\n\n if (persist) {\n try {\n localStorage.setItem(STORAGE_KEY, next)\n } catch {\n /* noop */\n }\n }\n }, [resolvedMode, onModeChange, persist])\n\n const closeMobile = useCallback(() => setMobileOpen(false), [])\n\n // Let Escape close the temporary mobile drawer.\n useEffect(() => {\n if (!mobileOpen) return\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setMobileOpen(false)\n }\n\n document.addEventListener('keydown', handler)\n return () => document.removeEventListener('keydown', handler)\n }, [mobileOpen])\n\n useEffect(() => {\n if (!mobile) {\n setMobileOpen(false)\n }\n }, [mobile])\n\n const canToggle = !mobile && !compact && modeProp === 'auto'\n\n const ctx = useMemo<SidebarContextValue>(\n () => ({mode: resolvedMode, mobile, mobileOpen, canToggle, toggleMode}),\n [resolvedMode, mobile, mobileOpen, canToggle, toggleMode]\n )\n\n const isCollapsed = !mobile && resolvedMode === 'collapsed'\n\n const sidebarCls = cn(\n 'sidebar',\n tone,\n side,\n isCollapsed && 'collapsed',\n compact && 'compact',\n bordered && 'bordered',\n mobile && 'mobile',\n mobile && mobileOpen && 'mobile-open',\n className\n )\n\n return (\n <SidebarCtx.Provider value={ctx}>\n {mobile && mobileOpen && <div className=\"sidebar-backdrop\" onClick={closeMobile} />}\n\n <aside className={sidebarCls} style={style}>\n {children}\n </aside>\n\n {mobile && !mobileOpen && (\n <button\n className={cn('sidebar-hamburger', side)}\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n >\n <span className=\"sidebar-hamburger-icon\" aria-hidden=\"true\">\n <MMenuIcon />\n </span>\n </button>\n )}\n </SidebarCtx.Provider>\n )\n}\n\n// Render the top area with branding and an optional collapse toggle.\nexport function MSidebarHeader({bordered = false, className, children}: MSidebarHeaderProps) {\n const {mode, mobile, canToggle, toggleMode} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n return (\n <div className={cn('sidebar-header', bordered && 'bordered', className)}>\n <div className=\"sidebar-header-content\">{children}</div>\n {canToggle && (\n <MButton\n variant=\"outlined\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={toggleMode}\n aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n className=\"sidebar-toggle\"\n >\n <span className={cn('sidebar-chevron', isCollapsed && 'flipped')}>\n <MChevronRightIcon />\n </span>\n </MButton>\n )}\n </div>\n )\n}\n\n// Wrap the scrollable middle area between header and footer.\nexport function MSidebarBody({className, children}: MSidebarBodyProps) {\n return <div className={cn('sidebar-body', className)}>{children}</div>\n}\n\n// Wrap sidebar links in a navigation landmark.\nexport function MSidebarNav({className, children}: MSidebarNavProps) {\n return <nav className={cn('sidebar-nav', className)}>{children}</nav>\n}\n\n// Render one clickable sidebar row as a link, button or custom component.\nexport function MSidebarItem({\n icon,\n label,\n description,\n href,\n to,\n onClick,\n active = false,\n disabled = false,\n badge,\n color,\n component,\n className,\n}: MSidebarItemProps) {\n const {mode, mobile} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n // ONE tooltip per row: prefer description, fall back to label. The HTML\n // title attribute used in collapsed mode mirrors the same priority but is\n // limited to strings (browsers can't render ReactNodes).\n const tooltipContent = description ?? label\n const titleAttr = typeof description === 'string'\n ? description\n : typeof label === 'string'\n ? label\n : undefined\n\n const Tag = component ?? (href || to ? 'a' : 'button')\n const linkProps = component ? (to ? {to} : href ? {href} : {}) : href ? {href} : to ? {href: to} : {}\n const cls = cn('sidebar-item', active && 'active', disabled && 'disabled', color, className)\n\n return (\n <Tag\n className={cls}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled || undefined}\n title={isCollapsed ? titleAttr : undefined}\n {...linkProps}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!isCollapsed && (\n <MTooltip content={tooltipContent} placement=\"top\" className=\"sidebar-item-label-tooltip\">\n <span className=\"sidebar-item-label\">{label}</span>\n </MTooltip>\n )}\n {!isCollapsed && badge && <span className=\"sidebar-item-badge\">{badge}</span>}\n </Tag>\n )\n}\n\n// Group related sidebar items and swap to a dropdown when collapsed.\nexport function MSidebarGroup({\n label,\n icon,\n active = false,\n defaultOpen = true,\n collapsible = true,\n children,\n className,\n}: MSidebarGroupProps) {\n const sidebarCtx = useSidebar()\n const {mode, mobile} = sidebarCtx\n const isCollapsed = !mobile && mode === 'collapsed'\n const [open, setOpen] = useState(defaultOpen)\n\n const expandedCtx = useMemo<SidebarContextValue>(() => ({...sidebarCtx, mode: 'expanded'}), [sidebarCtx])\n\n // Keep expand/collapse local to this group.\n const toggle = () => {\n if (collapsible) setOpen((o) => !o)\n }\n\n if (isCollapsed) {\n const trigger = (\n <span className={cn('sidebar-group-icon collapsed', active && 'active')} title={label}>\n {icon}\n </span>\n )\n\n return (\n <div className={cn('sidebar-group', className)}>\n <MDropdownMenu trigger={trigger} placement=\"right-start\" closeOnSelect openOn=\"hover\">\n <SidebarCtx.Provider value={expandedCtx}>{children}</SidebarCtx.Provider>\n </MDropdownMenu>\n </div>\n )\n }\n\n return (\n <div className={cn('sidebar-group', className)}>\n <button className={cn('sidebar-group-header', active && 'active')} onClick={toggle} aria-expanded={open}>\n {icon && <span className=\"sidebar-group-icon\">{icon}</span>}\n <span className=\"sidebar-group-label\">{label}</span>\n {collapsible && (\n <span className={cn('sidebar-group-arrow', open && 'open')}>\n <MChevronRightIcon />\n </span>\n )}\n </button>\n {open && <div className=\"sidebar-group-items\">{children}</div>}\n </div>\n )\n}\n\n// Render the bottom slot for version info or quick actions.\nexport function MSidebarFooter({bordered = false, className, children}: MSidebarFooterProps) {\n return <div className={cn('sidebar-footer', bordered && 'bordered', className)}>{children}</div>\n}\n\n// Render a spacing-aware divider between sidebar regions.\nexport function MSidebarDivider({className, spacing = 'md'}: MSidebarDividerProps) {\n return <hr className={cn('sidebar-divider', spacing, className)} />\n}\n","import {cloneElement, createElement, isValidElement} from 'react'\nimport type {ComponentType, ReactNode} from 'react'\nimport type {MAppMenuIcon, MAppMenuItem, MAppMenuProps} from './MAppMenu.types'\nimport {MNavs} from '../MNavs'\nimport {MSidebarGroup, MSidebarItem, MSidebarNav} from '../MSidebar'\nimport {MTopbar} from '../MTopbar'\nimport type {MTopbarItem} from '../MTopbar'\nimport {MTooltip} from '../../overlays/MTooltip'\nimport type {MTooltipPlacement} from '../../overlays/MTooltip'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport './MAppMenu.css'\n\nfunction toIconComponent(icon?: MAppMenuIcon): ComponentType<any> | undefined {\n if (!icon) {\n return undefined\n }\n\n if (isValidElement(icon)) {\n return function AppMenuIconComponent(props) {\n return cloneElement(icon, props)\n }\n }\n\n return icon as ComponentType<any>\n}\n\nfunction toNode(icon?: MAppMenuIcon): ReactNode {\n if (!icon) {\n return null\n }\n\n if (isValidElement(icon)) {\n return icon\n }\n\n return createElement(icon as ComponentType<any>)\n}\n\nfunction withDescriptionTooltip(\n label: ReactNode,\n description: MAppMenuItem['description'],\n placement: MTooltipPlacement,\n skip: boolean\n): ReactNode {\n if (skip || !description) {\n return label\n }\n\n return (\n <MTooltip content={description} placement={placement}>\n <span className=\"app-menu-item-label\">{label}</span>\n </MTooltip>\n )\n}\n\nexport function MAppMenu({\n groups,\n as = 'navs',\n primaryOnly = as === 'navs',\n wrap,\n openOn = 'click',\n dropdownPlacement = 'bottom-start',\n orientation = 'horizontal',\n size = 'sm',\n tone = 'default',\n justify = 'left',\n container,\n padded,\n bordered,\n sticky,\n className,\n ...rest\n}: MAppMenuProps) {\n // Tooltips are pure desktop affordance — touch devices either don't trigger\n // hover at all or trigger after a long-press, neither of which is useful on\n // a phone-sized navigation. Skip the wrap entirely below the mobile breakpoint.\n const skipTooltip = useMaxWidth(MShellBreakpoints.mobile)\n if (as === 'sidebar') {\n return (\n <MSidebarNav className={className}>\n {groups.map((group) => (\n <MSidebarGroup\n key={group.key ?? group.label?.toString()}\n label={group.label?.toString() ?? ''}\n icon={toNode(group.icon)}\n collapsible={group.collapsible ?? true}\n defaultOpen={group.defaultOpen ?? true}\n >\n {group.items.map((item) => (\n // MSidebarItem owns the tooltip — passing `description` here lets it\n // pick ONE source (description ?? label) without an outer wrap that\n // would stack a second tooltip on top of the built-in label tooltip.\n <MSidebarItem\n key={item.key ?? item.to ?? item.href ?? item.label?.toString()}\n icon={toNode(item.icon)}\n label={item.label}\n description={skipTooltip ? undefined : item.description}\n href={item.href}\n to={item.to}\n onClick={item.onClick}\n active={item.active}\n disabled={item.disabled}\n badge={item.badge}\n color={item.color}\n component={item.component}\n className={item.className}\n />\n ))}\n </MSidebarGroup>\n ))}\n </MSidebarNav>\n )\n }\n\n if (as === 'topbar') {\n const topbarItems: MTopbarItem[] = groups.map((group) => ({\n key: group.key ?? String(group.label),\n label: group.label,\n icon: toNode(group.icon),\n children: group.items.map((item) => ({\n key: item.key ?? item.to ?? item.href ?? String(item.label),\n label: withDescriptionTooltip(item.label, item.description, 'bottom', skipTooltip),\n icon: toNode(item.icon),\n href: item.href,\n to: item.to,\n onClick: item.onClick,\n badge: item.badge,\n color: item.color,\n active: item.active,\n disabled: item.disabled,\n component: item.component,\n className: item.className,\n })),\n }))\n\n return (\n <MTopbar\n items={topbarItems}\n tone={tone}\n justify={justify}\n size={size}\n openOn={openOn}\n dropdownPlacement={dropdownPlacement}\n container={container}\n padded={padded}\n bordered={bordered}\n sticky={sticky}\n className={className}\n {...rest}\n />\n )\n }\n\n const navItems = groups\n .flatMap((group) => group.items)\n .filter((item) => (primaryOnly ? item.primary : true))\n .map((item) => ({\n key: item.key ?? item.to ?? item.href ?? item.label?.toString(),\n label: withDescriptionTooltip(item.label, item.description, 'bottom', skipTooltip),\n icon: toIconComponent(item.icon),\n href: item.href,\n to: item.to,\n title: item.title,\n current: item.active,\n disabled: item.disabled,\n className: item.className,\n component: item.component,\n }))\n\n return <MNavs items={navItems} orientation={orientation} wrap={wrap} className={className} {...rest} />\n}\n","import type React from 'react'\nimport type {MSectionProps} from './MSection.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MSection.css'\n\n// Render a semantic page section with predefined spacing and tone.\nexport function MSection({\n as = 'section',\n spacing = 'lg',\n tone = 'default',\n hidden,\n className,\n style,\n children,\n ...rest\n}: MSectionProps) {\n const Component = as\n\n return (\n <Component\n className={cn('section', spacing, tone, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n}\n","import type {MStatGridProps} from './MStatGrid.types'\nimport {MSimpleGrid} from '../MSimpleGrid'\n\nexport function MStatGrid<T>({\n items,\n renderItem,\n children,\n columns = 4,\n minItemWidth = '15rem',\n ...rest\n}: MStatGridProps<T>) {\n return (\n <MSimpleGrid columns={columns} minItemWidth={minItemWidth} {...rest}>\n {items && renderItem ? items.map((item, index) => renderItem(item, index)) : children}\n </MSimpleGrid>\n )\n}\n","import type {MDividerProps} from './MDivider.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MDivider.css'\n\n// Render a semantic divider line between related content blocks.\nexport function MDivider({\n orientation = 'horizontal',\n variant = 'solid',\n hidden,\n className,\n style,\n ...rest\n}: MDividerProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn('divider', orientation, variant, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n />\n )\n}\n","import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport type {MBreadcrumbProps} from './MBreadcrumb.types'\nimport './MBreadcrumb.css'\n\n// Render a compact path and collapse the middle when needed.\nexport function MBreadcrumb({items, separator = '/', maxItems, className, ...rest}: MBreadcrumbProps) {\n // Keep the current page visible while shortening deep paths.\n const visible = useMemo(() => {\n if (!maxItems || maxItems >= items.length) return items\n if (maxItems < 2) return [items[items.length - 1]]\n const head = items.slice(0, 1)\n const tail = items.slice(-(maxItems - 1))\n return [...head, null, ...tail]\n }, [items, maxItems])\n\n return (\n <nav aria-label=\"breadcrumb\" className={cn('breadcrumb', className)} {...rest}>\n <ol className=\"trail\">\n {visible.map((item, i) => {\n if (item === null) {\n return (\n <li key=\"ellipsis\" className=\"crumb dots\">\n <span className=\"sep\">{separator}</span>\n <span>…</span>\n </li>\n )\n }\n\n const isLast = i === visible.length - 1\n\n return (\n <li key={i} className={cn('crumb', isLast && 'active')}>\n {i > 0 && <span className=\"sep\">{separator}</span>}\n {item.href && !isLast ? (\n <a href={item.href} className=\"link\" onClick={item.onClick}>\n {item.label}\n </a>\n ) : item.onClick && !isLast ? (\n <button type=\"button\" className=\"link btn\" onClick={item.onClick}>\n {item.label}\n </button>\n ) : (\n <span className=\"current\" aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n","import {forwardRef, Children, isValidElement} from 'react'\nimport type * as React from 'react'\nimport type {MAppShellProps, MBodyProps} from './MAppShell.types'\nimport {cn} from '../../../utils/cn'\nimport {MSidebar} from '../MSidebar'\nimport './MAppShell.css'\n\nexport const MAppShell = forwardRef<HTMLDivElement, MAppShellProps>(function MAppShell(\n {className, children, ...rest},\n ref\n) {\n const sidebarElements: React.ReactNode[] = []\n const otherElements: React.ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === MSidebar) {\n sidebarElements.push(child)\n } else {\n otherElements.push(child)\n }\n })\n\n return (\n <div ref={ref} className={cn('app-shell', className)} {...rest}>\n {sidebarElements}\n <div className=\"app-main\">{otherElements}</div>\n </div>\n )\n})\n\nexport const MBody = forwardRef<HTMLDivElement, MBodyProps>(function MBody({className, children, ...rest}, ref) {\n return (\n <div ref={ref} className={cn('app-body', className)} {...rest}>\n {children}\n </div>\n )\n})\n"],"mappings":"scAOA,SAAgB,EAAW,CACvB,OAAO,UACP,SAAS,GACT,SACA,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,YACA,QACA,WACA,GAAG,GACa,CAChB,IAAM,EAAe,EAAA,EAAuB,CAAC,QAAM,CAAC,CAEpD,OACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,EAAA,EACP,YACA,EACA,GAAU,SACV,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,CC1Dd,SAAgB,EAAQ,CACpB,YAAY,OACZ,SAAS,GACT,WAAW,GACX,SAAS,GACT,OAAO,UACP,SAAS,QACT,SACA,YACA,WACA,GAAG,GACU,CACb,OACI,EAAA,EAAA,KAAC,SAAD,CACI,UAAW,EAAA,EAAG,SAAU,EAAM,GAAY,WAAY,GAAU,SAAU,EAAU,CACpF,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,YAEJ,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAmB,SAAQ,UAAW,EAAA,EAAG,QAAS,UAAU,IAAS,CAClF,WACQ,CAAA,CACR,CAAA,CCpBjB,SAAgB,EAAQ,CACpB,YAAY,OACZ,SAAS,GACT,WAAW,GACX,OAAO,UACP,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,SAAD,CACI,UAAW,EAAA,EACP,SACA,EACA,GAAY,WACZ,GAAG,EAAA,EAA2B,CAC1B,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACH,CAAC,CACF,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"}
|
package/dist/layout.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const {ensureStyles}=require('./style-runtime.cjs')
|
|
2
2
|
ensureStyles()
|
|
3
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./layout-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./layout-Op6GWQ8w.cjs`),t=require(`./MStack-ByFYGSsy.cjs`),n=require(`./MTabs-DeUn6bIp.cjs`),r=require(`./MSimpleGrid-CyLf-9R2.cjs`),i=require(`./MGrid-C4kPZDSa.cjs`),a=require(`./MSurface-CpAuwpHv.cjs`),o=require(`./MPagination-CS62B9kZ.cjs`);exports.MAppMenu=e.s,exports.MAppShell=e.t,exports.MBody=e.n,exports.MBreadcrumb=e.r,exports.MContainer=e.x,exports.MDivider=e.i,exports.MFooter=e.y,exports.MGrid=i.t,exports.MGridItem=i.n,exports.MHeader=e.b,exports.MInline=t.n,exports.MNavbar=e._,exports.MNavs=e.v,exports.MPagination=o.t,exports.MSection=e.o,exports.MSidebar=e.c,exports.MSidebarBody=e.l,exports.MSidebarDivider=e.u,exports.MSidebarFooter=e.d,exports.MSidebarGroup=e.f,exports.MSidebarHeader=e.p,exports.MSidebarItem=e.m,exports.MSidebarNav=e.h,exports.MSimpleGrid=r.t,exports.MStack=t.t,exports.MStatGrid=e.a,exports.MSurface=a.t,exports.MTabs=n.t,exports.MTopbar=e.g;
|
package/dist/layout.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {ensureStyles} from './style-runtime.js'
|
|
2
2
|
ensureStyles()
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as E } from "./
|
|
8
|
-
|
|
3
|
+
import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, o as f, p, r as m, s as h, t as g, u as _, v, x as y, y as b } from "./layout-D1-mF4xn.js";
|
|
4
|
+
import { n as x, t as S } from "./MStack-DFIc3S4_.js";
|
|
5
|
+
import { t as C } from "./MTabs-BQZ--mMq.js";
|
|
6
|
+
import { t as w } from "./MSimpleGrid-Bojj4xKH.js";
|
|
7
|
+
import { n as T, t as E } from "./MGrid-DR0fHItF.js";
|
|
8
|
+
import { t as D } from "./MSurface-CmVIQC1A.js";
|
|
9
|
+
import { t as O } from "./MPagination-Dr110are.js";
|
|
10
|
+
export { h as MAppMenu, g as MAppShell, d as MBody, m as MBreadcrumb, y as MContainer, c as MDivider, b as MFooter, E as MGrid, T as MGridItem, n as MHeader, x as MInline, e as MNavbar, v as MNavs, O as MPagination, f as MSection, r as MSidebar, l as MSidebarBody, _ as MSidebarDivider, i as MSidebarFooter, a as MSidebarGroup, p as MSidebarHeader, u as MSidebarItem, s as MSidebarNav, w as MSimpleGrid, S as MStack, t as MStatGrid, D as MSurface, C as MTabs, o as MTopbar };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require(`./core-DAox0BHy.cjs`);let e=require(`react`);function t(t,n){(0,e.useEffect)(()=>{let e=e=>{!t.current||t.current.contains(e.target)||n()};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[t,n])}var n={MFileManager:{group:`data`,plan:`pro`},MCalendarBoard:{group:`data`,plan:`pro`},MChat:{group:`data`,plan:`pro`},MStepper:{group:`display`,plan:`pro`},MTimeline:{group:`display`,plan:`pro`},MAvatarStack:{group:`media`,plan:`pro`},MIconV2:{group:`icons`,plan:`pro`},MTopbar:{group:`layout`,plan:`pro`},MAppMenu:{group:`layout`,plan:`pro`},MMasonry:{group:`media`,plan:`pro`},MShowcaseCarousel:{group:`media`,plan:`pro`},MCookieConsent:{group:`feedback`,plan:`pro`},MQrCode:{group:`display`,plan:`pro`},MCardBusiness:{group:`cards`,plan:`pro`},MCardFinance:{group:`cards`,plan:`pro`},MLineChart:{group:`charts`,plan:`pro`},MBarChart:{group:`charts`,plan:`pro`},MAreaChart:{group:`charts`,plan:`pro`},MPieChart:{group:`charts`,plan:`pro`},MSparkline:{group:`charts`,plan:`pro`}},r=Object.keys(n);function i(e){return Object.prototype.hasOwnProperty.call(n,e)}function a(e){if(i(e))return n[e]}function o(e){return a(e)?.plan??`free`}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
2
|
+
//# sourceMappingURL=licensing-DmF0ObpG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensing-DmF0ObpG.cjs","names":[],"sources":["../src/utils/useClickOutside.ts","../src/utils/licensing.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n","export type MineralPlan = 'free' | 'pro'\n\nexport interface MineralComponentLicense {\n group: 'cards' | 'charts' | 'data' | 'display' | 'media' | 'icons' | 'layout' | 'feedback'\n plan: MineralPlan\n}\n\nexport const mineralComponentLicenses = {\n MFileManager: {group: 'data', plan: 'pro'},\n MCalendarBoard: {group: 'data', plan: 'pro'},\n MChat: {group: 'data', plan: 'pro'},\n MStepper: {group: 'display', plan: 'pro'},\n MTimeline: {group: 'display', plan: 'pro'},\n MAvatarStack: {group: 'media', plan: 'pro'},\n MIconV2: {group: 'icons', plan: 'pro'},\n MTopbar: {group: 'layout', plan: 'pro'},\n MAppMenu: {group: 'layout', plan: 'pro'},\n MMasonry: {group: 'media', plan: 'pro'},\n MShowcaseCarousel: {group: 'media', plan: 'pro'},\n MCookieConsent: {group: 'feedback', plan: 'pro'},\n MQrCode: {group: 'display', plan: 'pro'},\n MCardBusiness: {group: 'cards', plan: 'pro'},\n MCardFinance: {group: 'cards', plan: 'pro'},\n MLineChart: {group: 'charts', plan: 'pro'},\n MBarChart: {group: 'charts', plan: 'pro'},\n MAreaChart: {group: 'charts', plan: 'pro'},\n MPieChart: {group: 'charts', plan: 'pro'},\n MSparkline: {group: 'charts', plan: 'pro'},\n} as const satisfies Record<string, MineralComponentLicense>\n\nexport type MineralProComponentName = keyof typeof mineralComponentLicenses\n\nexport const mineralProComponents = Object.keys(mineralComponentLicenses) as MineralProComponentName[]\n\nexport function isMineralProComponent(componentName: string): componentName is MineralProComponentName {\n return Object.prototype.hasOwnProperty.call(mineralComponentLicenses, componentName)\n}\n\nexport function getMineralComponentLicense(componentName: string): MineralComponentLicense | undefined {\n if (!isMineralProComponent(componentName)) {\n return undefined\n }\n\n return mineralComponentLicenses[componentName]\n}\n\nexport function getMineralComponentPlan(componentName: string): MineralPlan {\n return getMineralComponentLicense(componentName)?.plan ?? 'free'\n}\n"],"mappings":"sDAGA,SAAgB,EAAgB,EAAoC,EAA2B,EAC3F,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAY,GAA+B,CACzC,CAAC,EAAI,SAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,EAC1D,GAAS,EAKb,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,aAAc,EAAS,KACpC,CACT,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,aAAc,EAAS,GAEzD,CAAC,EAAK,EAAQ,CAAC,CCTtB,IAAa,EAA2B,CACpC,aAAc,CAAC,MAAO,OAAQ,KAAM,MAAM,CAC1C,eAAgB,CAAC,MAAO,OAAQ,KAAM,MAAM,CAC5C,MAAO,CAAC,MAAO,OAAQ,KAAM,MAAM,CACnC,SAAU,CAAC,MAAO,UAAW,KAAM,MAAM,CACzC,UAAW,CAAC,MAAO,UAAW,KAAM,MAAM,CAC1C,aAAc,CAAC,MAAO,QAAS,KAAM,MAAM,CAC3C,QAAS,CAAC,MAAO,QAAS,KAAM,MAAM,CACtC,QAAS,CAAC,MAAO,SAAU,KAAM,MAAM,CACvC,SAAU,CAAC,MAAO,SAAU,KAAM,MAAM,CACxC,SAAU,CAAC,MAAO,QAAS,KAAM,MAAM,CACvC,kBAAmB,CAAC,MAAO,QAAS,KAAM,MAAM,CAChD,eAAgB,CAAC,MAAO,WAAY,KAAM,MAAM,CAChD,QAAS,CAAC,MAAO,UAAW,KAAM,MAAM,CACxC,cAAe,CAAC,MAAO,QAAS,KAAM,MAAM,CAC5C,aAAc,CAAC,MAAO,QAAS,KAAM,MAAM,CAC3C,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC1C,UAAW,CAAC,MAAO,SAAU,KAAM,MAAM,CACzC,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC1C,UAAW,CAAC,MAAO,SAAU,KAAM,MAAM,CACzC,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC7C,CAIY,EAAuB,OAAO,KAAK,EAAyB,CAEzE,SAAgB,EAAsB,EAAiE,CACnG,OAAO,OAAO,UAAU,eAAe,KAAK,EAA0B,EAAc,CAGxF,SAAgB,EAA2B,EAA4D,CAC9F,KAAsB,EAAc,CAIzC,OAAO,EAAyB,GAGpC,SAAgB,EAAwB,EAAoC,CACxE,OAAO,EAA2B,EAAc,EAAE,MAAQ"}
|
|
@@ -45,6 +45,10 @@ var n = {
|
|
|
45
45
|
group: "layout",
|
|
46
46
|
plan: "pro"
|
|
47
47
|
},
|
|
48
|
+
MAppMenu: {
|
|
49
|
+
group: "layout",
|
|
50
|
+
plan: "pro"
|
|
51
|
+
},
|
|
48
52
|
MMasonry: {
|
|
49
53
|
group: "media",
|
|
50
54
|
plan: "pro"
|
|
@@ -102,4 +106,4 @@ function o(e) {
|
|
|
102
106
|
//#endregion
|
|
103
107
|
export { r as a, n as i, o as n, t as o, i as r, a as t };
|
|
104
108
|
|
|
105
|
-
//# sourceMappingURL=licensing-
|
|
109
|
+
//# sourceMappingURL=licensing-ZFCUU4Z8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensing-ZFCUU4Z8.js","names":[],"sources":["../src/utils/useClickOutside.ts","../src/utils/licensing.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n","export type MineralPlan = 'free' | 'pro'\n\nexport interface MineralComponentLicense {\n group: 'cards' | 'charts' | 'data' | 'display' | 'media' | 'icons' | 'layout' | 'feedback'\n plan: MineralPlan\n}\n\nexport const mineralComponentLicenses = {\n MFileManager: {group: 'data', plan: 'pro'},\n MCalendarBoard: {group: 'data', plan: 'pro'},\n MChat: {group: 'data', plan: 'pro'},\n MStepper: {group: 'display', plan: 'pro'},\n MTimeline: {group: 'display', plan: 'pro'},\n MAvatarStack: {group: 'media', plan: 'pro'},\n MIconV2: {group: 'icons', plan: 'pro'},\n MTopbar: {group: 'layout', plan: 'pro'},\n MAppMenu: {group: 'layout', plan: 'pro'},\n MMasonry: {group: 'media', plan: 'pro'},\n MShowcaseCarousel: {group: 'media', plan: 'pro'},\n MCookieConsent: {group: 'feedback', plan: 'pro'},\n MQrCode: {group: 'display', plan: 'pro'},\n MCardBusiness: {group: 'cards', plan: 'pro'},\n MCardFinance: {group: 'cards', plan: 'pro'},\n MLineChart: {group: 'charts', plan: 'pro'},\n MBarChart: {group: 'charts', plan: 'pro'},\n MAreaChart: {group: 'charts', plan: 'pro'},\n MPieChart: {group: 'charts', plan: 'pro'},\n MSparkline: {group: 'charts', plan: 'pro'},\n} as const satisfies Record<string, MineralComponentLicense>\n\nexport type MineralProComponentName = keyof typeof mineralComponentLicenses\n\nexport const mineralProComponents = Object.keys(mineralComponentLicenses) as MineralProComponentName[]\n\nexport function isMineralProComponent(componentName: string): componentName is MineralProComponentName {\n return Object.prototype.hasOwnProperty.call(mineralComponentLicenses, componentName)\n}\n\nexport function getMineralComponentLicense(componentName: string): MineralComponentLicense | undefined {\n if (!isMineralProComponent(componentName)) {\n return undefined\n }\n\n return mineralComponentLicenses[componentName]\n}\n\nexport function getMineralComponentPlan(componentName: string): MineralPlan {\n return getMineralComponentLicense(componentName)?.plan ?? 'free'\n}\n"],"mappings":";;AAGA,SAAgB,EAAgB,GAAoC,GAA2B;AAC3F,SAAgB;EACZ,IAAM,KAAY,MAA+B;AACzC,IAAC,EAAI,WAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,IAC1D,GAAS;;AAKb,SAFA,SAAS,iBAAiB,aAAa,EAAS,EAChD,SAAS,iBAAiB,cAAc,EAAS,QACpC;AAET,GADA,SAAS,oBAAoB,aAAa,EAAS,EACnD,SAAS,oBAAoB,cAAc,EAAS;;IAEzD,CAAC,GAAK,EAAQ,CAAC;;;;ACTtB,IAAa,IAA2B;CACpC,cAAc;EAAC,OAAO;EAAQ,MAAM;EAAM;CAC1C,gBAAgB;EAAC,OAAO;EAAQ,MAAM;EAAM;CAC5C,OAAO;EAAC,OAAO;EAAQ,MAAM;EAAM;CACnC,UAAU;EAAC,OAAO;EAAW,MAAM;EAAM;CACzC,WAAW;EAAC,OAAO;EAAW,MAAM;EAAM;CAC1C,cAAc;EAAC,OAAO;EAAS,MAAM;EAAM;CAC3C,SAAS;EAAC,OAAO;EAAS,MAAM;EAAM;CACtC,SAAS;EAAC,OAAO;EAAU,MAAM;EAAM;CACvC,UAAU;EAAC,OAAO;EAAU,MAAM;EAAM;CACxC,UAAU;EAAC,OAAO;EAAS,MAAM;EAAM;CACvC,mBAAmB;EAAC,OAAO;EAAS,MAAM;EAAM;CAChD,gBAAgB;EAAC,OAAO;EAAY,MAAM;EAAM;CAChD,SAAS;EAAC,OAAO;EAAW,MAAM;EAAM;CACxC,eAAe;EAAC,OAAO;EAAS,MAAM;EAAM;CAC5C,cAAc;EAAC,OAAO;EAAS,MAAM;EAAM;CAC3C,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC1C,WAAW;EAAC,OAAO;EAAU,MAAM;EAAM;CACzC,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC1C,WAAW;EAAC,OAAO;EAAU,MAAM;EAAM;CACzC,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC7C,EAIY,IAAuB,OAAO,KAAK,EAAyB;AAEzE,SAAgB,EAAsB,GAAiE;AACnG,QAAO,OAAO,UAAU,eAAe,KAAK,GAA0B,EAAc;;AAGxF,SAAgB,EAA2B,GAA4D;AAC9F,OAAsB,EAAc,CAIzC,QAAO,EAAyB;;AAGpC,SAAgB,EAAwB,GAAoC;AACxE,QAAO,EAA2B,EAAc,EAAE,QAAQ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`./core-
|
|
2
|
-
//# sourceMappingURL=locale-
|
|
1
|
+
require(`./core-DAox0BHy.cjs`);let e=require(`react`);function t(){if(typeof document<`u`){let e=document.documentElement.lang?.trim();if(e)return e}return typeof navigator<`u`&&(navigator.language||navigator.languages?.[0])||`en`}function n(n){let[r,i]=(0,e.useState)(()=>n||t());return(0,e.useEffect)(()=>{if(n){i(n);return}if(typeof document>`u`)return;let e=()=>i(t());e();let r=new MutationObserver(e);return r.observe(document.documentElement,{attributes:!0,attributeFilter:[`lang`]}),window.addEventListener(`languagechange`,e),()=>{r.disconnect(),window.removeEventListener(`languagechange`,e)}},[n]),r}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
|
|
2
|
+
//# sourceMappingURL=locale-Bz2JXxDZ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale-
|
|
1
|
+
{"version":3,"file":"locale-Bz2JXxDZ.cjs","names":[],"sources":["../src/utils/locale.ts"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function resolveRuntimeLocale(): string {\n if (typeof document !== 'undefined') {\n const lang = document.documentElement.lang?.trim()\n if (lang) return lang\n }\n\n if (typeof navigator !== 'undefined') {\n return navigator.language || navigator.languages?.[0] || 'en'\n }\n\n return 'en'\n}\n\n// React to MI18nProvider lang updates without requiring direct provider access.\nexport function useDocumentLocale(explicitLocale?: string): string {\n const [locale, setLocale] = useState(() => explicitLocale || resolveRuntimeLocale())\n\n useEffect(() => {\n if (explicitLocale) {\n setLocale(explicitLocale)\n return\n }\n\n if (typeof document === 'undefined') return\n\n const update = () => setLocale(resolveRuntimeLocale())\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n\n window.addEventListener('languagechange', update)\n\n return () => {\n observer.disconnect()\n window.removeEventListener('languagechange', update)\n }\n }, [explicitLocale])\n\n return locale\n}\n"],"mappings":"sDAEA,SAAgB,GAA+B,CAC3C,GAAI,OAAO,SAAa,IAAa,CACjC,IAAM,EAAO,SAAS,gBAAgB,MAAM,MAAM,CAClD,GAAI,EAAM,OAAO,EAOrB,OAJI,OAAO,UAAc,MACd,UAAU,UAAY,UAAU,YAAY,KAGhD,KAIX,SAAgB,EAAkB,EAAiC,CAC/D,GAAM,CAAC,EAAQ,IAAA,EAAA,EAAA,cAA4B,GAAkB,GAAsB,CAAC,CA2BpF,OAzBA,EAAA,EAAA,eAAgB,CACZ,GAAI,EAAgB,CAChB,EAAU,EAAe,CACzB,OAGJ,GAAI,OAAO,SAAa,IAAa,OAErC,IAAM,MAAe,EAAU,GAAsB,CAAC,CACtD,GAAQ,CAER,IAAM,EAAW,IAAI,iBAAiB,EAAO,CAQ7C,OAPA,EAAS,QAAQ,SAAS,gBAAiB,CACvC,WAAY,GACZ,gBAAiB,CAAC,OAAO,CAC5B,CAAC,CAEF,OAAO,iBAAiB,iBAAkB,EAAO,KAEpC,CACT,EAAS,YAAY,CACrB,OAAO,oBAAoB,iBAAkB,EAAO,GAEzD,CAAC,EAAe,CAAC,CAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale-
|
|
1
|
+
{"version":3,"file":"locale-CS1-IY_I.js","names":[],"sources":["../src/utils/locale.ts"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function resolveRuntimeLocale(): string {\n if (typeof document !== 'undefined') {\n const lang = document.documentElement.lang?.trim()\n if (lang) return lang\n }\n\n if (typeof navigator !== 'undefined') {\n return navigator.language || navigator.languages?.[0] || 'en'\n }\n\n return 'en'\n}\n\n// React to MI18nProvider lang updates without requiring direct provider access.\nexport function useDocumentLocale(explicitLocale?: string): string {\n const [locale, setLocale] = useState(() => explicitLocale || resolveRuntimeLocale())\n\n useEffect(() => {\n if (explicitLocale) {\n setLocale(explicitLocale)\n return\n }\n\n if (typeof document === 'undefined') return\n\n const update = () => setLocale(resolveRuntimeLocale())\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n\n window.addEventListener('languagechange', update)\n\n return () => {\n observer.disconnect()\n window.removeEventListener('languagechange', update)\n }\n }, [explicitLocale])\n\n return locale\n}\n"],"mappings":";;AAEA,SAAgB,IAA+B;AAC3C,KAAI,OAAO,WAAa,KAAa;EACjC,IAAM,IAAO,SAAS,gBAAgB,MAAM,MAAM;AAClD,MAAI,EAAM,QAAO;;AAOrB,QAJI,OAAO,YAAc,QACd,UAAU,YAAY,UAAU,YAAY,OAGhD;;AAIX,SAAgB,EAAkB,GAAiC;CAC/D,IAAM,CAAC,GAAQ,KAAa,QAAe,KAAkB,GAAsB,CAAC;AA2BpF,QAzBA,QAAgB;AACZ,MAAI,GAAgB;AAChB,KAAU,EAAe;AACzB;;AAGJ,MAAI,OAAO,WAAa,IAAa;EAErC,IAAM,UAAe,EAAU,GAAsB,CAAC;AACtD,KAAQ;EAER,IAAM,IAAW,IAAI,iBAAiB,EAAO;AAQ7C,SAPA,EAAS,QAAQ,SAAS,iBAAiB;GACvC,YAAY;GACZ,iBAAiB,CAAC,OAAO;GAC5B,CAAC,EAEF,OAAO,iBAAiB,kBAAkB,EAAO,QAEpC;AAET,GADA,EAAS,YAAY,EACrB,OAAO,oBAAoB,kBAAkB,EAAO;;IAEzD,CAAC,EAAe,CAAC,EAEb"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./theme-BaroO-OB.cjs`),t=require(`./icons-qCoE70hn.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./useInteractionEffect-Bo8285cg.cjs`),i=require(`./MButton-8UCydOik.cjs`),a=require(`./MSkeleton-BdwhPx-k.cjs`),o=require(`./MImage-BZ6SrSao.cjs`),s=require(`./MAvatar-BgevCYi3.cjs`);require(`./core-DAox0BHy.cjs`);let c=require(`react`),l=require(`react/jsx-runtime`);function u({items:e,columns:t=3,rounded:r=!0,preview:i=!1,hoverEffect:a=`zoom`,clickEffect:s=`ripple`,className:u,...f}){let[p,m]=(0,c.useState)(!1),[h,g]=(0,c.useState)(0);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{className:n.t(`gallery`,`columns-${t}`,u),...f,children:e.map((e,t)=>(0,l.jsx)(d,{item:e,rounded:r,preview:i,hoverEffect:a,clickEffect:s,onOpen:()=>{g(t),m(!0)}},t))}),(0,l.jsx)(o.s,{open:p,items:e,activeIndex:h,onActiveIndexChange:g,onClose:()=>m(!1)})]})}function d({item:e,rounded:t,preview:i,hoverEffect:a,clickEffect:s,onOpen:c}){let{effectClassName:u,effectLayer:d,handlePointerDown:f}=r.t({effect:s});return(0,l.jsx)(`figure`,{className:n.t(`gallery-item`,t&&`rounded`),children:i?(0,l.jsxs)(`button`,{type:`button`,className:n.t(`gallery-trigger`,t&&`rounded`,`gallery-button`,o.i(a)&&`effect-zoom`,o.r(a)&&`effect-dim`,u),onClick:c,onPointerDown:f,"aria-label":`Preview ${e.alt||`image`}`,children:[(0,l.jsx)(`img`,{className:`gallery-image`,src:e.thumbnail||e.src,alt:e.alt||``,loading:`lazy`}),e.caption&&(0,l.jsx)(`span`,{className:`gallery-caption`,children:e.caption}),d]}):(0,l.jsxs)(`div`,{className:n.t(`gallery-trigger`,t&&`rounded`,o.i(a)&&`effect-zoom`,o.r(a)&&`effect-dim`,u),onPointerDown:f,children:[(0,l.jsx)(`img`,{className:`gallery-image`,src:e.thumbnail||e.src,alt:e.alt||``,loading:`lazy`}),e.caption&&(0,l.jsx)(`span`,{className:`gallery-caption`,children:e.caption}),d]})})}function f({autoPlay:e=!1,interval:r=5e3,showDots:a=!0,showArrows:o=!0,loop:s=!0,draggable:u=!0,transition:d=`slide`,className:f,children:p,...m}){let h=c.Children.toArray(p),g=h.length,[_,v]=(0,c.useState)(0),[y,b]=(0,c.useState)(0),[x,S]=(0,c.useState)(!1),C=(0,c.useRef)(0),w=(0,c.useRef)(null),T=(0,c.useCallback)(e=>{v(s?(e+g)%g:Math.max(0,Math.min(e,g-1)))},[g,s]),E=(0,c.useCallback)(()=>T(_-1),[_,T]),D=(0,c.useCallback)(()=>T(_+1),[_,T]);(0,c.useEffect)(()=>{if(!e||g<=1||x)return;let t=setInterval(D,r);return()=>clearInterval(t)},[e,r,D,g,x]);let O=e=>{u&&(S(!0),C.current=e,b(0))},k=e=>{x&&b(e-C.current)},A=()=>{x&&(S(!1),y<-50?D():y>50&&E(),b(0))},j=e=>{u&&(e.currentTarget.setPointerCapture(e.pointerId),O(e.clientX))},M=e=>{k(e.clientX)},N=()=>{A()};if(g===0)return null;let P=d===`fade`,F=P?void 0:{transform:`translateX(calc(-${_*100}% + ${x?y:0}px))`};return(0,l.jsxs)(`div`,{className:n.t(`carousel`,P&&`fade`,f),...m,children:[(0,l.jsx)(`div`,{className:`carousel-viewport`,onPointerDown:j,onPointerMove:M,onPointerUp:N,onPointerCancel:N,style:{touchAction:u?`pan-y`:void 0,cursor:u?x?`grabbing`:`grab`:void 0},children:(0,l.jsx)(`div`,{ref:w,className:n.t(`carousel-track`,x&&`dragging`),style:F,children:h.map((e,t)=>(0,l.jsx)(`div`,{className:n.t(`carousel-slide`,P&&t===_&&`active`,P&&t!==_&&`hidden`),children:e},t))})}),o&&g>1&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.t,{variant:`ghost`,color:`primary`,iconOnly:!0,shape:`circle`,onClick:E,"aria-label":`Previous slide`,className:`carousel-arrow carousel-arrow-prev`,children:(0,l.jsx)(t.Fi,{})}),(0,l.jsx)(i.t,{variant:`ghost`,color:`primary`,iconOnly:!0,shape:`circle`,onClick:D,"aria-label":`Next slide`,className:`carousel-arrow carousel-arrow-next`,children:(0,l.jsx)(t.Pi,{})})]}),a&&g>1&&(0,l.jsx)(`div`,{className:`carousel-dots`,children:h.map((e,t)=>(0,l.jsx)(`button`,{className:n.t(`carousel-dot`,t===_&&`active`),onClick:()=>T(t),"aria-label":`Slide ${t+1}`,type:`button`},t))})]})}function p({src:e,alt:t=``,media:r,mediaHeight:i,overlay:s,body:c,footer:u,interactive:d=!1,imageClickEffect:f=`ripple`,ratio:p=`16:9`,fit:m=`cover`,imgProps:h,children:g}){let _=c??g,v=o.a(f),y=i?{"--media-height":typeof i==`number`?`${i}px`:i}:void 0,b=!!(r||e);return(0,l.jsxs)(a.n,{interactive:d,clickEffect:f===`none`?void 0:`none`,className:n.t(`showcase card`,d&&`interactive`),style:y,children:[b?(0,l.jsxs)(`div`,{className:n.t(`showcase media`,o.o(f)&&`effect-zoom`,o.n(f)&&`effect-dim`),children:[r?(0,l.jsx)(`div`,{className:`showcase media-content`,children:r}):(0,l.jsx)(o.t,{...h,src:e,alt:t,ratio:p,fit:m,rounded:!0,shadow:!0,clickEffect:v?`ripple`:`none`}),s?(0,l.jsx)(`div`,{className:`showcase overlay`,children:s}):null]}):null,_?(0,l.jsx)(a.r,{className:`showcase body`,children:_}):null,u?(0,l.jsx)(a.i,{className:`showcase footer`,children:u}):null]})}function m(e,t,n){return Math.min(Math.max(e,t),n)}function h(e){return e instanceof Element?!!e.closest(`button, a, input, select, textarea, label, summary, [role="button"], [role="link"], [data-carousel-ignore-drag="true"]`):!1}function g(e,t,n){return e&&t?e.map((e,n)=>t(e,n)):e?e.map((e,t)=>_(e)?(0,l.jsx)(v,{item:e},t):null).filter(Boolean):c.Children.toArray(n)}function _(e){let t=e;return!!e&&typeof e==`object`&&`src`in e&&typeof t.src==`string`}function v({item:e}){return(0,l.jsx)(p,{src:e.src,alt:e.alt||``,overlay:e.overlay})}function y({items:e,renderItem:r,initialIndex:a,showButtons:o=!0,loop:s=!0,draggable:u=!0,wheel:d=!0,itemMinWidth:f=220,itemMaxWidth:p=520,itemWidthRatio:_=.56,className:v,children:y,style:b,...x}){let S=(0,c.useMemo)(()=>g(e,r,y),[y,e,r]),C=S.length,[w,T]=(0,c.useState)(0),[E,D]=(0,c.useState)(0),[O,k]=(0,c.useState)(!1),[A,j]=(0,c.useState)(0),M=(0,c.useRef)(null),N=(0,c.useRef)(0),P=(0,c.useRef)(!1),F=m(A*(A<640?Math.max(_,.78):A<960?Math.max(_,.66):_)||f,f,p),I=m(A*.022||16,10,24);(0,c.useEffect)(()=>{let e=M.current;if(!e)return;let t=()=>j(e.clientWidth);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,c.useEffect)(()=>{C&&T(m(a??Math.floor((C-1)/2),0,C-1))},[C,a]);let L=(0,c.useCallback)(e=>{if(!(C<1)){if(s){T((e+C)%C);return}T(m(e,0,C-1))}},[C,s]),R=(0,c.useCallback)(()=>L(w-1),[w,L]),z=(0,c.useCallback)(()=>L(w+1),[w,L]),B=e=>{!u||C<=1||h(e.target)||(e.currentTarget.setPointerCapture(e.pointerId),k(!0),N.current=e.clientX,D(0))},V=e=>{O&&D(e.clientX-N.current)},H=()=>{if(!O)return;let e=Math.max(56,F*.12);E<=-e?z():E>=e&&R(),k(!1),D(0)};if((0,c.useEffect)(()=>{let e=M.current;if(!e)return;let t=e=>{if(!d||C<=1||P.current)return;let t=Math.abs(e.deltaX)>Math.abs(e.deltaY)?e.deltaX:e.deltaY;Math.abs(t)<28||(e.preventDefault(),e.stopPropagation(),P.current=!0,window.setTimeout(()=>{P.current=!1},260),t>0?z():R())};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[C,z,R,d]),!C)return null;let U=A/2-w*(F+I)-F/2+E;return(0,l.jsxs)(`div`,{className:n.t(`showcase`,v),style:{...b,"--item-width":`${F}px`},...x,children:[(0,l.jsx)(`div`,{ref:M,className:`showcase-stage`,onPointerDown:B,onPointerMove:V,onPointerUp:H,onPointerCancel:H,onPointerLeave:H,style:{cursor:u&&C>1?O?`grabbing`:`grab`:void 0},children:(0,l.jsx)(`div`,{className:n.t(`showcase-track`,O&&`dragging`),style:{transform:`translateX(${U}px)`,gap:`${I}px`},children:S.map((e,t)=>{let r=Math.abs(t-w);return(0,l.jsx)(`div`,{className:n.t(`showcase-item`,t===w&&`active`,r===1&&`near`,r>=2&&`far`),style:{zIndex:Math.max(1,C-r)},children:e},t)})})}),o&&C>1&&(0,l.jsxs)(`div`,{className:`showcase-actions`,children:[(0,l.jsx)(i.t,{type:`button`,variant:`secondary`,className:`showcase-btn`,startIcon:(0,l.jsx)(t.Fi,{}),onClick:R,children:`Previous`}),(0,l.jsx)(i.t,{type:`button`,className:`showcase-btn`,endIcon:(0,l.jsx)(t.Pi,{}),onClick:z,children:`Next`})]})]})}function b(e,t,n){return e&&t?e.map((e,n)=>t(e,n)):c.Children.toArray(n)}function x({items:e,renderItem:t,columns:r=3,className:i,children:a,style:o,...s}){let c=b(e,t,a);return c.length?(0,l.jsx)(`div`,{className:n.t(`masonry`,i),style:{...o,columnCount:r},...s,children:c.map((e,t)=>(0,l.jsx)(`div`,{className:`masonry item`,children:e},t))}):null}function S({src:e,alt:t=``,height:i,overlay:s,body:c,footer:u,interactive:d=!1,imageClickEffect:f=`none`,imgProps:p,children:m}){let h=i?{...p?.style,height:i}:p?.style,g=c??m,{effectClassName:_,effectLayer:v,handlePointerDown:y}=r.t({effect:o.a(f)?`ripple`:`none`});return(0,l.jsxs)(a.n,{interactive:d,clickEffect:f===`none`?void 0:`none`,className:n.t(`masonry card`,d&&`interactive`),children:[(0,l.jsxs)(`div`,{className:n.t(`masonry media`,_,o.o(f)&&`effect-zoom`,o.n(f)&&`effect-dim`),onPointerDown:e=>{e.target.closest(`.masonry.overlay`)||y(e)},children:[(0,l.jsx)(`img`,{...p,src:e,alt:t,className:`masonry img`,style:h}),s?(0,l.jsx)(`div`,{className:`masonry overlay`,children:s}):null,v]}),g?(0,l.jsx)(a.r,{className:`masonry body`,children:g}):null,u?(0,l.jsx)(a.i,{className:`masonry footer`,children:u}):null]})}function C({items:t,max:r=5,size:i=`sm`,color:a=`primary`,hidden:o,overlap:c=10,className:u,style:d,...f}){if(!t||t.length===0)return null;let p=t.slice(0,r),m=t.length-r,h=typeof i==`number`?i:{xs:20,sm:28,md:40,lg:56,xl:72}[i]??28;return(0,l.jsxs)(`div`,{className:n.t(`avatar-stack`,u),style:{"--avatar-stack-overlap":`-${c}px`,...d},...e.r(o),...f,children:[p.map((e,t)=>(0,l.jsx)(s.t,{src:e.avatar,name:e.name,size:i,color:a,className:`avatar-stack-item`,style:{zIndex:t+1}},t)),m>0&&(0,l.jsxs)(`span`,{className:`avatar-stack-overflow`,style:{width:h,height:h,fontSize:h*.38,zIndex:p.length+1},children:[`+`,m]})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return C}});
|
|
2
|
+
//# sourceMappingURL=media-DbToUupt.cjs.map
|