@gfazioli/mantine-spinner 3.0.3 → 4.1.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 -0
- package/dist/cjs/Spinner.cjs +42 -34
- package/dist/cjs/Spinner.cjs.map +1 -1
- package/dist/cjs/SpinnerGroup.cjs +2 -2
- package/dist/cjs/SpinnerGroup.cjs.map +1 -1
- package/dist/cjs/SpinnerMediaVariables.cjs +40 -0
- package/dist/cjs/SpinnerMediaVariables.cjs.map +1 -0
- package/dist/cjs/SpinnerOverlay.cjs +2 -2
- package/dist/cjs/SpinnerOverlay.cjs.map +1 -1
- package/dist/cjs/spinner-size.cjs +39 -0
- package/dist/cjs/spinner-size.cjs.map +1 -0
- package/dist/esm/Spinner.mjs +43 -35
- package/dist/esm/Spinner.mjs.map +1 -1
- package/dist/esm/SpinnerGroup.mjs +2 -2
- package/dist/esm/SpinnerGroup.mjs.map +1 -1
- package/dist/esm/SpinnerMediaVariables.mjs +38 -0
- package/dist/esm/SpinnerMediaVariables.mjs.map +1 -0
- package/dist/esm/SpinnerOverlay.mjs +2 -2
- package/dist/esm/SpinnerOverlay.mjs.map +1 -1
- package/dist/esm/spinner-size.mjs +34 -0
- package/dist/esm/spinner-size.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/styles.layer.css +1 -1
- package/dist/types/Spinner.d.ts +11 -4
- package/dist/types/SpinnerMediaVariables.d.ts +8 -0
- package/dist/types/spinner-size.d.ts +20 -0
- package/package.json +2 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useMantineTheme, getBaseValue, filterProps, keys, getSortedBreakpoints, InlineStyles } from '@mantine/core';
|
|
4
|
+
import { SPINNER_DEFAULT_SIZE, getSpinnerSizeCssValue } from './spinner-size.mjs';
|
|
5
|
+
|
|
6
|
+
function SpinnerMediaVariables({ size, selector }) {
|
|
7
|
+
const theme = useMantineTheme();
|
|
8
|
+
const baseValue = getBaseValue(size) ?? SPINNER_DEFAULT_SIZE;
|
|
9
|
+
const baseStyles = filterProps({
|
|
10
|
+
"--spinner-size": getSpinnerSizeCssValue(baseValue)
|
|
11
|
+
});
|
|
12
|
+
const queries = keys(theme.breakpoints).reduce(
|
|
13
|
+
(acc, breakpoint) => {
|
|
14
|
+
if (!acc[breakpoint]) {
|
|
15
|
+
acc[breakpoint] = {};
|
|
16
|
+
}
|
|
17
|
+
if (typeof size === "object" && size !== null && size[breakpoint] !== void 0) {
|
|
18
|
+
const resolved = getSpinnerSizeCssValue(size[breakpoint]);
|
|
19
|
+
if (resolved) {
|
|
20
|
+
acc[breakpoint]["--spinner-size"] = resolved;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return acc;
|
|
24
|
+
},
|
|
25
|
+
{}
|
|
26
|
+
);
|
|
27
|
+
const sortedBreakpoints = getSortedBreakpoints(keys(queries), theme.breakpoints).filter(
|
|
28
|
+
(breakpoint) => keys(queries[breakpoint.value]).length > 0
|
|
29
|
+
);
|
|
30
|
+
const media = sortedBreakpoints.map((breakpoint) => ({
|
|
31
|
+
query: `(min-width: ${theme.breakpoints[breakpoint.value]})`,
|
|
32
|
+
styles: queries[breakpoint.value]
|
|
33
|
+
}));
|
|
34
|
+
return /* @__PURE__ */ React.createElement(InlineStyles, { styles: baseStyles, media, selector });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { SpinnerMediaVariables };
|
|
38
|
+
//# sourceMappingURL=SpinnerMediaVariables.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpinnerMediaVariables.mjs","sources":["../../src/SpinnerMediaVariables.tsx"],"sourcesContent":["import React from 'react';\nimport {\n filterProps,\n getBaseValue,\n getSortedBreakpoints,\n InlineStyles,\n keys,\n MantineBreakpoint,\n MantineSize,\n useMantineTheme,\n type StyleProp,\n} from '@mantine/core';\nimport { getSpinnerSizeCssValue, SPINNER_DEFAULT_SIZE } from './spinner-size';\n\ninterface SpinnerMediaVariablesProps {\n size: StyleProp<MantineSize | (string & {}) | number>;\n selector: string;\n}\n\nexport function SpinnerMediaVariables({ size, selector }: SpinnerMediaVariablesProps) {\n const theme = useMantineTheme();\n\n // Mirror Spinner.tsx fallback: when a responsive object omits `base`, both\n // the SVG geometry and `--spinner-size` resolve to the default size, keeping\n // CSS dimensions and SVG coordinate system in sync at the base viewport.\n const baseValue = getBaseValue(size) ?? SPINNER_DEFAULT_SIZE;\n\n const baseStyles: Record<string, string | undefined> = filterProps({\n '--spinner-size': getSpinnerSizeCssValue(baseValue),\n });\n\n const queries = keys(theme.breakpoints).reduce<Record<string, Record<string, string>>>(\n (acc, breakpoint) => {\n if (!acc[breakpoint]) {\n acc[breakpoint] = {};\n }\n\n if (typeof size === 'object' && size !== null && size[breakpoint] !== undefined) {\n const resolved = getSpinnerSizeCssValue(size[breakpoint]);\n if (resolved) {\n acc[breakpoint]['--spinner-size'] = resolved;\n }\n }\n\n return acc;\n },\n {}\n );\n\n const sortedBreakpoints = getSortedBreakpoints(keys(queries), theme.breakpoints).filter(\n (breakpoint) => keys(queries[breakpoint.value]).length > 0\n );\n\n const media = sortedBreakpoints.map((breakpoint) => ({\n query: `(min-width: ${theme.breakpoints[breakpoint.value as MantineBreakpoint]})`,\n styles: queries[breakpoint.value],\n }));\n\n return <InlineStyles styles={baseStyles} media={media} selector={selector} />;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const varsResolver = createVarsResolver((_, { blur, zIndex }) => ({
|
|
|
15
15
|
"--spinner-overlay-blur": blur ? `blur(${blur}px)` : void 0
|
|
16
16
|
}
|
|
17
17
|
}));
|
|
18
|
-
const SpinnerOverlay = factory((_props
|
|
18
|
+
const SpinnerOverlay = factory((_props) => {
|
|
19
19
|
const props = useProps("SpinnerOverlay", defaultProps, _props);
|
|
20
20
|
const {
|
|
21
21
|
visible,
|
|
@@ -43,7 +43,7 @@ const SpinnerOverlay = factory((_props, ref) => {
|
|
|
43
43
|
vars,
|
|
44
44
|
varsResolver
|
|
45
45
|
});
|
|
46
|
-
return /* @__PURE__ */ React.createElement(Box, {
|
|
46
|
+
return /* @__PURE__ */ React.createElement(Box, { ...getStyles("root"), ...others }, children, visible && /* @__PURE__ */ React.createElement("div", { ...getStyles("overlay") }, /* @__PURE__ */ React.createElement(Spinner, { ...spinnerProps })));
|
|
47
47
|
});
|
|
48
48
|
SpinnerOverlay.classes = classes;
|
|
49
49
|
SpinnerOverlay.displayName = "SpinnerOverlay";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpinnerOverlay.mjs","sources":["../../src/SpinnerOverlay.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { Spinner, SpinnerProps } from './Spinner';\nimport classes from './SpinnerOverlay.module.css';\n\nexport type SpinnerOverlayStylesNames = 'root' | 'overlay';\n\nexport type SpinnerOverlayCssVariables = {\n root: '--spinner-overlay-z-index' | '--spinner-overlay-blur';\n};\n\nexport interface SpinnerOverlayProps\n extends BoxProps, StylesApiProps<SpinnerOverlayFactory>, ElementProps<'div'> {\n /** Controls overlay visibility. Default value is `true` */\n visible?: boolean;\n\n /** Backdrop blur in px. Default value is `2` */\n blur?: number;\n\n /** Overlay z-index. Default value is `400` */\n zIndex?: number;\n\n /** Props passed to the inner Spinner component */\n spinnerProps?: SpinnerProps;\n\n /** Content rendered beneath the overlay */\n children?: React.ReactNode;\n}\n\nexport type SpinnerOverlayFactory = Factory<{\n props: SpinnerOverlayProps;\n ref: HTMLDivElement;\n stylesNames: SpinnerOverlayStylesNames;\n vars: SpinnerOverlayCssVariables;\n}>;\n\nconst defaultProps: Partial<SpinnerOverlayProps> = {\n visible: true,\n blur: 2,\n zIndex: 400,\n};\n\nconst varsResolver = createVarsResolver<SpinnerOverlayFactory>((_, { blur, zIndex }) => ({\n root: {\n '--spinner-overlay-z-index': zIndex?.toString(),\n '--spinner-overlay-blur': blur ? `blur(${blur}px)` : undefined,\n },\n}));\n\nexport const SpinnerOverlay = factory<SpinnerOverlayFactory>((_props
|
|
1
|
+
{"version":3,"file":"SpinnerOverlay.mjs","sources":["../../src/SpinnerOverlay.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { Spinner, SpinnerProps } from './Spinner';\nimport classes from './SpinnerOverlay.module.css';\n\nexport type SpinnerOverlayStylesNames = 'root' | 'overlay';\n\nexport type SpinnerOverlayCssVariables = {\n root: '--spinner-overlay-z-index' | '--spinner-overlay-blur';\n};\n\nexport interface SpinnerOverlayProps\n extends BoxProps, StylesApiProps<SpinnerOverlayFactory>, ElementProps<'div'> {\n /** Controls overlay visibility. Default value is `true` */\n visible?: boolean;\n\n /** Backdrop blur in px. Default value is `2` */\n blur?: number;\n\n /** Overlay z-index. Default value is `400` */\n zIndex?: number;\n\n /** Props passed to the inner Spinner component */\n spinnerProps?: SpinnerProps;\n\n /** Content rendered beneath the overlay */\n children?: React.ReactNode;\n}\n\nexport type SpinnerOverlayFactory = Factory<{\n props: SpinnerOverlayProps;\n ref: HTMLDivElement;\n stylesNames: SpinnerOverlayStylesNames;\n vars: SpinnerOverlayCssVariables;\n}>;\n\nconst defaultProps: Partial<SpinnerOverlayProps> = {\n visible: true,\n blur: 2,\n zIndex: 400,\n};\n\nconst varsResolver = createVarsResolver<SpinnerOverlayFactory>((_, { blur, zIndex }) => ({\n root: {\n '--spinner-overlay-z-index': zIndex?.toString(),\n '--spinner-overlay-blur': blur ? `blur(${blur}px)` : undefined,\n },\n}));\n\nexport const SpinnerOverlay = factory<SpinnerOverlayFactory>((_props) => {\n const props = useProps('SpinnerOverlay', defaultProps, _props);\n const {\n visible,\n blur,\n zIndex,\n spinnerProps,\n children,\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n ...others\n } = props;\n\n const getStyles = useStyles<SpinnerOverlayFactory>({\n name: 'SpinnerOverlay',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n return (\n <Box {...getStyles('root')} {...others}>\n {children}\n {visible && (\n <div {...getStyles('overlay')}>\n <Spinner {...spinnerProps} />\n </div>\n )}\n </Box>\n );\n});\n\nSpinnerOverlay.classes = classes;\nSpinnerOverlay.displayName = 'SpinnerOverlay';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { px, rem } from '@mantine/core';
|
|
3
|
+
|
|
4
|
+
const SPINNER_SIZE_VALUES = {
|
|
5
|
+
xl: 58,
|
|
6
|
+
lg: 44,
|
|
7
|
+
md: 36,
|
|
8
|
+
sm: 22,
|
|
9
|
+
xs: 18
|
|
10
|
+
};
|
|
11
|
+
const SPINNER_DEFAULT_SIZE = "md";
|
|
12
|
+
function getSpinnerSizeValue(size) {
|
|
13
|
+
if (typeof size === "string" && size in SPINNER_SIZE_VALUES) {
|
|
14
|
+
return SPINNER_SIZE_VALUES[size];
|
|
15
|
+
}
|
|
16
|
+
const numeric = px(size);
|
|
17
|
+
return Number.isFinite(numeric) ? numeric : SPINNER_SIZE_VALUES[SPINNER_DEFAULT_SIZE];
|
|
18
|
+
}
|
|
19
|
+
function getSpinnerSizeCssValue(size) {
|
|
20
|
+
if (size === void 0) {
|
|
21
|
+
return void 0;
|
|
22
|
+
}
|
|
23
|
+
if (typeof size === "string" && size in SPINNER_SIZE_VALUES) {
|
|
24
|
+
return rem(SPINNER_SIZE_VALUES[size]);
|
|
25
|
+
}
|
|
26
|
+
if (typeof size === "number") {
|
|
27
|
+
return rem(size);
|
|
28
|
+
}
|
|
29
|
+
const numeric = px(size);
|
|
30
|
+
return Number.isFinite(numeric) ? rem(numeric) : size;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { SPINNER_DEFAULT_SIZE, SPINNER_SIZE_VALUES, getSpinnerSizeCssValue, getSpinnerSizeValue };
|
|
34
|
+
//# sourceMappingURL=spinner-size.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-size.mjs","sources":["../../src/spinner-size.ts"],"sourcesContent":["import { MantineSize, px, rem } from '@mantine/core';\n\nexport const SPINNER_SIZE_VALUES: Record<string, number> = {\n xl: 58,\n lg: 44,\n md: 36,\n sm: 22,\n xs: 18,\n};\n\nexport const SPINNER_DEFAULT_SIZE: MantineSize = 'md';\n\n/**\n * Resolves a `size` value to a number of CSS pixels for SVG geometry.\n *\n * `MantineSize` keys (`xs`–`xl`) map to the predefined scale. Numeric and\n * pixel-convertible strings (`'2rem'`, `'40px'`) are converted via `px()`.\n * Values that cannot be converted (percentages, viewport units, anything\n * `px()` returns `NaN` for) fall back to the default size — geometry stays\n * valid while CSS scaling continues to honor the original value.\n */\nexport function getSpinnerSizeValue(size: MantineSize | (string & {}) | number): number {\n if (typeof size === 'string' && size in SPINNER_SIZE_VALUES) {\n return SPINNER_SIZE_VALUES[size];\n }\n const numeric = px(size) as number;\n return Number.isFinite(numeric) ? numeric : SPINNER_SIZE_VALUES[SPINNER_DEFAULT_SIZE];\n}\n\n/**\n * Resolves a `size` value to a CSS-valid string for the `--spinner-size`\n * custom property. Mirrors `getSpinnerSizeValue` for keyword/numeric inputs\n * and passes through non-convertible strings (percentages, viewport units)\n * unchanged so CSS keeps the original semantics.\n */\nexport function getSpinnerSizeCssValue(\n size: MantineSize | (string & {}) | number | undefined\n): string | undefined {\n if (size === undefined) {\n return undefined;\n }\n if (typeof size === 'string' && size in SPINNER_SIZE_VALUES) {\n return rem(SPINNER_SIZE_VALUES[size]);\n }\n if (typeof size === 'number') {\n return rem(size);\n }\n const numeric = px(size) as number;\n return Number.isFinite(numeric) ? rem(numeric) : size;\n}\n"],"names":[],"mappings":";;;AACY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,mBAAmB,CAAA,CAAA,CAAG,CAAA;AACnC,CAAA,CAAE,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA;AACR,CAAA,CAAE,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA;AACR,CAAA,CAAE,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA;AACR,CAAA,CAAE,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA;AACR,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA,CAAA;AACN,CAAA,CAAA;AACY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,oBAAoB,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA;AAC1C,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,OAAO,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,QAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAE,CAAA;AAC/D,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA;AACpC,CAAA,CAAE,CAAA;AACF,CAAA,CAAE,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAE,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAC,oBAAoB,CAAC,CAAA;AACvF,CAAA;AACO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA;AAC7C,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA;AACvB,CAAA,CAAA,CAAA,CAAI,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA;AACjB,CAAA,CAAE,CAAA;AACF,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,OAAO,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,QAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAE,CAAA;AAC/D,CAAA,CAAA,CAAA,CAAI,OAAO,CAAA,CAAA,CAAG,CAAC,mBAAmB,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAC,CAAA;AACzC,CAAA,CAAE,CAAA;AACF,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAChC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA;AACpB,CAAA,CAAE,CAAA;AACF,CAAA,CAAE,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAE,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,GAAG,CAAA,CAAA,CAAA,CAAI,CAAA;AACvD,CAAA;;"}
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.me_50fcac36{--spinner-stroke-linecap:round;--spinner-timing-function:ease;--spinner-play-state:running;--spinner-min-opacity:0;--spinner-max-opacity:1;opacity:1;overflow:visible;transform:scale(1);transition:opacity .2s ease,transform .2s ease}@starting-style{.me_50fcac36{opacity:0;transform:scale(.85)}}@keyframes me_860c4504{0%{opacity:var(--spinner-min-opacity)}50%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_3c127e11{0%,to{opacity:var(--spinner-min-opacity);transform:scale(.6)}50%{opacity:var(--spinner-max-opacity);transform:scale(1.3)}}@keyframes me_860cfa9b{0%{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}50%{stroke-dashoffset:0;opacity:var(--spinner-max-opacity)}to{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}}@keyframes me_3c49547e{0%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_cae81458{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(1turn)}}.me_50f9db48{stroke-linecap:var(--spinner-stroke-linecap);animation-duration:var(--spinner-animation-duration,1s);animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:me_860c4504;animation-play-state:var(--spinner-play-state);animation-timing-function:var(--spinner-timing-function);opacity:var(--spinner-min-opacity);transform-origin:center}.me_50f9db48[data-variant=pulse]{animation-name:me_3c127e11}.me_50f9db48[data-variant=grow]{animation-name:me_860cfa9b}.me_50f9db48[data-variant=trail]{animation-name:me_3c49547e;animation-timing-function:linear}.me_50f9db48[data-progress]{animation:none}.me_50f9db48[data-reduced-motion]{animation:none;opacity:var(--spinner-max-opacity)}.me_50fcac36[data-hue-rotate]{animation:me_cae81458 4s linear infinite}.me_724258a5{overflow:visible}.me_d2eba649{display:inline-grid;place-items:center}.me_d2eba649>*{grid-area:1/1}.me_37a000d8{position:relative}.me_9175389a{align-items:center;backdrop-filter:var(--spinner-overlay-blur);-webkit-backdrop-filter:var(--spinner-overlay-blur);background:hsla(0,0%,100%,.75);display:flex;inset:0;justify-content:center;position:absolute;z-index:var(--spinner-overlay-z-index,400)}[data-mantine-color-scheme=dark] .me_9175389a{background:rgba(0,0,0,.75)}.me_9175389a{border-radius:inherit}
|
|
1
|
+
.me_50fcac36{--spinner-stroke-linecap:round;--spinner-timing-function:ease;--spinner-play-state:running;--spinner-min-opacity:0;--spinner-max-opacity:1;height:var(--spinner-size);opacity:1;overflow:visible;transform:scale(1);transition:opacity .2s ease,transform .2s ease;width:var(--spinner-size)}@starting-style{.me_50fcac36{opacity:0;transform:scale(.85)}}@keyframes me_860c4504{0%{opacity:var(--spinner-min-opacity)}50%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_3c127e11{0%,to{opacity:var(--spinner-min-opacity);transform:scale(.6)}50%{opacity:var(--spinner-max-opacity);transform:scale(1.3)}}@keyframes me_860cfa9b{0%{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}50%{stroke-dashoffset:0;opacity:var(--spinner-max-opacity)}to{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}}@keyframes me_3c49547e{0%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_cae81458{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(1turn)}}.me_50f9db48{stroke-linecap:var(--spinner-stroke-linecap);animation-duration:var(--spinner-animation-duration,1s);animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:me_860c4504;animation-play-state:var(--spinner-play-state);animation-timing-function:var(--spinner-timing-function);opacity:var(--spinner-min-opacity);transform-origin:center}.me_50f9db48[data-variant=pulse]{animation-name:me_3c127e11}.me_50f9db48[data-variant=grow]{animation-name:me_860cfa9b}.me_50f9db48[data-variant=trail]{animation-name:me_3c49547e;animation-timing-function:linear}.me_50f9db48[data-progress]{animation:none}.me_50f9db48[data-reduced-motion]{animation:none;opacity:var(--spinner-max-opacity)}.me_50fcac36[data-hue-rotate]{animation:me_cae81458 4s linear infinite}.me_724258a5{overflow:visible}.me_d2eba649{display:inline-grid;place-items:center}.me_d2eba649>*{grid-area:1/1}.me_37a000d8{position:relative}.me_9175389a{align-items:center;backdrop-filter:var(--spinner-overlay-blur);-webkit-backdrop-filter:var(--spinner-overlay-blur);background:hsla(0,0%,100%,.75);display:flex;inset:0;justify-content:center;position:absolute;z-index:var(--spinner-overlay-z-index,400)}[data-mantine-color-scheme=dark] .me_9175389a{background:rgba(0,0,0,.75)}.me_9175389a{border-radius:inherit}
|
package/dist/styles.layer.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer mantine-spinner {.me_50fcac36{--spinner-stroke-linecap:round;--spinner-timing-function:ease;--spinner-play-state:running;--spinner-min-opacity:0;--spinner-max-opacity:1;opacity:1;overflow:visible;transform:scale(1);transition:opacity .2s ease,transform .2s ease}@starting-style{.me_50fcac36{opacity:0;transform:scale(.85)}}@keyframes me_860c4504{0%{opacity:var(--spinner-min-opacity)}50%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_3c127e11{0%,to{opacity:var(--spinner-min-opacity);transform:scale(.6)}50%{opacity:var(--spinner-max-opacity);transform:scale(1.3)}}@keyframes me_860cfa9b{0%{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}50%{stroke-dashoffset:0;opacity:var(--spinner-max-opacity)}to{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}}@keyframes me_3c49547e{0%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_cae81458{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(1turn)}}.me_50f9db48{stroke-linecap:var(--spinner-stroke-linecap);animation-duration:var(--spinner-animation-duration,1s);animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:me_860c4504;animation-play-state:var(--spinner-play-state);animation-timing-function:var(--spinner-timing-function);opacity:var(--spinner-min-opacity);transform-origin:center}.me_50f9db48[data-variant=pulse]{animation-name:me_3c127e11}.me_50f9db48[data-variant=grow]{animation-name:me_860cfa9b}.me_50f9db48[data-variant=trail]{animation-name:me_3c49547e;animation-timing-function:linear}.me_50f9db48[data-progress]{animation:none}.me_50f9db48[data-reduced-motion]{animation:none;opacity:var(--spinner-max-opacity)}.me_50fcac36[data-hue-rotate]{animation:me_cae81458 4s linear infinite}.me_724258a5{overflow:visible}.me_d2eba649{display:inline-grid;place-items:center}.me_d2eba649>*{grid-area:1/1}.me_37a000d8{position:relative}.me_9175389a{align-items:center;backdrop-filter:var(--spinner-overlay-blur);-webkit-backdrop-filter:var(--spinner-overlay-blur);background:hsla(0,0%,100%,.75);display:flex;inset:0;justify-content:center;position:absolute;z-index:var(--spinner-overlay-z-index,400)}[data-mantine-color-scheme=dark] .me_9175389a{background:rgba(0,0,0,.75)}.me_9175389a{border-radius:inherit}}
|
|
1
|
+
@layer mantine-spinner {.me_50fcac36{--spinner-stroke-linecap:round;--spinner-timing-function:ease;--spinner-play-state:running;--spinner-min-opacity:0;--spinner-max-opacity:1;height:var(--spinner-size);opacity:1;overflow:visible;transform:scale(1);transition:opacity .2s ease,transform .2s ease;width:var(--spinner-size)}@starting-style{.me_50fcac36{opacity:0;transform:scale(.85)}}@keyframes me_860c4504{0%{opacity:var(--spinner-min-opacity)}50%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_3c127e11{0%,to{opacity:var(--spinner-min-opacity);transform:scale(.6)}50%{opacity:var(--spinner-max-opacity);transform:scale(1.3)}}@keyframes me_860cfa9b{0%{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}50%{stroke-dashoffset:0;opacity:var(--spinner-max-opacity)}to{stroke-dashoffset:100%;opacity:var(--spinner-min-opacity)}}@keyframes me_3c49547e{0%{opacity:var(--spinner-max-opacity)}to{opacity:var(--spinner-min-opacity)}}@keyframes me_cae81458{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(1turn)}}.me_50f9db48{stroke-linecap:var(--spinner-stroke-linecap);animation-duration:var(--spinner-animation-duration,1s);animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:me_860c4504;animation-play-state:var(--spinner-play-state);animation-timing-function:var(--spinner-timing-function);opacity:var(--spinner-min-opacity);transform-origin:center}.me_50f9db48[data-variant=pulse]{animation-name:me_3c127e11}.me_50f9db48[data-variant=grow]{animation-name:me_860cfa9b}.me_50f9db48[data-variant=trail]{animation-name:me_3c49547e;animation-timing-function:linear}.me_50f9db48[data-progress]{animation:none}.me_50f9db48[data-reduced-motion]{animation:none;opacity:var(--spinner-max-opacity)}.me_50fcac36[data-hue-rotate]{animation:me_cae81458 4s linear infinite}.me_724258a5{overflow:visible}.me_d2eba649{display:inline-grid;place-items:center}.me_d2eba649>*{grid-area:1/1}.me_37a000d8{position:relative}.me_9175389a{align-items:center;backdrop-filter:var(--spinner-overlay-blur);-webkit-backdrop-filter:var(--spinner-overlay-blur);background:hsla(0,0%,100%,.75);display:flex;inset:0;justify-content:center;position:absolute;z-index:var(--spinner-overlay-z-index,400)}[data-mantine-color-scheme=dark] .me_9175389a{background:rgba(0,0,0,.75)}.me_9175389a{border-radius:inherit}}
|
package/dist/types/Spinner.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { BoxProps, Factory, MantineColor, MantineSize, StylesApiProps } from '@mantine/core';
|
|
2
|
+
import { BoxProps, Factory, MantineColor, MantineSize, StyleProp, StylesApiProps } from '@mantine/core';
|
|
3
3
|
import type { SpinnerGroup } from './SpinnerGroup';
|
|
4
4
|
import type { SpinnerOverlay } from './SpinnerOverlay';
|
|
5
5
|
export type SpinnerDirection = 'clockwise' | 'counter-clockwise';
|
|
@@ -7,7 +7,7 @@ export type SpinnerVariant = 'fade' | 'pulse' | 'grow' | 'trail';
|
|
|
7
7
|
export type SpinnerSegmentShape = 'line' | 'dot' | 'arc';
|
|
8
8
|
export type SpinnerStylesNames = 'root' | 'line' | 'content';
|
|
9
9
|
export type SpinnerCssVariables = {
|
|
10
|
-
root: '--spinner-animation-duration' | '--spinner-stroke-linecap' | '--spinner-timing-function' | '--spinner-play-state' | '--spinner-min-opacity' | '--spinner-max-opacity';
|
|
10
|
+
root: '--spinner-size' | '--spinner-animation-duration' | '--spinner-stroke-linecap' | '--spinner-timing-function' | '--spinner-play-state' | '--spinner-min-opacity' | '--spinner-max-opacity';
|
|
11
11
|
};
|
|
12
12
|
export interface SpinnerGradient {
|
|
13
13
|
/** Start color of the gradient */
|
|
@@ -16,8 +16,15 @@ export interface SpinnerGradient {
|
|
|
16
16
|
to: MantineColor;
|
|
17
17
|
}
|
|
18
18
|
export interface SpinnerBaseProps {
|
|
19
|
-
/**
|
|
20
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Controls `width` and `height` of the spinner. `Spinner` has predefined `xs`-`xl` values.
|
|
21
|
+
* Numbers are converted to rem. Default value is `'md'`.
|
|
22
|
+
*
|
|
23
|
+
* Supports responsive breakpoint objects like `{ base: 'sm', md: 'lg' }` — the spinner
|
|
24
|
+
* resizes via CSS media queries with no React re-renders. Internal SVG geometry is
|
|
25
|
+
* computed at the base value, and the CSS scaling preserves visual proportions.
|
|
26
|
+
*/
|
|
27
|
+
size?: StyleProp<MantineSize | (string & {}) | number>;
|
|
21
28
|
/** Controls size of inner part of the spinner, number is converted to rem. Default value is `8` */
|
|
22
29
|
inner?: MantineSize | (string & {}) | number;
|
|
23
30
|
/** Number of spinner segments. Default value is `12` */
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { MantineSize, type StyleProp } from '@mantine/core';
|
|
3
|
+
interface SpinnerMediaVariablesProps {
|
|
4
|
+
size: StyleProp<MantineSize | (string & {}) | number>;
|
|
5
|
+
selector: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function SpinnerMediaVariables({ size, selector }: SpinnerMediaVariablesProps): React.JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MantineSize } from '@mantine/core';
|
|
2
|
+
export declare const SPINNER_SIZE_VALUES: Record<string, number>;
|
|
3
|
+
export declare const SPINNER_DEFAULT_SIZE: MantineSize;
|
|
4
|
+
/**
|
|
5
|
+
* Resolves a `size` value to a number of CSS pixels for SVG geometry.
|
|
6
|
+
*
|
|
7
|
+
* `MantineSize` keys (`xs`–`xl`) map to the predefined scale. Numeric and
|
|
8
|
+
* pixel-convertible strings (`'2rem'`, `'40px'`) are converted via `px()`.
|
|
9
|
+
* Values that cannot be converted (percentages, viewport units, anything
|
|
10
|
+
* `px()` returns `NaN` for) fall back to the default size — geometry stays
|
|
11
|
+
* valid while CSS scaling continues to honor the original value.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getSpinnerSizeValue(size: MantineSize | (string & {}) | number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves a `size` value to a CSS-valid string for the `--spinner-size`
|
|
16
|
+
* custom property. Mirrors `getSpinnerSizeValue` for keyword/numeric inputs
|
|
17
|
+
* and passes through non-convertible strings (percentages, viewport units)
|
|
18
|
+
* unchanged so CSS keeps the original semantics.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getSpinnerSizeCssValue(size: MantineSize | (string & {}) | number | undefined): string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gfazioli/mantine-spinner",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "A Mantine React component with SVG-based loading spinners featuring multiple animation variants, segment shapes, gradient colors, glow effects, progress mode, and compound components.",
|
|
5
5
|
"homepage": "https://gfazioli.github.io/mantine-spinner/",
|
|
6
6
|
"packageManager": "yarn@4.0.1",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"loading",
|
|
17
17
|
"mantine",
|
|
18
18
|
"mantine-ui",
|
|
19
|
-
"mantine-
|
|
19
|
+
"mantine-v9",
|
|
20
20
|
"progress",
|
|
21
21
|
"react",
|
|
22
22
|
"react-component",
|