@banzamel/mineralui 1.8.1 → 1.9.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-BcayQCnp.js → MAvatar-D_dVAPaR.js} +3 -3
- package/dist/{MAvatar-BcayQCnp.js.map → MAvatar-D_dVAPaR.js.map} +1 -1
- package/dist/{MAvatar-BgevCYi3.cjs → MAvatar-DzZPRbot.cjs} +2 -2
- package/dist/{MAvatar-BgevCYi3.cjs.map → MAvatar-DzZPRbot.cjs.map} +1 -1
- package/dist/MAvatarStack-CrhkO_SO.js +330 -0
- package/dist/MAvatarStack-CrhkO_SO.js.map +1 -0
- package/dist/MAvatarStack-DN79aJo1.cjs +2 -0
- package/dist/MAvatarStack-DN79aJo1.cjs.map +1 -0
- package/dist/{MButton-DZLLrtQb.js → MButton-C1pnL4_j.js} +2 -2
- package/dist/{MButton-DZLLrtQb.js.map → MButton-C1pnL4_j.js.map} +1 -1
- package/dist/{MButton-8UCydOik.cjs → MButton-DFRHWHzh.cjs} +2 -2
- package/dist/{MButton-8UCydOik.cjs.map → MButton-DFRHWHzh.cjs.map} +1 -1
- package/dist/{MDataTable-95_Mb6jE.cjs → MDataTable-7nJuwzJR.cjs} +2 -2
- package/dist/{MDataTable-95_Mb6jE.cjs.map → MDataTable-7nJuwzJR.cjs.map} +1 -1
- package/dist/{MDataTable-DxDS5auV.js → MDataTable-CQt_pINO.js} +4 -4
- package/dist/{MDataTable-DxDS5auV.js.map → MDataTable-CQt_pINO.js.map} +1 -1
- package/dist/{MDrawer-CXNHYwPO.js → MDrawer-B83--EVv.js} +2 -2
- package/dist/{MDrawer-CXNHYwPO.js.map → MDrawer-B83--EVv.js.map} +1 -1
- package/dist/{MDrawer-DzqtHVeA.cjs → MDrawer-D6cy9K7J.cjs} +2 -2
- package/dist/{MDrawer-DzqtHVeA.cjs.map → MDrawer-D6cy9K7J.cjs.map} +1 -1
- package/dist/MGrid-B-fP4GME.cjs +2 -0
- package/dist/MGrid-B-fP4GME.cjs.map +1 -0
- package/dist/{MGrid-DR0fHItF.js → MGrid-DVluuula.js} +56 -56
- package/dist/MGrid-DVluuula.js.map +1 -0
- package/dist/{MHeading-MPh8Qm9q.js → MHeading-B7KgSP4T.js} +3 -3
- package/dist/{MHeading-MPh8Qm9q.js.map → MHeading-B7KgSP4T.js.map} +1 -1
- package/dist/{MHeading-CKe5lcM_.cjs → MHeading-f3hwkW3r.cjs} +2 -2
- package/dist/{MHeading-CKe5lcM_.cjs.map → MHeading-f3hwkW3r.cjs.map} +1 -1
- package/dist/{MInput-D_zaoWwX.cjs → MInput-BLGduKL_.cjs} +2 -2
- package/dist/{MInput-D_zaoWwX.cjs.map → MInput-BLGduKL_.cjs.map} +1 -1
- package/dist/{MInput-7i0Dy1t4.js → MInput-IsUELgN2.js} +2 -2
- package/dist/{MInput-7i0Dy1t4.js.map → MInput-IsUELgN2.js.map} +1 -1
- package/dist/{MInputExpDate-DhO5zN7L.js → MInputExpDate-CeCmw6fj.js} +2 -2
- package/dist/{MInputExpDate-DhO5zN7L.js.map → MInputExpDate-CeCmw6fj.js.map} +1 -1
- package/dist/{MInputExpDate-DWWwjMYK.cjs → MInputExpDate-DZ8JtSjs.cjs} +2 -2
- package/dist/{MInputExpDate-DWWwjMYK.cjs.map → MInputExpDate-DZ8JtSjs.cjs.map} +1 -1
- package/dist/{MInputSearch-CmzHPnmC.js → MInputSearch-BBxUF5pw.js} +2 -2
- package/dist/{MInputSearch-CmzHPnmC.js.map → MInputSearch-BBxUF5pw.js.map} +1 -1
- package/dist/{MInputSearch-DpHSVpmL.cjs → MInputSearch-_7jfFGr1.cjs} +2 -2
- package/dist/{MInputSearch-DpHSVpmL.cjs.map → MInputSearch-_7jfFGr1.cjs.map} +1 -1
- package/dist/{MLink-rFKN1mcM.js → MLink-Bd8fLH1N.js} +2 -2
- package/dist/{MLink-rFKN1mcM.js.map → MLink-Bd8fLH1N.js.map} +1 -1
- package/dist/{MLink-B3ImjkJV.cjs → MLink-CRK8YvR4.cjs} +2 -2
- package/dist/{MLink-B3ImjkJV.cjs.map → MLink-CRK8YvR4.cjs.map} +1 -1
- package/dist/{MModal-DGmeQlWo.js → MModal-DiTjBO8B.js} +2 -2
- package/dist/{MModal-DGmeQlWo.js.map → MModal-DiTjBO8B.js.map} +1 -1
- package/dist/{MModal-CP0e31pv.cjs → MModal-eJDG6riB.cjs} +2 -2
- package/dist/{MModal-CP0e31pv.cjs.map → MModal-eJDG6riB.cjs.map} +1 -1
- package/dist/{MPagination-CS62B9kZ.cjs → MPagination-D1hYqLDb.cjs} +2 -2
- package/dist/{MPagination-CS62B9kZ.cjs.map → MPagination-D1hYqLDb.cjs.map} +1 -1
- package/dist/{MPagination-Dr110are.js → MPagination-DvToi2cs.js} +2 -2
- package/dist/{MPagination-Dr110are.js.map → MPagination-DvToi2cs.js.map} +1 -1
- package/dist/{MQrCode-B0-Np-N3.cjs → MQrCode-HO2YIC7e.cjs} +2 -2
- package/dist/{MQrCode-B0-Np-N3.cjs.map → MQrCode-HO2YIC7e.cjs.map} +1 -1
- package/dist/{MQrCode-6ANDcExA.js → MQrCode-Kb997gaE.js} +5 -5
- package/dist/{MQrCode-6ANDcExA.js.map → MQrCode-Kb997gaE.js.map} +1 -1
- package/dist/{MSkeleton-BvXgnYs_.js → MSkeleton-CVofhuDp.js} +3 -3
- package/dist/{MSkeleton-BvXgnYs_.js.map → MSkeleton-CVofhuDp.js.map} +1 -1
- package/dist/{MSkeleton-BdwhPx-k.cjs → MSkeleton-CuYA8eN3.cjs} +2 -2
- package/dist/{MSkeleton-BdwhPx-k.cjs.map → MSkeleton-CuYA8eN3.cjs.map} +1 -1
- package/dist/{MStack-DFIc3S4_.js → MStack-C4Eocfb5.js} +2 -2
- package/dist/{MStack-DFIc3S4_.js.map → MStack-C4Eocfb5.js.map} +1 -1
- package/dist/{MStack-ByFYGSsy.cjs → MStack-w8XcuIJK.cjs} +2 -2
- package/dist/{MStack-ByFYGSsy.cjs.map → MStack-w8XcuIJK.cjs.map} +1 -1
- package/dist/{MSubText-BFdfBlpS.js → MSubText-C-N15d4Z.js} +3 -3
- package/dist/{MSubText-BFdfBlpS.js.map → MSubText-C-N15d4Z.js.map} +1 -1
- package/dist/{MSubText-1ilKSz8e.cjs → MSubText-CIMKPb8o.cjs} +2 -2
- package/dist/{MSubText-1ilKSz8e.cjs.map → MSubText-CIMKPb8o.cjs.map} +1 -1
- package/dist/{MSurface-CpAuwpHv.cjs → MSurface-KvAS2hkl.cjs} +2 -2
- package/dist/{MSurface-CpAuwpHv.cjs.map → MSurface-KvAS2hkl.cjs.map} +1 -1
- package/dist/{MSurface-CmVIQC1A.js → MSurface-odrvQXkb.js} +2 -2
- package/dist/{MSurface-CmVIQC1A.js.map → MSurface-odrvQXkb.js.map} +1 -1
- package/dist/{MTag-DwQ-j1sV.cjs → MTag-DZqV4S13.cjs} +2 -2
- package/dist/{MTag-DwQ-j1sV.cjs.map → MTag-DZqV4S13.cjs.map} +1 -1
- package/dist/{MTag-C4SUJly2.js → MTag-DgB6ukFJ.js} +3 -3
- package/dist/{MTag-C4SUJly2.js.map → MTag-DgB6ukFJ.js.map} +1 -1
- package/dist/{MText-D0fI_D_Q.cjs → MText-BHbI7KJO.cjs} +2 -2
- package/dist/{MText-D0fI_D_Q.cjs.map → MText-BHbI7KJO.cjs.map} +1 -1
- package/dist/{MText-DcB1GAt-.js → MText-CL-LPcXi.js} +2 -2
- package/dist/{MText-DcB1GAt-.js.map → MText-CL-LPcXi.js.map} +1 -1
- package/dist/{cards-DLMNYdN7.js → cards-C50fpYud.js} +27 -28
- package/dist/cards-C50fpYud.js.map +1 -0
- package/dist/cards-Ci1FoV9C.cjs +2 -0
- package/dist/cards-Ci1FoV9C.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +3 -3
- package/dist/components/cards/MStatCard/MStatCard.d.ts +0 -1
- package/dist/components/cards/MStatCard/MStatCard.types.d.ts +0 -2
- package/dist/components/cards/MStatCard/index.d.ts +2 -2
- package/dist/components/cards/index.d.ts +2 -2
- package/dist/components/data/MTimelineCalendar/DayStrip.d.ts +11 -0
- package/dist/components/data/MTimelineCalendar/EventPopover.d.ts +18 -0
- package/dist/components/data/MTimelineCalendar/MTimelineCalendar.d.ts +2 -0
- package/dist/components/data/MTimelineCalendar/MTimelineCalendar.helpers.d.ts +55 -0
- package/dist/components/data/MTimelineCalendar/MTimelineCalendar.types.d.ts +89 -0
- package/dist/components/data/MTimelineCalendar/index.d.ts +2 -0
- package/dist/components/data/index.d.ts +4 -0
- package/dist/components/layout/MGrid/MGrid.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.types.d.ts +19 -0
- package/dist/components/layout/index.d.ts +0 -4
- package/dist/components/media/MAvatarStack/MAvatarStack.d.ts +1 -1
- package/dist/components/media/MAvatarStack/MAvatarStack.types.d.ts +14 -1
- package/dist/components/typography/MHeading/MHeading.d.ts +1 -562
- package/dist/{controls-BfV0vxeJ.cjs → controls-CYQxPd4U.cjs} +2 -2
- package/dist/{controls-BfV0vxeJ.cjs.map → controls-CYQxPd4U.cjs.map} +1 -1
- package/dist/{controls-BczTk73I.js → controls-CcbEqqWo.js} +3 -3
- package/dist/{controls-BczTk73I.js.map → controls-CcbEqqWo.js.map} +1 -1
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +2 -2
- package/dist/data-DtShJEic.cjs +2 -0
- package/dist/data-DtShJEic.cjs.map +1 -0
- package/dist/data-RXuvb9VI.js +3454 -0
- package/dist/data-RXuvb9VI.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +3 -3
- package/dist/{display-Cw3-bTsm.cjs → display-96-TEGmZ.cjs} +2 -2
- package/dist/{display-Cw3-bTsm.cjs.map → display-96-TEGmZ.cjs.map} +1 -1
- package/dist/{display-DyC7084n.js → display-C7YRf4Ze.js} +5 -5
- package/dist/{display-DyC7084n.js.map → display-C7YRf4Ze.js.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +2 -2
- package/dist/{dropdowns-6eO0b6eI.cjs → dropdowns-Ce3Pb2JM.cjs} +2 -2
- package/dist/{dropdowns-6eO0b6eI.cjs.map → dropdowns-Ce3Pb2JM.cjs.map} +1 -1
- package/dist/{dropdowns-zXgrjNXZ.js → dropdowns-DfXhVlWQ.js} +4 -4
- package/dist/{dropdowns-zXgrjNXZ.js.map → dropdowns-DfXhVlWQ.js.map} +1 -1
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/{feedback-DfBjzJAw.js → feedback-DGT28-Zx.js} +11 -11
- package/dist/{feedback-DfBjzJAw.js.map → feedback-DGT28-Zx.js.map} +1 -1
- package/dist/{feedback-BvRmoSzV.cjs → feedback-Dr7G3K_R.cjs} +2 -2
- package/dist/{feedback-BvRmoSzV.cjs.map → feedback-Dr7G3K_R.cjs.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +52 -52
- package/dist/index.js.map +1 -1
- package/dist/{inputs-C1I1SLZ8.cjs → inputs-BJMmyEdL.cjs} +2 -2
- package/dist/{inputs-C1I1SLZ8.cjs.map → inputs-BJMmyEdL.cjs.map} +1 -1
- package/dist/{inputs-Dy1WurNK.js → inputs-CNPeF6gb.js} +3 -3
- package/dist/{inputs-Dy1WurNK.js.map → inputs-CNPeF6gb.js.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +4 -4
- package/dist/layout-dUrQeGc2.cjs +2 -0
- package/dist/layout-dUrQeGc2.cjs.map +1 -0
- package/dist/{layout-D1-mF4xn.js → layout-tIq6BGQK.js} +240 -301
- package/dist/layout-tIq6BGQK.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +8 -8
- package/dist/licensing-9sZ43Cif.cjs +2 -0
- package/dist/licensing-9sZ43Cif.cjs.map +1 -0
- package/dist/{licensing-ZFCUU4Z8.js → licensing-Bq78CLC_.js} +5 -5
- package/dist/licensing-Bq78CLC_.js.map +1 -0
- package/dist/media-BySr5LGc.cjs +2 -0
- package/dist/media-BySr5LGc.cjs.map +1 -0
- package/dist/media-IQ4iYTs-.js +391 -0
- package/dist/media-IQ4iYTs-.js.map +1 -0
- package/dist/media.cjs +1 -1
- package/dist/media.js +4 -4
- package/dist/{overlays-B0khU6Wb.js → overlays-BabXGLEM.js} +7 -7
- package/dist/{overlays-B0khU6Wb.js.map → overlays-BabXGLEM.js.map} +1 -1
- package/dist/{overlays-VAh5PqAe.cjs → overlays-CTR3n21O.cjs} +2 -2
- package/dist/{overlays-VAh5PqAe.cjs.map → overlays-CTR3n21O.cjs.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/MTheme.types.d.ts +5 -0
- package/dist/theme/responsive.d.ts +1 -10
- package/dist/{theme-D_f-cmSA.js → theme-DAOU1aPs.js} +4 -3
- package/dist/{theme-D_f-cmSA.js.map → theme-DAOU1aPs.js.map} +1 -1
- package/dist/{theme-BaroO-OB.cjs → theme-DsTDooyX.cjs} +2 -2
- package/dist/{theme-BaroO-OB.cjs.map → theme-DsTDooyX.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +1 -1
- package/dist/{typography-CldwDFse.js → typography-CAW17MDj.js} +2 -2
- package/dist/{typography-CldwDFse.js.map → typography-CAW17MDj.js.map} +1 -1
- package/dist/{typography-D7COsP1O.cjs → typography-sbLuXqFn.cjs} +2 -2
- package/dist/{typography-D7COsP1O.cjs.map → typography-sbLuXqFn.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +5 -5
- package/dist/utils/commandPaletteFromNavGroups.d.ts +74 -0
- package/dist/utils/licensing.d.ts +4 -4
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/dist/MGrid-C4kPZDSa.cjs +0 -2
- package/dist/MGrid-C4kPZDSa.cjs.map +0 -1
- package/dist/MGrid-DR0fHItF.js.map +0 -1
- package/dist/MImage-BZ6SrSao.cjs +0 -2
- package/dist/MImage-BZ6SrSao.cjs.map +0 -1
- package/dist/MImage-Btx_7g2Z.js +0 -257
- package/dist/MImage-Btx_7g2Z.js.map +0 -1
- package/dist/cards-BB6SSzdR.cjs +0 -2
- package/dist/cards-BB6SSzdR.cjs.map +0 -1
- package/dist/cards-DLMNYdN7.js.map +0 -1
- package/dist/components/layout/MAppMenu/MAppMenu.d.ts +0 -2
- package/dist/components/layout/MAppMenu/MAppMenu.types.d.ts +0 -63
- package/dist/components/layout/MAppMenu/index.d.ts +0 -2
- package/dist/data-7kG1MC1Z.cjs +0 -2
- package/dist/data-7kG1MC1Z.cjs.map +0 -1
- package/dist/data-z3e8XTSt.js +0 -2692
- package/dist/data-z3e8XTSt.js.map +0 -1
- package/dist/layout-D1-mF4xn.js.map +0 -1
- package/dist/layout-Op6GWQ8w.cjs +0 -2
- package/dist/layout-Op6GWQ8w.cjs.map +0 -1
- package/dist/licensing-DmF0ObpG.cjs +0 -2
- package/dist/licensing-DmF0ObpG.cjs.map +0 -1
- package/dist/licensing-ZFCUU4Z8.js.map +0 -1
- package/dist/media-DbToUupt.cjs +0 -2
- package/dist/media-DbToUupt.cjs.map +0 -1
- package/dist/media-DdChr0Cw.js +0 -431
- package/dist/media-DdChr0Cw.js.map +0 -1
- package/dist/utils/commandPaletteFromAppMenu.d.ts +0 -42
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Modern React UI framework with a sharp admin aesthetic, theming system, and production-ready components.
|
|
4
4
|
|
|
5
5
|
- npm: `@banzamel/mineralui`
|
|
6
|
-
- version: `1.
|
|
6
|
+
- version: `1.9.0`
|
|
7
7
|
- peer dependencies: `react >= 19`, `react-dom >= 19`
|
|
8
8
|
- repository: `https://github.com/Banzamel/mineralui`
|
|
9
9
|
- homepage: `https://mineralui.io`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as e } from "./theme-
|
|
1
|
+
import { r as e } from "./theme-DAOU1aPs.js";
|
|
2
2
|
import { t } from "./cn-YER3QsV1.js";
|
|
3
3
|
import { t as n } from "./useInteractionEffect-DtpbVd77.js";
|
|
4
|
-
import { n as r } from "./MButton-
|
|
4
|
+
import { n as r } from "./MButton-C1pnL4_j.js";
|
|
5
5
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/media/MAvatar/MAvatar.tsx
|
|
7
7
|
function o(e, t) {
|
|
@@ -54,4 +54,4 @@ function s({ src: s, alt: c, name: l, initials: u, size: d = "md", shape: f = "c
|
|
|
54
54
|
//#endregion
|
|
55
55
|
export { s as t };
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=MAvatar-
|
|
57
|
+
//# sourceMappingURL=MAvatar-D_dVAPaR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MAvatar-
|
|
1
|
+
{"version":3,"file":"MAvatar-D_dVAPaR.js","names":[],"sources":["../src/components/media/MAvatar/MAvatar.tsx"],"sourcesContent":["import type {CSSProperties} from 'react'\nimport type {MAvatarProps} from './MAvatar.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MAvatar.css'\n\nfunction getFallbackInitials(name?: string, initials?: string) {\n if (initials) return initials.slice(0, 2).toUpperCase()\n if (!name) return '?'\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return '?'\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase()\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase()\n}\n\n// Render user or entity identity as an image with initials fallback.\nexport function MAvatar({\n src,\n alt,\n name,\n initials,\n size = 'md',\n shape = 'circle',\n hidden,\n color,\n badge,\n badgeColor,\n badgePulsing = false,\n backgroundColor,\n clickEffect,\n rippleColor,\n skeleton = false,\n className,\n style,\n onPointerDown,\n ...rest\n}: MAvatarProps) {\n const fallbackInitials = getFallbackInitials(name, initials)\n const isInteractive = typeof rest.onClick === 'function' || rest.role === 'button' || rest.tabIndex !== undefined\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect ?? (isInteractive ? 'ripple' : 'none'),\n disabled: !isInteractive || skeleton,\n color: rippleColor,\n })\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n : {\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n\n return (\n <span\n className={cn(\n 'avatar',\n typeof size === 'string' && size,\n shape,\n skeleton && 'skeleton animate',\n isInteractive && !skeleton && 'interactive',\n effectClassName,\n !skeleton && color && `color-${color}`,\n className\n )}\n style={inlineStyle}\n aria-label={skeleton ? 'Loading' : (alt ?? name ?? 'MAvatar')}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({badge, badgeColor, badgePulsing})}\n {skeleton ? null : src ? (\n <img src={src} alt={alt ?? name ?? ''} className={'image'} />\n ) : (\n <span className={'fallback'}>{fallbackInitials}</span>\n )}\n </span>\n )\n}\n"],"mappings":";;;;;;AAQA,SAAS,EAAoB,GAAe,GAAmB;AAC3D,KAAI,EAAU,QAAO,EAAS,MAAM,GAAG,EAAE,CAAC,aAAa;AACvD,KAAI,CAAC,EAAM,QAAO;CAClB,IAAM,IAAQ,EAAK,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,QAAQ;AAGtD,QAFI,EAAM,WAAW,IAAU,MAC3B,EAAM,WAAW,IAAU,EAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,GAC1D,GAAG,EAAM,GAAG,KAAK,EAAM,GAAG,KAAK,aAAa;;AAIvD,SAAgB,EAAQ,EACpB,QACA,QACA,SACA,aACA,UAAO,MACP,WAAQ,UACR,WACA,UACA,UACA,eACA,kBAAe,IACf,oBACA,gBACA,gBACA,cAAW,IACX,cACA,UACA,kBACA,GAAG,KACU;CACb,IAAM,IAAmB,EAAoB,GAAM,EAAS,EACtD,IAAgB,OAAO,EAAK,WAAY,cAAc,EAAK,SAAS,YAAY,EAAK,aAAa,KAAA,GAClG,EAAC,oBAAiB,gBAAa,yBAAqB,EAAsC;EAC5F,QAAQ,MAAgB,IAAgB,WAAW;EACnD,UAAU,CAAC,KAAiB;EAC5B,OAAO;EACV,CAAC,EACI,IACF,OAAO,KAAS,WACV;EACI,OAAO,GAAG,EAAK;EACf,QAAQ,GAAG,EAAK;EAChB,GAAG;EACH,GAAI,KAAmB,CAAC,IAAW,EAAC,oBAAgB,GAAG,EAAE;EAC5D,GACD;EACI,GAAG;EACH,GAAI,KAAmB,CAAC,IAAW,EAAC,oBAAgB,GAAG,EAAE;EAC5D;AAEX,QACI,kBAAC,QAAD;EACI,WAAW,EACP,UACA,OAAO,KAAS,YAAY,GAC5B,GACA,KAAY,oBACZ,KAAiB,CAAC,KAAY,eAC9B,GACA,CAAC,KAAY,KAAS,SAAS,KAC/B,EACH;EACD,OAAO;EACP,cAAY,IAAW,YAAa,KAAO,KAAQ;EACnD,gBAAgB,MAAU;AAEtB,GADA,EAAkB,EAAM,EACxB,IAAgB,EAAM;;EAE1B,GAAI,EAAe,EAAO;EAC1B,GAAI;YAlBR;GAoBK;GACA,EAAmB;IAAC;IAAO;IAAY;IAAa,CAAC;GACrD,IAAW,OAAO,IACf,kBAAC,OAAD;IAAU;IAAK,KAAK,KAAO,KAAQ;IAAI,WAAW;IAAW,CAAA,GAE7D,kBAAC,QAAD;IAAM,WAAW;cAAa;IAAwB,CAAA;GAEvD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./theme-
|
|
2
|
-
//# sourceMappingURL=MAvatar-
|
|
1
|
+
const e=require(`./theme-DsTDooyX.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./useInteractionEffect-Bo8285cg.cjs`),r=require(`./MButton-DFRHWHzh.cjs`);require(`./core-DAox0BHy.cjs`);let i=require(`react/jsx-runtime`);function a(e,t){if(t)return t.slice(0,2).toUpperCase();if(!e)return`?`;let n=e.trim().split(/\s+/).filter(Boolean);return n.length===0?`?`:n.length===1?n[0].slice(0,2).toUpperCase():`${n[0][0]}${n[1][0]}`.toUpperCase()}function o({src:o,alt:s,name:c,initials:l,size:u=`md`,shape:d=`circle`,hidden:f,color:p,badge:m,badgeColor:h,badgePulsing:g=!1,backgroundColor:_,clickEffect:v,rippleColor:y,skeleton:b=!1,className:x,style:S,onPointerDown:C,...w}){let T=a(c,l),E=typeof w.onClick==`function`||w.role===`button`||w.tabIndex!==void 0,{effectClassName:D,effectLayer:O,handlePointerDown:k}=n.t({effect:v??(E?`ripple`:`none`),disabled:!E||b,color:y}),A=typeof u==`number`?{width:`${u}px`,height:`${u}px`,...S,..._&&!b?{backgroundColor:_}:{}}:{...S,..._&&!b?{backgroundColor:_}:{}};return(0,i.jsxs)(`span`,{className:t.t(`avatar`,typeof u==`string`&&u,d,b&&`skeleton animate`,E&&!b&&`interactive`,D,!b&&p&&`color-${p}`,x),style:A,"aria-label":b?`Loading`:s??c??`MAvatar`,onPointerDown:e=>{k(e),C?.(e)},...e.r(f),...w,children:[O,r.n({badge:m,badgeColor:h,badgePulsing:g}),b?null:o?(0,i.jsx)(`img`,{src:o,alt:s??c??``,className:`image`}):(0,i.jsx)(`span`,{className:`fallback`,children:T})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|
|
2
|
+
//# sourceMappingURL=MAvatar-DzZPRbot.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MAvatar-
|
|
1
|
+
{"version":3,"file":"MAvatar-DzZPRbot.cjs","names":[],"sources":["../src/components/media/MAvatar/MAvatar.tsx"],"sourcesContent":["import type {CSSProperties} from 'react'\nimport type {MAvatarProps} from './MAvatar.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MAvatar.css'\n\nfunction getFallbackInitials(name?: string, initials?: string) {\n if (initials) return initials.slice(0, 2).toUpperCase()\n if (!name) return '?'\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return '?'\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase()\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase()\n}\n\n// Render user or entity identity as an image with initials fallback.\nexport function MAvatar({\n src,\n alt,\n name,\n initials,\n size = 'md',\n shape = 'circle',\n hidden,\n color,\n badge,\n badgeColor,\n badgePulsing = false,\n backgroundColor,\n clickEffect,\n rippleColor,\n skeleton = false,\n className,\n style,\n onPointerDown,\n ...rest\n}: MAvatarProps) {\n const fallbackInitials = getFallbackInitials(name, initials)\n const isInteractive = typeof rest.onClick === 'function' || rest.role === 'button' || rest.tabIndex !== undefined\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect ?? (isInteractive ? 'ripple' : 'none'),\n disabled: !isInteractive || skeleton,\n color: rippleColor,\n })\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n : {\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n\n return (\n <span\n className={cn(\n 'avatar',\n typeof size === 'string' && size,\n shape,\n skeleton && 'skeleton animate',\n isInteractive && !skeleton && 'interactive',\n effectClassName,\n !skeleton && color && `color-${color}`,\n className\n )}\n style={inlineStyle}\n aria-label={skeleton ? 'Loading' : (alt ?? name ?? 'MAvatar')}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({badge, badgeColor, badgePulsing})}\n {skeleton ? null : src ? (\n <img src={src} alt={alt ?? name ?? ''} className={'image'} />\n ) : (\n <span className={'fallback'}>{fallbackInitials}</span>\n )}\n </span>\n )\n}\n"],"mappings":"8NAQA,SAAS,EAAoB,EAAe,EAAmB,CAC3D,GAAI,EAAU,OAAO,EAAS,MAAM,EAAG,EAAE,CAAC,aAAa,CACvD,GAAI,CAAC,EAAM,MAAO,IAClB,IAAM,EAAQ,EAAK,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,QAAQ,CAGtD,OAFI,EAAM,SAAW,EAAU,IAC3B,EAAM,SAAW,EAAU,EAAM,GAAG,MAAM,EAAG,EAAE,CAAC,aAAa,CAC1D,GAAG,EAAM,GAAG,KAAK,EAAM,GAAG,KAAK,aAAa,CAIvD,SAAgB,EAAQ,CACpB,MACA,MACA,OACA,WACA,OAAO,KACP,QAAQ,SACR,SACA,QACA,QACA,aACA,eAAe,GACf,kBACA,cACA,cACA,WAAW,GACX,YACA,QACA,gBACA,GAAG,GACU,CACb,IAAM,EAAmB,EAAoB,EAAM,EAAS,CACtD,EAAgB,OAAO,EAAK,SAAY,YAAc,EAAK,OAAS,UAAY,EAAK,WAAa,IAAA,GAClG,CAAC,kBAAiB,cAAa,qBAAqB,EAAA,EAAsC,CAC5F,OAAQ,IAAgB,EAAgB,SAAW,QACnD,SAAU,CAAC,GAAiB,EAC5B,MAAO,EACV,CAAC,CACI,EACF,OAAO,GAAS,SACV,CACI,MAAO,GAAG,EAAK,IACf,OAAQ,GAAG,EAAK,IAChB,GAAG,EACH,GAAI,GAAmB,CAAC,EAAW,CAAC,kBAAgB,CAAG,EAAE,CAC5D,CACD,CACI,GAAG,EACH,GAAI,GAAmB,CAAC,EAAW,CAAC,kBAAgB,CAAG,EAAE,CAC5D,CAEX,OACI,EAAA,EAAA,MAAC,OAAD,CACI,UAAW,EAAA,EACP,SACA,OAAO,GAAS,UAAY,EAC5B,EACA,GAAY,mBACZ,GAAiB,CAAC,GAAY,cAC9B,EACA,CAAC,GAAY,GAAS,SAAS,IAC/B,EACH,CACD,MAAO,EACP,aAAY,EAAW,UAAa,GAAO,GAAQ,UACnD,cAAgB,GAAU,CACtB,EAAkB,EAAM,CACxB,IAAgB,EAAM,EAE1B,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,WAlBR,CAoBK,EACA,EAAA,EAAmB,CAAC,QAAO,aAAY,eAAa,CAAC,CACrD,EAAW,KAAO,GACf,EAAA,EAAA,KAAC,MAAD,CAAU,MAAK,IAAK,GAAO,GAAQ,GAAI,UAAW,QAAW,CAAA,EAE7D,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,oBAAa,EAAwB,CAAA,CAEvD"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { r as e } from "./theme-DAOU1aPs.js";
|
|
2
|
+
import { Fi as t, Li as n, Pi as r } from "./icons-CfpYxnfg.js";
|
|
3
|
+
import { t as i } from "./cn-YER3QsV1.js";
|
|
4
|
+
import { t as a } from "./useInteractionEffect-DtpbVd77.js";
|
|
5
|
+
import { t as o } from "./MPortal-Ba2Sxset.js";
|
|
6
|
+
import { t as s } from "./MButton-C1pnL4_j.js";
|
|
7
|
+
import { s as c, t as l } from "./MSkeleton-CVofhuDp.js";
|
|
8
|
+
import { t as u } from "./MTooltip-jSf4VBtB.js";
|
|
9
|
+
import { t as d } from "./MAvatar-D_dVAPaR.js";
|
|
10
|
+
import { useEffect as f, useId as p, useMemo as m, useRef as h, useState as g } from "react";
|
|
11
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
12
|
+
//#region src/components/media/MMediaLightbox/MMediaLightbox.tsx
|
|
13
|
+
function b({ open: e, items: a, activeIndex: l, onClose: u, onActiveIndexChange: d }) {
|
|
14
|
+
let p = a[l], m = h(null), g = l > 0, _ = l < a.length - 1;
|
|
15
|
+
if (f(() => {
|
|
16
|
+
if (!e) return;
|
|
17
|
+
let t = (e) => {
|
|
18
|
+
if (e.key === "Escape") {
|
|
19
|
+
u();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
e.key === "ArrowLeft" && g && d(l - 1), e.key === "ArrowRight" && _ && d(l + 1);
|
|
23
|
+
};
|
|
24
|
+
return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
|
|
25
|
+
}, [
|
|
26
|
+
l,
|
|
27
|
+
_,
|
|
28
|
+
g,
|
|
29
|
+
d,
|
|
30
|
+
u,
|
|
31
|
+
e
|
|
32
|
+
]), f(() => {
|
|
33
|
+
if (!e) return;
|
|
34
|
+
let t = document.body.style.overflow;
|
|
35
|
+
return document.body.style.overflow = "hidden", () => {
|
|
36
|
+
document.body.style.overflow = t;
|
|
37
|
+
};
|
|
38
|
+
}, [e]), !e || !p) return null;
|
|
39
|
+
let b = (e) => {
|
|
40
|
+
let t = e.target;
|
|
41
|
+
t && m.current && !m.current.contains(t) && u();
|
|
42
|
+
}, x = p.alt || p.caption || "Image preview";
|
|
43
|
+
return /* @__PURE__ */ v(o, { children: /* @__PURE__ */ v("div", {
|
|
44
|
+
className: i("mineral-backdrop", "media-lightbox-backdrop"),
|
|
45
|
+
onMouseDown: b,
|
|
46
|
+
children: /* @__PURE__ */ v("div", {
|
|
47
|
+
className: "media-lightbox-shell",
|
|
48
|
+
role: "dialog",
|
|
49
|
+
"aria-modal": "true",
|
|
50
|
+
"aria-label": x,
|
|
51
|
+
children: /* @__PURE__ */ v("div", {
|
|
52
|
+
className: "media-lightbox-stage",
|
|
53
|
+
children: /* @__PURE__ */ y("div", {
|
|
54
|
+
ref: m,
|
|
55
|
+
className: "media-lightbox-frame",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ y("div", {
|
|
58
|
+
className: "media-lightbox-topbar",
|
|
59
|
+
children: [/* @__PURE__ */ v(c, {
|
|
60
|
+
color: "dark",
|
|
61
|
+
size: "md",
|
|
62
|
+
rounded: !0,
|
|
63
|
+
className: "media-lightbox-counter",
|
|
64
|
+
children: a.length > 1 ? `${l + 1} / ${a.length}` : "Preview"
|
|
65
|
+
}), /* @__PURE__ */ v(s, {
|
|
66
|
+
type: "button",
|
|
67
|
+
variant: "ghost",
|
|
68
|
+
color: "error",
|
|
69
|
+
size: "lg",
|
|
70
|
+
shape: "circle",
|
|
71
|
+
iconOnly: !0,
|
|
72
|
+
className: "media-lightbox-action",
|
|
73
|
+
"aria-label": "Close preview",
|
|
74
|
+
onClick: u,
|
|
75
|
+
children: /* @__PURE__ */ v(n, {})
|
|
76
|
+
})]
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ v(s, {
|
|
79
|
+
type: "button",
|
|
80
|
+
variant: "ghost",
|
|
81
|
+
color: "primary",
|
|
82
|
+
size: "lg",
|
|
83
|
+
shape: "circle",
|
|
84
|
+
iconOnly: !0,
|
|
85
|
+
className: "media-lightbox-nav media-lightbox-nav-prev",
|
|
86
|
+
"aria-label": "Previous image",
|
|
87
|
+
disabled: a.length <= 1 || !g,
|
|
88
|
+
onClick: () => g && d(l - 1),
|
|
89
|
+
children: /* @__PURE__ */ v(t, {})
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ v("img", {
|
|
92
|
+
className: "media-lightbox-image",
|
|
93
|
+
src: p.src,
|
|
94
|
+
alt: p.alt || ""
|
|
95
|
+
}),
|
|
96
|
+
/* @__PURE__ */ v(s, {
|
|
97
|
+
type: "button",
|
|
98
|
+
variant: "ghost",
|
|
99
|
+
color: "primary",
|
|
100
|
+
size: "lg",
|
|
101
|
+
shape: "circle",
|
|
102
|
+
iconOnly: !0,
|
|
103
|
+
className: "media-lightbox-nav media-lightbox-nav-next",
|
|
104
|
+
"aria-label": "Next image",
|
|
105
|
+
disabled: a.length <= 1 || !_,
|
|
106
|
+
onClick: () => _ && d(l + 1),
|
|
107
|
+
children: /* @__PURE__ */ v(r, {})
|
|
108
|
+
}),
|
|
109
|
+
p.caption || p.alt ? /* @__PURE__ */ v(c, {
|
|
110
|
+
color: "dark",
|
|
111
|
+
size: "sm",
|
|
112
|
+
rounded: !0,
|
|
113
|
+
className: "media-lightbox-caption",
|
|
114
|
+
children: p.caption || p.alt
|
|
115
|
+
}) : null
|
|
116
|
+
]
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
}) });
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region src/components/media/mediaPreviewRegistry.ts
|
|
124
|
+
var x = /* @__PURE__ */ new Map();
|
|
125
|
+
function S(e, t, n) {
|
|
126
|
+
let r = x.get(e);
|
|
127
|
+
return r || (r = /* @__PURE__ */ new Map(), x.set(e, r)), r.set(t, {
|
|
128
|
+
id: t,
|
|
129
|
+
...n
|
|
130
|
+
}), () => {
|
|
131
|
+
let n = x.get(e);
|
|
132
|
+
n && (n.delete(t), n.size === 0 && x.delete(e));
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function C(e) {
|
|
136
|
+
return Array.from(x.get(e)?.values() ?? []);
|
|
137
|
+
}
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region src/components/media/mediaInteraction.ts
|
|
140
|
+
function w(e) {
|
|
141
|
+
return e === "ripple" || e === "zoom-ripple";
|
|
142
|
+
}
|
|
143
|
+
function T(e) {
|
|
144
|
+
return e === "zoom" || e === "zoom-ripple";
|
|
145
|
+
}
|
|
146
|
+
function E(e) {
|
|
147
|
+
return e === "dim";
|
|
148
|
+
}
|
|
149
|
+
function D(e) {
|
|
150
|
+
return e === "zoom" || e === "zoom-dim";
|
|
151
|
+
}
|
|
152
|
+
function O(e) {
|
|
153
|
+
return e === "dim" || e === "zoom-dim";
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/components/media/MImage/MImage.tsx
|
|
157
|
+
var k = {
|
|
158
|
+
"1:1": "1 / 1",
|
|
159
|
+
"4:3": "4 / 3",
|
|
160
|
+
"16:9": "16 / 9",
|
|
161
|
+
"21:9": "21 / 9"
|
|
162
|
+
};
|
|
163
|
+
function ee(e) {
|
|
164
|
+
if (e != null) return typeof e == "number" ? `${e}px` : e;
|
|
165
|
+
}
|
|
166
|
+
function A({ src: t, fit: n = "cover", ratio: r = "auto", width: o, height: s, hidden: c, rounded: u = !1, bordered: d = !1, shadow: h = !1, preview: x = !1, previewGroup: w, hoverEffect: T = "none", clickEffect: E = "none", fallback: A, skeleton: j = !1, className: M, style: te, alt: N, onError: ne, ...P }) {
|
|
167
|
+
let [F, re] = g(!1), [ie, I] = g(!1), [L, R] = g([]), [z, B] = g(0), V = p(), { effectClassName: ae, effectLayer: H, handlePointerDown: U } = a({ effect: j ? "none" : E }), W = (e) => {
|
|
168
|
+
A && !F && (re(!0), e.currentTarget.src = A), ne?.(e);
|
|
169
|
+
}, G = ee(o), K = ee(s), q = G != null || K != null, J = r !== "auto" && !!k[r], Y = {};
|
|
170
|
+
G != null && (Y.width = G), K != null && (Y.height = K);
|
|
171
|
+
let X = {
|
|
172
|
+
...te,
|
|
173
|
+
...J ? { aspectRatio: k[r] } : null,
|
|
174
|
+
...Y
|
|
175
|
+
}, Z = F && A ? A : t, Q = m(() => ({
|
|
176
|
+
src: Z || "",
|
|
177
|
+
alt: N ?? "",
|
|
178
|
+
caption: typeof P.title == "string" ? P.title : void 0
|
|
179
|
+
}), [
|
|
180
|
+
N,
|
|
181
|
+
Z,
|
|
182
|
+
P.title
|
|
183
|
+
]);
|
|
184
|
+
if (f(() => {
|
|
185
|
+
if (!(!x || !w || !Z)) return S(w, V, Q);
|
|
186
|
+
}, [
|
|
187
|
+
x,
|
|
188
|
+
w,
|
|
189
|
+
V,
|
|
190
|
+
Q,
|
|
191
|
+
Z
|
|
192
|
+
]), j) return /* @__PURE__ */ v(l, {
|
|
193
|
+
variant: "rectangle",
|
|
194
|
+
animate: "pulse",
|
|
195
|
+
className: i("image-skeleton", u && "rounded", d && "bordered", M),
|
|
196
|
+
style: X,
|
|
197
|
+
"aria-label": "Loading",
|
|
198
|
+
...e(c)
|
|
199
|
+
});
|
|
200
|
+
let oe = () => {
|
|
201
|
+
if (!(!x || !Z)) {
|
|
202
|
+
if (w) {
|
|
203
|
+
let e = C(w), t = e.findIndex((e) => e.id === V);
|
|
204
|
+
if (e.length > 0 && t >= 0) {
|
|
205
|
+
R(e.map(({ id: e, ...t }) => t)), B(t), I(!0);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
R([Q]), B(0), I(!0);
|
|
210
|
+
}
|
|
211
|
+
}, se = i("image", n, !H && u && "rounded", !H && d && "bordered", !H && h && "shadow"), ce = J || q || !!H || x || T !== "none", le = i("image-wrap", J && "has-ratio", q && "has-size", u && "rounded", d && "bordered", h && "shadow", x && "preview", D(T) && "effect-zoom", O(T) && "effect-dim", ae, M), $ = /* @__PURE__ */ v("img", {
|
|
212
|
+
className: se,
|
|
213
|
+
onError: W,
|
|
214
|
+
src: Z,
|
|
215
|
+
...P,
|
|
216
|
+
alt: N ?? ""
|
|
217
|
+
});
|
|
218
|
+
return ce ? /* @__PURE__ */ y(_, { children: [x ? /* @__PURE__ */ y("button", {
|
|
219
|
+
type: "button",
|
|
220
|
+
className: i(le, "image-button"),
|
|
221
|
+
"aria-label": `Preview ${N || "image"}`,
|
|
222
|
+
onClick: oe,
|
|
223
|
+
onPointerDown: H ? U : void 0,
|
|
224
|
+
disabled: !Z,
|
|
225
|
+
...e(c),
|
|
226
|
+
style: X,
|
|
227
|
+
children: [H, $]
|
|
228
|
+
}) : /* @__PURE__ */ y("span", {
|
|
229
|
+
className: le,
|
|
230
|
+
onPointerDown: H ? U : void 0,
|
|
231
|
+
...e(c),
|
|
232
|
+
style: X,
|
|
233
|
+
children: [H, $]
|
|
234
|
+
}), /* @__PURE__ */ v(b, {
|
|
235
|
+
open: ie,
|
|
236
|
+
items: L,
|
|
237
|
+
activeIndex: z,
|
|
238
|
+
onActiveIndexChange: B,
|
|
239
|
+
onClose: () => I(!1)
|
|
240
|
+
})] }) : /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v("img", {
|
|
241
|
+
className: i(se, M),
|
|
242
|
+
style: X,
|
|
243
|
+
onError: W,
|
|
244
|
+
src: Z,
|
|
245
|
+
...e(c),
|
|
246
|
+
...P,
|
|
247
|
+
alt: N ?? ""
|
|
248
|
+
}), /* @__PURE__ */ v(b, {
|
|
249
|
+
open: ie,
|
|
250
|
+
items: L,
|
|
251
|
+
activeIndex: z,
|
|
252
|
+
onActiveIndexChange: B,
|
|
253
|
+
onClose: () => I(!1)
|
|
254
|
+
})] });
|
|
255
|
+
}
|
|
256
|
+
//#endregion
|
|
257
|
+
//#region src/components/media/MAvatarStack/MAvatarStack.tsx
|
|
258
|
+
function j(e) {
|
|
259
|
+
return e.tooltip ? e.tooltip : !e.name && !e.description ? null : /* @__PURE__ */ y("div", {
|
|
260
|
+
className: "avatar-stack-tooltip",
|
|
261
|
+
children: [e.name ? /* @__PURE__ */ v("strong", { children: e.name }) : null, e.description ? /* @__PURE__ */ v("span", { children: e.description }) : null]
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
function M({ items: t, max: n = 5, size: r = "sm", color: a = "primary", hidden: o, overlap: s = 10, interactive: c = !0, showTooltip: l, tooltipPlacement: f = "top", tooltipDelay: p = 150, onItemClick: m, className: h, style: g, ..._ }) {
|
|
265
|
+
if (!t || t.length === 0) return null;
|
|
266
|
+
let b = t.slice(0, n), x = t.length - n, S = typeof r == "number" ? r : {
|
|
267
|
+
xs: 20,
|
|
268
|
+
sm: 28,
|
|
269
|
+
md: 40,
|
|
270
|
+
lg: 56,
|
|
271
|
+
xl: 72
|
|
272
|
+
}[r] ?? 28, C = l ?? c, w = (e, t) => {
|
|
273
|
+
let n = C ? j(e) : null, o = c && (!!e.onClick || !!e.href || !!m), s = e.id ?? `${e.name ?? "avatar"}-${t}`, l = (n) => {
|
|
274
|
+
o && (e.onClick ? (n.preventDefault(), e.onClick(e, t)) : m && !e.href ? (n.preventDefault(), m(e, t)) : m && m(e, t));
|
|
275
|
+
}, h = /* @__PURE__ */ v(d, {
|
|
276
|
+
src: e.avatar,
|
|
277
|
+
name: e.name,
|
|
278
|
+
size: r,
|
|
279
|
+
color: e.color ?? a,
|
|
280
|
+
backgroundColor: e.backgroundColor
|
|
281
|
+
}), g;
|
|
282
|
+
return g = e.href ? /* @__PURE__ */ v("a", {
|
|
283
|
+
className: i("avatar-stack-item", c && "interactive"),
|
|
284
|
+
style: { zIndex: t + 1 },
|
|
285
|
+
href: e.href,
|
|
286
|
+
onClick: l,
|
|
287
|
+
children: h
|
|
288
|
+
}, s) : o ? /* @__PURE__ */ v("button", {
|
|
289
|
+
type: "button",
|
|
290
|
+
className: i("avatar-stack-item", "interactive"),
|
|
291
|
+
style: { zIndex: t + 1 },
|
|
292
|
+
"aria-label": e.name,
|
|
293
|
+
onClick: l,
|
|
294
|
+
children: h
|
|
295
|
+
}, s) : /* @__PURE__ */ v("span", {
|
|
296
|
+
className: i("avatar-stack-item", c && "interactive"),
|
|
297
|
+
style: { zIndex: t + 1 },
|
|
298
|
+
children: h
|
|
299
|
+
}, s), n ? /* @__PURE__ */ v(u, {
|
|
300
|
+
placement: f,
|
|
301
|
+
delay: p,
|
|
302
|
+
content: n,
|
|
303
|
+
className: "avatar-stack-tooltip-wrapper",
|
|
304
|
+
children: g
|
|
305
|
+
}, s) : g;
|
|
306
|
+
};
|
|
307
|
+
return /* @__PURE__ */ y("div", {
|
|
308
|
+
className: i("avatar-stack", c && "interactive", h),
|
|
309
|
+
style: {
|
|
310
|
+
"--avatar-stack-overlap": `-${s}px`,
|
|
311
|
+
...g
|
|
312
|
+
},
|
|
313
|
+
...e(o),
|
|
314
|
+
..._,
|
|
315
|
+
children: [b.map(w), x > 0 && /* @__PURE__ */ y("span", {
|
|
316
|
+
className: "avatar-stack-overflow",
|
|
317
|
+
style: {
|
|
318
|
+
width: S,
|
|
319
|
+
height: S,
|
|
320
|
+
fontSize: S * .38,
|
|
321
|
+
zIndex: b.length + 1
|
|
322
|
+
},
|
|
323
|
+
children: ["+", x]
|
|
324
|
+
})]
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
//#endregion
|
|
328
|
+
export { D as a, b as c, O as i, A as n, w as o, E as r, T as s, M as t };
|
|
329
|
+
|
|
330
|
+
//# sourceMappingURL=MAvatarStack-CrhkO_SO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MAvatarStack-CrhkO_SO.js","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx","../src/components/media/MAvatarStack/MAvatarStack.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MMediaLightbox.css'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose()\n return\n }\n\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || 'Image preview'\n\n return (\n <MPortal>\n <div className={cn('mineral-backdrop', 'media-lightbox-backdrop')} onMouseDown={handleBackdropMouseDown}>\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"md\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : 'Preview'}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"error\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label=\"Close preview\"\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label=\"Previous image\"\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label=\"Next image\"\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label=\"Loading\"\n {...getHiddenProps(hidden)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={`Preview ${alt || 'image'}`}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n","import type {CSSProperties, MouseEvent as ReactMouseEvent, ReactNode} from 'react'\nimport type {MAvatarStackItem, MAvatarStackProps} from './MAvatarStack.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MAvatar} from '../MAvatar'\nimport {MTooltip} from '../../overlays'\nimport './MAvatarStack.css'\n\nfunction buildTooltipContent(item: MAvatarStackItem): ReactNode {\n if (item.tooltip) {\n return item.tooltip\n }\n if (!item.name && !item.description) {\n return null\n }\n return (\n <div className={'avatar-stack-tooltip'}>\n {item.name ? <strong>{item.name}</strong> : null}\n {item.description ? <span>{item.description}</span> : null}\n </div>\n )\n}\n\nexport function MAvatarStack({\n items,\n max = 5,\n size = 'sm',\n color = 'primary',\n hidden,\n overlap = 10,\n interactive = true,\n showTooltip,\n tooltipPlacement = 'top',\n tooltipDelay = 150,\n onItemClick,\n className,\n style,\n ...rest\n}: MAvatarStackProps) {\n if (!items || items.length === 0) return null\n\n const visible = items.slice(0, max)\n const overflowCount = items.length - max\n const avatarPx = typeof size === 'number' ? size : ({xs: 20, sm: 28, md: 40, lg: 56, xl: 72}[size] ?? 28)\n const tooltipsEnabled = showTooltip ?? interactive\n\n const renderAvatar = (item: MAvatarStackItem, index: number) => {\n const tooltipContent = tooltipsEnabled ? buildTooltipContent(item) : null\n const isClickable = interactive && (Boolean(item.onClick) || Boolean(item.href) || Boolean(onItemClick))\n const itemKey = item.id ?? `${item.name ?? 'avatar'}-${index}`\n\n const handleClick = (clickEvent: ReactMouseEvent<HTMLElement>) => {\n if (!isClickable) {\n return\n }\n if (item.onClick) {\n clickEvent.preventDefault()\n item.onClick(item, index)\n } else if (onItemClick && !item.href) {\n clickEvent.preventDefault()\n onItemClick(item, index)\n } else if (onItemClick) {\n onItemClick(item, index)\n }\n }\n\n const inner = (\n <MAvatar\n src={item.avatar}\n name={item.name}\n size={size}\n color={item.color ?? color}\n backgroundColor={item.backgroundColor}\n />\n )\n\n let element: ReactNode\n if (item.href) {\n element = (\n <a\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n href={item.href}\n onClick={handleClick}\n >\n {inner}\n </a>\n )\n } else if (isClickable) {\n element = (\n <button\n key={itemKey}\n type={'button'}\n className={cn('avatar-stack-item', 'interactive')}\n style={{zIndex: index + 1}}\n aria-label={item.name}\n onClick={handleClick}\n >\n {inner}\n </button>\n )\n } else {\n element = (\n <span\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n >\n {inner}\n </span>\n )\n }\n\n if (!tooltipContent) {\n return element\n }\n\n return (\n <MTooltip\n key={itemKey}\n placement={tooltipPlacement}\n delay={tooltipDelay}\n content={tooltipContent}\n className={'avatar-stack-tooltip-wrapper'}\n >\n {element}\n </MTooltip>\n )\n }\n\n return (\n <div\n className={cn('avatar-stack', interactive && 'interactive', className)}\n style={{'--avatar-stack-overlap': `-${overlap}px`, ...style} as CSSProperties}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {visible.map(renderAvatar)}\n {overflowCount > 0 && (\n <span\n className=\"avatar-stack-overflow\"\n style={{\n width: avatarPx,\n height: avatarPx,\n fontSize: avatarPx * 0.38,\n zIndex: visible.length + 1,\n }}\n >\n +{overflowCount}\n </span>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./theme-DsTDooyX.cjs`),t=require(`./icons-qCoE70hn.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./useInteractionEffect-Bo8285cg.cjs`),i=require(`./MPortal-BIxPtFYd.cjs`),a=require(`./MButton-DFRHWHzh.cjs`),o=require(`./MSkeleton-CuYA8eN3.cjs`),s=require(`./MTooltip-Dq2vYf3G.cjs`),c=require(`./MAvatar-DzZPRbot.cjs`);require(`./core-DAox0BHy.cjs`);let l=require(`react`),u=require(`react/jsx-runtime`);function d({open:e,items:r,activeIndex:s,onClose:c,onActiveIndexChange:d}){let f=r[s],p=(0,l.useRef)(null),m=s>0,h=s<r.length-1;if((0,l.useEffect)(()=>{if(!e)return;let t=e=>{if(e.key===`Escape`){c();return}e.key===`ArrowLeft`&&m&&d(s-1),e.key===`ArrowRight`&&h&&d(s+1)};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[s,h,m,d,c,e]),(0,l.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]),!e||!f)return null;let g=e=>{let t=e.target;t&&p.current&&!p.current.contains(t)&&c()},_=f.alt||f.caption||`Image preview`;return(0,u.jsx)(i.t,{children:(0,u.jsx)(`div`,{className:n.t(`mineral-backdrop`,`media-lightbox-backdrop`),onMouseDown:g,children:(0,u.jsx)(`div`,{className:`media-lightbox-shell`,role:`dialog`,"aria-modal":`true`,"aria-label":_,children:(0,u.jsx)(`div`,{className:`media-lightbox-stage`,children:(0,u.jsxs)(`div`,{ref:p,className:`media-lightbox-frame`,children:[(0,u.jsxs)(`div`,{className:`media-lightbox-topbar`,children:[(0,u.jsx)(o.s,{color:`dark`,size:`md`,rounded:!0,className:`media-lightbox-counter`,children:r.length>1?`${s+1} / ${r.length}`:`Preview`}),(0,u.jsx)(a.t,{type:`button`,variant:`ghost`,color:`error`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-action`,"aria-label":`Close preview`,onClick:c,children:(0,u.jsx)(t.Li,{})})]}),(0,u.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-prev`,"aria-label":`Previous image`,disabled:r.length<=1||!m,onClick:()=>m&&d(s-1),children:(0,u.jsx)(t.Fi,{})}),(0,u.jsx)(`img`,{className:`media-lightbox-image`,src:f.src,alt:f.alt||``}),(0,u.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-next`,"aria-label":`Next image`,disabled:r.length<=1||!h,onClick:()=>h&&d(s+1),children:(0,u.jsx)(t.Pi,{})}),f.caption||f.alt?(0,u.jsx)(o.s,{color:`dark`,size:`sm`,rounded:!0,className:`media-lightbox-caption`,children:f.caption||f.alt}):null]})})})})})}var f=new Map;function p(e,t,n){let r=f.get(e);return r||(r=new Map,f.set(e,r)),r.set(t,{id:t,...n}),()=>{let n=f.get(e);n&&(n.delete(t),n.size===0&&f.delete(e))}}function m(e){return Array.from(f.get(e)?.values()??[])}function h(e){return e===`ripple`||e===`zoom-ripple`}function g(e){return e===`zoom`||e===`zoom-ripple`}function _(e){return e===`dim`}function v(e){return e===`zoom`||e===`zoom-dim`}function y(e){return e===`dim`||e===`zoom-dim`}var b={"1:1":`1 / 1`,"4:3":`4 / 3`,"16:9":`16 / 9`,"21:9":`21 / 9`};function x(e){if(e!=null)return typeof e==`number`?`${e}px`:e}function S({src:t,fit:i=`cover`,ratio:a=`auto`,width:s,height:c,hidden:f,rounded:h=!1,bordered:g=!1,shadow:_=!1,preview:S=!1,previewGroup:C,hoverEffect:w=`none`,clickEffect:ee=`none`,fallback:T,skeleton:E=!1,className:D,style:te,alt:O,onError:ne,...k}){let[A,j]=(0,l.useState)(!1),[M,N]=(0,l.useState)(!1),[P,F]=(0,l.useState)([]),[I,L]=(0,l.useState)(0),R=(0,l.useId)(),{effectClassName:z,effectLayer:B,handlePointerDown:V}=r.t({effect:E?`none`:ee}),H=e=>{T&&!A&&(j(!0),e.currentTarget.src=T),ne?.(e)},U=x(s),W=x(c),G=U!=null||W!=null,K=a!==`auto`&&!!b[a],q={};U!=null&&(q.width=U),W!=null&&(q.height=W);let J={...te,...K?{aspectRatio:b[a]}:null,...q},Y=A&&T?T:t,X=(0,l.useMemo)(()=>({src:Y||``,alt:O??``,caption:typeof k.title==`string`?k.title:void 0}),[O,Y,k.title]);if((0,l.useEffect)(()=>{if(!(!S||!C||!Y))return p(C,R,X)},[S,C,R,X,Y]),E)return(0,u.jsx)(o.t,{variant:`rectangle`,animate:`pulse`,className:n.t(`image-skeleton`,h&&`rounded`,g&&`bordered`,D),style:J,"aria-label":`Loading`,...e.r(f)});let re=()=>{if(!(!S||!Y)){if(C){let e=m(C),t=e.findIndex(e=>e.id===R);if(e.length>0&&t>=0){F(e.map(({id:e,...t})=>t)),L(t),N(!0);return}}F([X]),L(0),N(!0)}},Z=n.t(`image`,i,!B&&h&&`rounded`,!B&&g&&`bordered`,!B&&_&&`shadow`),ie=K||G||!!B||S||w!==`none`,Q=n.t(`image-wrap`,K&&`has-ratio`,G&&`has-size`,h&&`rounded`,g&&`bordered`,_&&`shadow`,S&&`preview`,v(w)&&`effect-zoom`,y(w)&&`effect-dim`,z,D),$=(0,u.jsx)(`img`,{className:Z,onError:H,src:Y,...k,alt:O??``});return ie?(0,u.jsxs)(u.Fragment,{children:[S?(0,u.jsxs)(`button`,{type:`button`,className:n.t(Q,`image-button`),"aria-label":`Preview ${O||`image`}`,onClick:re,onPointerDown:B?V:void 0,disabled:!Y,...e.r(f),style:J,children:[B,$]}):(0,u.jsxs)(`span`,{className:Q,onPointerDown:B?V:void 0,...e.r(f),style:J,children:[B,$]}),(0,u.jsx)(d,{open:M,items:P,activeIndex:I,onActiveIndexChange:L,onClose:()=>N(!1)})]}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`img`,{className:n.t(Z,D),style:J,onError:H,src:Y,...e.r(f),...k,alt:O??``}),(0,u.jsx)(d,{open:M,items:P,activeIndex:I,onActiveIndexChange:L,onClose:()=>N(!1)})]})}function C(e){return e.tooltip?e.tooltip:!e.name&&!e.description?null:(0,u.jsxs)(`div`,{className:`avatar-stack-tooltip`,children:[e.name?(0,u.jsx)(`strong`,{children:e.name}):null,e.description?(0,u.jsx)(`span`,{children:e.description}):null]})}function w({items:t,max:r=5,size:i=`sm`,color:a=`primary`,hidden:o,overlap:l=10,interactive:d=!0,showTooltip:f,tooltipPlacement:p=`top`,tooltipDelay:m=150,onItemClick:h,className:g,style:_,...v}){if(!t||t.length===0)return null;let y=t.slice(0,r),b=t.length-r,x=typeof i==`number`?i:{xs:20,sm:28,md:40,lg:56,xl:72}[i]??28,S=f??d,w=(e,t)=>{let r=S?C(e):null,o=d&&(!!e.onClick||!!e.href||!!h),l=e.id??`${e.name??`avatar`}-${t}`,f=n=>{o&&(e.onClick?(n.preventDefault(),e.onClick(e,t)):h&&!e.href?(n.preventDefault(),h(e,t)):h&&h(e,t))},g=(0,u.jsx)(c.t,{src:e.avatar,name:e.name,size:i,color:e.color??a,backgroundColor:e.backgroundColor}),_;return _=e.href?(0,u.jsx)(`a`,{className:n.t(`avatar-stack-item`,d&&`interactive`),style:{zIndex:t+1},href:e.href,onClick:f,children:g},l):o?(0,u.jsx)(`button`,{type:`button`,className:n.t(`avatar-stack-item`,`interactive`),style:{zIndex:t+1},"aria-label":e.name,onClick:f,children:g},l):(0,u.jsx)(`span`,{className:n.t(`avatar-stack-item`,d&&`interactive`),style:{zIndex:t+1},children:g},l),r?(0,u.jsx)(s.t,{placement:p,delay:m,content:r,className:`avatar-stack-tooltip-wrapper`,children:_},l):_};return(0,u.jsxs)(`div`,{className:n.t(`avatar-stack`,d&&`interactive`,g),style:{"--avatar-stack-overlap":`-${l}px`,..._},...e.r(o),...v,children:[y.map(w),b>0&&(0,u.jsxs)(`span`,{className:`avatar-stack-overflow`,style:{width:x,height:x,fontSize:x*.38,zIndex:y.length+1},children:[`+`,b]})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return d}}),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 h}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return w}});
|
|
2
|
+
//# sourceMappingURL=MAvatarStack-DN79aJo1.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MAvatarStack-DN79aJo1.cjs","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx","../src/components/media/MAvatarStack/MAvatarStack.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MMediaLightbox.css'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose()\n return\n }\n\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || 'Image preview'\n\n return (\n <MPortal>\n <div className={cn('mineral-backdrop', 'media-lightbox-backdrop')} onMouseDown={handleBackdropMouseDown}>\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"md\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : 'Preview'}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"error\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label=\"Close preview\"\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label=\"Previous image\"\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label=\"Next image\"\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label=\"Loading\"\n {...getHiddenProps(hidden)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={`Preview ${alt || 'image'}`}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n","import type {CSSProperties, MouseEvent as ReactMouseEvent, ReactNode} from 'react'\nimport type {MAvatarStackItem, MAvatarStackProps} from './MAvatarStack.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MAvatar} from '../MAvatar'\nimport {MTooltip} from '../../overlays'\nimport './MAvatarStack.css'\n\nfunction buildTooltipContent(item: MAvatarStackItem): ReactNode {\n if (item.tooltip) {\n return item.tooltip\n }\n if (!item.name && !item.description) {\n return null\n }\n return (\n <div className={'avatar-stack-tooltip'}>\n {item.name ? <strong>{item.name}</strong> : null}\n {item.description ? <span>{item.description}</span> : null}\n </div>\n )\n}\n\nexport function MAvatarStack({\n items,\n max = 5,\n size = 'sm',\n color = 'primary',\n hidden,\n overlap = 10,\n interactive = true,\n showTooltip,\n tooltipPlacement = 'top',\n tooltipDelay = 150,\n onItemClick,\n className,\n style,\n ...rest\n}: MAvatarStackProps) {\n if (!items || items.length === 0) return null\n\n const visible = items.slice(0, max)\n const overflowCount = items.length - max\n const avatarPx = typeof size === 'number' ? size : ({xs: 20, sm: 28, md: 40, lg: 56, xl: 72}[size] ?? 28)\n const tooltipsEnabled = showTooltip ?? interactive\n\n const renderAvatar = (item: MAvatarStackItem, index: number) => {\n const tooltipContent = tooltipsEnabled ? buildTooltipContent(item) : null\n const isClickable = interactive && (Boolean(item.onClick) || Boolean(item.href) || Boolean(onItemClick))\n const itemKey = item.id ?? `${item.name ?? 'avatar'}-${index}`\n\n const handleClick = (clickEvent: ReactMouseEvent<HTMLElement>) => {\n if (!isClickable) {\n return\n }\n if (item.onClick) {\n clickEvent.preventDefault()\n item.onClick(item, index)\n } else if (onItemClick && !item.href) {\n clickEvent.preventDefault()\n onItemClick(item, index)\n } else if (onItemClick) {\n onItemClick(item, index)\n }\n }\n\n const inner = (\n <MAvatar\n src={item.avatar}\n name={item.name}\n size={size}\n color={item.color ?? color}\n backgroundColor={item.backgroundColor}\n />\n )\n\n let element: ReactNode\n if (item.href) {\n element = (\n <a\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n href={item.href}\n onClick={handleClick}\n >\n {inner}\n </a>\n )\n } else if (isClickable) {\n element = (\n <button\n key={itemKey}\n type={'button'}\n className={cn('avatar-stack-item', 'interactive')}\n style={{zIndex: index + 1}}\n aria-label={item.name}\n onClick={handleClick}\n >\n {inner}\n </button>\n )\n } else {\n element = (\n <span\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n >\n {inner}\n </span>\n )\n }\n\n if (!tooltipContent) {\n return element\n }\n\n return (\n <MTooltip\n key={itemKey}\n placement={tooltipPlacement}\n delay={tooltipDelay}\n content={tooltipContent}\n className={'avatar-stack-tooltip-wrapper'}\n >\n {element}\n </MTooltip>\n )\n }\n\n return (\n <div\n className={cn('avatar-stack', interactive && 'interactive', className)}\n style={{'--avatar-stack-overlap': `-${overlap}px`, ...style} as CSSProperties}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {visible.map(renderAvatar)}\n {overflowCount > 0 && (\n <span\n className=\"avatar-stack-overflow\"\n style={{\n width: avatarPx,\n height: avatarPx,\n fontSize: avatarPx * 0.38,\n zIndex: visible.length + 1,\n }}\n >\n +{overflowCount}\n </span>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as e } from "./theme-
|
|
1
|
+
import { r as e } from "./theme-DAOU1aPs.js";
|
|
2
2
|
import { t } from "./cn-YER3QsV1.js";
|
|
3
3
|
import { t as n } from "./useInteractionEffect-DtpbVd77.js";
|
|
4
4
|
import { createContext as r, forwardRef as i, useContext as a } from "react";
|
|
@@ -112,4 +112,4 @@ var m = i(function({ component: r, to: i, href: a, target: c, rel: d, variant: f
|
|
|
112
112
|
//#endregion
|
|
113
113
|
export { c as i, p as n, u as r, m as t };
|
|
114
114
|
|
|
115
|
-
//# sourceMappingURL=MButton-
|
|
115
|
+
//# sourceMappingURL=MButton-C1pnL4_j.js.map
|