@nextsparkjs/core 0.1.0-beta.110 → 0.1.0-beta.112

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.
@@ -1,9 +1,657 @@
1
- import {
2
- Avatar,
3
- AvatarImage,
4
- AvatarFallback,
5
- getInitials
6
- } from "@nextsparkjs/ui";
1
+ // ../../node_modules/.pnpm/@nextsparkjs+ui@0.1.0-beta.79_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19.2._whiycl2nvwq6otr7gzrisciudi/node_modules/@nextsparkjs/ui/dist/index.js
2
+ import { createContext, useContext, useMemo } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import * as React from "react";
5
+ import { Slot } from "@radix-ui/react-slot";
6
+ import { cva } from "class-variance-authority";
7
+ import { clsx } from "clsx";
8
+ import { twMerge } from "tailwind-merge";
9
+ import { jsx as jsx2 } from "react/jsx-runtime";
10
+ import * as React2 from "react";
11
+ import { jsx as jsx3 } from "react/jsx-runtime";
12
+ import * as React3 from "react";
13
+ import { jsx as jsx4 } from "react/jsx-runtime";
14
+ import * as React4 from "react";
15
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
16
+ import { CheckIcon } from "@radix-ui/react-icons";
17
+ import { jsx as jsx5 } from "react/jsx-runtime";
18
+ import * as React5 from "react";
19
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
20
+ import { jsx as jsx6 } from "react/jsx-runtime";
21
+ import * as LabelPrimitive from "@radix-ui/react-label";
22
+ import { jsx as jsx7 } from "react/jsx-runtime";
23
+ import { cva as cva2 } from "class-variance-authority";
24
+ import { jsx as jsx8 } from "react/jsx-runtime";
25
+ import * as React6 from "react";
26
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
27
+ import { jsx as jsx9 } from "react/jsx-runtime";
28
+ import * as React7 from "react";
29
+ import { jsx as jsx10 } from "react/jsx-runtime";
30
+ import * as React8 from "react";
31
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
32
+ import { jsx as jsx11 } from "react/jsx-runtime";
33
+ import * as React9 from "react";
34
+ import { jsx as jsx12, jsxs } from "react/jsx-runtime";
35
+ import * as React10 from "react";
36
+ import { jsx as jsx13, jsxs as jsxs2 } from "react/jsx-runtime";
37
+ import * as React11 from "react";
38
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
39
+ import { jsx as jsx14 } from "react/jsx-runtime";
40
+ import * as React12 from "react";
41
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
42
+ import { jsx as jsx15 } from "react/jsx-runtime";
43
+ import * as React13 from "react";
44
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
45
+ import { ChevronDownIcon } from "@radix-ui/react-icons";
46
+ import { jsx as jsx16, jsxs as jsxs3 } from "react/jsx-runtime";
47
+ import * as React14 from "react";
48
+ import * as SliderPrimitive from "@radix-ui/react-slider";
49
+ import { jsx as jsx17, jsxs as jsxs4 } from "react/jsx-runtime";
50
+ var ThemeContext = createContext(null);
51
+ function cn(...inputs) {
52
+ return twMerge(clsx(inputs));
53
+ }
54
+ var buttonVariants = cva(
55
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
56
+ {
57
+ variants: {
58
+ variant: {
59
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
60
+ destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90",
61
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
62
+ secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
63
+ ghost: "hover:bg-accent hover:text-accent-foreground",
64
+ link: "text-primary underline-offset-4 hover:underline"
65
+ },
66
+ size: {
67
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
68
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
69
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
70
+ icon: "size-9"
71
+ }
72
+ },
73
+ defaultVariants: {
74
+ variant: "default",
75
+ size: "default"
76
+ }
77
+ }
78
+ );
79
+ var Button = React.forwardRef(
80
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
81
+ const Comp = asChild ? Slot : "button";
82
+ return /* @__PURE__ */ jsx2(
83
+ Comp,
84
+ {
85
+ ref,
86
+ "data-slot": "button",
87
+ className: cn(buttonVariants({ variant, size, className })),
88
+ ...props
89
+ }
90
+ );
91
+ }
92
+ );
93
+ Button.displayName = "Button";
94
+ var Input = React2.forwardRef(
95
+ ({ className, type, ...props }, ref) => {
96
+ return /* @__PURE__ */ jsx3(
97
+ "input",
98
+ {
99
+ type,
100
+ className: cn(
101
+ "flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
102
+ className
103
+ ),
104
+ ref,
105
+ ...props
106
+ }
107
+ );
108
+ }
109
+ );
110
+ Input.displayName = "Input";
111
+ var Textarea = React3.forwardRef(
112
+ ({ className, ...props }, ref) => {
113
+ return /* @__PURE__ */ jsx4(
114
+ "textarea",
115
+ {
116
+ className: cn(
117
+ "flex min-h-[60px] w-full rounded-md border border-input bg-background px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
118
+ className
119
+ ),
120
+ ref,
121
+ ...props
122
+ }
123
+ );
124
+ }
125
+ );
126
+ Textarea.displayName = "Textarea";
127
+ var Checkbox = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
128
+ CheckboxPrimitive.Root,
129
+ {
130
+ ref,
131
+ className: cn(
132
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
133
+ className
134
+ ),
135
+ ...props,
136
+ children: /* @__PURE__ */ jsx5(
137
+ CheckboxPrimitive.Indicator,
138
+ {
139
+ className: cn("flex items-center justify-center text-current"),
140
+ children: /* @__PURE__ */ jsx5(CheckIcon, { className: "h-4 w-4" })
141
+ }
142
+ )
143
+ }
144
+ ));
145
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
146
+ var Switch = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
147
+ SwitchPrimitives.Root,
148
+ {
149
+ className: cn(
150
+ "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
151
+ className
152
+ ),
153
+ ...props,
154
+ ref,
155
+ children: /* @__PURE__ */ jsx6(
156
+ SwitchPrimitives.Thumb,
157
+ {
158
+ className: cn(
159
+ "pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
160
+ )
161
+ }
162
+ )
163
+ }
164
+ ));
165
+ Switch.displayName = SwitchPrimitives.Root.displayName;
166
+ var badgeVariants = cva2(
167
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
168
+ {
169
+ variants: {
170
+ variant: {
171
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
172
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
173
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
174
+ outline: "text-foreground"
175
+ }
176
+ },
177
+ defaultVariants: {
178
+ variant: "default"
179
+ }
180
+ }
181
+ );
182
+ var Avatar = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
183
+ AvatarPrimitive.Root,
184
+ {
185
+ ref,
186
+ className: cn(
187
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
188
+ className
189
+ ),
190
+ ...props
191
+ }
192
+ ));
193
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
194
+ var AvatarImage = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
195
+ AvatarPrimitive.Image,
196
+ {
197
+ ref,
198
+ className: cn("aspect-square h-full w-full", className),
199
+ ...props
200
+ }
201
+ ));
202
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
203
+ var AvatarFallback = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
204
+ AvatarPrimitive.Fallback,
205
+ {
206
+ ref,
207
+ className: cn(
208
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
209
+ className
210
+ ),
211
+ ...props
212
+ }
213
+ ));
214
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
215
+ function getInitials(name) {
216
+ if (!name) return "U";
217
+ const parts = name.trim().split(" ");
218
+ if (parts.length >= 2) {
219
+ return `${parts[0][0]}${parts[1][0]}`.toUpperCase();
220
+ }
221
+ return name.substring(0, 2).toUpperCase();
222
+ }
223
+ var Card = React7.forwardRef(
224
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
225
+ "div",
226
+ {
227
+ ref,
228
+ className: cn(
229
+ "rounded-xl border bg-card text-card-foreground shadow",
230
+ className
231
+ ),
232
+ ...props
233
+ }
234
+ )
235
+ );
236
+ Card.displayName = "Card";
237
+ var PressableCard = React7.forwardRef(
238
+ ({ className, onClick, ...props }, ref) => /* @__PURE__ */ jsx10(
239
+ "div",
240
+ {
241
+ ref,
242
+ role: "button",
243
+ tabIndex: 0,
244
+ onClick,
245
+ onKeyDown: (e) => {
246
+ if (e.key === "Enter" || e.key === " ") {
247
+ e.preventDefault();
248
+ onClick?.();
249
+ }
250
+ },
251
+ className: cn(
252
+ "rounded-xl border bg-card text-card-foreground shadow cursor-pointer transition-opacity hover:opacity-80 active:opacity-70",
253
+ className
254
+ ),
255
+ ...props
256
+ }
257
+ )
258
+ );
259
+ PressableCard.displayName = "PressableCard";
260
+ var CardHeader = React7.forwardRef(
261
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
262
+ "div",
263
+ {
264
+ ref,
265
+ className: cn("flex flex-col space-y-1.5 p-6", className),
266
+ ...props
267
+ }
268
+ )
269
+ );
270
+ CardHeader.displayName = "CardHeader";
271
+ var CardTitle = React7.forwardRef(
272
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
273
+ "div",
274
+ {
275
+ ref,
276
+ className: cn("font-semibold leading-none tracking-tight", className),
277
+ ...props
278
+ }
279
+ )
280
+ );
281
+ CardTitle.displayName = "CardTitle";
282
+ var CardDescription = React7.forwardRef(
283
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
284
+ "div",
285
+ {
286
+ ref,
287
+ className: cn("text-sm text-muted-foreground", className),
288
+ ...props
289
+ }
290
+ )
291
+ );
292
+ CardDescription.displayName = "CardDescription";
293
+ var CardContent = React7.forwardRef(
294
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("p-6 pt-0", className), ...props })
295
+ );
296
+ CardContent.displayName = "CardContent";
297
+ var CardFooter = React7.forwardRef(
298
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
299
+ "div",
300
+ {
301
+ ref,
302
+ className: cn("flex items-center p-6 pt-0", className),
303
+ ...props
304
+ }
305
+ )
306
+ );
307
+ CardFooter.displayName = "CardFooter";
308
+ var Separator = React8.forwardRef(
309
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx11(
310
+ SeparatorPrimitive.Root,
311
+ {
312
+ ref,
313
+ decorative,
314
+ orientation,
315
+ className: cn(
316
+ "shrink-0 bg-border",
317
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
318
+ className
319
+ ),
320
+ ...props
321
+ }
322
+ )
323
+ );
324
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
325
+ var Skeleton = React9.forwardRef(
326
+ ({ className, ...props }, ref) => {
327
+ return /* @__PURE__ */ jsx12(
328
+ "div",
329
+ {
330
+ ref,
331
+ className: cn(
332
+ // Base styles
333
+ "rounded-md bg-muted",
334
+ // Optimized animation - GPU accelerated
335
+ "animate-skeleton-pulse",
336
+ // CSS containment for better INP
337
+ "skeleton-contained",
338
+ className
339
+ ),
340
+ ...props
341
+ }
342
+ );
343
+ }
344
+ );
345
+ Skeleton.displayName = "Skeleton";
346
+ var SkeletonContainer = React9.forwardRef(
347
+ ({ className, children, ...props }, ref) => {
348
+ return /* @__PURE__ */ jsx12(
349
+ "div",
350
+ {
351
+ ref,
352
+ className: cn("skeleton-container", className),
353
+ ...props,
354
+ children
355
+ }
356
+ );
357
+ }
358
+ );
359
+ SkeletonContainer.displayName = "SkeletonContainer";
360
+ var SkeletonText = React9.forwardRef(
361
+ ({ className, lines = 1, ...props }, ref) => {
362
+ return /* @__PURE__ */ jsx12("div", { ref, className: cn("space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx12(
363
+ Skeleton,
364
+ {
365
+ className: cn(
366
+ "h-4",
367
+ // Last line is typically shorter
368
+ i === lines - 1 && lines > 1 ? "w-3/4" : "w-full"
369
+ )
370
+ },
371
+ i
372
+ )) });
373
+ }
374
+ );
375
+ SkeletonText.displayName = "SkeletonText";
376
+ var SkeletonTitle = React9.forwardRef(
377
+ ({ className, ...props }, ref) => {
378
+ return /* @__PURE__ */ jsx12(Skeleton, { ref, className: cn("h-6 w-1/2", className), ...props });
379
+ }
380
+ );
381
+ SkeletonTitle.displayName = "SkeletonTitle";
382
+ var SkeletonAvatar = React9.forwardRef(
383
+ ({ className, ...props }, ref) => {
384
+ return /* @__PURE__ */ jsx12(Skeleton, { ref, className: cn("h-10 w-10 rounded-full", className), ...props });
385
+ }
386
+ );
387
+ SkeletonAvatar.displayName = "SkeletonAvatar";
388
+ var SkeletonCard = React9.forwardRef(
389
+ ({ className, ...props }, ref) => {
390
+ return /* @__PURE__ */ jsxs(
391
+ "div",
392
+ {
393
+ ref,
394
+ className: cn("space-y-3 rounded-xl border border-border bg-card p-4", className),
395
+ ...props,
396
+ children: [
397
+ /* @__PURE__ */ jsx12(Skeleton, { className: "h-5 w-2/3" }),
398
+ /* @__PURE__ */ jsx12(Skeleton, { className: "h-4 w-full" }),
399
+ /* @__PURE__ */ jsx12(Skeleton, { className: "h-4 w-4/5" }),
400
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-2 pt-2", children: [
401
+ /* @__PURE__ */ jsx12(Skeleton, { className: "h-6 w-16 rounded-full" }),
402
+ /* @__PURE__ */ jsx12(Skeleton, { className: "h-6 w-16 rounded-full" })
403
+ ] })
404
+ ]
405
+ }
406
+ );
407
+ }
408
+ );
409
+ SkeletonCard.displayName = "SkeletonCard";
410
+ var DialogContext = React10.createContext(void 0);
411
+ function useDialogContext() {
412
+ const context = React10.useContext(DialogContext);
413
+ if (!context) {
414
+ throw new Error("Dialog components must be used within a Dialog");
415
+ }
416
+ return context;
417
+ }
418
+ function Dialog({
419
+ open = false,
420
+ onOpenChange = () => {
421
+ },
422
+ children
423
+ }) {
424
+ return /* @__PURE__ */ jsx13(DialogContext.Provider, { value: { open, onOpenChange }, children });
425
+ }
426
+ Dialog.displayName = "Dialog";
427
+ var DialogContent = React10.forwardRef(
428
+ ({ className, children, ...props }, ref) => {
429
+ const { open, onOpenChange } = useDialogContext();
430
+ React10.useEffect(() => {
431
+ const handleEscape = (e) => {
432
+ if (e.key === "Escape" && open) {
433
+ onOpenChange(false);
434
+ }
435
+ };
436
+ document.addEventListener("keydown", handleEscape);
437
+ return () => document.removeEventListener("keydown", handleEscape);
438
+ }, [open, onOpenChange]);
439
+ if (!open) return null;
440
+ return /* @__PURE__ */ jsxs2("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [
441
+ /* @__PURE__ */ jsx13(
442
+ "div",
443
+ {
444
+ className: "fixed inset-0 bg-black/50 animate-in fade-in-0",
445
+ onClick: () => onOpenChange(false)
446
+ }
447
+ ),
448
+ /* @__PURE__ */ jsx13(
449
+ "div",
450
+ {
451
+ ref,
452
+ role: "dialog",
453
+ "aria-modal": "true",
454
+ className: cn(
455
+ "relative z-50 w-full max-w-lg rounded-xl bg-card shadow-lg animate-in fade-in-0 zoom-in-95",
456
+ "max-h-[85vh] overflow-auto",
457
+ className
458
+ ),
459
+ onClick: (e) => e.stopPropagation(),
460
+ ...props,
461
+ children
462
+ }
463
+ )
464
+ ] });
465
+ }
466
+ );
467
+ DialogContent.displayName = "DialogContent";
468
+ var DialogHeader = React10.forwardRef(
469
+ ({ className, children, ...props }, ref) => {
470
+ return /* @__PURE__ */ jsx13(
471
+ "div",
472
+ {
473
+ ref,
474
+ className: cn("border-b border-border p-4", className),
475
+ ...props,
476
+ children
477
+ }
478
+ );
479
+ }
480
+ );
481
+ DialogHeader.displayName = "DialogHeader";
482
+ var DialogTitle = React10.forwardRef(
483
+ ({ className, children, ...props }, ref) => {
484
+ return /* @__PURE__ */ jsx13(
485
+ "h2",
486
+ {
487
+ ref,
488
+ className: cn("text-lg font-semibold", className),
489
+ ...props,
490
+ children
491
+ }
492
+ );
493
+ }
494
+ );
495
+ DialogTitle.displayName = "DialogTitle";
496
+ var DialogDescription = React10.forwardRef(
497
+ ({ className, children, ...props }, ref) => {
498
+ return /* @__PURE__ */ jsx13(
499
+ "p",
500
+ {
501
+ ref,
502
+ className: cn("mt-1 text-sm text-muted-foreground", className),
503
+ ...props,
504
+ children
505
+ }
506
+ );
507
+ }
508
+ );
509
+ DialogDescription.displayName = "DialogDescription";
510
+ var DialogBody = React10.forwardRef(
511
+ ({ className, children, ...props }, ref) => {
512
+ return /* @__PURE__ */ jsx13("div", { ref, className: cn("p-4", className), ...props, children });
513
+ }
514
+ );
515
+ DialogBody.displayName = "DialogBody";
516
+ var DialogFooter = React10.forwardRef(
517
+ ({ className, children, ...props }, ref) => {
518
+ return /* @__PURE__ */ jsx13(
519
+ "div",
520
+ {
521
+ ref,
522
+ className: cn("flex justify-end gap-2 border-t border-border p-4", className),
523
+ ...props,
524
+ children
525
+ }
526
+ );
527
+ }
528
+ );
529
+ DialogFooter.displayName = "DialogFooter";
530
+ var DialogClose = React10.forwardRef(
531
+ ({ children, onClick, ...props }, ref) => {
532
+ const { onOpenChange } = useDialogContext();
533
+ return /* @__PURE__ */ jsx13(
534
+ "button",
535
+ {
536
+ ref,
537
+ type: "button",
538
+ onClick: (e) => {
539
+ onClick?.(e);
540
+ onOpenChange(false);
541
+ },
542
+ ...props,
543
+ children
544
+ }
545
+ );
546
+ }
547
+ );
548
+ DialogClose.displayName = "DialogClose";
549
+ var Progress = React11.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx14(
550
+ ProgressPrimitive.Root,
551
+ {
552
+ ref,
553
+ className: cn(
554
+ "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
555
+ className
556
+ ),
557
+ ...props,
558
+ children: /* @__PURE__ */ jsx14(
559
+ ProgressPrimitive.Indicator,
560
+ {
561
+ className: "h-full w-full flex-1 bg-primary transition-all",
562
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
563
+ }
564
+ )
565
+ }
566
+ ));
567
+ Progress.displayName = ProgressPrimitive.Root.displayName;
568
+ var TabsList = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
569
+ TabsPrimitive.List,
570
+ {
571
+ ref,
572
+ className: cn(
573
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
574
+ className
575
+ ),
576
+ ...props
577
+ }
578
+ ));
579
+ TabsList.displayName = TabsPrimitive.List.displayName;
580
+ var TabsTrigger = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
581
+ TabsPrimitive.Trigger,
582
+ {
583
+ ref,
584
+ className: cn(
585
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow cursor-pointer",
586
+ className
587
+ ),
588
+ ...props
589
+ }
590
+ ));
591
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
592
+ var TabsContent = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
593
+ TabsPrimitive.Content,
594
+ {
595
+ ref,
596
+ className: cn(
597
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
598
+ className
599
+ ),
600
+ ...props
601
+ }
602
+ ));
603
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
604
+ var AccordionItem = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
605
+ AccordionPrimitive.Item,
606
+ {
607
+ ref,
608
+ className: cn("border-b", className),
609
+ ...props
610
+ }
611
+ ));
612
+ AccordionItem.displayName = "AccordionItem";
613
+ var AccordionTrigger = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx16(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs3(
614
+ AccordionPrimitive.Trigger,
615
+ {
616
+ ref,
617
+ className: cn(
618
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
619
+ className
620
+ ),
621
+ ...props,
622
+ children: [
623
+ children,
624
+ /* @__PURE__ */ jsx16(ChevronDownIcon, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
625
+ ]
626
+ }
627
+ ) }));
628
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
629
+ var AccordionContent = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx16(
630
+ AccordionPrimitive.Content,
631
+ {
632
+ ref,
633
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
634
+ ...props,
635
+ children: /* @__PURE__ */ jsx16("div", { className: cn("pb-4 pt-0", className), children })
636
+ }
637
+ ));
638
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
639
+ var Slider = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs4(
640
+ SliderPrimitive.Root,
641
+ {
642
+ ref,
643
+ className: cn(
644
+ "relative flex w-full touch-none select-none items-center",
645
+ className
646
+ ),
647
+ ...props,
648
+ children: [
649
+ /* @__PURE__ */ jsx17(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ jsx17(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
650
+ /* @__PURE__ */ jsx17(SliderPrimitive.Thumb, { className: "block h-4 w-4 rounded-full border-2 border-primary bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
651
+ ]
652
+ }
653
+ ));
654
+ Slider.displayName = SliderPrimitive.Root.displayName;
7
655
  export {
8
656
  Avatar,
9
657
  AvatarFallback,