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.
Files changed (198) hide show
  1. package/dist/animations.css +40 -0
  2. package/dist/calendar.cjs +1 -1
  3. package/dist/calendar.mjs +1 -1
  4. package/dist/card.cjs +1 -1
  5. package/dist/card.mjs +1 -1
  6. package/dist/carousel.cjs +1 -1
  7. package/dist/carousel.mjs +1 -1
  8. package/dist/catalog.cjs +6 -0
  9. package/dist/catalog.cjs.map +1 -1
  10. package/dist/catalog.d.ts +11 -1
  11. package/dist/catalog.d.ts.map +1 -1
  12. package/dist/catalog.mjs +6 -0
  13. package/dist/catalog.mjs.map +1 -1
  14. package/dist/charts.cjs +2 -1
  15. package/dist/charts.mjs +2 -2
  16. package/dist/checkbox.cjs +1 -1
  17. package/dist/checkbox.mjs +1 -1
  18. package/dist/chip.cjs +1 -1
  19. package/dist/chip.mjs +1 -1
  20. package/dist/chroma-grid.cjs +1 -1
  21. package/dist/chroma-grid.mjs +1 -1
  22. package/dist/chunks/{calendar-xrGmvukr.cjs → calendar-Cpp_Rc7T.cjs} +58 -17
  23. package/dist/chunks/calendar-Cpp_Rc7T.cjs.map +1 -0
  24. package/dist/chunks/{calendar-BarcG6x_.mjs → calendar-DrCgT_pj.mjs} +58 -17
  25. package/dist/chunks/calendar-DrCgT_pj.mjs.map +1 -0
  26. package/dist/chunks/{card-gt-HZh0h.cjs → card-C5_tFK6Q.cjs} +1 -1
  27. package/dist/chunks/{card-gt-HZh0h.cjs.map → card-C5_tFK6Q.cjs.map} +1 -1
  28. package/dist/chunks/{card-CcIF6z2H.mjs → card-Dh8wNv8N.mjs} +1 -1
  29. package/dist/chunks/{card-CcIF6z2H.mjs.map → card-Dh8wNv8N.mjs.map} +1 -1
  30. package/dist/chunks/{carousel-DJdqBVRK.mjs → carousel-BYwqI4cA.mjs} +1 -1
  31. package/dist/chunks/{carousel-DJdqBVRK.mjs.map → carousel-BYwqI4cA.mjs.map} +1 -1
  32. package/dist/chunks/{carousel-Cq5uwqQt.cjs → carousel-C1338X8h.cjs} +1 -1
  33. package/dist/chunks/{carousel-Cq5uwqQt.cjs.map → carousel-C1338X8h.cjs.map} +1 -1
  34. package/dist/chunks/{charts-DugYWvEf.mjs → charts-BYvM4TMG.mjs} +371 -117
  35. package/dist/chunks/charts-BYvM4TMG.mjs.map +1 -0
  36. package/dist/chunks/{charts-BpElnsoR.cjs → charts-DbxyHtlX.cjs} +375 -115
  37. package/dist/chunks/charts-DbxyHtlX.cjs.map +1 -0
  38. package/dist/chunks/{checkbox-yHuSw-hV.cjs → checkbox-CxOcjoGP.cjs} +1 -1
  39. package/dist/chunks/{checkbox-yHuSw-hV.cjs.map → checkbox-CxOcjoGP.cjs.map} +1 -1
  40. package/dist/chunks/{checkbox-DvwlGwWe.mjs → checkbox-Pr49U9F1.mjs} +1 -1
  41. package/dist/chunks/{checkbox-DvwlGwWe.mjs.map → checkbox-Pr49U9F1.mjs.map} +1 -1
  42. package/dist/chunks/{chip-DcBji__g.cjs → chip-B4ol1yPk.cjs} +1 -1
  43. package/dist/chunks/{chip-DcBji__g.cjs.map → chip-B4ol1yPk.cjs.map} +1 -1
  44. package/dist/chunks/{chip-BGSUmnlO.mjs → chip-DdnBLdpl.mjs} +1 -1
  45. package/dist/chunks/{chip-BGSUmnlO.mjs.map → chip-DdnBLdpl.mjs.map} +1 -1
  46. package/dist/chunks/{chroma-grid-Cdeql_2C.mjs → chroma-grid-BAo6V5A7.mjs} +1 -1
  47. package/dist/chunks/{chroma-grid-Cdeql_2C.mjs.map → chroma-grid-BAo6V5A7.mjs.map} +1 -1
  48. package/dist/chunks/{chroma-grid-9E9j1s9I.cjs → chroma-grid-CIk0dsNS.cjs} +1 -1
  49. package/dist/chunks/{chroma-grid-9E9j1s9I.cjs.map → chroma-grid-CIk0dsNS.cjs.map} +1 -1
  50. package/dist/chunks/{color-palette-BLvDnCOD.cjs → color-palette-2TuEMkAn.cjs} +1 -1
  51. package/dist/chunks/{color-palette-BLvDnCOD.cjs.map → color-palette-2TuEMkAn.cjs.map} +1 -1
  52. package/dist/chunks/{color-palette-CXlCDiZz.mjs → color-palette-euKQMWlV.mjs} +1 -1
  53. package/dist/chunks/{color-palette-CXlCDiZz.mjs.map → color-palette-euKQMWlV.mjs.map} +1 -1
  54. package/dist/chunks/{combobox-BXu3s0dt.cjs → combobox-CwGubKTt.cjs} +2 -2
  55. package/dist/chunks/combobox-CwGubKTt.cjs.map +1 -0
  56. package/dist/chunks/{combobox-CjK-qG4k.mjs → combobox-DrFmkI0F.mjs} +2 -2
  57. package/dist/chunks/combobox-DrFmkI0F.mjs.map +1 -0
  58. package/dist/chunks/{data-table-DyEQn9Yj.mjs → data-table-Bo80m7qV.mjs} +8 -8
  59. package/dist/chunks/{data-table-DyEQn9Yj.mjs.map → data-table-Bo80m7qV.mjs.map} +1 -1
  60. package/dist/chunks/{data-table-9HELVsYR.cjs → data-table-W1sK5tkL.cjs} +8 -8
  61. package/dist/chunks/{data-table-9HELVsYR.cjs.map → data-table-W1sK5tkL.cjs.map} +1 -1
  62. package/dist/chunks/{date-picker-D8gaaMlJ.mjs → date-picker-CNPORxhv.mjs} +87 -17
  63. package/dist/chunks/date-picker-CNPORxhv.mjs.map +1 -0
  64. package/dist/chunks/{date-picker-W9om1j7A.cjs → date-picker-CZo68Fkl.cjs} +87 -17
  65. package/dist/chunks/date-picker-CZo68Fkl.cjs.map +1 -0
  66. package/dist/chunks/input-BWM6G7jq.cjs +117 -0
  67. package/dist/chunks/input-BWM6G7jq.cjs.map +1 -0
  68. package/dist/chunks/input-Bt_r_B_c.mjs +105 -0
  69. package/dist/chunks/input-Bt_r_B_c.mjs.map +1 -0
  70. package/dist/chunks/{multi-select-combobox-ELSH_Xr4.mjs → multi-select-combobox-D46M-AN9.mjs} +2 -2
  71. package/dist/chunks/multi-select-combobox-D46M-AN9.mjs.map +1 -0
  72. package/dist/chunks/{multi-select-combobox-UW0X15W7.cjs → multi-select-combobox-dS6bJE_e.cjs} +2 -2
  73. package/dist/chunks/multi-select-combobox-dS6bJE_e.cjs.map +1 -0
  74. package/dist/chunks/{otp-input-B6zzOEqw.cjs → otp-input-DSW9Ca_D.cjs} +2 -2
  75. package/dist/chunks/otp-input-DSW9Ca_D.cjs.map +1 -0
  76. package/dist/chunks/{otp-input-Bg4nQG6x.mjs → otp-input-DeAi4nJ_.mjs} +2 -2
  77. package/dist/chunks/otp-input-DeAi4nJ_.mjs.map +1 -0
  78. package/dist/chunks/{progress-bar-C9FZDrju.mjs → progress-bar-B9sy7WBT.mjs} +1 -1
  79. package/dist/chunks/{progress-bar-C9FZDrju.mjs.map → progress-bar-B9sy7WBT.mjs.map} +1 -1
  80. package/dist/chunks/{progress-bar-C1OvQ-NI.cjs → progress-bar-BdvQtpm3.cjs} +1 -1
  81. package/dist/chunks/{progress-bar-C1OvQ-NI.cjs.map → progress-bar-BdvQtpm3.cjs.map} +1 -1
  82. package/dist/chunks/select-B8UQ6Uq5.mjs +170 -0
  83. package/dist/chunks/select-B8UQ6Uq5.mjs.map +1 -0
  84. package/dist/chunks/select-CCUSMvfS.cjs +176 -0
  85. package/dist/chunks/select-CCUSMvfS.cjs.map +1 -0
  86. package/dist/chunks/skeleton-BNea1Rcp.cjs +422 -0
  87. package/dist/chunks/skeleton-BNea1Rcp.cjs.map +1 -0
  88. package/dist/chunks/skeleton-CtLumdRw.mjs +368 -0
  89. package/dist/chunks/skeleton-CtLumdRw.mjs.map +1 -0
  90. package/dist/chunks/stepper-D6qQbZdg.cjs +642 -0
  91. package/dist/chunks/stepper-D6qQbZdg.cjs.map +1 -0
  92. package/dist/chunks/stepper-DUknuW2E.mjs +618 -0
  93. package/dist/chunks/stepper-DUknuW2E.mjs.map +1 -0
  94. package/dist/chunks/{textarea-CU5C-Zw9.mjs → textarea-Blky_fLK.mjs} +2 -2
  95. package/dist/chunks/{textarea-CU5C-Zw9.mjs.map → textarea-Blky_fLK.mjs.map} +1 -1
  96. package/dist/chunks/{textarea-CAUsyu4-.cjs → textarea-ok_NlE2p.cjs} +2 -2
  97. package/dist/chunks/textarea-ok_NlE2p.cjs.map +1 -0
  98. package/dist/color-palette.cjs +1 -1
  99. package/dist/color-palette.mjs +1 -1
  100. package/dist/colors.css +3 -0
  101. package/dist/combobox.cjs +1 -1
  102. package/dist/combobox.mjs +1 -1
  103. package/dist/components/data-display/charts/AreaChart.d.ts.map +1 -1
  104. package/dist/components/data-display/charts/BarChart.d.ts +1 -0
  105. package/dist/components/data-display/charts/BarChart.d.ts.map +1 -1
  106. package/dist/components/data-display/charts/NeonLineChart.d.ts.map +1 -1
  107. package/dist/components/data-display/charts/PieChart.d.ts +18 -2
  108. package/dist/components/data-display/charts/PieChart.d.ts.map +1 -1
  109. package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts +21 -0
  110. package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts.map +1 -0
  111. package/dist/components/data-display/charts/StackedBarChart.d.ts.map +1 -1
  112. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts +3 -0
  113. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts.map +1 -1
  114. package/dist/components/data-display/charts/chartStyles.d.ts +24 -0
  115. package/dist/components/data-display/charts/chartStyles.d.ts.map +1 -0
  116. package/dist/components/data-display/charts/index.d.ts +2 -0
  117. package/dist/components/data-display/charts/index.d.ts.map +1 -1
  118. package/dist/components/data-display/skeleton/Skeleton.d.ts +32 -5
  119. package/dist/components/data-display/skeleton/Skeleton.d.ts.map +1 -1
  120. package/dist/components/data-display/skeleton/index.d.ts +2 -2
  121. package/dist/components/data-display/skeleton/index.d.ts.map +1 -1
  122. package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
  123. package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
  124. package/dist/components/forms/input/Input.d.ts.map +1 -1
  125. package/dist/components/forms/input/types.d.ts +5 -0
  126. package/dist/components/forms/input/types.d.ts.map +1 -1
  127. package/dist/components/forms/select/Select.d.ts.map +1 -1
  128. package/dist/components/forms/select/types.d.ts +7 -1
  129. package/dist/components/forms/select/types.d.ts.map +1 -1
  130. package/dist/components/navigation/stepper/Stepper1.d.ts +4 -0
  131. package/dist/components/navigation/stepper/Stepper1.d.ts.map +1 -0
  132. package/dist/components/navigation/stepper/Stepper2.d.ts +5 -0
  133. package/dist/components/navigation/stepper/Stepper2.d.ts.map +1 -0
  134. package/dist/components/navigation/stepper/index.d.ts +4 -1
  135. package/dist/components/navigation/stepper/index.d.ts.map +1 -1
  136. package/dist/components/navigation/stepper/types.d.ts +85 -0
  137. package/dist/components/navigation/stepper/types.d.ts.map +1 -1
  138. package/dist/data-table.cjs +1 -1
  139. package/dist/data-table.mjs +1 -1
  140. package/dist/date-picker.cjs +1 -1
  141. package/dist/date-picker.mjs +1 -1
  142. package/dist/docs.cjs +12 -2
  143. package/dist/docs.cjs.map +1 -1
  144. package/dist/docs.d.ts.map +1 -1
  145. package/dist/docs.mjs +12 -2
  146. package/dist/docs.mjs.map +1 -1
  147. package/dist/foundation.css +7 -0
  148. package/dist/index.cjs +32 -19
  149. package/dist/index.d.ts +7 -4
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.mjs +20 -20
  152. package/dist/input.cjs +1 -1
  153. package/dist/input.mjs +1 -1
  154. package/dist/multi-select-combobox.cjs +1 -1
  155. package/dist/multi-select-combobox.mjs +1 -1
  156. package/dist/otp-input.cjs +1 -1
  157. package/dist/otp-input.mjs +1 -1
  158. package/dist/progress-bar.cjs +1 -1
  159. package/dist/progress-bar.mjs +1 -1
  160. package/dist/select.cjs +1 -1
  161. package/dist/select.mjs +1 -1
  162. package/dist/skeleton.cjs +9 -1
  163. package/dist/skeleton.mjs +2 -2
  164. package/dist/stepper.cjs +5 -1
  165. package/dist/stepper.mjs +2 -2
  166. package/dist/textarea.cjs +1 -1
  167. package/dist/textarea.mjs +1 -1
  168. package/dist/tokens.css +11 -2
  169. package/package.json +9 -9
  170. package/dist/chunks/calendar-BarcG6x_.mjs.map +0 -1
  171. package/dist/chunks/calendar-xrGmvukr.cjs.map +0 -1
  172. package/dist/chunks/charts-BpElnsoR.cjs.map +0 -1
  173. package/dist/chunks/charts-DugYWvEf.mjs.map +0 -1
  174. package/dist/chunks/combobox-BXu3s0dt.cjs.map +0 -1
  175. package/dist/chunks/combobox-CjK-qG4k.mjs.map +0 -1
  176. package/dist/chunks/date-picker-D8gaaMlJ.mjs.map +0 -1
  177. package/dist/chunks/date-picker-W9om1j7A.cjs.map +0 -1
  178. package/dist/chunks/input-D9qZNqXV.cjs +0 -99
  179. package/dist/chunks/input-D9qZNqXV.cjs.map +0 -1
  180. package/dist/chunks/input-wNqevfQ4.mjs +0 -87
  181. package/dist/chunks/input-wNqevfQ4.mjs.map +0 -1
  182. package/dist/chunks/multi-select-combobox-ELSH_Xr4.mjs.map +0 -1
  183. package/dist/chunks/multi-select-combobox-UW0X15W7.cjs.map +0 -1
  184. package/dist/chunks/otp-input-B6zzOEqw.cjs.map +0 -1
  185. package/dist/chunks/otp-input-Bg4nQG6x.mjs.map +0 -1
  186. package/dist/chunks/select-D71tk6-I.mjs +0 -152
  187. package/dist/chunks/select-D71tk6-I.mjs.map +0 -1
  188. package/dist/chunks/select-WC_kPqUP.cjs +0 -158
  189. package/dist/chunks/select-WC_kPqUP.cjs.map +0 -1
  190. package/dist/chunks/skeleton-BhYWOp0Q.mjs +0 -215
  191. package/dist/chunks/skeleton-BhYWOp0Q.mjs.map +0 -1
  192. package/dist/chunks/skeleton-DTXpHYYB.cjs +0 -221
  193. package/dist/chunks/skeleton-DTXpHYYB.cjs.map +0 -1
  194. package/dist/chunks/stepper-D4yQsQB0.mjs +0 -261
  195. package/dist/chunks/stepper-D4yQsQB0.mjs.map +0 -1
  196. package/dist/chunks/stepper-fY-Sx72k.cjs +0 -267
  197. package/dist/chunks/stepper-fY-Sx72k.cjs.map +0 -1
  198. 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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"}