erp-pro-ui 0.1.2 → 0.1.4
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/dist/animations.css +40 -0
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.mjs +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.mjs +1 -1
- package/dist/carousel.cjs +1 -1
- package/dist/carousel.mjs +1 -1
- package/dist/catalog.cjs +6 -0
- package/dist/catalog.cjs.map +1 -1
- package/dist/catalog.d.ts +11 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.mjs +6 -0
- package/dist/catalog.mjs.map +1 -1
- package/dist/charts.cjs +2 -1
- package/dist/charts.mjs +2 -2
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.mjs +1 -1
- package/dist/chip.cjs +1 -1
- package/dist/chip.mjs +1 -1
- package/dist/chroma-grid.cjs +1 -1
- package/dist/chroma-grid.mjs +1 -1
- package/dist/chunks/{calendar-xrGmvukr.cjs → calendar-Cpp_Rc7T.cjs} +58 -17
- package/dist/chunks/calendar-Cpp_Rc7T.cjs.map +1 -0
- package/dist/chunks/{calendar-BarcG6x_.mjs → calendar-DrCgT_pj.mjs} +58 -17
- package/dist/chunks/calendar-DrCgT_pj.mjs.map +1 -0
- package/dist/chunks/{card-gt-HZh0h.cjs → card-C5_tFK6Q.cjs} +1 -1
- package/dist/chunks/{card-gt-HZh0h.cjs.map → card-C5_tFK6Q.cjs.map} +1 -1
- package/dist/chunks/{card-CcIF6z2H.mjs → card-Dh8wNv8N.mjs} +1 -1
- package/dist/chunks/{card-CcIF6z2H.mjs.map → card-Dh8wNv8N.mjs.map} +1 -1
- package/dist/chunks/{carousel-DJdqBVRK.mjs → carousel-BYwqI4cA.mjs} +1 -1
- package/dist/chunks/{carousel-DJdqBVRK.mjs.map → carousel-BYwqI4cA.mjs.map} +1 -1
- package/dist/chunks/{carousel-Cq5uwqQt.cjs → carousel-C1338X8h.cjs} +1 -1
- package/dist/chunks/{carousel-Cq5uwqQt.cjs.map → carousel-C1338X8h.cjs.map} +1 -1
- package/dist/chunks/{charts-DugYWvEf.mjs → charts-BYvM4TMG.mjs} +371 -117
- package/dist/chunks/charts-BYvM4TMG.mjs.map +1 -0
- package/dist/chunks/{charts-BpElnsoR.cjs → charts-DbxyHtlX.cjs} +375 -115
- package/dist/chunks/charts-DbxyHtlX.cjs.map +1 -0
- package/dist/chunks/{checkbox-yHuSw-hV.cjs → checkbox-CxOcjoGP.cjs} +1 -1
- package/dist/chunks/{checkbox-yHuSw-hV.cjs.map → checkbox-CxOcjoGP.cjs.map} +1 -1
- package/dist/chunks/{checkbox-DvwlGwWe.mjs → checkbox-Pr49U9F1.mjs} +1 -1
- package/dist/chunks/{checkbox-DvwlGwWe.mjs.map → checkbox-Pr49U9F1.mjs.map} +1 -1
- package/dist/chunks/{chip-DcBji__g.cjs → chip-B4ol1yPk.cjs} +1 -1
- package/dist/chunks/{chip-DcBji__g.cjs.map → chip-B4ol1yPk.cjs.map} +1 -1
- package/dist/chunks/{chip-BGSUmnlO.mjs → chip-DdnBLdpl.mjs} +1 -1
- package/dist/chunks/{chip-BGSUmnlO.mjs.map → chip-DdnBLdpl.mjs.map} +1 -1
- package/dist/chunks/{chroma-grid-Cdeql_2C.mjs → chroma-grid-BAo6V5A7.mjs} +1 -1
- package/dist/chunks/{chroma-grid-Cdeql_2C.mjs.map → chroma-grid-BAo6V5A7.mjs.map} +1 -1
- package/dist/chunks/{chroma-grid-9E9j1s9I.cjs → chroma-grid-CIk0dsNS.cjs} +1 -1
- package/dist/chunks/{chroma-grid-9E9j1s9I.cjs.map → chroma-grid-CIk0dsNS.cjs.map} +1 -1
- package/dist/chunks/{color-palette-BLvDnCOD.cjs → color-palette-2TuEMkAn.cjs} +1 -1
- package/dist/chunks/{color-palette-BLvDnCOD.cjs.map → color-palette-2TuEMkAn.cjs.map} +1 -1
- package/dist/chunks/{color-palette-CXlCDiZz.mjs → color-palette-euKQMWlV.mjs} +1 -1
- package/dist/chunks/{color-palette-CXlCDiZz.mjs.map → color-palette-euKQMWlV.mjs.map} +1 -1
- package/dist/chunks/{combobox-BXu3s0dt.cjs → combobox-CwGubKTt.cjs} +2 -2
- package/dist/chunks/combobox-CwGubKTt.cjs.map +1 -0
- package/dist/chunks/{combobox-CjK-qG4k.mjs → combobox-DrFmkI0F.mjs} +2 -2
- package/dist/chunks/combobox-DrFmkI0F.mjs.map +1 -0
- package/dist/chunks/{data-table-DyEQn9Yj.mjs → data-table-Bo80m7qV.mjs} +8 -8
- package/dist/chunks/{data-table-DyEQn9Yj.mjs.map → data-table-Bo80m7qV.mjs.map} +1 -1
- package/dist/chunks/{data-table-9HELVsYR.cjs → data-table-W1sK5tkL.cjs} +8 -8
- package/dist/chunks/{data-table-9HELVsYR.cjs.map → data-table-W1sK5tkL.cjs.map} +1 -1
- package/dist/chunks/{date-picker-D8gaaMlJ.mjs → date-picker-CNPORxhv.mjs} +87 -17
- package/dist/chunks/date-picker-CNPORxhv.mjs.map +1 -0
- package/dist/chunks/{date-picker-W9om1j7A.cjs → date-picker-CZo68Fkl.cjs} +87 -17
- package/dist/chunks/date-picker-CZo68Fkl.cjs.map +1 -0
- package/dist/chunks/input-BWM6G7jq.cjs +117 -0
- package/dist/chunks/input-BWM6G7jq.cjs.map +1 -0
- package/dist/chunks/input-Bt_r_B_c.mjs +105 -0
- package/dist/chunks/input-Bt_r_B_c.mjs.map +1 -0
- package/dist/chunks/{multi-select-combobox-ELSH_Xr4.mjs → multi-select-combobox-D46M-AN9.mjs} +2 -2
- package/dist/chunks/multi-select-combobox-D46M-AN9.mjs.map +1 -0
- package/dist/chunks/{multi-select-combobox-UW0X15W7.cjs → multi-select-combobox-dS6bJE_e.cjs} +2 -2
- package/dist/chunks/multi-select-combobox-dS6bJE_e.cjs.map +1 -0
- package/dist/chunks/{otp-input-B6zzOEqw.cjs → otp-input-DSW9Ca_D.cjs} +2 -2
- package/dist/chunks/otp-input-DSW9Ca_D.cjs.map +1 -0
- package/dist/chunks/{otp-input-Bg4nQG6x.mjs → otp-input-DeAi4nJ_.mjs} +2 -2
- package/dist/chunks/otp-input-DeAi4nJ_.mjs.map +1 -0
- package/dist/chunks/{progress-bar-C9FZDrju.mjs → progress-bar-B9sy7WBT.mjs} +1 -1
- package/dist/chunks/{progress-bar-C9FZDrju.mjs.map → progress-bar-B9sy7WBT.mjs.map} +1 -1
- package/dist/chunks/{progress-bar-C1OvQ-NI.cjs → progress-bar-BdvQtpm3.cjs} +1 -1
- package/dist/chunks/{progress-bar-C1OvQ-NI.cjs.map → progress-bar-BdvQtpm3.cjs.map} +1 -1
- package/dist/chunks/select-B8UQ6Uq5.mjs +170 -0
- package/dist/chunks/select-B8UQ6Uq5.mjs.map +1 -0
- package/dist/chunks/select-CCUSMvfS.cjs +176 -0
- package/dist/chunks/select-CCUSMvfS.cjs.map +1 -0
- package/dist/chunks/skeleton-BNea1Rcp.cjs +422 -0
- package/dist/chunks/skeleton-BNea1Rcp.cjs.map +1 -0
- package/dist/chunks/skeleton-CtLumdRw.mjs +368 -0
- package/dist/chunks/skeleton-CtLumdRw.mjs.map +1 -0
- package/dist/chunks/stepper-D6qQbZdg.cjs +642 -0
- package/dist/chunks/stepper-D6qQbZdg.cjs.map +1 -0
- package/dist/chunks/stepper-DUknuW2E.mjs +618 -0
- package/dist/chunks/stepper-DUknuW2E.mjs.map +1 -0
- package/dist/chunks/{textarea-CU5C-Zw9.mjs → textarea-Blky_fLK.mjs} +2 -2
- package/dist/chunks/{textarea-CU5C-Zw9.mjs.map → textarea-Blky_fLK.mjs.map} +1 -1
- package/dist/chunks/{textarea-CAUsyu4-.cjs → textarea-ok_NlE2p.cjs} +2 -2
- package/dist/chunks/textarea-ok_NlE2p.cjs.map +1 -0
- package/dist/color-palette.cjs +1 -1
- package/dist/color-palette.mjs +1 -1
- package/dist/colors.css +3 -0
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.mjs +1 -1
- package/dist/components/data-display/charts/AreaChart.d.ts.map +1 -1
- package/dist/components/data-display/charts/BarChart.d.ts +1 -0
- package/dist/components/data-display/charts/BarChart.d.ts.map +1 -1
- package/dist/components/data-display/charts/NeonLineChart.d.ts.map +1 -1
- package/dist/components/data-display/charts/PieChart.d.ts +18 -2
- package/dist/components/data-display/charts/PieChart.d.ts.map +1 -1
- package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts +21 -0
- package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts.map +1 -0
- package/dist/components/data-display/charts/StackedBarChart.d.ts.map +1 -1
- package/dist/components/data-display/charts/ThinBreakdownBar.d.ts +3 -0
- package/dist/components/data-display/charts/ThinBreakdownBar.d.ts.map +1 -1
- package/dist/components/data-display/charts/chartStyles.d.ts +24 -0
- package/dist/components/data-display/charts/chartStyles.d.ts.map +1 -0
- package/dist/components/data-display/charts/index.d.ts +2 -0
- package/dist/components/data-display/charts/index.d.ts.map +1 -1
- package/dist/components/data-display/skeleton/Skeleton.d.ts +32 -5
- package/dist/components/data-display/skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/data-display/skeleton/index.d.ts +2 -2
- package/dist/components/data-display/skeleton/index.d.ts.map +1 -1
- package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
- package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
- package/dist/components/forms/input/Input.d.ts.map +1 -1
- package/dist/components/forms/input/types.d.ts +5 -0
- package/dist/components/forms/input/types.d.ts.map +1 -1
- package/dist/components/forms/select/Select.d.ts.map +1 -1
- package/dist/components/forms/select/types.d.ts +7 -1
- package/dist/components/forms/select/types.d.ts.map +1 -1
- package/dist/components/navigation/stepper/Stepper1.d.ts +4 -0
- package/dist/components/navigation/stepper/Stepper1.d.ts.map +1 -0
- package/dist/components/navigation/stepper/Stepper2.d.ts +5 -0
- package/dist/components/navigation/stepper/Stepper2.d.ts.map +1 -0
- package/dist/components/navigation/stepper/index.d.ts +4 -1
- package/dist/components/navigation/stepper/index.d.ts.map +1 -1
- package/dist/components/navigation/stepper/types.d.ts +85 -0
- package/dist/components/navigation/stepper/types.d.ts.map +1 -1
- package/dist/data-table.cjs +1 -1
- package/dist/data-table.mjs +1 -1
- package/dist/date-picker.cjs +1 -1
- package/dist/date-picker.mjs +1 -1
- package/dist/docs.cjs +12 -2
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.mjs +12 -2
- package/dist/docs.mjs.map +1 -1
- package/dist/foundation.css +7 -0
- package/dist/index.cjs +32 -19
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +20 -20
- package/dist/input.cjs +1 -1
- package/dist/input.mjs +1 -1
- package/dist/multi-select-combobox.cjs +1 -1
- package/dist/multi-select-combobox.mjs +1 -1
- package/dist/otp-input.cjs +1 -1
- package/dist/otp-input.mjs +1 -1
- package/dist/progress-bar.cjs +1 -1
- package/dist/progress-bar.mjs +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.mjs +1 -1
- package/dist/skeleton.cjs +9 -1
- package/dist/skeleton.mjs +2 -2
- package/dist/stepper.cjs +5 -1
- package/dist/stepper.mjs +2 -2
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.mjs +1 -1
- package/dist/tokens.css +11 -2
- package/package.json +9 -9
- package/dist/chunks/calendar-BarcG6x_.mjs.map +0 -1
- package/dist/chunks/calendar-xrGmvukr.cjs.map +0 -1
- package/dist/chunks/charts-BpElnsoR.cjs.map +0 -1
- package/dist/chunks/charts-DugYWvEf.mjs.map +0 -1
- package/dist/chunks/combobox-BXu3s0dt.cjs.map +0 -1
- package/dist/chunks/combobox-CjK-qG4k.mjs.map +0 -1
- package/dist/chunks/date-picker-D8gaaMlJ.mjs.map +0 -1
- package/dist/chunks/date-picker-W9om1j7A.cjs.map +0 -1
- package/dist/chunks/input-D9qZNqXV.cjs +0 -99
- package/dist/chunks/input-D9qZNqXV.cjs.map +0 -1
- package/dist/chunks/input-wNqevfQ4.mjs +0 -87
- package/dist/chunks/input-wNqevfQ4.mjs.map +0 -1
- package/dist/chunks/multi-select-combobox-ELSH_Xr4.mjs.map +0 -1
- package/dist/chunks/multi-select-combobox-UW0X15W7.cjs.map +0 -1
- package/dist/chunks/otp-input-B6zzOEqw.cjs.map +0 -1
- package/dist/chunks/otp-input-Bg4nQG6x.mjs.map +0 -1
- package/dist/chunks/select-D71tk6-I.mjs +0 -152
- package/dist/chunks/select-D71tk6-I.mjs.map +0 -1
- package/dist/chunks/select-WC_kPqUP.cjs +0 -158
- package/dist/chunks/select-WC_kPqUP.cjs.map +0 -1
- package/dist/chunks/skeleton-BhYWOp0Q.mjs +0 -215
- package/dist/chunks/skeleton-BhYWOp0Q.mjs.map +0 -1
- package/dist/chunks/skeleton-DTXpHYYB.cjs +0 -221
- package/dist/chunks/skeleton-DTXpHYYB.cjs.map +0 -1
- package/dist/chunks/stepper-D4yQsQB0.mjs +0 -261
- package/dist/chunks/stepper-D4yQsQB0.mjs.map +0 -1
- package/dist/chunks/stepper-fY-Sx72k.cjs +0 -267
- package/dist/chunks/stepper-fY-Sx72k.cjs.map +0 -1
- package/dist/chunks/textarea-CAUsyu4-.cjs.map +0 -1
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
require("./chunk-B_GkZjkl.cjs");
|
|
2
|
+
const require_utils = require("./utils-B4SmmY4J.cjs");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
//#region src/components/data-display/skeleton/Skeleton.tsx
|
|
6
|
+
var animationStyles = {
|
|
7
|
+
pulse: "ui-skeleton-pulse",
|
|
8
|
+
wave: "ui-skeleton-wave",
|
|
9
|
+
none: ""
|
|
10
|
+
};
|
|
11
|
+
var radiusStyles = {
|
|
12
|
+
none: "rounded-none",
|
|
13
|
+
sm: "rounded-sm",
|
|
14
|
+
md: "rounded-md",
|
|
15
|
+
lg: "rounded-lg",
|
|
16
|
+
xl: "rounded-xl",
|
|
17
|
+
full: "rounded-full"
|
|
18
|
+
};
|
|
19
|
+
var variantStyles = {
|
|
20
|
+
text: "sm",
|
|
21
|
+
circular: "full",
|
|
22
|
+
rectangular: "none",
|
|
23
|
+
rounded: "md"
|
|
24
|
+
};
|
|
25
|
+
var speedStyles = {
|
|
26
|
+
slow: "2.4s",
|
|
27
|
+
normal: "1.6s",
|
|
28
|
+
fast: "1.05s"
|
|
29
|
+
};
|
|
30
|
+
var toneStyles = {
|
|
31
|
+
default: {
|
|
32
|
+
base: "var(--color-muted)",
|
|
33
|
+
highlight: "color-mix(in oklch, var(--color-muted) 54%, var(--color-background))"
|
|
34
|
+
},
|
|
35
|
+
subtle: {
|
|
36
|
+
base: "color-mix(in oklch, var(--color-muted) 72%, var(--color-background))",
|
|
37
|
+
highlight: "color-mix(in oklch, var(--color-muted) 42%, var(--color-background))"
|
|
38
|
+
},
|
|
39
|
+
accent: {
|
|
40
|
+
base: "var(--color-accent-subtle)",
|
|
41
|
+
highlight: "color-mix(in oklch, var(--color-accent-subtle) 48%, var(--color-background))"
|
|
42
|
+
},
|
|
43
|
+
success: {
|
|
44
|
+
base: "var(--color-success-subtle)",
|
|
45
|
+
highlight: "color-mix(in oklch, var(--color-success-subtle) 48%, var(--color-background))"
|
|
46
|
+
},
|
|
47
|
+
warning: {
|
|
48
|
+
base: "var(--color-warning-subtle)",
|
|
49
|
+
highlight: "color-mix(in oklch, var(--color-warning-subtle) 48%, var(--color-background))"
|
|
50
|
+
},
|
|
51
|
+
danger: {
|
|
52
|
+
base: "var(--color-danger-subtle)",
|
|
53
|
+
highlight: "color-mix(in oklch, var(--color-danger-subtle) 48%, var(--color-background))"
|
|
54
|
+
},
|
|
55
|
+
info: {
|
|
56
|
+
base: "var(--color-info-subtle)",
|
|
57
|
+
highlight: "color-mix(in oklch, var(--color-info-subtle) 48%, var(--color-background))"
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
function resolveDimension(value) {
|
|
61
|
+
if (typeof value === "number") return `${value}px`;
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
function resolveDuration(value) {
|
|
65
|
+
if (typeof value === "number") return `${value}ms`;
|
|
66
|
+
if (typeof value === "string" && value in speedStyles) return speedStyles[value];
|
|
67
|
+
return value ?? speedStyles.normal;
|
|
68
|
+
}
|
|
69
|
+
function getDimensionStyle({ variant, width, height, borderRadius }) {
|
|
70
|
+
const nextStyle = {};
|
|
71
|
+
const resolvedWidth = resolveDimension(width);
|
|
72
|
+
const resolvedHeight = resolveDimension(height);
|
|
73
|
+
const resolvedBorderRadius = resolveDimension(borderRadius);
|
|
74
|
+
if (resolvedWidth) nextStyle.width = resolvedWidth;
|
|
75
|
+
else if (variant === "text") nextStyle.width = "100%";
|
|
76
|
+
if (resolvedHeight) nextStyle.height = resolvedHeight;
|
|
77
|
+
else if (variant === "text") nextStyle.height = "1em";
|
|
78
|
+
else if (variant === "circular") {
|
|
79
|
+
nextStyle.width = nextStyle.width || "40px";
|
|
80
|
+
nextStyle.height = nextStyle.width;
|
|
81
|
+
}
|
|
82
|
+
if (resolvedBorderRadius) nextStyle.borderRadius = resolvedBorderRadius;
|
|
83
|
+
return nextStyle;
|
|
84
|
+
}
|
|
85
|
+
var Skeleton = (0, react.forwardRef)(({ variant = "text", animation = "pulse", width, height, borderRadius, radius, tone = "default", speed = "normal", className, lines = 1, lineGap = 8, lastLineWidth = "80%", style, ["aria-hidden"]: ariaHidden, ...rest }, ref) => {
|
|
86
|
+
const toneStyle = toneStyles[tone];
|
|
87
|
+
const sharedStyle = {
|
|
88
|
+
"--ui-skeleton-base": toneStyle.base,
|
|
89
|
+
"--ui-skeleton-highlight": toneStyle.highlight,
|
|
90
|
+
"--ui-skeleton-duration": resolveDuration(speed),
|
|
91
|
+
...style
|
|
92
|
+
};
|
|
93
|
+
const sharedClassName = require_utils.mergeClassNames("relative overflow-hidden bg-[var(--ui-skeleton-base)] pointer-events-none select-none shrink-0", radiusStyles[radius ?? variantStyles[variant]], animationStyles[animation]);
|
|
94
|
+
if (variant === "text" && lines > 1) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
95
|
+
ref,
|
|
96
|
+
className: require_utils.mergeClassNames("flex flex-col", className),
|
|
97
|
+
style: {
|
|
98
|
+
...style,
|
|
99
|
+
gap: resolveDimension(lineGap),
|
|
100
|
+
width: resolveDimension(width) ?? style?.width
|
|
101
|
+
},
|
|
102
|
+
"aria-hidden": ariaHidden ?? true,
|
|
103
|
+
"data-animation": animation,
|
|
104
|
+
"data-tone": tone,
|
|
105
|
+
...rest,
|
|
106
|
+
children: Array.from({ length: lines }).map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
107
|
+
className: sharedClassName,
|
|
108
|
+
style: {
|
|
109
|
+
...sharedStyle,
|
|
110
|
+
...getDimensionStyle({
|
|
111
|
+
variant,
|
|
112
|
+
width: index === lines - 1 ? lastLineWidth : width ?? "100%",
|
|
113
|
+
height,
|
|
114
|
+
borderRadius
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
}, index))
|
|
118
|
+
});
|
|
119
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
120
|
+
ref,
|
|
121
|
+
className: require_utils.mergeClassNames(sharedClassName, className),
|
|
122
|
+
style: {
|
|
123
|
+
...sharedStyle,
|
|
124
|
+
...getDimensionStyle({
|
|
125
|
+
variant,
|
|
126
|
+
width,
|
|
127
|
+
height,
|
|
128
|
+
borderRadius
|
|
129
|
+
})
|
|
130
|
+
},
|
|
131
|
+
"aria-hidden": ariaHidden ?? true,
|
|
132
|
+
"data-animation": animation,
|
|
133
|
+
"data-tone": tone,
|
|
134
|
+
...rest
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
Skeleton.displayName = "Skeleton";
|
|
138
|
+
var SkeletonText = (0, react.forwardRef)(({ lines = 3, ...props }, ref) => {
|
|
139
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
140
|
+
ref,
|
|
141
|
+
variant: "text",
|
|
142
|
+
lines,
|
|
143
|
+
...props
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
SkeletonText.displayName = "SkeletonText";
|
|
147
|
+
var SkeletonAvatar = (0, react.forwardRef)(({ size = 40, animation = "pulse", className = "", ...props }, ref) => {
|
|
148
|
+
const sizeValue = typeof size === "number" ? `${size}px` : size;
|
|
149
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
150
|
+
ref,
|
|
151
|
+
variant: "circular",
|
|
152
|
+
width: sizeValue,
|
|
153
|
+
height: sizeValue,
|
|
154
|
+
animation,
|
|
155
|
+
className,
|
|
156
|
+
...props
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
SkeletonAvatar.displayName = "SkeletonAvatar";
|
|
160
|
+
var SkeletonButton = (0, react.forwardRef)(({ size = "md", animation = "pulse", className = "", ...props }, ref) => {
|
|
161
|
+
const sizeStyles = {
|
|
162
|
+
sm: {
|
|
163
|
+
width: 80,
|
|
164
|
+
height: 32
|
|
165
|
+
},
|
|
166
|
+
md: {
|
|
167
|
+
width: 100,
|
|
168
|
+
height: 40
|
|
169
|
+
},
|
|
170
|
+
lg: {
|
|
171
|
+
width: 120,
|
|
172
|
+
height: 48
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
176
|
+
ref,
|
|
177
|
+
variant: "rounded",
|
|
178
|
+
width: sizeStyles[size].width,
|
|
179
|
+
height: sizeStyles[size].height,
|
|
180
|
+
animation,
|
|
181
|
+
className,
|
|
182
|
+
...props
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
SkeletonButton.displayName = "SkeletonButton";
|
|
186
|
+
var SkeletonImage = (0, react.forwardRef)(({ width = "100%", height = 200, animation = "pulse", className = "", ...props }, ref) => {
|
|
187
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
188
|
+
ref,
|
|
189
|
+
variant: "rounded",
|
|
190
|
+
width,
|
|
191
|
+
height,
|
|
192
|
+
animation,
|
|
193
|
+
className,
|
|
194
|
+
...props
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
SkeletonImage.displayName = "SkeletonImage";
|
|
198
|
+
var SkeletonCard = (0, react.forwardRef)(({ showImage = true, imageHeight = 200, lines = 3, showAvatar = false, showActions = false, className, animation = "pulse", tone = "default" }, ref) => {
|
|
199
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
200
|
+
ref,
|
|
201
|
+
className: require_utils.mergeClassNames("overflow-hidden rounded-md border border-border bg-card shadow-sm", className),
|
|
202
|
+
children: [showImage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonImage, {
|
|
203
|
+
height: imageHeight,
|
|
204
|
+
animation,
|
|
205
|
+
borderRadius: 0,
|
|
206
|
+
tone
|
|
207
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
208
|
+
className: "p-4 flex flex-col gap-4",
|
|
209
|
+
children: [
|
|
210
|
+
showAvatar && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
211
|
+
className: "flex items-center gap-3",
|
|
212
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonAvatar, {
|
|
213
|
+
size: 40,
|
|
214
|
+
animation,
|
|
215
|
+
tone
|
|
216
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
217
|
+
className: "flex-1",
|
|
218
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
219
|
+
variant: "text",
|
|
220
|
+
width: "60%",
|
|
221
|
+
height: 14,
|
|
222
|
+
animation,
|
|
223
|
+
tone
|
|
224
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
225
|
+
variant: "text",
|
|
226
|
+
width: "40%",
|
|
227
|
+
height: 12,
|
|
228
|
+
animation,
|
|
229
|
+
tone,
|
|
230
|
+
className: "mt-2"
|
|
231
|
+
})]
|
|
232
|
+
})]
|
|
233
|
+
}),
|
|
234
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonText, {
|
|
235
|
+
lines,
|
|
236
|
+
animation,
|
|
237
|
+
height: 14,
|
|
238
|
+
lineGap: 10,
|
|
239
|
+
tone
|
|
240
|
+
}),
|
|
241
|
+
showActions && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
242
|
+
className: "flex gap-3 mt-2",
|
|
243
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonButton, {
|
|
244
|
+
size: "sm",
|
|
245
|
+
animation,
|
|
246
|
+
tone
|
|
247
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonButton, {
|
|
248
|
+
size: "sm",
|
|
249
|
+
animation,
|
|
250
|
+
tone
|
|
251
|
+
})]
|
|
252
|
+
})
|
|
253
|
+
]
|
|
254
|
+
})]
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
SkeletonCard.displayName = "SkeletonCard";
|
|
258
|
+
var SkeletonMetricCard = (0, react.forwardRef)(({ showTrend = true, showChart = true, chartBars = 7, valueWidth = "52%", className, animation = "wave", tone = "accent" }, ref) => {
|
|
259
|
+
const chartHeights = [
|
|
260
|
+
36,
|
|
261
|
+
52,
|
|
262
|
+
46,
|
|
263
|
+
72,
|
|
264
|
+
64,
|
|
265
|
+
84,
|
|
266
|
+
68,
|
|
267
|
+
78
|
|
268
|
+
];
|
|
269
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
270
|
+
ref,
|
|
271
|
+
className: require_utils.mergeClassNames("rounded-md border border-border bg-card p-4 shadow-sm", className),
|
|
272
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
273
|
+
className: "flex items-start justify-between gap-4",
|
|
274
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
275
|
+
className: "min-w-0 flex-1 space-y-3",
|
|
276
|
+
children: [
|
|
277
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
278
|
+
width: "34%",
|
|
279
|
+
height: 11,
|
|
280
|
+
animation,
|
|
281
|
+
tone: "subtle"
|
|
282
|
+
}),
|
|
283
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
284
|
+
width: valueWidth,
|
|
285
|
+
height: 28,
|
|
286
|
+
animation,
|
|
287
|
+
tone,
|
|
288
|
+
radius: "md"
|
|
289
|
+
}),
|
|
290
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
291
|
+
width: "44%",
|
|
292
|
+
height: 12,
|
|
293
|
+
animation,
|
|
294
|
+
tone: "subtle"
|
|
295
|
+
})
|
|
296
|
+
]
|
|
297
|
+
}), showTrend ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
298
|
+
className: "rounded-full border border-border bg-surface px-3 py-2",
|
|
299
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
300
|
+
width: 54,
|
|
301
|
+
height: 12,
|
|
302
|
+
animation,
|
|
303
|
+
tone: "subtle"
|
|
304
|
+
})
|
|
305
|
+
}) : null]
|
|
306
|
+
}), showChart ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
307
|
+
className: "mt-5 flex h-20 items-end gap-2",
|
|
308
|
+
children: Array.from({ length: chartBars }).map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
309
|
+
variant: "rounded",
|
|
310
|
+
width: "100%",
|
|
311
|
+
height: `${chartHeights[index % chartHeights.length]}%`,
|
|
312
|
+
animation,
|
|
313
|
+
tone,
|
|
314
|
+
className: "flex-1"
|
|
315
|
+
}, index))
|
|
316
|
+
}) : null]
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
SkeletonMetricCard.displayName = "SkeletonMetricCard";
|
|
320
|
+
var SkeletonTableRow = (0, react.forwardRef)(({ columns = 4, animation = "pulse", className = "" }, ref) => {
|
|
321
|
+
const sharedWidth = columns <= 1 ? "100%" : `${Math.floor(72 / (columns - 1))}%`;
|
|
322
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
323
|
+
ref,
|
|
324
|
+
className: `flex items-center gap-4 py-3 ${className}`,
|
|
325
|
+
children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
326
|
+
variant: "text",
|
|
327
|
+
width: index === 0 ? "28%" : sharedWidth,
|
|
328
|
+
height: 16,
|
|
329
|
+
animation
|
|
330
|
+
}, index))
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
SkeletonTableRow.displayName = "SkeletonTableRow";
|
|
334
|
+
var SkeletonListItem = (0, react.forwardRef)(({ showAvatar = true, showSecondaryText = true, showAction = false, animation = "pulse", className = "" }, ref) => {
|
|
335
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
336
|
+
ref,
|
|
337
|
+
className: `flex items-center gap-3 py-3 ${className}`,
|
|
338
|
+
children: [
|
|
339
|
+
showAvatar && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonAvatar, {
|
|
340
|
+
size: 48,
|
|
341
|
+
animation
|
|
342
|
+
}),
|
|
343
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
344
|
+
className: "flex-1",
|
|
345
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
346
|
+
variant: "text",
|
|
347
|
+
width: "70%",
|
|
348
|
+
height: 16,
|
|
349
|
+
animation
|
|
350
|
+
}), showSecondaryText && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, {
|
|
351
|
+
variant: "text",
|
|
352
|
+
width: "50%",
|
|
353
|
+
height: 14,
|
|
354
|
+
animation,
|
|
355
|
+
className: "mt-2"
|
|
356
|
+
})]
|
|
357
|
+
}),
|
|
358
|
+
showAction && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonButton, {
|
|
359
|
+
size: "sm",
|
|
360
|
+
animation
|
|
361
|
+
})
|
|
362
|
+
]
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
SkeletonListItem.displayName = "SkeletonListItem";
|
|
366
|
+
//#endregion
|
|
367
|
+
Object.defineProperty(exports, "Skeleton", {
|
|
368
|
+
enumerable: true,
|
|
369
|
+
get: function() {
|
|
370
|
+
return Skeleton;
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
Object.defineProperty(exports, "SkeletonAvatar", {
|
|
374
|
+
enumerable: true,
|
|
375
|
+
get: function() {
|
|
376
|
+
return SkeletonAvatar;
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
Object.defineProperty(exports, "SkeletonButton", {
|
|
380
|
+
enumerable: true,
|
|
381
|
+
get: function() {
|
|
382
|
+
return SkeletonButton;
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
Object.defineProperty(exports, "SkeletonCard", {
|
|
386
|
+
enumerable: true,
|
|
387
|
+
get: function() {
|
|
388
|
+
return SkeletonCard;
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
Object.defineProperty(exports, "SkeletonImage", {
|
|
392
|
+
enumerable: true,
|
|
393
|
+
get: function() {
|
|
394
|
+
return SkeletonImage;
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
Object.defineProperty(exports, "SkeletonListItem", {
|
|
398
|
+
enumerable: true,
|
|
399
|
+
get: function() {
|
|
400
|
+
return SkeletonListItem;
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
Object.defineProperty(exports, "SkeletonMetricCard", {
|
|
404
|
+
enumerable: true,
|
|
405
|
+
get: function() {
|
|
406
|
+
return SkeletonMetricCard;
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
Object.defineProperty(exports, "SkeletonTableRow", {
|
|
410
|
+
enumerable: true,
|
|
411
|
+
get: function() {
|
|
412
|
+
return SkeletonTableRow;
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
Object.defineProperty(exports, "SkeletonText", {
|
|
416
|
+
enumerable: true,
|
|
417
|
+
get: function() {
|
|
418
|
+
return SkeletonText;
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
//# sourceMappingURL=skeleton-BNea1Rcp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton-BNea1Rcp.cjs","names":[],"sources":["../../src/components/data-display/skeleton/Skeleton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\n\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"none\";\nexport type SkeletonTone =\n | \"default\"\n | \"subtle\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\nexport type SkeletonRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SkeletonSpeed = \"slow\" | \"normal\" | \"fast\";\n\ntype SkeletonCssVariables = CSSProperties &\n Record<\n \"--ui-skeleton-base\" | \"--ui-skeleton-highlight\" | \"--ui-skeleton-duration\",\n string\n >;\n\nexport interface SkeletonProps extends Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> {\n /** The variant shape of the skeleton */\n variant?: SkeletonVariant;\n /** The animation type */\n animation?: SkeletonAnimation;\n /** Width of the skeleton */\n width?: number | string;\n /** Height of the skeleton */\n height?: number | string;\n /** Border radius override */\n borderRadius?: number | string;\n /** Semantic radius preset */\n radius?: SkeletonRadius;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n /** Animation speed preset or custom duration */\n speed?: SkeletonSpeed | number | string;\n /** Number of lines for text variant */\n lines?: number;\n /** Gap between lines */\n lineGap?: number | string;\n /** Whether the last line should be shorter */\n lastLineWidth?: number | string;\n}\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"variant\"> {\n /** Number of text lines */\n lines?: number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"variant\" | \"width\" | \"height\"\n> {\n /** Size of the avatar */\n size?: number | string;\n}\n\nexport interface SkeletonCardProps {\n /** Whether to show image placeholder */\n showImage?: boolean;\n /** Image height */\n imageHeight?: number | string;\n /** Number of text lines */\n lines?: number;\n /** Whether to show avatar */\n showAvatar?: boolean;\n /** Whether to show action buttons */\n showActions?: boolean;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nexport interface SkeletonMetricCardProps {\n /** Whether to show a compact trend badge */\n showTrend?: boolean;\n /** Whether to render spark bars */\n showChart?: boolean;\n /** Number of spark bars */\n chartBars?: number;\n /** Width for the value block */\n valueWidth?: number | string;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nconst animationStyles: Record<SkeletonAnimation, string> = {\n pulse: \"ui-skeleton-pulse\",\n wave: \"ui-skeleton-wave\",\n none: \"\",\n};\n\nconst radiusStyles: Record<SkeletonRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full\",\n};\n\nconst variantStyles: Record<SkeletonVariant, SkeletonRadius> = {\n text: \"sm\",\n circular: \"full\",\n rectangular: \"none\",\n rounded: \"md\",\n};\n\nconst speedStyles: Record<SkeletonSpeed, string> = {\n slow: \"2.4s\",\n normal: \"1.6s\",\n fast: \"1.05s\",\n};\n\nconst toneStyles: Record<SkeletonTone, { base: string; highlight: string }> = {\n default: {\n base: \"var(--color-muted)\",\n highlight:\n \"color-mix(in oklch, var(--color-muted) 54%, var(--color-background))\",\n },\n subtle: {\n base: \"color-mix(in oklch, var(--color-muted) 72%, var(--color-background))\",\n highlight:\n \"color-mix(in oklch, var(--color-muted) 42%, var(--color-background))\",\n },\n accent: {\n base: \"var(--color-accent-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--color-accent-subtle) 48%, var(--color-background))\",\n },\n success: {\n base: \"var(--color-success-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--color-success-subtle) 48%, var(--color-background))\",\n },\n warning: {\n base: \"var(--color-warning-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--color-warning-subtle) 48%, var(--color-background))\",\n },\n danger: {\n base: \"var(--color-danger-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--color-danger-subtle) 48%, var(--color-background))\",\n },\n info: {\n base: \"var(--color-info-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--color-info-subtle) 48%, var(--color-background))\",\n },\n};\n\nfunction resolveDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction resolveDuration(value: SkeletonProps[\"speed\"]): string {\n if (typeof value === \"number\") {\n return `${value}ms`;\n }\n\n if (typeof value === \"string\" && value in speedStyles) {\n return speedStyles[value as SkeletonSpeed];\n }\n\n return value ?? speedStyles.normal;\n}\n\nfunction getDimensionStyle({\n variant,\n width,\n height,\n borderRadius,\n}: {\n variant: SkeletonVariant;\n width?: number | string;\n height?: number | string;\n borderRadius?: number | string;\n}): CSSProperties {\n const nextStyle: CSSProperties = {};\n const resolvedWidth = resolveDimension(width);\n const resolvedHeight = resolveDimension(height);\n const resolvedBorderRadius = resolveDimension(borderRadius);\n\n if (resolvedWidth) {\n nextStyle.width = resolvedWidth;\n } else if (variant === \"text\") {\n nextStyle.width = \"100%\";\n }\n\n if (resolvedHeight) {\n nextStyle.height = resolvedHeight;\n } else if (variant === \"text\") {\n nextStyle.height = \"1em\";\n } else if (variant === \"circular\") {\n nextStyle.width = nextStyle.width || \"40px\";\n nextStyle.height = nextStyle.width;\n }\n\n if (resolvedBorderRadius) {\n nextStyle.borderRadius = resolvedBorderRadius;\n }\n\n return nextStyle;\n}\n\n// Base Skeleton Component\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n animation = \"pulse\",\n width,\n height,\n borderRadius,\n radius,\n tone = \"default\",\n speed = \"normal\",\n className,\n lines = 1,\n lineGap = 8,\n lastLineWidth = \"80%\",\n style,\n [\"aria-hidden\"]: ariaHidden,\n ...rest\n },\n ref,\n ) => {\n const toneStyle = toneStyles[tone];\n const sharedStyle: SkeletonCssVariables = {\n \"--ui-skeleton-base\": toneStyle.base,\n \"--ui-skeleton-highlight\": toneStyle.highlight,\n \"--ui-skeleton-duration\": resolveDuration(speed),\n ...style,\n };\n const effectiveRadius = radius ?? variantStyles[variant];\n const sharedClassName = mergeClassNames(\n \"relative overflow-hidden bg-[var(--ui-skeleton-base)] pointer-events-none select-none shrink-0\",\n radiusStyles[effectiveRadius],\n animationStyles[animation],\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"flex flex-col\", className)}\n style={{\n ...style,\n gap: resolveDimension(lineGap),\n width: resolveDimension(width) ?? style?.width,\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={sharedClassName}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({\n variant,\n width:\n index === lines - 1 ? lastLineWidth : (width ?? \"100%\"),\n height,\n borderRadius,\n }),\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(sharedClassName, className)}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({ variant, width, height, borderRadius }),\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n// Skeleton Text Component\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, ...props }, ref) => {\n return <Skeleton ref={ref} variant=\"text\" lines={lines} {...props} />;\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nconst SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nconst SkeletonButton = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\"> & { size?: \"sm\" | \"md\" | \"lg\" }\n>(({ size = \"md\", animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeStyles = {\n sm: { width: 80, height: 32 },\n md: { width: 100, height: 40 },\n lg: { width: 120, height: 48 },\n };\n\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={sizeStyles[size].width}\n height={sizeStyles[size].height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n});\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Image Component\nconst SkeletonImage = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\">\n>(\n (\n {\n width = \"100%\",\n height = 200,\n animation = \"pulse\",\n className = \"\",\n ...props\n },\n ref,\n ) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={width}\n height={height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonImage.displayName = \"SkeletonImage\";\n\n// Skeleton Card Component\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showImage = true,\n imageHeight = 200,\n lines = 3,\n showAvatar = false,\n showActions = false,\n className,\n animation = \"pulse\",\n tone = \"default\",\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"overflow-hidden rounded-md border border-border bg-card shadow-sm\",\n className,\n )}\n >\n {showImage && (\n <SkeletonImage\n height={imageHeight}\n animation={animation}\n borderRadius={0}\n tone={tone}\n />\n )}\n\n <div className=\"p-4 flex flex-col gap-4\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar size={40} animation={animation} tone={tone} />\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"60%\"\n height={14}\n animation={animation}\n tone={tone}\n />\n <Skeleton\n variant=\"text\"\n width=\"40%\"\n height={12}\n animation={animation}\n tone={tone}\n className=\"mt-2\"\n />\n </div>\n </div>\n )}\n\n <SkeletonText\n lines={lines}\n animation={animation}\n height={14}\n lineGap={10}\n tone={tone}\n />\n\n {showActions && (\n <div className=\"flex gap-3 mt-2\">\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Metric Card Component\nconst SkeletonMetricCard = forwardRef<HTMLDivElement, SkeletonMetricCardProps>(\n (\n {\n showTrend = true,\n showChart = true,\n chartBars = 7,\n valueWidth = \"52%\",\n className,\n animation = \"wave\",\n tone = \"accent\",\n },\n ref,\n ) => {\n const chartHeights = [36, 52, 46, 72, 64, 84, 68, 78];\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"rounded-md border border-border bg-card p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1 space-y-3\">\n <Skeleton\n width=\"34%\"\n height={11}\n animation={animation}\n tone=\"subtle\"\n />\n <Skeleton\n width={valueWidth}\n height={28}\n animation={animation}\n tone={tone}\n radius=\"md\"\n />\n <Skeleton\n width=\"44%\"\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n\n {showTrend ? (\n <div className=\"rounded-full border border-border bg-surface px-3 py-2\">\n <Skeleton\n width={54}\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n ) : null}\n </div>\n\n {showChart ? (\n <div className=\"mt-5 flex h-20 items-end gap-2\">\n {Array.from({ length: chartBars }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n width=\"100%\"\n height={`${chartHeights[index % chartHeights.length]}%`}\n animation={animation}\n tone={tone}\n className=\"flex-1\"\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nSkeletonMetricCard.displayName = \"SkeletonMetricCard\";\n\n// Skeleton Table Row Component\nconst SkeletonTableRow = forwardRef<\n HTMLDivElement,\n { columns?: number; animation?: SkeletonAnimation; className?: string }\n>(({ columns = 4, animation = \"pulse\", className = \"\" }, ref) => {\n const sharedWidth =\n columns <= 1 ? \"100%\" : `${Math.floor(72 / (columns - 1))}%`;\n\n return (\n <div ref={ref} className={`flex items-center gap-4 py-3 ${className}`}>\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n width={index === 0 ? \"28%\" : sharedWidth}\n height={16}\n animation={animation}\n />\n ))}\n </div>\n );\n});\n\nSkeletonTableRow.displayName = \"SkeletonTableRow\";\n\n// Skeleton List Item Component\nconst SkeletonListItem = forwardRef<\n HTMLDivElement,\n {\n showAvatar?: boolean;\n showSecondaryText?: boolean;\n showAction?: boolean;\n animation?: SkeletonAnimation;\n className?: string;\n }\n>(\n (\n {\n showAvatar = true,\n showSecondaryText = true,\n showAction = false,\n animation = \"pulse\",\n className = \"\",\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={`flex items-center gap-3 py-3 ${className}`}>\n {showAvatar && <SkeletonAvatar size={48} animation={animation} />}\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"70%\"\n height={16}\n animation={animation}\n />\n {showSecondaryText && (\n <Skeleton\n variant=\"text\"\n width=\"50%\"\n height={14}\n animation={animation}\n className=\"mt-2\"\n />\n )}\n </div>\n {showAction && <SkeletonButton size=\"sm\" animation={animation} />}\n </div>\n );\n },\n);\n\nSkeletonListItem.displayName = \"SkeletonListItem\";\n\nexport default Skeleton;\nexport {\n Skeleton,\n SkeletonText,\n SkeletonAvatar,\n SkeletonButton,\n SkeletonImage,\n SkeletonCard,\n SkeletonMetricCard,\n SkeletonTableRow,\n SkeletonListItem,\n};\n"],"mappings":"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"}
|