premium-react-loaders 1.1.0 → 1.3.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 +55 -6
- package/dist/components/overlay/LoaderOverlay.d.ts.map +1 -1
- package/dist/components/progress/ProgressBar.d.ts.map +1 -1
- package/dist/components/progress/ProgressCircle.d.ts.map +1 -1
- package/dist/components/progress/ProgressRing.d.ts.map +1 -1
- package/dist/components/progress/ProgressSteps.d.ts.map +1 -1
- package/dist/components/pulse/PulseBars.d.ts +2 -2
- package/dist/components/pulse/PulseBars.d.ts.map +1 -1
- package/dist/components/pulse/PulseDots.d.ts +2 -2
- package/dist/components/pulse/PulseDots.d.ts.map +1 -1
- package/dist/components/pulse/PulseWave.d.ts +2 -2
- package/dist/components/pulse/PulseWave.d.ts.map +1 -1
- package/dist/components/pulse/TypingIndicator.d.ts.map +1 -1
- package/dist/components/skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonAvatar.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonCard.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonForm.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonImage.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonList.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonPage.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonTable.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonText.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerBars.d.ts +2 -2
- package/dist/components/spinner/SpinnerBars.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerCircle.d.ts +2 -1
- package/dist/components/spinner/SpinnerCircle.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerDots.d.ts +2 -2
- package/dist/components/spinner/SpinnerDots.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerGrid.d.ts +2 -2
- package/dist/components/spinner/SpinnerGrid.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerPulse.d.ts +3 -3
- package/dist/components/spinner/SpinnerPulse.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerRing.d.ts +3 -3
- package/dist/components/spinner/SpinnerRing.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerWave.d.ts +3 -3
- package/dist/components/spinner/SpinnerWave.d.ts.map +1 -1
- package/dist/index10.cjs +14 -2
- package/dist/index10.cjs.map +1 -1
- package/dist/index10.js +14 -2
- package/dist/index10.js.map +1 -1
- package/dist/index11.cjs +16 -2
- package/dist/index11.cjs.map +1 -1
- package/dist/index11.js +16 -2
- package/dist/index11.js.map +1 -1
- package/dist/index12.cjs +16 -2
- package/dist/index12.cjs.map +1 -1
- package/dist/index12.js +16 -2
- package/dist/index12.js.map +1 -1
- package/dist/index13.cjs +12 -2
- package/dist/index13.cjs.map +1 -1
- package/dist/index13.js +12 -2
- package/dist/index13.js.map +1 -1
- package/dist/index14.cjs +24 -5
- package/dist/index14.cjs.map +1 -1
- package/dist/index14.js +24 -5
- package/dist/index14.js.map +1 -1
- package/dist/index15.cjs +23 -4
- package/dist/index15.cjs.map +1 -1
- package/dist/index15.js +24 -5
- package/dist/index15.js.map +1 -1
- package/dist/index16.cjs +23 -4
- package/dist/index16.cjs.map +1 -1
- package/dist/index16.js +24 -5
- package/dist/index16.js.map +1 -1
- package/dist/index17.cjs +21 -6
- package/dist/index17.cjs.map +1 -1
- package/dist/index17.js +22 -7
- package/dist/index17.js.map +1 -1
- package/dist/index18.cjs +25 -7
- package/dist/index18.cjs.map +1 -1
- package/dist/index18.js +26 -8
- package/dist/index18.js.map +1 -1
- package/dist/index19.cjs +24 -6
- package/dist/index19.cjs.map +1 -1
- package/dist/index19.js +25 -7
- package/dist/index19.js.map +1 -1
- package/dist/index20.cjs +24 -6
- package/dist/index20.cjs.map +1 -1
- package/dist/index20.js +25 -7
- package/dist/index20.js.map +1 -1
- package/dist/index21.cjs +21 -5
- package/dist/index21.cjs.map +1 -1
- package/dist/index21.js +22 -6
- package/dist/index21.js.map +1 -1
- package/dist/index22.cjs +24 -6
- package/dist/index22.cjs.map +1 -1
- package/dist/index22.js +25 -7
- package/dist/index22.js.map +1 -1
- package/dist/index23.cjs +25 -7
- package/dist/index23.cjs.map +1 -1
- package/dist/index23.js +26 -8
- package/dist/index23.js.map +1 -1
- package/dist/index24.cjs +16 -2
- package/dist/index24.cjs.map +1 -1
- package/dist/index24.js +16 -2
- package/dist/index24.js.map +1 -1
- package/dist/index25.cjs +21 -6
- package/dist/index25.cjs.map +1 -1
- package/dist/index25.js +22 -7
- package/dist/index25.js.map +1 -1
- package/dist/index26.cjs +22 -7
- package/dist/index26.cjs.map +1 -1
- package/dist/index26.js +23 -8
- package/dist/index26.js.map +1 -1
- package/dist/index27.cjs +23 -7
- package/dist/index27.cjs.map +1 -1
- package/dist/index27.js +24 -8
- package/dist/index27.js.map +1 -1
- package/dist/index28.cjs +20 -5
- package/dist/index28.cjs.map +1 -1
- package/dist/index28.js +21 -6
- package/dist/index28.js.map +1 -1
- package/dist/index29.cjs +14 -2
- package/dist/index29.cjs.map +1 -1
- package/dist/index29.js +14 -2
- package/dist/index29.js.map +1 -1
- package/dist/index31.cjs +126 -0
- package/dist/index31.cjs.map +1 -0
- package/dist/index31.js +126 -0
- package/dist/index31.js.map +1 -0
- package/dist/index4.cjs +10 -0
- package/dist/index4.cjs.map +1 -1
- package/dist/index4.js +10 -0
- package/dist/index4.js.map +1 -1
- package/dist/index5.cjs +14 -2
- package/dist/index5.cjs.map +1 -1
- package/dist/index5.js +14 -2
- package/dist/index5.js.map +1 -1
- package/dist/index6.cjs +14 -2
- package/dist/index6.cjs.map +1 -1
- package/dist/index6.js +14 -2
- package/dist/index6.js.map +1 -1
- package/dist/index7.cjs +16 -2
- package/dist/index7.cjs.map +1 -1
- package/dist/index7.js +16 -2
- package/dist/index7.js.map +1 -1
- package/dist/index8.cjs +14 -2
- package/dist/index8.cjs.map +1 -1
- package/dist/index8.js +14 -2
- package/dist/index8.js.map +1 -1
- package/dist/index9.cjs +16 -2
- package/dist/index9.cjs.map +1 -1
- package/dist/index9.js +16 -2
- package/dist/index9.js.map +1 -1
- package/dist/premium-react-loaders.css +405 -6
- package/dist/types/common.d.ts +20 -2
- package/dist/types/common.d.ts.map +1 -1
- package/dist/utils/colors.d.ts +2 -1
- package/dist/utils/colors.d.ts.map +1 -1
- package/dist/utils/hooks.d.ts +19 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index5.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const react = require("react");
|
|
5
|
+
const hooks = require("./index31.cjs");
|
|
5
6
|
const colors = require("./index4.cjs");
|
|
6
7
|
const classNames = require("./index3.cjs");
|
|
7
8
|
const Skeleton = react.forwardRef(
|
|
@@ -13,13 +14,22 @@ const Skeleton = react.forwardRef(
|
|
|
13
14
|
animate = true,
|
|
14
15
|
baseColor = "#e0e0e0",
|
|
15
16
|
highlightColor = "#f5f5f5",
|
|
17
|
+
delay = 0,
|
|
18
|
+
minDuration = 0,
|
|
19
|
+
transition,
|
|
16
20
|
className,
|
|
17
21
|
style,
|
|
18
22
|
testId = "skeleton",
|
|
19
23
|
visible = true,
|
|
20
24
|
...rest
|
|
21
25
|
}, ref) => {
|
|
22
|
-
|
|
26
|
+
const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
|
|
27
|
+
visible,
|
|
28
|
+
delay,
|
|
29
|
+
minDuration,
|
|
30
|
+
transition
|
|
31
|
+
);
|
|
32
|
+
if (!shouldRender) return null;
|
|
23
33
|
const getBorderRadius = () => {
|
|
24
34
|
if (borderRadius !== void 0) return colors.normalizeSize(borderRadius);
|
|
25
35
|
switch (variant) {
|
|
@@ -50,7 +60,9 @@ const Skeleton = react.forwardRef(
|
|
|
50
60
|
borderRadius: getBorderRadius(),
|
|
51
61
|
backgroundColor: baseColor,
|
|
52
62
|
"--skeleton-highlight-color": highlightColor,
|
|
53
|
-
...style
|
|
63
|
+
...style,
|
|
64
|
+
opacity,
|
|
65
|
+
transition: transitionStyle
|
|
54
66
|
},
|
|
55
67
|
role: "status",
|
|
56
68
|
"aria-label": "Loading...",
|
package/dist/index5.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index5.cjs","sources":["../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { SkeletonProps } from '../../types';\nimport { cn, normalizeSize } from '../../utils';\n\n/**\n * Skeleton - Base skeleton loader component\n *\n * A versatile skeleton loader that can be used standalone or as a building block for more complex loaders.\n *\n * @example\n * ```tsx\n * <Skeleton width={200} height={20} />\n * <Skeleton variant=\"circular\" width={40} height={40} />\n * ```\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n width = '100%',\n height = '1rem',\n borderRadius,\n variant = 'text',\n animate = true,\n baseColor = '#e0e0e0',\n highlightColor = '#f5f5f5',\n className,\n style,\n testId = 'skeleton',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index5.cjs","sources":["../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { SkeletonProps } from '../../types';\nimport { cn, normalizeSize, useLoaderVisibility } from '../../utils';\n\n/**\n * Skeleton - Base skeleton loader component\n *\n * A versatile skeleton loader that can be used standalone or as a building block for more complex loaders.\n *\n * @example\n * ```tsx\n * <Skeleton width={200} height={20} />\n * <Skeleton variant=\"circular\" width={40} height={40} />\n * ```\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n width = '100%',\n height = '1rem',\n borderRadius,\n variant = 'text',\n animate = true,\n baseColor = '#e0e0e0',\n highlightColor = '#f5f5f5',\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n const getBorderRadius = () => {\n if (borderRadius !== undefined) return normalizeSize(borderRadius);\n\n switch (variant) {\n case 'circular':\n return '50%';\n case 'rounded':\n return '0.5rem';\n case 'text':\n return '0.25rem';\n case 'rectangular':\n default:\n return '0';\n }\n };\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn(\n 'skeleton',\n animate && 'skeleton-animate',\n className\n )}\n style={{\n width: normalizeSize(width),\n height: normalizeSize(height),\n borderRadius: getBorderRadius(),\n backgroundColor: baseColor,\n '--skeleton-highlight-color': highlightColor,\n ...style,\n opacity,\n transition: transitionStyle,\n } as React.CSSProperties}\n role=\"status\"\n aria-label=\"Loading...\"\n aria-busy=\"true\"\n {...rest}\n />\n );\n }\n);\n\nSkeleton.displayName = 'Skeleton';\n"],"names":["forwardRef","useLoaderVisibility","normalizeSize","jsx","cn"],"mappings":";;;;;;;AAeO,MAAM,WAAWA,MAAAA;AAAAA,EACtB,CACE;AAAA,IACE,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,UAAM,kBAAkB,MAAM;AAC5B,UAAI,iBAAiB,OAAW,QAAOC,OAAAA,cAAc,YAAY;AAEjE,cAAQ,SAAA;AAAA,QACN,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,MAAA;AAAA,IAEb;AAEA,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA;AAAAA,UACT;AAAA,UACA,WAAW;AAAA,UACX;AAAA,QAAA;AAAA,QAEF,OAAO;AAAA,UACL,OAAOF,OAAAA,cAAc,KAAK;AAAA,UAC1B,QAAQA,OAAAA,cAAc,MAAM;AAAA,UAC5B,cAAc,gBAAA;AAAA,UACd,iBAAiB;AAAA,UACjB,8BAA8B;AAAA,UAC9B,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,SAAS,cAAc;;"}
|
package/dist/index5.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
|
+
import { useLoaderVisibility } from "./index31.js";
|
|
3
4
|
import { normalizeSize } from "./index4.js";
|
|
4
5
|
import { cn } from "./index3.js";
|
|
5
6
|
const Skeleton = forwardRef(
|
|
@@ -11,13 +12,22 @@ const Skeleton = forwardRef(
|
|
|
11
12
|
animate = true,
|
|
12
13
|
baseColor = "#e0e0e0",
|
|
13
14
|
highlightColor = "#f5f5f5",
|
|
15
|
+
delay = 0,
|
|
16
|
+
minDuration = 0,
|
|
17
|
+
transition,
|
|
14
18
|
className,
|
|
15
19
|
style,
|
|
16
20
|
testId = "skeleton",
|
|
17
21
|
visible = true,
|
|
18
22
|
...rest
|
|
19
23
|
}, ref) => {
|
|
20
|
-
|
|
24
|
+
const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
|
|
25
|
+
visible,
|
|
26
|
+
delay,
|
|
27
|
+
minDuration,
|
|
28
|
+
transition
|
|
29
|
+
);
|
|
30
|
+
if (!shouldRender) return null;
|
|
21
31
|
const getBorderRadius = () => {
|
|
22
32
|
if (borderRadius !== void 0) return normalizeSize(borderRadius);
|
|
23
33
|
switch (variant) {
|
|
@@ -48,7 +58,9 @@ const Skeleton = forwardRef(
|
|
|
48
58
|
borderRadius: getBorderRadius(),
|
|
49
59
|
backgroundColor: baseColor,
|
|
50
60
|
"--skeleton-highlight-color": highlightColor,
|
|
51
|
-
...style
|
|
61
|
+
...style,
|
|
62
|
+
opacity,
|
|
63
|
+
transition: transitionStyle
|
|
52
64
|
},
|
|
53
65
|
role: "status",
|
|
54
66
|
"aria-label": "Loading...",
|
package/dist/index5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index5.js","sources":["../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { SkeletonProps } from '../../types';\nimport { cn, normalizeSize } from '../../utils';\n\n/**\n * Skeleton - Base skeleton loader component\n *\n * A versatile skeleton loader that can be used standalone or as a building block for more complex loaders.\n *\n * @example\n * ```tsx\n * <Skeleton width={200} height={20} />\n * <Skeleton variant=\"circular\" width={40} height={40} />\n * ```\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n width = '100%',\n height = '1rem',\n borderRadius,\n variant = 'text',\n animate = true,\n baseColor = '#e0e0e0',\n highlightColor = '#f5f5f5',\n className,\n style,\n testId = 'skeleton',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index5.js","sources":["../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { SkeletonProps } from '../../types';\nimport { cn, normalizeSize, useLoaderVisibility } from '../../utils';\n\n/**\n * Skeleton - Base skeleton loader component\n *\n * A versatile skeleton loader that can be used standalone or as a building block for more complex loaders.\n *\n * @example\n * ```tsx\n * <Skeleton width={200} height={20} />\n * <Skeleton variant=\"circular\" width={40} height={40} />\n * ```\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n width = '100%',\n height = '1rem',\n borderRadius,\n variant = 'text',\n animate = true,\n baseColor = '#e0e0e0',\n highlightColor = '#f5f5f5',\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n const getBorderRadius = () => {\n if (borderRadius !== undefined) return normalizeSize(borderRadius);\n\n switch (variant) {\n case 'circular':\n return '50%';\n case 'rounded':\n return '0.5rem';\n case 'text':\n return '0.25rem';\n case 'rectangular':\n default:\n return '0';\n }\n };\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn(\n 'skeleton',\n animate && 'skeleton-animate',\n className\n )}\n style={{\n width: normalizeSize(width),\n height: normalizeSize(height),\n borderRadius: getBorderRadius(),\n backgroundColor: baseColor,\n '--skeleton-highlight-color': highlightColor,\n ...style,\n opacity,\n transition: transitionStyle,\n } as React.CSSProperties}\n role=\"status\"\n aria-label=\"Loading...\"\n aria-busy=\"true\"\n {...rest}\n />\n );\n }\n);\n\nSkeleton.displayName = 'Skeleton';\n"],"names":[],"mappings":";;;;;AAeO,MAAM,WAAW;AAAA,EACtB,CACE;AAAA,IACE,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,UAAM,kBAAkB,MAAM;AAC5B,UAAI,iBAAiB,OAAW,QAAO,cAAc,YAAY;AAEjE,cAAQ,SAAA;AAAA,QACN,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,MAAA;AAAA,IAEb;AAEA,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW;AAAA,UACT;AAAA,UACA,WAAW;AAAA,UACX;AAAA,QAAA;AAAA,QAEF,OAAO;AAAA,UACL,OAAO,cAAc,KAAK;AAAA,UAC1B,QAAQ,cAAc,MAAM;AAAA,UAC5B,cAAc,gBAAA;AAAA,UACd,iBAAiB;AAAA,UACjB,8BAA8B;AAAA,UAC9B,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,SAAS,cAAc;"}
|
package/dist/index6.cjs
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const react = require("react");
|
|
5
5
|
const Skeleton = require("./index5.cjs");
|
|
6
|
+
const hooks = require("./index31.cjs");
|
|
6
7
|
const colors = require("./index4.cjs");
|
|
7
8
|
const classNames = require("./index3.cjs");
|
|
8
9
|
const SkeletonText = react.forwardRef(
|
|
@@ -15,13 +16,22 @@ const SkeletonText = react.forwardRef(
|
|
|
15
16
|
animate = true,
|
|
16
17
|
baseColor,
|
|
17
18
|
highlightColor,
|
|
19
|
+
delay = 0,
|
|
20
|
+
minDuration = 0,
|
|
21
|
+
transition,
|
|
18
22
|
className,
|
|
19
23
|
style,
|
|
20
24
|
testId = "skeleton-text",
|
|
21
25
|
visible = true,
|
|
22
26
|
...rest
|
|
23
27
|
}, ref) => {
|
|
24
|
-
|
|
28
|
+
const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
|
|
29
|
+
visible,
|
|
30
|
+
delay,
|
|
31
|
+
minDuration,
|
|
32
|
+
transition
|
|
33
|
+
);
|
|
34
|
+
if (!shouldRender) return null;
|
|
25
35
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26
36
|
"div",
|
|
27
37
|
{
|
|
@@ -30,7 +40,9 @@ const SkeletonText = react.forwardRef(
|
|
|
30
40
|
className: classNames.cn("flex flex-col", className),
|
|
31
41
|
style: {
|
|
32
42
|
gap: colors.normalizeSize(gap),
|
|
33
|
-
...style
|
|
43
|
+
...style,
|
|
44
|
+
opacity,
|
|
45
|
+
transition: transitionStyle
|
|
34
46
|
},
|
|
35
47
|
role: "status",
|
|
36
48
|
"aria-label": "Loading text...",
|
package/dist/index6.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index6.cjs","sources":["../src/components/skeleton/SkeletonText.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTextProps } from '../../types';\nimport { cn, normalizeSize } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonText - Multi-line text skeleton loader\n *\n * Renders multiple skeleton lines to mimic text content while loading.\n *\n * @example\n * ```tsx\n * <SkeletonText lines={3} />\n * <SkeletonText lines={5} gap={8} lastLineWidth=\"60%\" />\n * ```\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n lines = 3,\n width = '100%',\n height = '1rem',\n gap = '0.5rem',\n lastLineWidth = '80%',\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-text',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index6.cjs","sources":["../src/components/skeleton/SkeletonText.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTextProps } from '../../types';\nimport { cn, normalizeSize, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonText - Multi-line text skeleton loader\n *\n * Renders multiple skeleton lines to mimic text content while loading.\n *\n * @example\n * ```tsx\n * <SkeletonText lines={3} />\n * <SkeletonText lines={5} gap={8} lastLineWidth=\"60%\" />\n * ```\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n lines = 3,\n width = '100%',\n height = '1rem',\n gap = '0.5rem',\n lastLineWidth = '80%',\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-text',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col', className)}\n style={{\n gap: normalizeSize(gap),\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading text...\"\n aria-busy=\"true\"\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => {\n // Last line uses custom width or default (80%)\n const lineWidth = index === lines - 1 ? lastLineWidth : width;\n\n return (\n <Skeleton\n key={index}\n width={lineWidth}\n height={height}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n variant=\"text\"\n />\n );\n })}\n </div>\n );\n }\n);\n\nSkeletonText.displayName = 'SkeletonText';\n"],"names":["forwardRef","useLoaderVisibility","jsx","cn","normalizeSize","Skeleton"],"mappings":";;;;;;;;AAgBO,MAAM,eAAeA,MAAAA;AAAAA,EAC1B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAO;AAAA,UACL,KAAKC,OAAAA,cAAc,GAAG;AAAA,UACtB,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,MAAA,CAAO,EAAE,IAAI,CAAC,GAAG,UAAU;AAE/C,gBAAM,YAAY,UAAU,QAAQ,IAAI,gBAAgB;AAExD,iBACEF,2BAAAA;AAAAA,YAACG,SAAAA;AAAAA,YAAA;AAAA,cAEC,OAAO;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,SAAQ;AAAA,YAAA;AAAA,YANH;AAAA,UAAA;AAAA,QASX,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;;"}
|
package/dist/index6.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import { Skeleton } from "./index5.js";
|
|
4
|
+
import { useLoaderVisibility } from "./index31.js";
|
|
4
5
|
import { normalizeSize } from "./index4.js";
|
|
5
6
|
import { cn } from "./index3.js";
|
|
6
7
|
const SkeletonText = forwardRef(
|
|
@@ -13,13 +14,22 @@ const SkeletonText = forwardRef(
|
|
|
13
14
|
animate = true,
|
|
14
15
|
baseColor,
|
|
15
16
|
highlightColor,
|
|
17
|
+
delay = 0,
|
|
18
|
+
minDuration = 0,
|
|
19
|
+
transition,
|
|
16
20
|
className,
|
|
17
21
|
style,
|
|
18
22
|
testId = "skeleton-text",
|
|
19
23
|
visible = true,
|
|
20
24
|
...rest
|
|
21
25
|
}, ref) => {
|
|
22
|
-
|
|
26
|
+
const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
|
|
27
|
+
visible,
|
|
28
|
+
delay,
|
|
29
|
+
minDuration,
|
|
30
|
+
transition
|
|
31
|
+
);
|
|
32
|
+
if (!shouldRender) return null;
|
|
23
33
|
return /* @__PURE__ */ jsx(
|
|
24
34
|
"div",
|
|
25
35
|
{
|
|
@@ -28,7 +38,9 @@ const SkeletonText = forwardRef(
|
|
|
28
38
|
className: cn("flex flex-col", className),
|
|
29
39
|
style: {
|
|
30
40
|
gap: normalizeSize(gap),
|
|
31
|
-
...style
|
|
41
|
+
...style,
|
|
42
|
+
opacity,
|
|
43
|
+
transition: transitionStyle
|
|
32
44
|
},
|
|
33
45
|
role: "status",
|
|
34
46
|
"aria-label": "Loading text...",
|
package/dist/index6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index6.js","sources":["../src/components/skeleton/SkeletonText.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTextProps } from '../../types';\nimport { cn, normalizeSize } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonText - Multi-line text skeleton loader\n *\n * Renders multiple skeleton lines to mimic text content while loading.\n *\n * @example\n * ```tsx\n * <SkeletonText lines={3} />\n * <SkeletonText lines={5} gap={8} lastLineWidth=\"60%\" />\n * ```\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n lines = 3,\n width = '100%',\n height = '1rem',\n gap = '0.5rem',\n lastLineWidth = '80%',\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-text',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index6.js","sources":["../src/components/skeleton/SkeletonText.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTextProps } from '../../types';\nimport { cn, normalizeSize, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonText - Multi-line text skeleton loader\n *\n * Renders multiple skeleton lines to mimic text content while loading.\n *\n * @example\n * ```tsx\n * <SkeletonText lines={3} />\n * <SkeletonText lines={5} gap={8} lastLineWidth=\"60%\" />\n * ```\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n lines = 3,\n width = '100%',\n height = '1rem',\n gap = '0.5rem',\n lastLineWidth = '80%',\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-text',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col', className)}\n style={{\n gap: normalizeSize(gap),\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading text...\"\n aria-busy=\"true\"\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => {\n // Last line uses custom width or default (80%)\n const lineWidth = index === lines - 1 ? lastLineWidth : width;\n\n return (\n <Skeleton\n key={index}\n width={lineWidth}\n height={height}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n variant=\"text\"\n />\n );\n })}\n </div>\n );\n }\n);\n\nSkeletonText.displayName = 'SkeletonText';\n"],"names":[],"mappings":";;;;;;AAgBO,MAAM,eAAe;AAAA,EAC1B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAO;AAAA,UACL,KAAK,cAAc,GAAG;AAAA,UACtB,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,MAAA,CAAO,EAAE,IAAI,CAAC,GAAG,UAAU;AAE/C,gBAAM,YAAY,UAAU,QAAQ,IAAI,gBAAgB;AAExD,iBACE;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,OAAO;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,SAAQ;AAAA,YAAA;AAAA,YANH;AAAA,UAAA;AAAA,QASX,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;"}
|
package/dist/index7.cjs
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const react = require("react");
|
|
5
5
|
const Skeleton = require("./index5.cjs");
|
|
6
|
+
const hooks = require("./index31.cjs");
|
|
6
7
|
const colors = require("./index4.cjs");
|
|
7
8
|
const SkeletonAvatar = react.forwardRef(
|
|
8
9
|
({
|
|
@@ -11,13 +12,22 @@ const SkeletonAvatar = react.forwardRef(
|
|
|
11
12
|
animate = true,
|
|
12
13
|
baseColor,
|
|
13
14
|
highlightColor,
|
|
15
|
+
delay = 0,
|
|
16
|
+
minDuration = 0,
|
|
17
|
+
transition,
|
|
14
18
|
className,
|
|
15
19
|
style,
|
|
16
20
|
testId = "skeleton-avatar",
|
|
17
21
|
visible = true,
|
|
18
22
|
...rest
|
|
19
23
|
}, ref) => {
|
|
20
|
-
|
|
24
|
+
const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
|
|
25
|
+
visible,
|
|
26
|
+
delay,
|
|
27
|
+
minDuration,
|
|
28
|
+
transition
|
|
29
|
+
);
|
|
30
|
+
if (!shouldRender) return null;
|
|
21
31
|
const sizeValue = colors.normalizeSize(size);
|
|
22
32
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
23
33
|
Skeleton.Skeleton,
|
|
@@ -31,7 +41,11 @@ const SkeletonAvatar = react.forwardRef(
|
|
|
31
41
|
baseColor,
|
|
32
42
|
highlightColor,
|
|
33
43
|
className,
|
|
34
|
-
style
|
|
44
|
+
style: {
|
|
45
|
+
...style,
|
|
46
|
+
opacity,
|
|
47
|
+
transition: transitionStyle
|
|
48
|
+
},
|
|
35
49
|
"aria-label": "Loading avatar...",
|
|
36
50
|
...rest
|
|
37
51
|
}
|
package/dist/index7.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index7.cjs","sources":["../src/components/skeleton/SkeletonAvatar.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonAvatarProps } from '../../types';\nimport { normalizeSize } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonAvatar - Avatar skeleton loader\n *\n * A skeleton loader for avatar placeholders with circle or square shapes.\n *\n * @example\n * ```tsx\n * <SkeletonAvatar size={40} />\n * <SkeletonAvatar size={64} shape=\"square\" />\n * ```\n */\nexport const SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n (\n {\n size = 40,\n shape = 'circle',\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-avatar',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index7.cjs","sources":["../src/components/skeleton/SkeletonAvatar.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonAvatarProps } from '../../types';\nimport { normalizeSize, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonAvatar - Avatar skeleton loader\n *\n * A skeleton loader for avatar placeholders with circle or square shapes.\n *\n * @example\n * ```tsx\n * <SkeletonAvatar size={40} />\n * <SkeletonAvatar size={64} shape=\"square\" />\n * ```\n */\nexport const SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n (\n {\n size = 40,\n shape = 'circle',\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-avatar',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n const sizeValue = normalizeSize(size);\n\n return (\n <Skeleton\n ref={ref}\n data-testid={testId}\n width={sizeValue}\n height={sizeValue}\n variant={shape === 'circle' ? 'circular' : 'rounded'}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n className={className}\n style={{\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n aria-label=\"Loading avatar...\"\n {...rest}\n />\n );\n }\n);\n\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n"],"names":["forwardRef","useLoaderVisibility","normalizeSize","jsx","Skeleton"],"mappings":";;;;;;;AAgBO,MAAM,iBAAiBA,MAAAA;AAAAA,EAC5B,CACE;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,UAAM,YAAYC,OAAAA,cAAc,IAAI;AAEpC,WACEC,2BAAAA;AAAAA,MAACC,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS,UAAU,WAAW,aAAa;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,cAAW;AAAA,QACV,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,eAAe,cAAc;;"}
|
package/dist/index7.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import { Skeleton } from "./index5.js";
|
|
4
|
+
import { useLoaderVisibility } from "./index31.js";
|
|
4
5
|
import { normalizeSize } from "./index4.js";
|
|
5
6
|
const SkeletonAvatar = forwardRef(
|
|
6
7
|
({
|
|
@@ -9,13 +10,22 @@ const SkeletonAvatar = forwardRef(
|
|
|
9
10
|
animate = true,
|
|
10
11
|
baseColor,
|
|
11
12
|
highlightColor,
|
|
13
|
+
delay = 0,
|
|
14
|
+
minDuration = 0,
|
|
15
|
+
transition,
|
|
12
16
|
className,
|
|
13
17
|
style,
|
|
14
18
|
testId = "skeleton-avatar",
|
|
15
19
|
visible = true,
|
|
16
20
|
...rest
|
|
17
21
|
}, ref) => {
|
|
18
|
-
|
|
22
|
+
const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
|
|
23
|
+
visible,
|
|
24
|
+
delay,
|
|
25
|
+
minDuration,
|
|
26
|
+
transition
|
|
27
|
+
);
|
|
28
|
+
if (!shouldRender) return null;
|
|
19
29
|
const sizeValue = normalizeSize(size);
|
|
20
30
|
return /* @__PURE__ */ jsx(
|
|
21
31
|
Skeleton,
|
|
@@ -29,7 +39,11 @@ const SkeletonAvatar = forwardRef(
|
|
|
29
39
|
baseColor,
|
|
30
40
|
highlightColor,
|
|
31
41
|
className,
|
|
32
|
-
style
|
|
42
|
+
style: {
|
|
43
|
+
...style,
|
|
44
|
+
opacity,
|
|
45
|
+
transition: transitionStyle
|
|
46
|
+
},
|
|
33
47
|
"aria-label": "Loading avatar...",
|
|
34
48
|
...rest
|
|
35
49
|
}
|
package/dist/index7.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index7.js","sources":["../src/components/skeleton/SkeletonAvatar.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonAvatarProps } from '../../types';\nimport { normalizeSize } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonAvatar - Avatar skeleton loader\n *\n * A skeleton loader for avatar placeholders with circle or square shapes.\n *\n * @example\n * ```tsx\n * <SkeletonAvatar size={40} />\n * <SkeletonAvatar size={64} shape=\"square\" />\n * ```\n */\nexport const SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n (\n {\n size = 40,\n shape = 'circle',\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-avatar',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index7.js","sources":["../src/components/skeleton/SkeletonAvatar.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonAvatarProps } from '../../types';\nimport { normalizeSize, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonAvatar - Avatar skeleton loader\n *\n * A skeleton loader for avatar placeholders with circle or square shapes.\n *\n * @example\n * ```tsx\n * <SkeletonAvatar size={40} />\n * <SkeletonAvatar size={64} shape=\"square\" />\n * ```\n */\nexport const SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n (\n {\n size = 40,\n shape = 'circle',\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-avatar',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n const sizeValue = normalizeSize(size);\n\n return (\n <Skeleton\n ref={ref}\n data-testid={testId}\n width={sizeValue}\n height={sizeValue}\n variant={shape === 'circle' ? 'circular' : 'rounded'}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n className={className}\n style={{\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n aria-label=\"Loading avatar...\"\n {...rest}\n />\n );\n }\n);\n\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n"],"names":[],"mappings":";;;;;AAgBO,MAAM,iBAAiB;AAAA,EAC5B,CACE;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,UAAM,YAAY,cAAc,IAAI;AAEpC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS,UAAU,WAAW,aAAa;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,cAAW;AAAA,QACV,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,eAAe,cAAc;"}
|
package/dist/index8.cjs
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const react = require("react");
|
|
5
5
|
const Skeleton = require("./index5.cjs");
|
|
6
|
+
const hooks = require("./index31.cjs");
|
|
6
7
|
const SkeletonImage = react.forwardRef(
|
|
7
8
|
({
|
|
8
9
|
width = "100%",
|
|
@@ -12,13 +13,22 @@ const SkeletonImage = react.forwardRef(
|
|
|
12
13
|
baseColor,
|
|
13
14
|
highlightColor,
|
|
14
15
|
borderRadius = "0.5rem",
|
|
16
|
+
delay = 0,
|
|
17
|
+
minDuration = 0,
|
|
18
|
+
transition,
|
|
15
19
|
className,
|
|
16
20
|
style,
|
|
17
21
|
testId = "skeleton-image",
|
|
18
22
|
visible = true,
|
|
19
23
|
...rest
|
|
20
24
|
}, ref) => {
|
|
21
|
-
|
|
25
|
+
const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
|
|
26
|
+
visible,
|
|
27
|
+
delay,
|
|
28
|
+
minDuration,
|
|
29
|
+
transition
|
|
30
|
+
);
|
|
31
|
+
if (!shouldRender) return null;
|
|
22
32
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
23
33
|
Skeleton.Skeleton,
|
|
24
34
|
{
|
|
@@ -34,7 +44,9 @@ const SkeletonImage = react.forwardRef(
|
|
|
34
44
|
className,
|
|
35
45
|
style: {
|
|
36
46
|
aspectRatio: aspectRatio || void 0,
|
|
37
|
-
...style
|
|
47
|
+
...style,
|
|
48
|
+
opacity,
|
|
49
|
+
transition: transitionStyle
|
|
38
50
|
},
|
|
39
51
|
"aria-label": "Loading image...",
|
|
40
52
|
...rest
|
package/dist/index8.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index8.cjs","sources":["../src/components/skeleton/SkeletonImage.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonImageProps } from '../../types';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonImage - Image skeleton loader\n *\n * A skeleton loader for image placeholders with optional aspect ratio.\n *\n * @example\n * ```tsx\n * <SkeletonImage width={300} height={200} />\n * <SkeletonImage aspectRatio=\"16/9\" width=\"100%\" />\n * ```\n */\nexport const SkeletonImage = forwardRef<HTMLDivElement, SkeletonImageProps>(\n (\n {\n width = '100%',\n height = '200px',\n aspectRatio,\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n className,\n style,\n testId = 'skeleton-image',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index8.cjs","sources":["../src/components/skeleton/SkeletonImage.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonImageProps } from '../../types';\nimport { useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonImage - Image skeleton loader\n *\n * A skeleton loader for image placeholders with optional aspect ratio.\n *\n * @example\n * ```tsx\n * <SkeletonImage width={300} height={200} />\n * <SkeletonImage aspectRatio=\"16/9\" width=\"100%\" />\n * ```\n */\nexport const SkeletonImage = forwardRef<HTMLDivElement, SkeletonImageProps>(\n (\n {\n width = '100%',\n height = '200px',\n aspectRatio,\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-image',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <Skeleton\n ref={ref}\n data-testid={testId}\n width={width}\n height={aspectRatio ? 'auto' : height}\n variant=\"rounded\"\n borderRadius={borderRadius}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n className={className}\n style={{\n aspectRatio: aspectRatio || undefined,\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n aria-label=\"Loading image...\"\n {...rest}\n />\n );\n }\n);\n\nSkeletonImage.displayName = 'SkeletonImage';\n"],"names":["forwardRef","useLoaderVisibility","jsx","Skeleton"],"mappings":";;;;;;AAgBO,MAAM,gBAAgBA,MAAAA;AAAAA,EAC3B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACEC,2BAAAA;AAAAA,MAACC,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb;AAAA,QACA,QAAQ,cAAc,SAAS;AAAA,QAC/B,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,UACL,aAAa,eAAe;AAAA,UAC5B,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,cAAW;AAAA,QACV,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,cAAc,cAAc;;"}
|
package/dist/index8.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import { Skeleton } from "./index5.js";
|
|
4
|
+
import { useLoaderVisibility } from "./index31.js";
|
|
4
5
|
const SkeletonImage = forwardRef(
|
|
5
6
|
({
|
|
6
7
|
width = "100%",
|
|
@@ -10,13 +11,22 @@ const SkeletonImage = forwardRef(
|
|
|
10
11
|
baseColor,
|
|
11
12
|
highlightColor,
|
|
12
13
|
borderRadius = "0.5rem",
|
|
14
|
+
delay = 0,
|
|
15
|
+
minDuration = 0,
|
|
16
|
+
transition,
|
|
13
17
|
className,
|
|
14
18
|
style,
|
|
15
19
|
testId = "skeleton-image",
|
|
16
20
|
visible = true,
|
|
17
21
|
...rest
|
|
18
22
|
}, ref) => {
|
|
19
|
-
|
|
23
|
+
const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
|
|
24
|
+
visible,
|
|
25
|
+
delay,
|
|
26
|
+
minDuration,
|
|
27
|
+
transition
|
|
28
|
+
);
|
|
29
|
+
if (!shouldRender) return null;
|
|
20
30
|
return /* @__PURE__ */ jsx(
|
|
21
31
|
Skeleton,
|
|
22
32
|
{
|
|
@@ -32,7 +42,9 @@ const SkeletonImage = forwardRef(
|
|
|
32
42
|
className,
|
|
33
43
|
style: {
|
|
34
44
|
aspectRatio: aspectRatio || void 0,
|
|
35
|
-
...style
|
|
45
|
+
...style,
|
|
46
|
+
opacity,
|
|
47
|
+
transition: transitionStyle
|
|
36
48
|
},
|
|
37
49
|
"aria-label": "Loading image...",
|
|
38
50
|
...rest
|
package/dist/index8.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index8.js","sources":["../src/components/skeleton/SkeletonImage.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonImageProps } from '../../types';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonImage - Image skeleton loader\n *\n * A skeleton loader for image placeholders with optional aspect ratio.\n *\n * @example\n * ```tsx\n * <SkeletonImage width={300} height={200} />\n * <SkeletonImage aspectRatio=\"16/9\" width=\"100%\" />\n * ```\n */\nexport const SkeletonImage = forwardRef<HTMLDivElement, SkeletonImageProps>(\n (\n {\n width = '100%',\n height = '200px',\n aspectRatio,\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n className,\n style,\n testId = 'skeleton-image',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index8.js","sources":["../src/components/skeleton/SkeletonImage.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonImageProps } from '../../types';\nimport { useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonImage - Image skeleton loader\n *\n * A skeleton loader for image placeholders with optional aspect ratio.\n *\n * @example\n * ```tsx\n * <SkeletonImage width={300} height={200} />\n * <SkeletonImage aspectRatio=\"16/9\" width=\"100%\" />\n * ```\n */\nexport const SkeletonImage = forwardRef<HTMLDivElement, SkeletonImageProps>(\n (\n {\n width = '100%',\n height = '200px',\n aspectRatio,\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-image',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <Skeleton\n ref={ref}\n data-testid={testId}\n width={width}\n height={aspectRatio ? 'auto' : height}\n variant=\"rounded\"\n borderRadius={borderRadius}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n className={className}\n style={{\n aspectRatio: aspectRatio || undefined,\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n aria-label=\"Loading image...\"\n {...rest}\n />\n );\n }\n);\n\nSkeletonImage.displayName = 'SkeletonImage';\n"],"names":[],"mappings":";;;;AAgBO,MAAM,gBAAgB;AAAA,EAC3B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb;AAAA,QACA,QAAQ,cAAc,SAAS;AAAA,QAC/B,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,UACL,aAAa,eAAe;AAAA,UAC5B,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,cAAW;AAAA,QACV,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,cAAc,cAAc;"}
|
package/dist/index9.cjs
CHANGED
|
@@ -4,6 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const react = require("react");
|
|
5
5
|
const Skeleton = require("./index5.cjs");
|
|
6
6
|
const SkeletonAvatar = require("./index7.cjs");
|
|
7
|
+
const hooks = require("./index31.cjs");
|
|
7
8
|
const classNames = require("./index3.cjs");
|
|
8
9
|
const SkeletonCard = react.forwardRef(
|
|
9
10
|
({
|
|
@@ -14,20 +15,33 @@ const SkeletonCard = react.forwardRef(
|
|
|
14
15
|
animate = true,
|
|
15
16
|
baseColor,
|
|
16
17
|
highlightColor,
|
|
18
|
+
delay = 0,
|
|
19
|
+
minDuration = 0,
|
|
20
|
+
transition,
|
|
17
21
|
className,
|
|
18
22
|
style,
|
|
19
23
|
testId = "skeleton-card",
|
|
20
24
|
visible = true,
|
|
21
25
|
...rest
|
|
22
26
|
}, ref) => {
|
|
23
|
-
|
|
27
|
+
const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
|
|
28
|
+
visible,
|
|
29
|
+
delay,
|
|
30
|
+
minDuration,
|
|
31
|
+
transition
|
|
32
|
+
);
|
|
33
|
+
if (!shouldRender) return null;
|
|
24
34
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25
35
|
"div",
|
|
26
36
|
{
|
|
27
37
|
ref,
|
|
28
38
|
"data-testid": testId,
|
|
29
39
|
className: classNames.cn("flex gap-3", className),
|
|
30
|
-
style
|
|
40
|
+
style: {
|
|
41
|
+
...style,
|
|
42
|
+
opacity,
|
|
43
|
+
transition: transitionStyle
|
|
44
|
+
},
|
|
31
45
|
role: "status",
|
|
32
46
|
"aria-label": "Loading card...",
|
|
33
47
|
"aria-busy": "true",
|
package/dist/index9.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index9.cjs","sources":["../src/components/skeleton/SkeletonCard.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonCardProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Skeleton } from './Skeleton';\nimport { SkeletonAvatar } from './SkeletonAvatar';\n\n/**\n * SkeletonCard - Card skeleton loader\n *\n * A composite skeleton loader for card layouts with optional avatar, title, and description lines.\n *\n * @example\n * ```tsx\n * <SkeletonCard />\n * <SkeletonCard hasAvatar={true} lines={3} />\n * <SkeletonCard hasAvatar={false} titleWidth=\"60%\" />\n * ```\n */\nexport const SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n hasAvatar = true,\n titleWidth = '60%',\n lines = 2,\n avatarSize = 40,\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-card',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index9.cjs","sources":["../src/components/skeleton/SkeletonCard.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonCardProps } from '../../types';\nimport { cn, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\nimport { SkeletonAvatar } from './SkeletonAvatar';\n\n/**\n * SkeletonCard - Card skeleton loader\n *\n * A composite skeleton loader for card layouts with optional avatar, title, and description lines.\n *\n * @example\n * ```tsx\n * <SkeletonCard />\n * <SkeletonCard hasAvatar={true} lines={3} />\n * <SkeletonCard hasAvatar={false} titleWidth=\"60%\" />\n * ```\n */\nexport const SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n hasAvatar = true,\n titleWidth = '60%',\n lines = 2,\n avatarSize = 40,\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-card',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex gap-3', className)}\n style={{\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading card...\"\n aria-busy=\"true\"\n {...rest}\n >\n {hasAvatar && (\n <SkeletonAvatar\n size={avatarSize}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n )}\n <div className=\"flex-1 space-y-2\">\n {/* Title */}\n <Skeleton\n width={titleWidth}\n height=\"1.25rem\"\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n {/* Description lines */}\n {Array.from({ length: lines }).map((_, index) => (\n <Skeleton\n key={index}\n width={index === lines - 1 ? '70%' : '100%'}\n height=\"1rem\"\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n </div>\n );\n }\n);\n\nSkeletonCard.displayName = 'SkeletonCard';\n"],"names":["forwardRef","useLoaderVisibility","jsxs","cn","jsx","SkeletonAvatar","Skeleton"],"mappings":";;;;;;;;AAkBO,MAAM,eAAeA,MAAAA;AAAAA,EAC1B,CACE;AAAA,IACE,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA,GAAG,cAAc,SAAS;AAAA,QACrC,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA;AAAA,UAAA,aACCC,2BAAAA;AAAAA,YAACC,eAAAA;AAAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJH,2BAAAA,KAAC,OAAA,EAAI,WAAU,oBAEb,UAAA;AAAA,YAAAE,2BAAAA;AAAAA,cAACE,SAAAA;AAAAA,cAAA;AAAA,gBACC,OAAO;AAAA,gBACP,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGD,MAAM,KAAK,EAAE,QAAQ,MAAA,CAAO,EAAE,IAAI,CAAC,GAAG,UACrCF,2BAAAA;AAAAA,cAACE,SAAAA;AAAAA,cAAA;AAAA,gBAEC,OAAO,UAAU,QAAQ,IAAI,QAAQ;AAAA,gBACrC,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cANK;AAAA,YAAA,CAQR;AAAA,UAAA,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,aAAa,cAAc;;"}
|
package/dist/index9.js
CHANGED
|
@@ -2,6 +2,7 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import { Skeleton } from "./index5.js";
|
|
4
4
|
import { SkeletonAvatar } from "./index7.js";
|
|
5
|
+
import { useLoaderVisibility } from "./index31.js";
|
|
5
6
|
import { cn } from "./index3.js";
|
|
6
7
|
const SkeletonCard = forwardRef(
|
|
7
8
|
({
|
|
@@ -12,20 +13,33 @@ const SkeletonCard = forwardRef(
|
|
|
12
13
|
animate = true,
|
|
13
14
|
baseColor,
|
|
14
15
|
highlightColor,
|
|
16
|
+
delay = 0,
|
|
17
|
+
minDuration = 0,
|
|
18
|
+
transition,
|
|
15
19
|
className,
|
|
16
20
|
style,
|
|
17
21
|
testId = "skeleton-card",
|
|
18
22
|
visible = true,
|
|
19
23
|
...rest
|
|
20
24
|
}, ref) => {
|
|
21
|
-
|
|
25
|
+
const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
|
|
26
|
+
visible,
|
|
27
|
+
delay,
|
|
28
|
+
minDuration,
|
|
29
|
+
transition
|
|
30
|
+
);
|
|
31
|
+
if (!shouldRender) return null;
|
|
22
32
|
return /* @__PURE__ */ jsxs(
|
|
23
33
|
"div",
|
|
24
34
|
{
|
|
25
35
|
ref,
|
|
26
36
|
"data-testid": testId,
|
|
27
37
|
className: cn("flex gap-3", className),
|
|
28
|
-
style
|
|
38
|
+
style: {
|
|
39
|
+
...style,
|
|
40
|
+
opacity,
|
|
41
|
+
transition: transitionStyle
|
|
42
|
+
},
|
|
29
43
|
role: "status",
|
|
30
44
|
"aria-label": "Loading card...",
|
|
31
45
|
"aria-busy": "true",
|
package/dist/index9.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index9.js","sources":["../src/components/skeleton/SkeletonCard.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonCardProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Skeleton } from './Skeleton';\nimport { SkeletonAvatar } from './SkeletonAvatar';\n\n/**\n * SkeletonCard - Card skeleton loader\n *\n * A composite skeleton loader for card layouts with optional avatar, title, and description lines.\n *\n * @example\n * ```tsx\n * <SkeletonCard />\n * <SkeletonCard hasAvatar={true} lines={3} />\n * <SkeletonCard hasAvatar={false} titleWidth=\"60%\" />\n * ```\n */\nexport const SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n hasAvatar = true,\n titleWidth = '60%',\n lines = 2,\n avatarSize = 40,\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-card',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!
|
|
1
|
+
{"version":3,"file":"index9.js","sources":["../src/components/skeleton/SkeletonCard.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonCardProps } from '../../types';\nimport { cn, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\nimport { SkeletonAvatar } from './SkeletonAvatar';\n\n/**\n * SkeletonCard - Card skeleton loader\n *\n * A composite skeleton loader for card layouts with optional avatar, title, and description lines.\n *\n * @example\n * ```tsx\n * <SkeletonCard />\n * <SkeletonCard hasAvatar={true} lines={3} />\n * <SkeletonCard hasAvatar={false} titleWidth=\"60%\" />\n * ```\n */\nexport const SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n hasAvatar = true,\n titleWidth = '60%',\n lines = 2,\n avatarSize = 40,\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-card',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex gap-3', className)}\n style={{\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading card...\"\n aria-busy=\"true\"\n {...rest}\n >\n {hasAvatar && (\n <SkeletonAvatar\n size={avatarSize}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n )}\n <div className=\"flex-1 space-y-2\">\n {/* Title */}\n <Skeleton\n width={titleWidth}\n height=\"1.25rem\"\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n {/* Description lines */}\n {Array.from({ length: lines }).map((_, index) => (\n <Skeleton\n key={index}\n width={index === lines - 1 ? '70%' : '100%'}\n height=\"1rem\"\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n </div>\n );\n }\n);\n\nSkeletonCard.displayName = 'SkeletonCard';\n"],"names":[],"mappings":";;;;;;AAkBO,MAAM,eAAe;AAAA,EAC1B,CACE;AAAA,IACE,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAG,cAAc,SAAS;AAAA,QACrC,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA;AAAA,UAAA,aACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJ,qBAAC,OAAA,EAAI,WAAU,oBAEb,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,gBACP,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGD,MAAM,KAAK,EAAE,QAAQ,MAAA,CAAO,EAAE,IAAI,CAAC,GAAG,UACrC;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OAAO,UAAU,QAAQ,IAAI,QAAQ;AAAA,gBACrC,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cANK;AAAA,YAAA,CAQR;AAAA,UAAA,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,aAAa,cAAc;"}
|