@zentauri-ui/zentauri-components 0.0.7 → 0.0.9

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 (132) hide show
  1. package/README.md +134 -0
  2. package/dist/ui/accordion.cjs +311 -0
  3. package/dist/ui/accordion.cjs.map +1 -0
  4. package/dist/ui/accordion.d.cts +70 -0
  5. package/dist/ui/accordion.d.ts +70 -0
  6. package/dist/ui/accordion.js +286 -0
  7. package/dist/ui/accordion.js.map +1 -0
  8. package/dist/ui/alert.cjs +257 -0
  9. package/dist/ui/alert.cjs.map +1 -0
  10. package/dist/ui/alert.d.cts +66 -0
  11. package/dist/ui/alert.d.ts +66 -0
  12. package/dist/ui/alert.js +224 -0
  13. package/dist/ui/alert.js.map +1 -0
  14. package/dist/ui/badge.cjs +192 -0
  15. package/dist/ui/badge.cjs.map +1 -0
  16. package/dist/ui/badge.d.cts +37 -0
  17. package/dist/ui/badge.d.ts +37 -0
  18. package/dist/ui/badge.js +165 -0
  19. package/dist/ui/badge.js.map +1 -0
  20. package/dist/ui/buttons.cjs +202 -0
  21. package/dist/ui/buttons.cjs.map +1 -0
  22. package/dist/ui/buttons.d.cts +27 -0
  23. package/dist/ui/buttons.d.ts +27 -0
  24. package/dist/ui/buttons.js +176 -0
  25. package/dist/ui/buttons.js.map +1 -0
  26. package/dist/ui/card.cjs +293 -0
  27. package/dist/ui/card.cjs.map +1 -0
  28. package/dist/ui/card.d.cts +77 -0
  29. package/dist/ui/card.d.ts +77 -0
  30. package/dist/ui/card.js +258 -0
  31. package/dist/ui/card.js.map +1 -0
  32. package/dist/ui/divider.cjs +229 -0
  33. package/dist/ui/divider.cjs.map +1 -0
  34. package/dist/ui/divider.d.cts +39 -0
  35. package/dist/ui/divider.d.ts +39 -0
  36. package/dist/ui/divider.js +200 -0
  37. package/dist/ui/divider.js.map +1 -0
  38. package/dist/ui/drawer.cjs +408 -0
  39. package/dist/ui/drawer.cjs.map +1 -0
  40. package/dist/ui/drawer.d.cts +81 -0
  41. package/dist/ui/drawer.d.ts +81 -0
  42. package/dist/ui/drawer.js +383 -0
  43. package/dist/ui/drawer.js.map +1 -0
  44. package/dist/ui/dropdown.cjs +302 -0
  45. package/dist/ui/dropdown.cjs.map +1 -0
  46. package/dist/ui/dropdown.d.cts +50 -0
  47. package/dist/ui/dropdown.d.ts +50 -0
  48. package/dist/ui/dropdown.js +278 -0
  49. package/dist/ui/dropdown.js.map +1 -0
  50. package/dist/ui/empty-state.cjs +186 -0
  51. package/dist/ui/empty-state.cjs.map +1 -0
  52. package/dist/ui/empty-state.d.cts +55 -0
  53. package/dist/ui/empty-state.d.ts +55 -0
  54. package/dist/ui/empty-state.js +154 -0
  55. package/dist/ui/empty-state.js.map +1 -0
  56. package/dist/ui/index.d.cts +27 -1164
  57. package/dist/ui/index.d.ts +27 -1164
  58. package/dist/ui/inputs.cjs +458 -0
  59. package/dist/ui/inputs.cjs.map +1 -0
  60. package/dist/ui/inputs.d.cts +35 -0
  61. package/dist/ui/inputs.d.ts +35 -0
  62. package/dist/ui/inputs.js +432 -0
  63. package/dist/ui/inputs.js.map +1 -0
  64. package/dist/ui/modal.cjs +406 -0
  65. package/dist/ui/modal.cjs.map +1 -0
  66. package/dist/ui/modal.d.cts +84 -0
  67. package/dist/ui/modal.d.ts +84 -0
  68. package/dist/ui/modal.js +384 -0
  69. package/dist/ui/modal.js.map +1 -0
  70. package/dist/ui/pagination.cjs +523 -0
  71. package/dist/ui/pagination.cjs.map +1 -0
  72. package/dist/ui/pagination.d.cts +114 -0
  73. package/dist/ui/pagination.d.ts +114 -0
  74. package/dist/ui/pagination.js +494 -0
  75. package/dist/ui/pagination.js.map +1 -0
  76. package/dist/ui/progress.cjs +268 -0
  77. package/dist/ui/progress.cjs.map +1 -0
  78. package/dist/ui/progress.d.cts +61 -0
  79. package/dist/ui/progress.d.ts +61 -0
  80. package/dist/ui/progress.js +237 -0
  81. package/dist/ui/progress.js.map +1 -0
  82. package/dist/ui/select.cjs +360 -0
  83. package/dist/ui/select.cjs.map +1 -0
  84. package/dist/ui/select.d.cts +73 -0
  85. package/dist/ui/select.d.ts +73 -0
  86. package/dist/ui/select.js +327 -0
  87. package/dist/ui/select.js.map +1 -0
  88. package/dist/ui/skeleton.cjs +576 -0
  89. package/dist/ui/skeleton.cjs.map +1 -0
  90. package/dist/ui/skeleton.d.cts +90 -0
  91. package/dist/ui/skeleton.d.ts +90 -0
  92. package/dist/ui/skeleton.js +544 -0
  93. package/dist/ui/skeleton.js.map +1 -0
  94. package/dist/ui/spinner.cjs +219 -0
  95. package/dist/ui/spinner.cjs.map +1 -0
  96. package/dist/ui/spinner.d.cts +27 -0
  97. package/dist/ui/spinner.d.ts +27 -0
  98. package/dist/ui/spinner.js +193 -0
  99. package/dist/ui/spinner.js.map +1 -0
  100. package/dist/ui/table.cjs +328 -0
  101. package/dist/ui/table.cjs.map +1 -0
  102. package/dist/ui/table.d.cts +81 -0
  103. package/dist/ui/table.d.ts +81 -0
  104. package/dist/ui/table.js +293 -0
  105. package/dist/ui/table.js.map +1 -0
  106. package/dist/ui/tabs.cjs +300 -0
  107. package/dist/ui/tabs.cjs.map +1 -0
  108. package/dist/ui/tabs.d.cts +58 -0
  109. package/dist/ui/tabs.d.ts +58 -0
  110. package/dist/ui/tabs.js +274 -0
  111. package/dist/ui/tabs.js.map +1 -0
  112. package/dist/ui/toast.cjs +285 -0
  113. package/dist/ui/toast.cjs.map +1 -0
  114. package/dist/ui/toast.d.cts +86 -0
  115. package/dist/ui/toast.d.ts +86 -0
  116. package/dist/ui/toast.js +258 -0
  117. package/dist/ui/toast.js.map +1 -0
  118. package/dist/ui/toggle.cjs +185 -0
  119. package/dist/ui/toggle.cjs.map +1 -0
  120. package/dist/ui/toggle.d.cts +37 -0
  121. package/dist/ui/toggle.d.ts +37 -0
  122. package/dist/ui/toggle.js +158 -0
  123. package/dist/ui/toggle.js.map +1 -0
  124. package/dist/ui/tooltip.cjs +242 -0
  125. package/dist/ui/tooltip.cjs.map +1 -0
  126. package/dist/ui/tooltip.d.cts +46 -0
  127. package/dist/ui/tooltip.d.ts +46 -0
  128. package/dist/ui/tooltip.js +214 -0
  129. package/dist/ui/tooltip.js.map +1 -0
  130. package/dist/variants-1Bx3BEeS.d.cts +8 -0
  131. package/dist/variants-1Bx3BEeS.d.ts +8 -0
  132. package/package.json +7 -3
@@ -0,0 +1,544 @@
1
+ "use client";
2
+
3
+
4
+ // src/ui/skeleton/skeleton.tsx
5
+ import { createContext, useContext, useMemo } from "react";
6
+ import { motion } from "framer-motion";
7
+
8
+ // src/lib/utils.ts
9
+ import { clsx } from "clsx";
10
+ import { twMerge } from "tailwind-merge";
11
+ function cn(...inputs) {
12
+ return twMerge(clsx(inputs));
13
+ }
14
+
15
+ // src/ui/skeleton/animations.ts
16
+ var skeletonAnimationPresets = {
17
+ none: {},
18
+ shimmer: {
19
+ initial: { backgroundPosition: "100% 0%" },
20
+ animate: { backgroundPosition: ["100% 0%", "0% 0%"] },
21
+ transition: { repeat: Infinity, duration: 1.35, ease: "linear" }
22
+ },
23
+ pulse: {
24
+ initial: { opacity: 1 },
25
+ animate: { opacity: [1, 0.5, 1] },
26
+ transition: { repeat: Infinity, duration: 1.35, ease: "easeInOut" }
27
+ }
28
+ };
29
+
30
+ // src/ui/skeleton/variants.ts
31
+ import { cva } from "class-variance-authority";
32
+ var shimmerLayer = "[background-size:220%_100%] [background-repeat:no-repeat] [background-position:100%_0%]";
33
+ var skeletonShimmerGradientClasses = {
34
+ default: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.04),rgba(255,255,255,0.22),rgba(255,255,255,0.04))]`,
35
+ subtle: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.03),rgba(255,255,255,0.14),rgba(255,255,255,0.03))]`,
36
+ muted: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.02),rgba(255,255,255,0.1),rgba(255,255,255,0.02))]`,
37
+ sky: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(56,189,248,0.1),rgba(56,189,248,0.42),rgba(56,189,248,0.1))]`,
38
+ rose: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,113,133,0.1),rgba(251,113,133,0.42),rgba(251,113,133,0.1))]`,
39
+ purple: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(192,132,252,0.1),rgba(192,132,252,0.42),rgba(192,132,252,0.1))]`,
40
+ pink: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(244,114,182,0.1),rgba(244,114,182,0.42),rgba(244,114,182,0.1))]`,
41
+ orange: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,146,60,0.1),rgba(251,146,60,0.42),rgba(251,146,60,0.1))]`,
42
+ yellow: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(250,204,21,0.12),rgba(250,204,21,0.4),rgba(250,204,21,0.12))]`,
43
+ teal: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(45,212,191,0.1),rgba(45,212,191,0.42),rgba(45,212,191,0.1))]`,
44
+ indigo: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(129,140,248,0.1),rgba(129,140,248,0.42),rgba(129,140,248,0.1))]`,
45
+ emerald: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(52,211,153,0.1),rgba(52,211,153,0.42),rgba(52,211,153,0.1))]`,
46
+ gray: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(161,161,170,0.1),rgba(161,161,170,0.38),rgba(161,161,170,0.1))]`,
47
+ amber: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,191,36,0.12),rgba(251,191,36,0.42),rgba(251,191,36,0.12))]`,
48
+ violet: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(167,139,250,0.1),rgba(167,139,250,0.42),rgba(167,139,250,0.1))]`,
49
+ "gradient-blue": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(100,149,237,0.1),rgba(100,149,237,0.42),rgba(100,149,237,0.1))]`,
50
+ "gradient-green": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(52,211,153,0.1),rgba(52,211,153,0.42),rgba(52,211,153,0.1))]`,
51
+ "gradient-red": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(239,68,68,0.1),rgba(239,68,68,0.42),rgba(239,68,68,0.1))]`,
52
+ "gradient-yellow": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(250,204,21,0.12),rgba(250,204,21,0.42),rgba(250,204,21,0.12))]`,
53
+ "gradient-purple": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(167,139,250,0.1),rgba(167,139,250,0.42),rgba(167,139,250,0.1))]`,
54
+ "gradient-teal": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(45,212,191,0.1),rgba(45,212,191,0.42),rgba(45,212,191,0.1))]`,
55
+ "gradient-indigo": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(129,140,248,0.1),rgba(129,140,248,0.42),rgba(129,140,248,0.1))]`,
56
+ "gradient-pink": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(244,114,182,0.1),rgba(244,114,182,0.42),rgba(244,114,182,0.1))]`,
57
+ "gradient-orange": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,146,60,0.1),rgba(251,146,60,0.42),rgba(251,146,60,0.1))]`
58
+ };
59
+ var skeletonVariants = cva(
60
+ "relative overflow-hidden bg-white/10 text-transparent",
61
+ {
62
+ variants: {
63
+ appearance: {
64
+ default: "bg-white/10",
65
+ subtle: "bg-white/[0.07]",
66
+ muted: "bg-slate-800/80",
67
+ sky: "bg-sky-500/10",
68
+ rose: "bg-rose-500/10",
69
+ purple: "bg-purple-500/10",
70
+ pink: "bg-pink-500/10",
71
+ orange: "bg-orange-500/10",
72
+ yellow: "bg-yellow-500/10",
73
+ teal: "bg-teal-500/10",
74
+ indigo: "bg-indigo-500/10",
75
+ emerald: "bg-emerald-500/10",
76
+ gray: "bg-gray-500/10",
77
+ amber: "bg-amber-500/10",
78
+ violet: "bg-violet-500/10",
79
+ "gradient-blue": "bg-gradient-to-r from-blue-600 to-purple-600",
80
+ "gradient-green": "bg-gradient-to-r from-green-600 to-lime-600",
81
+ "gradient-red": "bg-gradient-to-r from-red-600 to-pink-600",
82
+ "gradient-yellow": "bg-gradient-to-r from-yellow-600 to-orange-600",
83
+ "gradient-purple": "bg-gradient-to-r from-purple-600 to-pink-600",
84
+ "gradient-teal": "bg-gradient-to-r from-teal-600 to-cyan-600",
85
+ "gradient-indigo": "bg-gradient-to-r from-indigo-600 to-purple-600",
86
+ "gradient-pink": "bg-gradient-to-r from-pink-600 to-rose-600",
87
+ "gradient-orange": "bg-gradient-to-r from-orange-600 to-red-600"
88
+ },
89
+ size: {
90
+ sm: "min-h-3",
91
+ md: "min-h-4",
92
+ lg: "min-h-6"
93
+ },
94
+ rounded: {
95
+ none: "rounded-none",
96
+ sm: "rounded-md",
97
+ md: "rounded-lg",
98
+ lg: "rounded-xl",
99
+ full: "rounded-full"
100
+ },
101
+ animation: {
102
+ none: "",
103
+ shimmer: "",
104
+ pulse: ""
105
+ },
106
+ shimmerTone: {
107
+ default: "",
108
+ subtle: "",
109
+ muted: "",
110
+ sky: "",
111
+ rose: "",
112
+ purple: "",
113
+ pink: "",
114
+ orange: "",
115
+ yellow: "",
116
+ teal: "",
117
+ indigo: "",
118
+ emerald: "",
119
+ gray: "",
120
+ amber: "",
121
+ violet: "",
122
+ "gradient-blue": "",
123
+ "gradient-green": "",
124
+ "gradient-red": "",
125
+ "gradient-yellow": "",
126
+ "gradient-purple": "",
127
+ "gradient-teal": "",
128
+ "gradient-indigo": "",
129
+ "gradient-pink": "",
130
+ "gradient-orange": ""
131
+ }
132
+ },
133
+ compoundVariants: [
134
+ {
135
+ animation: "shimmer",
136
+ shimmerTone: "default",
137
+ class: skeletonShimmerGradientClasses.default
138
+ },
139
+ {
140
+ animation: "shimmer",
141
+ shimmerTone: "muted",
142
+ class: skeletonShimmerGradientClasses.subtle
143
+ },
144
+ {
145
+ animation: "shimmer",
146
+ shimmerTone: "subtle",
147
+ class: skeletonShimmerGradientClasses.subtle
148
+ },
149
+ {
150
+ animation: "shimmer",
151
+ shimmerTone: "sky",
152
+ class: skeletonShimmerGradientClasses.sky
153
+ },
154
+ {
155
+ animation: "shimmer",
156
+ shimmerTone: "rose",
157
+ class: skeletonShimmerGradientClasses.rose
158
+ },
159
+ {
160
+ animation: "shimmer",
161
+ shimmerTone: "purple",
162
+ class: skeletonShimmerGradientClasses.purple
163
+ },
164
+ {
165
+ animation: "shimmer",
166
+ shimmerTone: "pink",
167
+ class: skeletonShimmerGradientClasses.pink
168
+ },
169
+ {
170
+ animation: "shimmer",
171
+ shimmerTone: "orange",
172
+ class: skeletonShimmerGradientClasses.orange
173
+ },
174
+ {
175
+ animation: "shimmer",
176
+ shimmerTone: "yellow",
177
+ class: skeletonShimmerGradientClasses.yellow
178
+ },
179
+ {
180
+ animation: "shimmer",
181
+ shimmerTone: "teal",
182
+ class: skeletonShimmerGradientClasses.teal
183
+ },
184
+ {
185
+ animation: "shimmer",
186
+ shimmerTone: "indigo",
187
+ class: skeletonShimmerGradientClasses.indigo
188
+ },
189
+ {
190
+ animation: "shimmer",
191
+ shimmerTone: "emerald",
192
+ class: skeletonShimmerGradientClasses.emerald
193
+ },
194
+ {
195
+ animation: "shimmer",
196
+ shimmerTone: "gray",
197
+ class: skeletonShimmerGradientClasses.gray
198
+ },
199
+ {
200
+ animation: "shimmer",
201
+ shimmerTone: "amber",
202
+ class: skeletonShimmerGradientClasses.amber
203
+ },
204
+ {
205
+ animation: "shimmer",
206
+ shimmerTone: "violet",
207
+ class: skeletonShimmerGradientClasses.violet
208
+ },
209
+ {
210
+ animation: "shimmer",
211
+ shimmerTone: "gradient-blue",
212
+ class: skeletonShimmerGradientClasses["gradient-blue"]
213
+ },
214
+ {
215
+ animation: "shimmer",
216
+ shimmerTone: "gradient-green",
217
+ class: skeletonShimmerGradientClasses["gradient-green"]
218
+ },
219
+ {
220
+ animation: "shimmer",
221
+ shimmerTone: "gradient-red",
222
+ class: skeletonShimmerGradientClasses["gradient-red"]
223
+ },
224
+ {
225
+ animation: "shimmer",
226
+ shimmerTone: "gradient-yellow",
227
+ class: skeletonShimmerGradientClasses["gradient-yellow"]
228
+ },
229
+ {
230
+ animation: "shimmer",
231
+ shimmerTone: "gradient-purple",
232
+ class: skeletonShimmerGradientClasses["gradient-purple"]
233
+ },
234
+ {
235
+ animation: "shimmer",
236
+ shimmerTone: "gradient-teal",
237
+ class: skeletonShimmerGradientClasses["gradient-teal"]
238
+ },
239
+ {
240
+ animation: "shimmer",
241
+ shimmerTone: "gradient-indigo",
242
+ class: skeletonShimmerGradientClasses["gradient-indigo"]
243
+ },
244
+ {
245
+ animation: "shimmer",
246
+ shimmerTone: "gradient-pink",
247
+ class: skeletonShimmerGradientClasses["gradient-pink"]
248
+ },
249
+ {
250
+ animation: "shimmer",
251
+ shimmerTone: "gradient-orange",
252
+ class: skeletonShimmerGradientClasses["gradient-orange"]
253
+ },
254
+ {
255
+ animation: "pulse",
256
+ class: ""
257
+ }
258
+ ],
259
+ defaultVariants: {
260
+ appearance: "default",
261
+ size: "md",
262
+ rounded: "md",
263
+ animation: "shimmer",
264
+ shimmerTone: "default"
265
+ }
266
+ }
267
+ );
268
+ var skeletonTextLineVariants = cva("block w-full", {
269
+ variants: {
270
+ size: {
271
+ sm: "h-2.5",
272
+ md: "h-3",
273
+ lg: "h-4"
274
+ }
275
+ },
276
+ defaultVariants: { size: "md" }
277
+ });
278
+
279
+ // src/ui/skeleton/skeleton.tsx
280
+ import { jsx, jsxs } from "react/jsx-runtime";
281
+ var SkeletonAnimationContext = createContext(
282
+ void 0
283
+ );
284
+ function useSkeletonAnimation(fallback) {
285
+ return useContext(SkeletonAnimationContext) ?? fallback;
286
+ }
287
+ function Skeleton(props) {
288
+ const {
289
+ className,
290
+ appearance,
291
+ size,
292
+ rounded,
293
+ animation = "shimmer",
294
+ shimmerTone,
295
+ busy,
296
+ children,
297
+ ref,
298
+ ...rest
299
+ } = props;
300
+ const motionProps = skeletonAnimationPresets[animation];
301
+ const ctx = useMemo(() => animation, [animation]);
302
+ return /* @__PURE__ */ jsx(SkeletonAnimationContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
303
+ motion.div,
304
+ {
305
+ ref,
306
+ "data-slot": "skeleton",
307
+ "aria-hidden": true,
308
+ "aria-busy": busy ? true : void 0,
309
+ className: cn(
310
+ skeletonVariants({
311
+ appearance,
312
+ size,
313
+ rounded,
314
+ animation,
315
+ shimmerTone
316
+ }),
317
+ className
318
+ ),
319
+ initial: false,
320
+ ...motionProps,
321
+ ...rest,
322
+ children
323
+ }
324
+ ) });
325
+ }
326
+ Skeleton.displayName = "Skeleton";
327
+ function SkeletonText(props) {
328
+ const {
329
+ lines = 3,
330
+ className,
331
+ appearance,
332
+ size,
333
+ rounded,
334
+ animation = "shimmer",
335
+ shimmerTone,
336
+ busy,
337
+ ref
338
+ } = props;
339
+ const effectiveAnimation = useSkeletonAnimation(animation);
340
+ const motionProps = skeletonAnimationPresets[effectiveAnimation];
341
+ return /* @__PURE__ */ jsx(
342
+ "div",
343
+ {
344
+ "data-slot": "skeleton-text",
345
+ className: cn("flex w-full flex-col gap-2", className),
346
+ "aria-hidden": true,
347
+ "aria-busy": busy ? true : void 0,
348
+ children: Array.from({ length: lines }).map((_, index) => /* @__PURE__ */ jsx(
349
+ motion.div,
350
+ {
351
+ ref: index === 0 ? ref : void 0,
352
+ className: cn(
353
+ skeletonVariants({
354
+ appearance,
355
+ size,
356
+ rounded,
357
+ animation: effectiveAnimation,
358
+ shimmerTone
359
+ }),
360
+ skeletonTextLineVariants({ size }),
361
+ index === lines - 1 ? "w-3/5" : "w-full"
362
+ ),
363
+ initial: false,
364
+ ...motionProps
365
+ },
366
+ index
367
+ ))
368
+ }
369
+ );
370
+ }
371
+ SkeletonText.displayName = "SkeletonText";
372
+ var avatarSizeClass = {
373
+ xs: "size-6",
374
+ sm: "size-8",
375
+ md: "size-10",
376
+ lg: "size-12",
377
+ xl: "size-14",
378
+ "2xl": "size-16"
379
+ };
380
+ function SkeletonAvatar(props) {
381
+ const {
382
+ avatarSize = "md",
383
+ className,
384
+ appearance,
385
+ size,
386
+ rounded = "full",
387
+ animation,
388
+ shimmerTone,
389
+ busy,
390
+ ref,
391
+ ...rest
392
+ } = props;
393
+ const effectiveAnimation = useSkeletonAnimation(animation ?? "shimmer");
394
+ const motionProps = skeletonAnimationPresets[effectiveAnimation];
395
+ return /* @__PURE__ */ jsx(
396
+ motion.div,
397
+ {
398
+ ref,
399
+ "data-slot": "skeleton-avatar",
400
+ "aria-hidden": true,
401
+ "aria-busy": busy ? true : void 0,
402
+ className: cn(
403
+ skeletonVariants({
404
+ appearance,
405
+ size,
406
+ rounded,
407
+ animation: effectiveAnimation,
408
+ shimmerTone
409
+ }),
410
+ avatarSizeClass[avatarSize],
411
+ className
412
+ ),
413
+ initial: false,
414
+ ...motionProps,
415
+ ...rest
416
+ }
417
+ );
418
+ }
419
+ SkeletonAvatar.displayName = "SkeletonAvatar";
420
+ function SkeletonCard(props) {
421
+ const {
422
+ className,
423
+ busy,
424
+ animation = "shimmer",
425
+ shimmerTone,
426
+ appearance,
427
+ size,
428
+ rounded,
429
+ ref
430
+ } = props;
431
+ return /* @__PURE__ */ jsx(
432
+ "div",
433
+ {
434
+ ref,
435
+ "data-slot": "skeleton-card",
436
+ className: cn("w-full max-w-sm", className),
437
+ "aria-busy": busy ? true : void 0,
438
+ children: /* @__PURE__ */ jsxs(
439
+ Skeleton,
440
+ {
441
+ rounded: "lg",
442
+ animation,
443
+ shimmerTone,
444
+ appearance,
445
+ size,
446
+ busy,
447
+ className: "flex flex-col gap-4 p-4",
448
+ children: [
449
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
450
+ /* @__PURE__ */ jsx(
451
+ SkeletonAvatar,
452
+ {
453
+ appearance,
454
+ size,
455
+ animation,
456
+ shimmerTone,
457
+ rounded
458
+ }
459
+ ),
460
+ /* @__PURE__ */ jsx("div", { className: "flex flex-1 flex-col gap-2", children: /* @__PURE__ */ jsx(
461
+ SkeletonText,
462
+ {
463
+ lines: 2,
464
+ appearance,
465
+ size,
466
+ animation,
467
+ shimmerTone
468
+ }
469
+ ) })
470
+ ] }),
471
+ /* @__PURE__ */ jsx(
472
+ SkeletonText,
473
+ {
474
+ lines: 4,
475
+ appearance,
476
+ size,
477
+ animation,
478
+ shimmerTone
479
+ }
480
+ )
481
+ ]
482
+ }
483
+ )
484
+ }
485
+ );
486
+ }
487
+ SkeletonCard.displayName = "SkeletonCard";
488
+ var buttonHeight = {
489
+ sm: "h-8 w-24",
490
+ md: "h-10 w-32",
491
+ lg: "h-12 w-40"
492
+ };
493
+ function SkeletonButton(props) {
494
+ const {
495
+ buttonSize = "md",
496
+ className,
497
+ appearance,
498
+ size,
499
+ rounded = "md",
500
+ animation,
501
+ shimmerTone,
502
+ busy,
503
+ ref,
504
+ ...rest
505
+ } = props;
506
+ const effectiveAnimation = useSkeletonAnimation(animation ?? "shimmer");
507
+ const motionProps = skeletonAnimationPresets[effectiveAnimation];
508
+ return /* @__PURE__ */ jsx(
509
+ motion.div,
510
+ {
511
+ ref,
512
+ "data-slot": "skeleton-button",
513
+ "aria-hidden": true,
514
+ "aria-busy": busy ? true : void 0,
515
+ className: cn(
516
+ skeletonVariants({
517
+ appearance,
518
+ size,
519
+ rounded,
520
+ animation: effectiveAnimation,
521
+ shimmerTone
522
+ }),
523
+ buttonHeight[buttonSize],
524
+ className
525
+ ),
526
+ initial: false,
527
+ ...motionProps,
528
+ ...rest
529
+ }
530
+ );
531
+ }
532
+ SkeletonButton.displayName = "SkeletonButton";
533
+ export {
534
+ Skeleton,
535
+ SkeletonAvatar,
536
+ SkeletonButton,
537
+ SkeletonCard,
538
+ SkeletonText,
539
+ skeletonAnimationPresets,
540
+ skeletonShimmerGradientClasses,
541
+ skeletonTextLineVariants,
542
+ skeletonVariants
543
+ };
544
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/skeleton/skeleton.tsx","../../src/lib/utils.ts","../../src/ui/skeleton/animations.ts","../../src/ui/skeleton/variants.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { skeletonAnimationPresets } from \"./animations\";\nimport type {\n SkeletonAnimation,\n SkeletonAvatarProps,\n SkeletonButtonProps,\n SkeletonCardProps,\n SkeletonProps,\n SkeletonTextProps,\n} from \"./types\";\nimport { skeletonTextLineVariants, skeletonVariants } from \"./variants\";\n\nconst SkeletonAnimationContext = createContext<SkeletonAnimation | undefined>(\n undefined,\n);\n\nfunction useSkeletonAnimation(fallback: SkeletonAnimation): SkeletonAnimation {\n return useContext(SkeletonAnimationContext) ?? fallback;\n}\n\nexport function Skeleton(props: SkeletonProps) {\n const {\n className,\n appearance,\n size,\n rounded,\n animation = \"shimmer\",\n shimmerTone,\n busy,\n children,\n ref,\n ...rest\n } = props;\n const motionProps = skeletonAnimationPresets[animation];\n const ctx = useMemo(() => animation, [animation]);\n\n return (\n <SkeletonAnimationContext.Provider value={ctx}>\n <motion.div\n ref={ref}\n data-slot=\"skeleton\"\n aria-hidden\n aria-busy={busy ? true : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation,\n shimmerTone,\n }),\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.div>\n </SkeletonAnimationContext.Provider>\n );\n}\n\nSkeleton.displayName = \"Skeleton\";\n\nexport function SkeletonText(props: SkeletonTextProps) {\n const {\n lines = 3,\n className,\n appearance,\n size,\n rounded,\n animation = \"shimmer\",\n shimmerTone,\n busy,\n ref,\n } = props;\n const effectiveAnimation = useSkeletonAnimation(animation);\n const motionProps = skeletonAnimationPresets[effectiveAnimation];\n\n return (\n <div\n data-slot=\"skeleton-text\"\n className={cn(\"flex w-full flex-col gap-2\", className)}\n aria-hidden\n aria-busy={busy ? true : undefined}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <motion.div\n key={index}\n ref={index === 0 ? ref : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation: effectiveAnimation,\n shimmerTone,\n }),\n skeletonTextLineVariants({ size }),\n index === lines - 1 ? \"w-3/5\" : \"w-full\",\n )}\n initial={false}\n {...motionProps}\n />\n ))}\n </div>\n );\n}\n\nSkeletonText.displayName = \"SkeletonText\";\n\nconst avatarSizeClass: Record<\n NonNullable<SkeletonAvatarProps[\"avatarSize\"]>,\n string\n> = {\n xs: \"size-6\",\n sm: \"size-8\",\n md: \"size-10\",\n lg: \"size-12\",\n xl: \"size-14\",\n \"2xl\": \"size-16\",\n};\n\nexport function SkeletonAvatar(props: SkeletonAvatarProps) {\n const {\n avatarSize = \"md\",\n className,\n appearance,\n size,\n rounded = \"full\",\n animation,\n shimmerTone,\n busy,\n ref,\n ...rest\n } = props;\n const effectiveAnimation = useSkeletonAnimation(animation ?? \"shimmer\");\n const motionProps = skeletonAnimationPresets[effectiveAnimation];\n\n return (\n <motion.div\n ref={ref}\n data-slot=\"skeleton-avatar\"\n aria-hidden\n aria-busy={busy ? true : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation: effectiveAnimation,\n shimmerTone,\n }),\n avatarSizeClass[avatarSize],\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n />\n );\n}\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\nexport function SkeletonCard(props: SkeletonCardProps) {\n const {\n className,\n busy,\n animation = \"shimmer\",\n shimmerTone,\n appearance,\n size,\n rounded,\n ref,\n } = props;\n\n return (\n <div\n ref={ref as never}\n data-slot=\"skeleton-card\"\n className={cn(\"w-full max-w-sm\", className)}\n aria-busy={busy ? true : undefined}\n >\n <Skeleton\n rounded=\"lg\"\n animation={animation}\n shimmerTone={shimmerTone}\n appearance={appearance}\n size={size}\n busy={busy}\n className=\"flex flex-col gap-4 p-4\"\n >\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar\n appearance={appearance}\n size={size}\n animation={animation}\n shimmerTone={shimmerTone}\n rounded={rounded}\n />\n <div className=\"flex flex-1 flex-col gap-2\">\n <SkeletonText\n lines={2}\n appearance={appearance}\n size={size}\n animation={animation}\n shimmerTone={shimmerTone}\n />\n </div>\n </div>\n <SkeletonText\n lines={4}\n appearance={appearance}\n size={size}\n animation={animation}\n shimmerTone={shimmerTone}\n />\n </Skeleton>\n </div>\n );\n}\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\nconst buttonHeight: Record<NonNullable<SkeletonButtonProps[\"buttonSize\"]>, string> = {\n sm: \"h-8 w-24\",\n md: \"h-10 w-32\",\n lg: \"h-12 w-40\",\n};\n\nexport function SkeletonButton(props: SkeletonButtonProps) {\n const {\n buttonSize = \"md\",\n className,\n appearance,\n size,\n rounded = \"md\",\n animation,\n shimmerTone,\n busy,\n ref,\n ...rest\n } = props;\n const effectiveAnimation = useSkeletonAnimation(animation ?? \"shimmer\");\n const motionProps = skeletonAnimationPresets[effectiveAnimation];\n\n return (\n <motion.div\n ref={ref}\n data-slot=\"skeleton-button\"\n aria-hidden\n aria-busy={busy ? true : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation: effectiveAnimation,\n shimmerTone,\n }),\n buttonHeight[buttonSize],\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n />\n );\n}\n\nSkeletonButton.displayName = \"SkeletonButton\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { SkeletonAnimation } from \"./types\";\n\ntype SkeletonPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type SkeletonAnimationPresets = Record<\n SkeletonAnimation,\n SkeletonPresetMotionProps\n>;\n\nexport const skeletonAnimationPresets: SkeletonAnimationPresets = {\n none: {},\n shimmer: {\n initial: { backgroundPosition: \"100% 0%\" },\n animate: { backgroundPosition: [\"100% 0%\", \"0% 0%\"] },\n transition: { repeat: Infinity, duration: 1.35, ease: \"linear\" },\n },\n pulse: {\n initial: { opacity: 1 },\n animate: { opacity: [1, 0.5, 1] },\n transition: { repeat: Infinity, duration: 1.35, ease: \"easeInOut\" },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nconst shimmerLayer =\n \"[background-size:220%_100%] [background-repeat:no-repeat] [background-position:100%_0%]\";\n\nexport const skeletonShimmerGradientClasses = {\n default: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.04),rgba(255,255,255,0.22),rgba(255,255,255,0.04))]`,\n subtle: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.03),rgba(255,255,255,0.14),rgba(255,255,255,0.03))]`,\n muted: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.02),rgba(255,255,255,0.1),rgba(255,255,255,0.02))]`,\n sky: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(56,189,248,0.1),rgba(56,189,248,0.42),rgba(56,189,248,0.1))]`,\n rose: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,113,133,0.1),rgba(251,113,133,0.42),rgba(251,113,133,0.1))]`,\n purple: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(192,132,252,0.1),rgba(192,132,252,0.42),rgba(192,132,252,0.1))]`,\n pink: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(244,114,182,0.1),rgba(244,114,182,0.42),rgba(244,114,182,0.1))]`,\n orange: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,146,60,0.1),rgba(251,146,60,0.42),rgba(251,146,60,0.1))]`,\n yellow: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(250,204,21,0.12),rgba(250,204,21,0.4),rgba(250,204,21,0.12))]`,\n teal: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(45,212,191,0.1),rgba(45,212,191,0.42),rgba(45,212,191,0.1))]`,\n indigo: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(129,140,248,0.1),rgba(129,140,248,0.42),rgba(129,140,248,0.1))]`,\n emerald: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(52,211,153,0.1),rgba(52,211,153,0.42),rgba(52,211,153,0.1))]`,\n gray: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(161,161,170,0.1),rgba(161,161,170,0.38),rgba(161,161,170,0.1))]`,\n amber: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,191,36,0.12),rgba(251,191,36,0.42),rgba(251,191,36,0.12))]`,\n violet: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(167,139,250,0.1),rgba(167,139,250,0.42),rgba(167,139,250,0.1))]`,\n \"gradient-blue\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(100,149,237,0.1),rgba(100,149,237,0.42),rgba(100,149,237,0.1))]`,\n \"gradient-green\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(52,211,153,0.1),rgba(52,211,153,0.42),rgba(52,211,153,0.1))]`,\n \"gradient-red\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(239,68,68,0.1),rgba(239,68,68,0.42),rgba(239,68,68,0.1))]`,\n \"gradient-yellow\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(250,204,21,0.12),rgba(250,204,21,0.42),rgba(250,204,21,0.12))]`,\n \"gradient-purple\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(167,139,250,0.1),rgba(167,139,250,0.42),rgba(167,139,250,0.1))]`,\n \"gradient-teal\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(45,212,191,0.1),rgba(45,212,191,0.42),rgba(45,212,191,0.1))]`,\n \"gradient-indigo\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(129,140,248,0.1),rgba(129,140,248,0.42),rgba(129,140,248,0.1))]`,\n \"gradient-pink\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(244,114,182,0.1),rgba(244,114,182,0.42),rgba(244,114,182,0.1))]`,\n \"gradient-orange\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,146,60,0.1),rgba(251,146,60,0.42),rgba(251,146,60,0.1))]`,\n} as const;\n\nexport type SkeletonShimmerTone = keyof typeof skeletonShimmerGradientClasses;\n\nexport const skeletonVariants = cva(\n \"relative overflow-hidden bg-white/10 text-transparent\",\n {\n variants: {\n appearance: {\n default: \"bg-white/10\",\n subtle: \"bg-white/[0.07]\",\n muted: \"bg-slate-800/80\",\n sky: \"bg-sky-500/10\",\n rose: \"bg-rose-500/10\",\n purple: \"bg-purple-500/10\",\n pink: \"bg-pink-500/10\",\n orange: \"bg-orange-500/10\",\n yellow: \"bg-yellow-500/10\",\n teal: \"bg-teal-500/10\",\n indigo: \"bg-indigo-500/10\",\n emerald: \"bg-emerald-500/10\",\n gray: \"bg-gray-500/10\",\n amber: \"bg-amber-500/10\",\n violet: \"bg-violet-500/10\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600\",\n },\n size: {\n sm: \"min-h-3\",\n md: \"min-h-4\",\n lg: \"min-h-6\",\n },\n rounded: {\n none: \"rounded-none\",\n sm: \"rounded-md\",\n md: \"rounded-lg\",\n lg: \"rounded-xl\",\n full: \"rounded-full\",\n },\n animation: {\n none: \"\",\n shimmer: \"\",\n pulse: \"\",\n },\n shimmerTone: {\n default: \"\",\n subtle: \"\",\n muted: \"\",\n sky: \"\",\n rose: \"\",\n purple: \"\",\n pink: \"\",\n orange: \"\",\n yellow: \"\",\n teal: \"\",\n indigo: \"\",\n emerald: \"\",\n gray: \"\",\n amber: \"\",\n violet: \"\",\n \"gradient-blue\": \"\",\n \"gradient-green\": \"\",\n \"gradient-red\": \"\",\n \"gradient-yellow\": \"\",\n \"gradient-purple\": \"\",\n \"gradient-teal\": \"\",\n \"gradient-indigo\": \"\",\n \"gradient-pink\": \"\",\n \"gradient-orange\": \"\",\n },\n },\n compoundVariants: [\n {\n animation: \"shimmer\",\n shimmerTone: \"default\",\n class: skeletonShimmerGradientClasses.default,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"muted\",\n class: skeletonShimmerGradientClasses.subtle,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"subtle\",\n class: skeletonShimmerGradientClasses.subtle,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"sky\",\n class: skeletonShimmerGradientClasses.sky,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"rose\",\n class: skeletonShimmerGradientClasses.rose,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"purple\",\n class: skeletonShimmerGradientClasses.purple,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"pink\",\n class: skeletonShimmerGradientClasses.pink,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"orange\",\n class: skeletonShimmerGradientClasses.orange,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"yellow\",\n class: skeletonShimmerGradientClasses.yellow,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"teal\",\n class: skeletonShimmerGradientClasses.teal,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"indigo\",\n class: skeletonShimmerGradientClasses.indigo,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"emerald\",\n class: skeletonShimmerGradientClasses.emerald,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gray\",\n class: skeletonShimmerGradientClasses.gray,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"amber\",\n class: skeletonShimmerGradientClasses.amber,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"violet\",\n class: skeletonShimmerGradientClasses.violet,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-blue\",\n class: skeletonShimmerGradientClasses[\"gradient-blue\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-green\",\n class: skeletonShimmerGradientClasses[\"gradient-green\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-red\",\n class: skeletonShimmerGradientClasses[\"gradient-red\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-yellow\",\n class: skeletonShimmerGradientClasses[\"gradient-yellow\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-purple\",\n class: skeletonShimmerGradientClasses[\"gradient-purple\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-teal\",\n class: skeletonShimmerGradientClasses[\"gradient-teal\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-indigo\",\n class: skeletonShimmerGradientClasses[\"gradient-indigo\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-pink\",\n class: skeletonShimmerGradientClasses[\"gradient-pink\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-orange\",\n class: skeletonShimmerGradientClasses[\"gradient-orange\"],\n },\n {\n animation: \"pulse\",\n class: \"\",\n },\n ],\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n rounded: \"md\",\n animation: \"shimmer\",\n shimmerTone: \"default\",\n },\n },\n);\n\nexport const skeletonTextLineVariants = cva(\"block w-full\", {\n variants: {\n size: {\n sm: \"h-2.5\",\n md: \"h-3\",\n lg: \"h-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n"],"mappings":"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","names":[]}