@bleakedev/bleake-components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,2310 @@
1
+ import { EllipsisVertical, Loader2Icon, Ban, Trash2, CameraOff, XIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CheckIcon, ChevronUpIcon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, ChevronDown } from 'lucide-react';
2
+ import { merge, useTheme } from '@bleakedev/bleake-core';
3
+ import { Slot, DropdownMenu as DropdownMenu$1, AlertDialog as AlertDialog$1, Separator as Separator$1, Dialog as Dialog$1, Tooltip as Tooltip$1, Accordion as Accordion$1, Avatar as Avatar$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, ContextMenu as ContextMenu$1, HoverCard as HoverCard$1, Label as Label$1, Menubar as Menubar$1, Popover as Popover$1, RadioGroup as RadioGroup$1, Select as Select$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import { createContext, useState, Fragment, useRef, useEffect, useContext } from 'react';
7
+ import { getDefaultClassNames, DayPicker } from 'react-day-picker';
8
+ import { Combobox as Combobox$1 } from '@base-ui/react';
9
+ import { Command as Command$1 } from 'cmdk';
10
+ import { OTPInput } from 'input-otp';
11
+ import { AnimatePresence, motion } from 'framer-motion';
12
+ import { Toaster as Toaster$1 } from 'sonner';
13
+
14
+ // src/primitives/actions-menu/index.tsx
15
+ var buttonVariants = cva(
16
+ "group/button inline-flex shrink-0 items-center justify-center rounded-xl border border-transparent bg-clip-padding text-sm/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 cursor-pointer gap-2 transition-all duration-300 rounded-lg",
17
+ {
18
+ variants: {
19
+ variant: {
20
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
21
+ outline: "border-border bg-white hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30",
22
+ secondary: "bg-orange-200/20 text-orange-600 border border-orange-400/40 hover:bg-orange-300/25 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
23
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
24
+ destructive: "bg-destructive text-white hover:bg-destructive/20",
25
+ link: "text-primary underline-offset-4 hover:underline",
26
+ success: "text-green-600 bg-green-200/50 hover:text-green-700 border border-green-500/40"
27
+ },
28
+ size: {
29
+ sm: "h-7 px-5",
30
+ default: "h-9 px-4 py-2",
31
+ lg: "h-11 px-6",
32
+ icon: "h-fit w-fit"
33
+ }
34
+ },
35
+ defaultVariants: {
36
+ variant: "default",
37
+ size: "default"
38
+ }
39
+ }
40
+ );
41
+ var Button = ({
42
+ className,
43
+ variant = "default",
44
+ size = "default",
45
+ asChild = false,
46
+ ...props
47
+ }) => {
48
+ const Comp = asChild ? Slot.Root : "button";
49
+ return /* @__PURE__ */ jsx(
50
+ Comp,
51
+ {
52
+ "data-slot": "button",
53
+ "data-variant": variant,
54
+ "data-size": size,
55
+ className: merge(buttonVariants({ variant, size, className })),
56
+ ...props
57
+ }
58
+ );
59
+ };
60
+ var DropdownMenu = ({
61
+ ...props
62
+ }) => {
63
+ return /* @__PURE__ */ jsx(
64
+ DropdownMenu$1.Root,
65
+ {
66
+ "data-slot": "dropdown-menu",
67
+ ...props
68
+ }
69
+ );
70
+ };
71
+ var DropdownMenuContent = ({
72
+ className,
73
+ align = "start",
74
+ sideOffset = 4,
75
+ ...props
76
+ }) => {
77
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { children: /* @__PURE__ */ jsx(
78
+ DropdownMenu$1.Content,
79
+ {
80
+ "data-slot": "dropdown-menu-content",
81
+ sideOffset,
82
+ align,
83
+ className: merge(
84
+ "z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
85
+ className
86
+ ),
87
+ ...props
88
+ }
89
+ ) });
90
+ };
91
+ var DropdownMenuTrigger = ({
92
+ ...props
93
+ }) => {
94
+ return /* @__PURE__ */ jsx(
95
+ DropdownMenu$1.Trigger,
96
+ {
97
+ "data-slot": "dropdown-menu-trigger",
98
+ ...props
99
+ }
100
+ );
101
+ };
102
+ var ActionsMenu = ({
103
+ children,
104
+ align = "end",
105
+ triggerDirection = "vertical"
106
+ }) => {
107
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
108
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
109
+ Button,
110
+ {
111
+ variant: "ghost",
112
+ size: "icon",
113
+ children: triggerDirection === "vertical" ? /* @__PURE__ */ jsx(EllipsisVertical, {}) : /* @__PURE__ */ jsx(EllipsisVertical, { className: "rotate-90" })
114
+ }
115
+ ) }),
116
+ /* @__PURE__ */ jsx(
117
+ DropdownMenuContent,
118
+ {
119
+ className: "w-[--radix-dropdown-menu-trigger-width]",
120
+ side: "bottom",
121
+ sideOffset: 4,
122
+ align,
123
+ alignOffset: 1,
124
+ children
125
+ }
126
+ )
127
+ ] });
128
+ };
129
+ var AlertDialog = (props) => {
130
+ return /* @__PURE__ */ jsx(
131
+ AlertDialog$1.Root,
132
+ {
133
+ "data-slot": "alert-dialog",
134
+ ...props
135
+ }
136
+ );
137
+ };
138
+ var AlertDialogAction = ({
139
+ className,
140
+ variant = "default",
141
+ size = "default",
142
+ ...props
143
+ }) => {
144
+ return /* @__PURE__ */ jsx(
145
+ Button,
146
+ {
147
+ variant,
148
+ size,
149
+ asChild: true,
150
+ children: /* @__PURE__ */ jsx(
151
+ AlertDialog$1.Action,
152
+ {
153
+ "data-slot": "alert-dialog-action",
154
+ className: merge(className),
155
+ ...props
156
+ }
157
+ )
158
+ }
159
+ );
160
+ };
161
+ var AlertDialogCancel = ({
162
+ className,
163
+ variant = "outline",
164
+ size = "default",
165
+ ...props
166
+ }) => {
167
+ return /* @__PURE__ */ jsx(
168
+ Button,
169
+ {
170
+ variant,
171
+ size,
172
+ asChild: true,
173
+ children: /* @__PURE__ */ jsx(
174
+ AlertDialog$1.Cancel,
175
+ {
176
+ "data-slot": "alert-dialog-cancel",
177
+ className: merge(className),
178
+ ...props
179
+ }
180
+ )
181
+ }
182
+ );
183
+ };
184
+ var AlertDialogOverlay = ({
185
+ className,
186
+ ...props
187
+ }) => {
188
+ return /* @__PURE__ */ jsx(
189
+ AlertDialog$1.Overlay,
190
+ {
191
+ "data-slot": "alert-dialog-overlay",
192
+ className: merge(
193
+ "fixed inset-0 z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
194
+ className
195
+ ),
196
+ ...props
197
+ }
198
+ );
199
+ };
200
+ var AlertDialogPortal = (props) => {
201
+ return /* @__PURE__ */ jsx(
202
+ AlertDialog$1.Portal,
203
+ {
204
+ "data-slot": "alert-dialog-portal",
205
+ ...props
206
+ }
207
+ );
208
+ };
209
+ var AlertDialogContent = ({
210
+ className,
211
+ size = "default",
212
+ ...props
213
+ }) => {
214
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
215
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
216
+ /* @__PURE__ */ jsx(
217
+ AlertDialog$1.Content,
218
+ {
219
+ "data-slot": "alert-dialog-content",
220
+ "data-size": size,
221
+ className: merge(
222
+ "group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg bg-background p-6 ring-1 ring-foreground/10 duration-100 outline-none",
223
+ "data-[size=sm]:max-w-sm",
224
+ "data-[size=default]:max-w-sm",
225
+ "data-[size=default]:sm:max-w-lg",
226
+ "data-[size=lg]:max-w-2xl",
227
+ "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
228
+ "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
229
+ className
230
+ ),
231
+ ...props
232
+ }
233
+ )
234
+ ] });
235
+ };
236
+ var AlertDialogDescription = ({
237
+ className,
238
+ ...props
239
+ }) => {
240
+ return /* @__PURE__ */ jsx(
241
+ AlertDialog$1.Description,
242
+ {
243
+ "data-slot": "alert-dialog-description",
244
+ className: merge(
245
+ "text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
246
+ className
247
+ ),
248
+ ...props
249
+ }
250
+ );
251
+ };
252
+ var AlertDialogFooter = ({
253
+ className,
254
+ ...props
255
+ }) => {
256
+ return /* @__PURE__ */ jsx(
257
+ "div",
258
+ {
259
+ "data-slot": "alert-dialog-footer",
260
+ className: merge(
261
+ "flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
262
+ className
263
+ ),
264
+ ...props
265
+ }
266
+ );
267
+ };
268
+ var AlertDialogHeader = ({
269
+ className,
270
+ ...props
271
+ }) => {
272
+ return /* @__PURE__ */ jsx(
273
+ "div",
274
+ {
275
+ "data-slot": "alert-dialog-header",
276
+ className: merge(
277
+ "grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
278
+ className
279
+ ),
280
+ ...props
281
+ }
282
+ );
283
+ };
284
+ var AlertDialogTitle = ({
285
+ className,
286
+ ...props
287
+ }) => {
288
+ return /* @__PURE__ */ jsx(
289
+ AlertDialog$1.Title,
290
+ {
291
+ "data-slot": "alert-dialog-title",
292
+ className: merge(
293
+ "text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
294
+ className
295
+ ),
296
+ ...props
297
+ }
298
+ );
299
+ };
300
+ var AlertDialogTrigger = (props) => {
301
+ return /* @__PURE__ */ jsx(
302
+ AlertDialog$1.Trigger,
303
+ {
304
+ "data-slot": "alert-dialog-trigger",
305
+ ...props
306
+ }
307
+ );
308
+ };
309
+ var Separator = ({
310
+ className,
311
+ orientation = "horizontal",
312
+ decorative = true,
313
+ ...props
314
+ }) => {
315
+ return /* @__PURE__ */ jsx(
316
+ Separator$1.Root,
317
+ {
318
+ "data-slot": "separator",
319
+ decorative,
320
+ orientation,
321
+ className: merge(
322
+ "shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
323
+ className
324
+ ),
325
+ ...props
326
+ }
327
+ );
328
+ };
329
+ var Spinner = ({
330
+ className,
331
+ ...props
332
+ }) => {
333
+ return /* @__PURE__ */ jsx(
334
+ Loader2Icon,
335
+ {
336
+ role: "status",
337
+ "aria-label": "Loading",
338
+ className: merge("size-4 animate-spin", className),
339
+ ...props
340
+ }
341
+ );
342
+ };
343
+ var ConfirmDialog = ({
344
+ children,
345
+ title,
346
+ description,
347
+ confirmText = "Confirmar",
348
+ cancelText = "Cancelar",
349
+ variant = "destructive",
350
+ onConfirm,
351
+ loading = false,
352
+ disabled = false,
353
+ open: controlledOpen,
354
+ onOpenChange: setControlledOpen,
355
+ confirmIcon
356
+ }) => {
357
+ const ConfirmActionIcon = confirmIcon ?? Trash2;
358
+ const [internalOpen, setInternalOpen] = useState(false);
359
+ const open = controlledOpen ?? internalOpen;
360
+ const setOpen = setControlledOpen ?? setInternalOpen;
361
+ const handleConfirm = (e) => {
362
+ e.preventDefault();
363
+ const result = onConfirm();
364
+ if (result instanceof Promise) {
365
+ result.then(() => setOpen(false)).catch(() => void 0);
366
+ } else {
367
+ setOpen(false);
368
+ }
369
+ };
370
+ return /* @__PURE__ */ jsxs(
371
+ AlertDialog,
372
+ {
373
+ open,
374
+ onOpenChange: setOpen,
375
+ children: [
376
+ /* @__PURE__ */ jsx(
377
+ AlertDialogTrigger,
378
+ {
379
+ asChild: true,
380
+ disabled,
381
+ children
382
+ }
383
+ ),
384
+ /* @__PURE__ */ jsxs(AlertDialogContent, { className: "max-w-md p-0 overflow-hidden", children: [
385
+ /* @__PURE__ */ jsxs(AlertDialogHeader, { className: "px-0 pt-6 pb-4 space-y-2", children: [
386
+ /* @__PURE__ */ jsx(AlertDialogTitle, { className: "px-6 text-base font-semibold text-gray-900", children: title }),
387
+ /* @__PURE__ */ jsx(Separator, {}),
388
+ description && /* @__PURE__ */ jsx(AlertDialogDescription, { className: "px-6 text-sm text-gray-500", children: description })
389
+ ] }),
390
+ /* @__PURE__ */ jsx(Separator, {}),
391
+ /* @__PURE__ */ jsxs(AlertDialogFooter, { className: "px-6 mb-3 flex flex-row justify-end gap-2", children: [
392
+ /* @__PURE__ */ jsxs(
393
+ AlertDialogCancel,
394
+ {
395
+ variant: "outline",
396
+ disabled: loading,
397
+ children: [
398
+ /* @__PURE__ */ jsx(Ban, {}),
399
+ cancelText
400
+ ]
401
+ }
402
+ ),
403
+ /* @__PURE__ */ jsxs(
404
+ AlertDialogAction,
405
+ {
406
+ variant,
407
+ className: "min-w-32",
408
+ disabled: loading,
409
+ onClick: handleConfirm,
410
+ children: [
411
+ /* @__PURE__ */ jsx(ConfirmActionIcon, {}),
412
+ loading ? /* @__PURE__ */ jsx(Spinner, {}) : confirmText
413
+ ]
414
+ }
415
+ )
416
+ ] })
417
+ ] })
418
+ ]
419
+ }
420
+ );
421
+ };
422
+ var Glow = ({ className, background }) => {
423
+ return /* @__PURE__ */ jsx(
424
+ "div",
425
+ {
426
+ className: merge("absolute rounded-full", className),
427
+ style: { background }
428
+ }
429
+ );
430
+ };
431
+ var WaveLayer = ({
432
+ className,
433
+ path,
434
+ fill,
435
+ viewBox = "0 0 700 600",
436
+ transform
437
+ }) => {
438
+ return /* @__PURE__ */ jsx(
439
+ "svg",
440
+ {
441
+ className,
442
+ viewBox,
443
+ fill: "none",
444
+ preserveAspectRatio: "none",
445
+ "aria-hidden": "true",
446
+ children: /* @__PURE__ */ jsx(
447
+ "path",
448
+ {
449
+ d: path,
450
+ fill,
451
+ transform
452
+ }
453
+ )
454
+ }
455
+ );
456
+ };
457
+ var Image = ({
458
+ url,
459
+ icon,
460
+ label,
461
+ className,
462
+ imageClassName,
463
+ previewClassName
464
+ }) => {
465
+ if (url === void 0) {
466
+ return /* @__PURE__ */ jsx(
467
+ "div",
468
+ {
469
+ className: merge(
470
+ "py-3 my-2 rounded-lg border flex items-center justify-center bg-gray-100/50 h-35",
471
+ className
472
+ ),
473
+ children: /* @__PURE__ */ jsx(CameraOff, { className: "text-gray-400" })
474
+ }
475
+ );
476
+ }
477
+ const Icon = icon;
478
+ return /* @__PURE__ */ jsxs("div", { className: merge("flex flex-col gap-1", className), children: [
479
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-2", children: [
480
+ Icon && /* @__PURE__ */ jsx(Icon, { className: "text-gray-500 h-5 w-5" }),
481
+ label && /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-500", children: label })
482
+ ] }),
483
+ /* @__PURE__ */ jsx(
484
+ "div",
485
+ {
486
+ className: merge("py-2 rounded-lg border flex items-center justify-center", imageClassName),
487
+ children: /* @__PURE__ */ jsx(
488
+ "img",
489
+ {
490
+ src: url,
491
+ alt: label ?? "",
492
+ className: merge("max-h-full max-w-full object-contain", previewClassName)
493
+ }
494
+ )
495
+ }
496
+ )
497
+ ] });
498
+ };
499
+ var DialogClose = ({
500
+ ...props
501
+ }) => {
502
+ return /* @__PURE__ */ jsx(
503
+ Dialog$1.Close,
504
+ {
505
+ "data-slot": "dialog-close",
506
+ ...props
507
+ }
508
+ );
509
+ };
510
+ var DialogOverlay = ({
511
+ className,
512
+ ...props
513
+ }) => {
514
+ return /* @__PURE__ */ jsx(
515
+ Dialog$1.Overlay,
516
+ {
517
+ "data-slot": "dialog-overlay",
518
+ className: merge(
519
+ "fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
520
+ className
521
+ ),
522
+ ...props
523
+ }
524
+ );
525
+ };
526
+ var DialogPortal = ({
527
+ ...props
528
+ }) => {
529
+ return /* @__PURE__ */ jsx(
530
+ Dialog$1.Portal,
531
+ {
532
+ "data-slot": "dialog-portal",
533
+ ...props
534
+ }
535
+ );
536
+ };
537
+ var DialogContent = ({
538
+ className,
539
+ children,
540
+ showCloseButton = true,
541
+ ...props
542
+ }) => {
543
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [
544
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
545
+ /* @__PURE__ */ jsxs(
546
+ Dialog$1.Content,
547
+ {
548
+ "data-slot": "dialog-content",
549
+ className: merge(
550
+ "fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
551
+ className
552
+ ),
553
+ ...props,
554
+ children: [
555
+ children,
556
+ showCloseButton && /* @__PURE__ */ jsx(
557
+ Dialog$1.Close,
558
+ {
559
+ "data-slot": "dialog-close",
560
+ asChild: true,
561
+ children: /* @__PURE__ */ jsxs(
562
+ Button,
563
+ {
564
+ variant: "ghost",
565
+ className: "absolute top-2 right-2",
566
+ size: "icon",
567
+ children: [
568
+ /* @__PURE__ */ jsx(XIcon, {}),
569
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
570
+ ]
571
+ }
572
+ )
573
+ }
574
+ )
575
+ ]
576
+ }
577
+ )
578
+ ] });
579
+ };
580
+ var DialogDescription = ({
581
+ className,
582
+ ...props
583
+ }) => {
584
+ return /* @__PURE__ */ jsx(
585
+ Dialog$1.Description,
586
+ {
587
+ "data-slot": "dialog-description",
588
+ className: merge(
589
+ "text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
590
+ className
591
+ ),
592
+ ...props
593
+ }
594
+ );
595
+ };
596
+ var DialogFooter = ({
597
+ className,
598
+ showCloseButton = false,
599
+ children,
600
+ ...props
601
+ }) => {
602
+ return /* @__PURE__ */ jsxs(
603
+ "div",
604
+ {
605
+ "data-slot": "dialog-footer",
606
+ className: merge("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
607
+ ...props,
608
+ children: [
609
+ children,
610
+ showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", children: "Close" }) })
611
+ ]
612
+ }
613
+ );
614
+ };
615
+ var DialogHeader = ({
616
+ className,
617
+ ...props
618
+ }) => {
619
+ return /* @__PURE__ */ jsx(
620
+ "div",
621
+ {
622
+ "data-slot": "dialog-header",
623
+ className: merge("flex flex-col gap-1", className),
624
+ ...props
625
+ }
626
+ );
627
+ };
628
+ var DialogTitle = ({
629
+ className,
630
+ ...props
631
+ }) => {
632
+ return /* @__PURE__ */ jsx(
633
+ Dialog$1.Title,
634
+ {
635
+ "data-slot": "dialog-title",
636
+ className: merge("text-sm font-medium", className),
637
+ ...props
638
+ }
639
+ );
640
+ };
641
+ var DialogTrigger = ({
642
+ ...props
643
+ }) => {
644
+ return /* @__PURE__ */ jsx(
645
+ Dialog$1.Trigger,
646
+ {
647
+ "data-slot": "dialog-trigger",
648
+ ...props
649
+ }
650
+ );
651
+ };
652
+ var Dialog = ({
653
+ ...props
654
+ }) => {
655
+ return /* @__PURE__ */ jsx(
656
+ Dialog$1.Root,
657
+ {
658
+ "data-slot": "dialog",
659
+ ...props
660
+ }
661
+ );
662
+ };
663
+ var ICON_VARIANTS = {
664
+ orange: "bg-orange-50 ring-orange-200 text-orange-600",
665
+ neutral: "bg-neutral-100 ring-neutral-200 text-neutral-600",
666
+ amber: "bg-amber-50 ring-amber-200 text-amber-600",
667
+ red: "bg-red-50 ring-red-200 text-red-600"
668
+ };
669
+ var Modal = ({
670
+ children,
671
+ openModal = false,
672
+ setOpenModal,
673
+ showClose = true,
674
+ className,
675
+ title,
676
+ description,
677
+ icon: Icon,
678
+ iconVariant = "orange",
679
+ content,
680
+ actions,
681
+ showCancel = false
682
+ }) => {
683
+ const [open, setOpen] = useState(false);
684
+ const isControlled = openModal !== void 0 && setOpenModal !== void 0;
685
+ const handleClose = () => {
686
+ if (isControlled) setOpenModal?.(false);
687
+ else setOpen(false);
688
+ };
689
+ return /* @__PURE__ */ jsxs(
690
+ Dialog,
691
+ {
692
+ open: isControlled ? openModal : open,
693
+ onOpenChange: isControlled ? setOpenModal : setOpen,
694
+ children: [
695
+ children && /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children }),
696
+ /* @__PURE__ */ jsxs(
697
+ DialogContent,
698
+ {
699
+ showCloseButton: showClose,
700
+ className: merge("max-w-lg! p-0 overflow-hidden gap-0", className),
701
+ children: [
702
+ /* @__PURE__ */ jsxs(DialogHeader, { className: "px-6 py-4 pb-3", children: [
703
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
704
+ Icon && /* @__PURE__ */ jsx(
705
+ "div",
706
+ {
707
+ className: merge(
708
+ "flex size-8 items-center justify-center rounded-lg ring-1 shrink-0",
709
+ ICON_VARIANTS[iconVariant]
710
+ ),
711
+ children: /* @__PURE__ */ jsx(Icon, { className: "size-4" })
712
+ }
713
+ ),
714
+ /* @__PURE__ */ jsx(DialogTitle, { className: "text-base font-semibold text-gray-900", children: title })
715
+ ] }),
716
+ /* @__PURE__ */ jsx(DialogDescription, { className: "text-sm text-gray-500", children: description })
717
+ ] }),
718
+ /* @__PURE__ */ jsx(Separator, {}),
719
+ /* @__PURE__ */ jsx("div", { className: "px-6 py-4", children: content }),
720
+ /* @__PURE__ */ jsx(Separator, {}),
721
+ (showCancel || actions) && /* @__PURE__ */ jsxs(DialogFooter, { className: "px-6 py-3 flex flex-row justify-end gap-2", children: [
722
+ showCancel && /* @__PURE__ */ jsxs(
723
+ Button,
724
+ {
725
+ variant: "outline",
726
+ size: "sm",
727
+ onClick: handleClose,
728
+ children: [
729
+ /* @__PURE__ */ jsx(Ban, {}),
730
+ "Cancelar"
731
+ ]
732
+ }
733
+ ),
734
+ actions
735
+ ] })
736
+ ]
737
+ }
738
+ )
739
+ ]
740
+ }
741
+ );
742
+ };
743
+ var StepItem = ({
744
+ step,
745
+ isCurrent,
746
+ isCompleted,
747
+ index,
748
+ totalSteps
749
+ }) => {
750
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
751
+ /* @__PURE__ */ jsxs(
752
+ "div",
753
+ {
754
+ className: merge("flex flex-row items-center gap-2 opacity-60", isCurrent && "opacity-100"),
755
+ children: [
756
+ /* @__PURE__ */ jsx(
757
+ "div",
758
+ {
759
+ className: merge(
760
+ "p-1 border border-transparent rounded-full flex items-center justify-center",
761
+ isCurrent && "border-orange-500"
762
+ ),
763
+ children: /* @__PURE__ */ jsx(
764
+ "div",
765
+ {
766
+ className: merge(
767
+ "h-10 w-10 flex items-center justify-center bg-gray-200 text-gray-500 rounded-full",
768
+ isCurrent ? "bg-orange-500 text-white opacity-100" : isCompleted ? "bg-orange-500 text-white" : ""
769
+ ),
770
+ children: step.step
771
+ }
772
+ )
773
+ }
774
+ ),
775
+ step.label && /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-900", children: step.label })
776
+ ]
777
+ }
778
+ ),
779
+ index < totalSteps - 1 && /* @__PURE__ */ jsx(Separator, { className: "flex-1 mx-4 bg-gray-300" })
780
+ ] });
781
+ };
782
+ var Bar = ({
783
+ steps,
784
+ currentStep,
785
+ label,
786
+ className
787
+ }) => {
788
+ const totalSteps = steps.length;
789
+ const progress = (currentStep - 1) / (totalSteps - 1) * 100;
790
+ return /* @__PURE__ */ jsxs("div", { className: merge("w-full hidden sm:flex flex-col items-center", className), children: [
791
+ /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-between w-full max-w-xs", children: [
792
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center px-10", children: /* @__PURE__ */ jsx("div", { className: "w-full h-1 bg-gray-300/50 rounded-full" }) }),
793
+ /* @__PURE__ */ jsx(
794
+ "div",
795
+ {
796
+ className: "absolute left-0 top-1/2 -translate-y-1/2 h-1 bg-orange-500 rounded-full transition-all",
797
+ style: { width: `${progress}%` }
798
+ }
799
+ ),
800
+ steps.map((step, index) => {
801
+ const stepNumber = index + 1;
802
+ const isActive = stepNumber === currentStep;
803
+ const isCompleted = stepNumber < currentStep;
804
+ return /* @__PURE__ */ jsx(
805
+ "div",
806
+ {
807
+ className: "relative z-10 flex items-center justify-center",
808
+ children: /* @__PURE__ */ jsx(
809
+ "div",
810
+ {
811
+ className: merge(
812
+ "w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium transition",
813
+ isActive && "bg-orange-500 text-white",
814
+ isCompleted && "bg-orange-500 text-white",
815
+ !isActive && !isCompleted && "bg-gray-200 text-gray-500"
816
+ ),
817
+ children: stepNumber
818
+ }
819
+ )
820
+ },
821
+ `${step.step}`
822
+ );
823
+ })
824
+ ] }),
825
+ label && /* @__PURE__ */ jsx("p", { className: "mt-3 text-xs text-gray-500/80 font-light text-center", children: label })
826
+ ] });
827
+ };
828
+ var Steps = ({
829
+ steps,
830
+ currentStep,
831
+ variant = "line",
832
+ label,
833
+ className
834
+ }) => {
835
+ if (variant === "bar") {
836
+ return /* @__PURE__ */ jsx(
837
+ Bar,
838
+ {
839
+ steps,
840
+ currentStep,
841
+ label,
842
+ className
843
+ }
844
+ );
845
+ }
846
+ return /* @__PURE__ */ jsx(
847
+ "div",
848
+ {
849
+ className: merge(
850
+ "w-full hidden sm:flex items-center justify-center p-4 px-20 select-none",
851
+ className
852
+ ),
853
+ children: steps.map((step, index) => /* @__PURE__ */ jsx(
854
+ StepItem,
855
+ {
856
+ step,
857
+ isCurrent: step.step === currentStep,
858
+ isCompleted: step.step < currentStep,
859
+ index,
860
+ totalSteps: steps.length
861
+ },
862
+ step.label
863
+ ))
864
+ }
865
+ );
866
+ };
867
+ var Tooltip = ({
868
+ ...props
869
+ }) => {
870
+ return /* @__PURE__ */ jsx(
871
+ Tooltip$1.Root,
872
+ {
873
+ "data-slot": "tooltip",
874
+ ...props
875
+ }
876
+ );
877
+ };
878
+ var TooltipContent = ({
879
+ className,
880
+ sideOffset = 0,
881
+ children,
882
+ ...props
883
+ }) => {
884
+ return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsxs(
885
+ Tooltip$1.Content,
886
+ {
887
+ "data-slot": "tooltip-content",
888
+ sideOffset,
889
+ className: merge(
890
+ "z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
891
+ className
892
+ ),
893
+ ...props,
894
+ children: [
895
+ children,
896
+ /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground" })
897
+ ]
898
+ }
899
+ ) });
900
+ };
901
+ var TooltipTrigger = ({
902
+ ...props
903
+ }) => {
904
+ return /* @__PURE__ */ jsx(
905
+ Tooltip$1.Trigger,
906
+ {
907
+ "data-slot": "tooltip-trigger",
908
+ ...props
909
+ }
910
+ );
911
+ };
912
+ var TruncatedText = ({
913
+ text,
914
+ className,
915
+ tooltipClassName
916
+ }) => {
917
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [
918
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: merge("block truncate min-w-0 w-full cursor-default", className), children: text }) }),
919
+ /* @__PURE__ */ jsx(TooltipContent, { className: tooltipClassName, children: /* @__PURE__ */ jsx("span", { children: text }) })
920
+ ] });
921
+ };
922
+ var Accordion = ({
923
+ className,
924
+ ...props
925
+ }) => {
926
+ return /* @__PURE__ */ jsx(
927
+ Accordion$1.Root,
928
+ {
929
+ "data-slot": "accordion",
930
+ className: merge("flex w-full flex-col overflow-hidden rounded-md border", className),
931
+ ...props
932
+ }
933
+ );
934
+ };
935
+ var Avatar = ({
936
+ className,
937
+ size = "default",
938
+ ...props
939
+ }) => {
940
+ return /* @__PURE__ */ jsx(
941
+ Avatar$1.Root,
942
+ {
943
+ "data-slot": "avatar",
944
+ "data-size": size,
945
+ className: merge(
946
+ "group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
947
+ className
948
+ ),
949
+ ...props
950
+ }
951
+ );
952
+ };
953
+ var badgeVariants = cva(
954
+ "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",
955
+ {
956
+ variants: {
957
+ variant: {
958
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80 font-semibold",
959
+ secondary: "bg-orange-50 border border-orange-200/50 backdrop-blur-sm text-orange-500",
960
+ destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
961
+ outline: "border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground",
962
+ ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
963
+ link: "text-primary underline-offset-4 hover:underline",
964
+ success: "bg-green-500/15 text-green-600 ring-1 ring-green-600/20 transition-colors [a&]:hover:bg-green-500/25",
965
+ warning: "bg-amber-500/15 text-amber-600 ring-1 ring-amber-600/20 transition-colors [a&]:hover:bg-amber-500/25",
966
+ error: "bg-red-500/15 text-red-600 ring-1 ring-red-600/20 transition-colors [a&]:hover:bg-red-500/25",
967
+ info: "bg-blue-500/15 text-blue-600 ring-1 ring-blue-600/20 transition-colors [a&]:hover:bg-blue-500/25"
968
+ }
969
+ },
970
+ defaultVariants: {
971
+ variant: "default"
972
+ }
973
+ }
974
+ );
975
+ var Badge = ({
976
+ className,
977
+ variant = "default",
978
+ asChild = false,
979
+ ...props
980
+ }) => {
981
+ const Comp = asChild ? Slot.Root : "span";
982
+ return /* @__PURE__ */ jsx(
983
+ Comp,
984
+ {
985
+ "data-slot": "badge",
986
+ "data-variant": variant,
987
+ className: merge(badgeVariants({ variant }), className),
988
+ ...props
989
+ }
990
+ );
991
+ };
992
+ var Breadcrumb = ({
993
+ className,
994
+ ...props
995
+ }) => {
996
+ return /* @__PURE__ */ jsx(
997
+ "nav",
998
+ {
999
+ "aria-label": "breadcrumb",
1000
+ "data-slot": "breadcrumb",
1001
+ className: merge(className),
1002
+ ...props
1003
+ }
1004
+ );
1005
+ };
1006
+ var buttonGroupVariants = cva(
1007
+ "flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
1008
+ {
1009
+ variants: {
1010
+ orientation: {
1011
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!",
1012
+ vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!"
1013
+ }
1014
+ },
1015
+ defaultVariants: {
1016
+ orientation: "horizontal"
1017
+ }
1018
+ }
1019
+ );
1020
+ var ButtonGroup = ({
1021
+ className,
1022
+ orientation,
1023
+ ...props
1024
+ }) => {
1025
+ return /* @__PURE__ */ jsx(
1026
+ "div",
1027
+ {
1028
+ "data-slot": "button-group",
1029
+ "data-orientation": orientation,
1030
+ className: merge(buttonGroupVariants({ orientation }), className),
1031
+ ...props
1032
+ }
1033
+ );
1034
+ };
1035
+ var CalendarDayButton = ({
1036
+ className,
1037
+ day,
1038
+ modifiers,
1039
+ locale,
1040
+ ...props
1041
+ }) => {
1042
+ const defaultClassNames = getDefaultClassNames();
1043
+ const ref = useRef(null);
1044
+ useEffect(() => {
1045
+ if (modifiers.focused) ref.current?.focus();
1046
+ }, [modifiers.focused]);
1047
+ return /* @__PURE__ */ jsx(
1048
+ Button,
1049
+ {
1050
+ ref,
1051
+ variant: "ghost",
1052
+ size: "icon",
1053
+ "data-day": day.date.toLocaleDateString(locale?.code),
1054
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
1055
+ "data-disabled": modifiers.disabled || void 0,
1056
+ "data-range-start": modifiers.range_start,
1057
+ "data-range-end": modifiers.range_end,
1058
+ "data-range-middle": modifiers.range_middle,
1059
+ className: merge(
1060
+ "relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-middle=true]:bg-muted data-[range-start=true]:bg-primary data-[selected-single=true]:bg-orange-50 data-[selected-single=true]:text-orange-500 data-[selected-single=true]:border data-[selected-single=true]:border-orange-300/50! [&>span]:text-xs [&>span]:opacity-70 data-[disabled=true]:opacity-30 data-[disabled=true]:pointer-events-none data-[disabled=true]:line-through",
1061
+ defaultClassNames.day,
1062
+ className
1063
+ ),
1064
+ ...props
1065
+ }
1066
+ );
1067
+ };
1068
+ var Calendar = ({
1069
+ className,
1070
+ classNames,
1071
+ showOutsideDays = true,
1072
+ captionLayout = "label",
1073
+ buttonVariant = "ghost",
1074
+ locale,
1075
+ formatters,
1076
+ components,
1077
+ ...props
1078
+ }) => {
1079
+ const defaultClassNames = getDefaultClassNames();
1080
+ return /* @__PURE__ */ jsx(
1081
+ DayPicker,
1082
+ {
1083
+ showOutsideDays,
1084
+ className: merge(
1085
+ "group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
1086
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
1087
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
1088
+ className
1089
+ ),
1090
+ captionLayout,
1091
+ locale,
1092
+ formatters: {
1093
+ formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
1094
+ ...formatters
1095
+ },
1096
+ classNames: {
1097
+ ...defaultClassNames,
1098
+ root: merge("w-full min-w-70", defaultClassNames.root),
1099
+ months: merge("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
1100
+ month: merge(
1101
+ "flex w-full flex-col justify-center items-center gap-6",
1102
+ defaultClassNames.month
1103
+ ),
1104
+ caption_label: merge("text-sm font-semibold text-gray-900 capitalize"),
1105
+ month_caption: merge(
1106
+ "flex w-full items-center justify-center gap-2 py-1",
1107
+ defaultClassNames.month_caption
1108
+ ),
1109
+ dropdowns: merge("flex items-center gap-2", defaultClassNames.dropdowns),
1110
+ dropdown: merge("relative", defaultClassNames.dropdown),
1111
+ dropdown_root: merge("relative", defaultClassNames.dropdown_root),
1112
+ months_dropdown: merge(
1113
+ "appearance-none cursor-pointer rounded-md border border-gray-200 bg-background px-2 py-1 pr-6 text-sm font-semibold text-gray-900 capitalize focus:outline-none focus:ring-2 focus:ring-orange-300"
1114
+ ),
1115
+ years_dropdown: merge(
1116
+ "appearance-none cursor-pointer rounded-md border border-gray-200 bg-background px-2 py-1 pr-6 text-sm font-semibold text-gray-900 focus:outline-none focus:ring-2 focus:ring-orange-300"
1117
+ ),
1118
+ month_grid: merge("w-full"),
1119
+ today: merge("bg-gray-100 rounded-lg"),
1120
+ weekdays: merge(" border-b border-orange-200 capitalize"),
1121
+ weekday: merge("pb-2"),
1122
+ nav: merge(
1123
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
1124
+ defaultClassNames.nav
1125
+ ),
1126
+ button_previous: merge(
1127
+ buttonVariants({ variant: buttonVariant }),
1128
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
1129
+ defaultClassNames.button_previous
1130
+ ),
1131
+ button_next: merge(
1132
+ buttonVariants({ variant: buttonVariant }),
1133
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
1134
+ defaultClassNames.button_next
1135
+ ),
1136
+ ...classNames
1137
+ },
1138
+ components: {
1139
+ Root: ({ className: className2, rootRef, ...props2 }) => /* @__PURE__ */ jsx(
1140
+ "div",
1141
+ {
1142
+ "data-slot": "calendar",
1143
+ ref: rootRef,
1144
+ className: merge(className2),
1145
+ ...props2
1146
+ }
1147
+ ),
1148
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
1149
+ if (orientation === "left")
1150
+ return /* @__PURE__ */ jsx(
1151
+ ChevronLeftIcon,
1152
+ {
1153
+ className: merge("size-4", className2),
1154
+ ...props2
1155
+ }
1156
+ );
1157
+ if (orientation === "right")
1158
+ return /* @__PURE__ */ jsx(
1159
+ ChevronRightIcon,
1160
+ {
1161
+ className: merge("size-4", className2),
1162
+ ...props2
1163
+ }
1164
+ );
1165
+ return /* @__PURE__ */ jsx(
1166
+ ChevronDownIcon,
1167
+ {
1168
+ className: merge("size-4", className2),
1169
+ ...props2
1170
+ }
1171
+ );
1172
+ },
1173
+ Dropdown: ({ value, onChange, options, className: className2 }) => /* @__PURE__ */ jsxs("div", { className: "relative inline-flex items-center", children: [
1174
+ /* @__PURE__ */ jsx(
1175
+ "select",
1176
+ {
1177
+ value,
1178
+ onChange,
1179
+ className: merge(
1180
+ "appearance-none cursor-pointer rounded-md bg-transparent pl-2 pr-7 py-1 text-sm font-semibold text-gray-900 capitalize focus:outline-none",
1181
+ className2
1182
+ ),
1183
+ children: options?.map((option) => /* @__PURE__ */ jsx(
1184
+ "option",
1185
+ {
1186
+ value: option.value,
1187
+ disabled: option.disabled,
1188
+ children: option.label
1189
+ },
1190
+ option.value
1191
+ ))
1192
+ }
1193
+ ),
1194
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none absolute right-1.5 top-1/2 size-3.5 -translate-y-1/2 text-gray-500" })
1195
+ ] }),
1196
+ DayButton: (props2) => /* @__PURE__ */ jsx(
1197
+ CalendarDayButton,
1198
+ {
1199
+ locale,
1200
+ ...props2
1201
+ }
1202
+ ),
1203
+ ...components
1204
+ },
1205
+ ...props
1206
+ }
1207
+ );
1208
+ };
1209
+ var Card = ({
1210
+ className,
1211
+ size = "default",
1212
+ ...props
1213
+ }) => {
1214
+ return /* @__PURE__ */ jsx(
1215
+ "div",
1216
+ {
1217
+ "data-slot": "card",
1218
+ "data-size": size,
1219
+ className: merge(
1220
+ "group/card flex flex-col gap-4 overflow-hidden rounded-lg bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",
1221
+ className
1222
+ ),
1223
+ ...props
1224
+ }
1225
+ );
1226
+ };
1227
+ var Checkbox = ({
1228
+ className,
1229
+ ...props
1230
+ }) => {
1231
+ return /* @__PURE__ */ jsx(
1232
+ Checkbox$1.Root,
1233
+ {
1234
+ "data-slot": "checkbox",
1235
+ className: merge(
1236
+ "bg-white peer relative flex size-4 shrink-0 items-center justify-center rounded-sm border border-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary cursor-pointer",
1237
+ className
1238
+ ),
1239
+ ...props,
1240
+ children: /* @__PURE__ */ jsx(
1241
+ Checkbox$1.Indicator,
1242
+ {
1243
+ "data-slot": "checkbox-indicator",
1244
+ className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
1245
+ children: /* @__PURE__ */ jsx(CheckIcon, {})
1246
+ }
1247
+ )
1248
+ }
1249
+ );
1250
+ };
1251
+ var Collapsible = ({
1252
+ ...props
1253
+ }) => {
1254
+ return /* @__PURE__ */ jsx(
1255
+ Collapsible$1.Root,
1256
+ {
1257
+ "data-slot": "collapsible",
1258
+ ...props
1259
+ }
1260
+ );
1261
+ };
1262
+ var Combobox = Combobox$1.Root;
1263
+ var Command = ({
1264
+ className,
1265
+ ...props
1266
+ }) => {
1267
+ return /* @__PURE__ */ jsx(
1268
+ Command$1,
1269
+ {
1270
+ "data-slot": "command",
1271
+ className: merge(
1272
+ "flex size-full flex-col overflow-hidden rounded-xl bg-popover p-1 text-popover-foreground",
1273
+ className
1274
+ ),
1275
+ ...props
1276
+ }
1277
+ );
1278
+ };
1279
+ var ContextMenu = ({
1280
+ ...props
1281
+ }) => {
1282
+ return /* @__PURE__ */ jsx(
1283
+ ContextMenu$1.Root,
1284
+ {
1285
+ "data-slot": "context-menu",
1286
+ ...props
1287
+ }
1288
+ );
1289
+ };
1290
+ var HoverCard = ({
1291
+ ...props
1292
+ }) => {
1293
+ return /* @__PURE__ */ jsx(
1294
+ HoverCard$1.Root,
1295
+ {
1296
+ "data-slot": "hover-card",
1297
+ ...props
1298
+ }
1299
+ );
1300
+ };
1301
+ var Input = ({
1302
+ className,
1303
+ type,
1304
+ ...props
1305
+ }) => {
1306
+ return /* @__PURE__ */ jsx(
1307
+ "input",
1308
+ {
1309
+ type,
1310
+ "data-slot": "input",
1311
+ className: merge(
1312
+ "h-8 w-full min-w-0 rounded-lg border border-input bg-white px-2 py-0.5 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs/relaxed file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
1313
+ className
1314
+ ),
1315
+ ...props
1316
+ }
1317
+ );
1318
+ };
1319
+ var inputGroupAddonVariants = cva(
1320
+ "flex h-auto cursor-text items-center justify-center gap-1 py-2 text-xs/relaxed font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5",
1321
+ {
1322
+ variants: {
1323
+ align: {
1324
+ "inline-start": "order-first pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem]",
1325
+ "inline-end": "order-last pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem]",
1326
+ "block-start": "order-first w-full justify-start px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
1327
+ "block-end": "order-last w-full justify-start px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
1328
+ }
1329
+ },
1330
+ defaultVariants: {
1331
+ align: "inline-start"
1332
+ }
1333
+ }
1334
+ );
1335
+ var inputGroupButtonVariants = cva(
1336
+ "flex items-center gap-2 rounded-md text-xs/relaxed shadow-none",
1337
+ {
1338
+ variants: {
1339
+ size: {
1340
+ xs: "h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3",
1341
+ sm: "gap-1",
1342
+ "icon-xs": "size-6 p-0 has-[>svg]:p-0",
1343
+ "icon-sm": "size-7 p-0 has-[>svg]:p-0"
1344
+ }
1345
+ },
1346
+ defaultVariants: {
1347
+ size: "xs"
1348
+ }
1349
+ }
1350
+ );
1351
+ var InputGroupAddon = ({
1352
+ className,
1353
+ align = "inline-start",
1354
+ ...props
1355
+ }) => {
1356
+ return /* @__PURE__ */ jsx(
1357
+ "div",
1358
+ {
1359
+ "data-slot": "input-group-addon",
1360
+ "data-align": align,
1361
+ className: merge(inputGroupAddonVariants({ align }), className),
1362
+ ...props
1363
+ }
1364
+ );
1365
+ };
1366
+ var InputGroupButton = ({
1367
+ className,
1368
+ type = "button",
1369
+ variant = "ghost",
1370
+ size = "xs",
1371
+ ...props
1372
+ }) => {
1373
+ return /* @__PURE__ */ jsx(
1374
+ Button,
1375
+ {
1376
+ type,
1377
+ "data-size": size,
1378
+ variant,
1379
+ className: merge(inputGroupButtonVariants({ size }), className),
1380
+ ...props
1381
+ }
1382
+ );
1383
+ };
1384
+ var InputGroupInput = ({
1385
+ className,
1386
+ ...props
1387
+ }) => {
1388
+ return /* @__PURE__ */ jsx(
1389
+ Input,
1390
+ {
1391
+ "data-slot": "input-group-control",
1392
+ className: merge(
1393
+ "flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
1394
+ className
1395
+ ),
1396
+ ...props
1397
+ }
1398
+ );
1399
+ };
1400
+ var InputGroupText = ({
1401
+ className,
1402
+ ...props
1403
+ }) => {
1404
+ return /* @__PURE__ */ jsx(
1405
+ "span",
1406
+ {
1407
+ className: merge(
1408
+ "flex items-center gap-2 text-xs/relaxed text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
1409
+ className
1410
+ ),
1411
+ ...props
1412
+ }
1413
+ );
1414
+ };
1415
+ var Textarea = ({
1416
+ className,
1417
+ ...props
1418
+ }) => {
1419
+ return /* @__PURE__ */ jsx(
1420
+ "textarea",
1421
+ {
1422
+ "data-slot": "textarea",
1423
+ className: merge(
1424
+ "flex field-sizing-content min-h-16 w-full resize-none rounded-md border border-input bg-input/20 px-2 py-2 text-sm transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
1425
+ className
1426
+ ),
1427
+ ...props
1428
+ }
1429
+ );
1430
+ };
1431
+ var InputGroupTextarea = ({
1432
+ className,
1433
+ ...props
1434
+ }) => {
1435
+ return /* @__PURE__ */ jsx(
1436
+ Textarea,
1437
+ {
1438
+ "data-slot": "input-group-control",
1439
+ className: merge(
1440
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
1441
+ className
1442
+ ),
1443
+ ...props
1444
+ }
1445
+ );
1446
+ };
1447
+ var InputGroup = ({
1448
+ className,
1449
+ ...props
1450
+ }) => {
1451
+ return /* @__PURE__ */ jsx(
1452
+ "div",
1453
+ {
1454
+ "data-slot": "input-group",
1455
+ className: merge(
1456
+ "group/input-group relative flex h-7 w-full min-w-0 items-center rounded-md border border-input bg-input/20 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
1457
+ className
1458
+ ),
1459
+ ...props
1460
+ }
1461
+ );
1462
+ };
1463
+ var InputOTP = ({
1464
+ className,
1465
+ containerClassName,
1466
+ ...props
1467
+ }) => {
1468
+ return /* @__PURE__ */ jsx(
1469
+ OTPInput,
1470
+ {
1471
+ "data-slot": "input-otp",
1472
+ containerClassName: merge(
1473
+ "cn-input-otp flex items-center has-disabled:opacity-50",
1474
+ containerClassName
1475
+ ),
1476
+ spellCheck: false,
1477
+ className: merge("disabled:cursor-not-allowed", className),
1478
+ ...props
1479
+ }
1480
+ );
1481
+ };
1482
+ var itemVariants = cva(
1483
+ "group/item flex w-full flex-wrap items-center rounded-md border text-xs/relaxed transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",
1484
+ {
1485
+ variants: {
1486
+ variant: {
1487
+ default: "border-transparent",
1488
+ outline: "border-border",
1489
+ muted: "border-gray-200/50 bg-muted/50"
1490
+ },
1491
+ size: {
1492
+ default: "gap-2.5 px-3 py-2.5",
1493
+ sm: "gap-2.5 px-3 py-2.5",
1494
+ xs: "gap-2.5 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0"
1495
+ }
1496
+ },
1497
+ defaultVariants: {
1498
+ variant: "default",
1499
+ size: "default"
1500
+ }
1501
+ }
1502
+ );
1503
+ cva(
1504
+ "flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-center [&_svg]:pointer-events-none",
1505
+ {
1506
+ variants: {
1507
+ variant: {
1508
+ default: "bg-transparent",
1509
+ icon: "[&_svg:not([class*='size-'])]:size-4",
1510
+ image: "size-8 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"
1511
+ }
1512
+ },
1513
+ defaultVariants: {
1514
+ variant: "default"
1515
+ }
1516
+ }
1517
+ );
1518
+ var Item = ({
1519
+ className,
1520
+ variant = "default",
1521
+ size = "default",
1522
+ asChild = false,
1523
+ ...props
1524
+ }) => {
1525
+ const Comp = asChild ? Slot.Root : "div";
1526
+ return /* @__PURE__ */ jsx(
1527
+ Comp,
1528
+ {
1529
+ "data-slot": "item",
1530
+ "data-variant": variant,
1531
+ "data-size": size,
1532
+ className: merge(itemVariants({ variant, size, className })),
1533
+ ...props
1534
+ }
1535
+ );
1536
+ };
1537
+ var Label = ({
1538
+ className,
1539
+ ...props
1540
+ }) => {
1541
+ return /* @__PURE__ */ jsx(
1542
+ Label$1.Root,
1543
+ {
1544
+ "data-slot": "label",
1545
+ className: merge(
1546
+ "flex items-center gap-2 text-sm/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
1547
+ className
1548
+ ),
1549
+ ...props
1550
+ }
1551
+ );
1552
+ };
1553
+ var Menubar = ({
1554
+ className,
1555
+ ...props
1556
+ }) => {
1557
+ return /* @__PURE__ */ jsx(
1558
+ Menubar$1.Root,
1559
+ {
1560
+ "data-slot": "menubar",
1561
+ className: merge("flex h-9 items-center rounded-lg border p-1", className),
1562
+ ...props
1563
+ }
1564
+ );
1565
+ };
1566
+ var Pagination = ({
1567
+ className,
1568
+ ...props
1569
+ }) => {
1570
+ return /* @__PURE__ */ jsx(
1571
+ "nav",
1572
+ {
1573
+ "aria-label": "pagination",
1574
+ "data-slot": "pagination",
1575
+ className: merge("mx-auto flex w-full justify-center", className),
1576
+ ...props
1577
+ }
1578
+ );
1579
+ };
1580
+ var Popover = ({
1581
+ ...props
1582
+ }) => {
1583
+ return /* @__PURE__ */ jsx(
1584
+ Popover$1.Root,
1585
+ {
1586
+ "data-slot": "popover",
1587
+ ...props
1588
+ }
1589
+ );
1590
+ };
1591
+ var Progress = ({ value, className }) => {
1592
+ const isIndeterminate = value === null;
1593
+ return /* @__PURE__ */ jsx("div", { className: merge("relative h-1 w-full overflow-hidden rounded-full bg-muted", className), children: /* @__PURE__ */ jsx(
1594
+ "div",
1595
+ {
1596
+ className: merge(
1597
+ "h-full rounded-full bg-[oklch(0.65_0.22_50)]",
1598
+ isIndeterminate ? "w-2/3 animate-pulse" : "motion-safe:transition-[width] duration-150 ease-out"
1599
+ ),
1600
+ style: isIndeterminate ? void 0 : { width: `${Math.min(100, Math.max(0, value))}%` }
1601
+ }
1602
+ ) });
1603
+ };
1604
+ var RadioGroup = ({
1605
+ className,
1606
+ ...props
1607
+ }) => {
1608
+ return /* @__PURE__ */ jsx(
1609
+ RadioGroup$1.Root,
1610
+ {
1611
+ "data-slot": "radio-group",
1612
+ className: merge("grid w-full gap-3", className),
1613
+ ...props
1614
+ }
1615
+ );
1616
+ };
1617
+ var SectionCardHeader = ({
1618
+ title,
1619
+ icon: Icon,
1620
+ action,
1621
+ titleElement,
1622
+ isCollapsable,
1623
+ open,
1624
+ onToggle,
1625
+ headerClassName
1626
+ }) => /* @__PURE__ */ jsxs(
1627
+ "div",
1628
+ {
1629
+ className: merge(
1630
+ "w-full px-4 py-3 border-b border-gray-200 flex items-center gap-4",
1631
+ headerClassName
1632
+ ),
1633
+ children: [
1634
+ /* @__PURE__ */ jsxs(
1635
+ "button",
1636
+ {
1637
+ type: "button",
1638
+ onClick: onToggle,
1639
+ disabled: !isCollapsable,
1640
+ className: merge(
1641
+ "flex flex-1 items-center gap-2 min-w-0 text-left",
1642
+ isCollapsable ? "cursor-pointer select-none" : "cursor-default"
1643
+ ),
1644
+ children: [
1645
+ Icon && /* @__PURE__ */ jsx(Icon, { className: "size-4 text-orange-500 shrink-0" }),
1646
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-gray-700 truncate", children: title }),
1647
+ titleElement && titleElement
1648
+ ]
1649
+ }
1650
+ ),
1651
+ action && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: action }),
1652
+ isCollapsable && /* @__PURE__ */ jsx(
1653
+ motion.button,
1654
+ {
1655
+ type: "button",
1656
+ onClick: onToggle,
1657
+ "aria-label": open ? "Contraer secci\xF3n" : "Expandir secci\xF3n",
1658
+ animate: { rotate: open ? 180 : 0 },
1659
+ transition: { duration: 0.2 },
1660
+ className: "shrink-0 cursor-pointer",
1661
+ children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 text-gray-500" })
1662
+ }
1663
+ )
1664
+ ]
1665
+ }
1666
+ );
1667
+ var SectionCard = ({
1668
+ title,
1669
+ icon: Icon,
1670
+ action,
1671
+ titleElement,
1672
+ children,
1673
+ className,
1674
+ contentClassName,
1675
+ headerClassName,
1676
+ mode = "card",
1677
+ defaultOpen = true,
1678
+ open: controlledOpen,
1679
+ onOpenChange
1680
+ }) => {
1681
+ const isCollapsable = mode === "collapsable";
1682
+ const [internalOpen, setInternalOpen] = useState(defaultOpen);
1683
+ const isControlled = controlledOpen !== void 0;
1684
+ const isOpen = isControlled ? controlledOpen : internalOpen;
1685
+ const handleToggle = () => {
1686
+ if (!isCollapsable) return;
1687
+ const next = !isOpen;
1688
+ if (isControlled) {
1689
+ onOpenChange?.(next);
1690
+ } else {
1691
+ setInternalOpen(next);
1692
+ }
1693
+ };
1694
+ return /* @__PURE__ */ jsxs(Card, { className: merge("pb-4 pt-0 gap-0 overflow-visible", className, isCollapsable && "pb-0"), children: [
1695
+ /* @__PURE__ */ jsx(
1696
+ SectionCardHeader,
1697
+ {
1698
+ headerClassName,
1699
+ title,
1700
+ icon: Icon,
1701
+ action,
1702
+ isCollapsable,
1703
+ titleElement,
1704
+ open: isOpen,
1705
+ onToggle: handleToggle
1706
+ }
1707
+ ),
1708
+ !isCollapsable && /* @__PURE__ */ jsx("div", { className: merge("p-4 flex flex-col gap-4", contentClassName), children }),
1709
+ isCollapsable && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: isOpen && /* @__PURE__ */ jsx(
1710
+ motion.div,
1711
+ {
1712
+ initial: {
1713
+ height: 0,
1714
+ opacity: 0
1715
+ },
1716
+ animate: {
1717
+ height: "auto",
1718
+ opacity: 1
1719
+ },
1720
+ exit: {
1721
+ height: 0,
1722
+ opacity: 0
1723
+ },
1724
+ transition: {
1725
+ duration: 0.25,
1726
+ ease: "easeInOut"
1727
+ },
1728
+ className: "overflow-visible",
1729
+ children: /* @__PURE__ */ jsx("div", { className: merge("p-4 flex flex-col gap-4", contentClassName), children })
1730
+ }
1731
+ ) })
1732
+ ] });
1733
+ };
1734
+ var SelectScrollDownButton = ({
1735
+ className,
1736
+ ...props
1737
+ }) => {
1738
+ return /* @__PURE__ */ jsx(
1739
+ Select$1.ScrollDownButton,
1740
+ {
1741
+ "data-slot": "select-scroll-down-button",
1742
+ className: merge(
1743
+ "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
1744
+ className
1745
+ ),
1746
+ ...props,
1747
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
1748
+ }
1749
+ );
1750
+ };
1751
+ var SelectScrollUpButton = ({
1752
+ className,
1753
+ ...props
1754
+ }) => {
1755
+ return /* @__PURE__ */ jsx(
1756
+ Select$1.ScrollUpButton,
1757
+ {
1758
+ "data-slot": "select-scroll-up-button",
1759
+ className: merge(
1760
+ "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
1761
+ className
1762
+ ),
1763
+ ...props,
1764
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
1765
+ }
1766
+ );
1767
+ };
1768
+ var SelectContent = ({
1769
+ className,
1770
+ children,
1771
+ position = "item-aligned",
1772
+ align = "center",
1773
+ ...props
1774
+ }) => {
1775
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
1776
+ Select$1.Content,
1777
+ {
1778
+ "data-slot": "select-content",
1779
+ "data-align-trigger": position === "item-aligned",
1780
+ className: merge(
1781
+ "relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
1782
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1783
+ className
1784
+ ),
1785
+ position,
1786
+ align,
1787
+ ...props,
1788
+ children: [
1789
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1790
+ /* @__PURE__ */ jsx(
1791
+ Select$1.Viewport,
1792
+ {
1793
+ "data-position": position,
1794
+ className: merge(
1795
+ "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)"
1796
+ ),
1797
+ children
1798
+ }
1799
+ ),
1800
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1801
+ ]
1802
+ }
1803
+ ) });
1804
+ };
1805
+ var SelectGroup = ({
1806
+ className,
1807
+ ...props
1808
+ }) => {
1809
+ return /* @__PURE__ */ jsx(
1810
+ Select$1.Group,
1811
+ {
1812
+ "data-slot": "select-group",
1813
+ className: merge("scroll-my-1 p-1", className),
1814
+ ...props
1815
+ }
1816
+ );
1817
+ };
1818
+ var SelectItem = ({
1819
+ className,
1820
+ children,
1821
+ ...props
1822
+ }) => {
1823
+ return /* @__PURE__ */ jsxs(
1824
+ Select$1.Item,
1825
+ {
1826
+ "data-slot": "select-item",
1827
+ className: merge(
1828
+ "relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none border border-transparent focus:bg-orange-50 focus:border focus:border-orange-200/50 focus:text-orange-500! focus:cursor-pointer not-data-[variant=destructive]:focus:**:text-orange-500! data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1829
+ className
1830
+ ),
1831
+ ...props,
1832
+ children: [
1833
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center", children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" }) }) }),
1834
+ /* @__PURE__ */ jsx(Select$1.ItemText, { children })
1835
+ ]
1836
+ }
1837
+ );
1838
+ };
1839
+ var SelectLabel = ({
1840
+ className,
1841
+ ...props
1842
+ }) => {
1843
+ return /* @__PURE__ */ jsx(
1844
+ Select$1.Label,
1845
+ {
1846
+ "data-slot": "select-label",
1847
+ className: merge("px-2 py-1.5 text-xs text-muted-foreground", className),
1848
+ ...props
1849
+ }
1850
+ );
1851
+ };
1852
+ var SelectSeparator = ({
1853
+ className,
1854
+ ...props
1855
+ }) => {
1856
+ return /* @__PURE__ */ jsx(
1857
+ Select$1.Separator,
1858
+ {
1859
+ "data-slot": "select-separator",
1860
+ className: merge("pointer-events-none -mx-1 my-1 h-px bg-border/50", className),
1861
+ ...props
1862
+ }
1863
+ );
1864
+ };
1865
+ var SelectTrigger = ({
1866
+ className,
1867
+ size = "default",
1868
+ children,
1869
+ ...props
1870
+ }) => {
1871
+ return /* @__PURE__ */ jsxs(
1872
+ Select$1.Trigger,
1873
+ {
1874
+ "data-slot": "select-trigger",
1875
+ "data-size": size,
1876
+ className: merge(
1877
+ "flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-input/20 px-2 py-1.5 text-xs/relaxed whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
1878
+ className
1879
+ ),
1880
+ ...props,
1881
+ children: [
1882
+ children,
1883
+ /* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-3.5 text-muted-foreground" }) })
1884
+ ]
1885
+ }
1886
+ );
1887
+ };
1888
+ var SelectValue = (props) => {
1889
+ return /* @__PURE__ */ jsx(
1890
+ Select$1.Value,
1891
+ {
1892
+ "data-slot": "select-value",
1893
+ ...props
1894
+ }
1895
+ );
1896
+ };
1897
+ var Select = (props) => {
1898
+ return /* @__PURE__ */ jsx(
1899
+ Select$1.Root,
1900
+ {
1901
+ "data-slot": "select",
1902
+ ...props
1903
+ }
1904
+ );
1905
+ };
1906
+ var Sheet = (props) => {
1907
+ return /* @__PURE__ */ jsx(
1908
+ Dialog$1.Root,
1909
+ {
1910
+ "data-slot": "sheet",
1911
+ ...props
1912
+ }
1913
+ );
1914
+ };
1915
+ var SheetOverlay = ({
1916
+ className,
1917
+ ...props
1918
+ }) => {
1919
+ return /* @__PURE__ */ jsx(
1920
+ Dialog$1.Overlay,
1921
+ {
1922
+ "data-slot": "sheet-overlay",
1923
+ className: merge(
1924
+ "fixed inset-0 z-50 bg-black/20 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
1925
+ className
1926
+ ),
1927
+ ...props
1928
+ }
1929
+ );
1930
+ };
1931
+ var SheetPortal = (props) => {
1932
+ return /* @__PURE__ */ jsx(
1933
+ Dialog$1.Portal,
1934
+ {
1935
+ "data-slot": "sheet-portal",
1936
+ ...props
1937
+ }
1938
+ );
1939
+ };
1940
+ var SheetContent = ({
1941
+ className,
1942
+ children,
1943
+ side = "right",
1944
+ showCloseButton = true,
1945
+ ...props
1946
+ }) => {
1947
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [
1948
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
1949
+ /* @__PURE__ */ jsxs(
1950
+ Dialog$1.Content,
1951
+ {
1952
+ "data-slot": "sheet-content",
1953
+ "data-side": side,
1954
+ className: merge(
1955
+ "fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10",
1956
+ className
1957
+ ),
1958
+ ...props,
1959
+ children: [
1960
+ children,
1961
+ showCloseButton && /* @__PURE__ */ jsx(
1962
+ Dialog$1.Close,
1963
+ {
1964
+ "data-slot": "sheet-close",
1965
+ asChild: true,
1966
+ children: /* @__PURE__ */ jsxs(
1967
+ Button,
1968
+ {
1969
+ variant: "ghost",
1970
+ className: "absolute top-4 right-4",
1971
+ size: "icon",
1972
+ children: [
1973
+ /* @__PURE__ */ jsx(XIcon, {}),
1974
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1975
+ ]
1976
+ }
1977
+ )
1978
+ }
1979
+ )
1980
+ ]
1981
+ }
1982
+ )
1983
+ ] });
1984
+ };
1985
+ var SheetDescription = ({
1986
+ className,
1987
+ ...props
1988
+ }) => {
1989
+ return /* @__PURE__ */ jsx(
1990
+ Dialog$1.Description,
1991
+ {
1992
+ "data-slot": "sheet-description",
1993
+ className: merge("text-xs/relaxed text-muted-foreground", className),
1994
+ ...props
1995
+ }
1996
+ );
1997
+ };
1998
+ var SheetHeader = ({
1999
+ className,
2000
+ ...props
2001
+ }) => {
2002
+ return /* @__PURE__ */ jsx(
2003
+ "div",
2004
+ {
2005
+ "data-slot": "sheet-header",
2006
+ className: merge("flex flex-col gap-1.5 p-6", className),
2007
+ ...props
2008
+ }
2009
+ );
2010
+ };
2011
+ var SheetTitle = ({
2012
+ className,
2013
+ ...props
2014
+ }) => {
2015
+ return /* @__PURE__ */ jsx(
2016
+ Dialog$1.Title,
2017
+ {
2018
+ "data-slot": "sheet-title",
2019
+ className: merge("text-sm font-medium text-foreground", className),
2020
+ ...props
2021
+ }
2022
+ );
2023
+ };
2024
+ var SidebarContext = createContext(null);
2025
+
2026
+ // src/ui/sidebar/useSidebar/index.tsx
2027
+ var useSidebar = () => {
2028
+ const context = useContext(SidebarContext);
2029
+ if (!context) {
2030
+ throw new Error("useSidebar must be used within a SidebarProvider.");
2031
+ }
2032
+ return context;
2033
+ };
2034
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
2035
+ var Sidebar = ({
2036
+ side = "left",
2037
+ variant = "sidebar",
2038
+ collapsible = "offcanvas",
2039
+ className,
2040
+ children,
2041
+ dir,
2042
+ ...props
2043
+ }) => {
2044
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
2045
+ if (collapsible === "none") {
2046
+ return /* @__PURE__ */ jsx(
2047
+ "div",
2048
+ {
2049
+ "data-slot": "sidebar",
2050
+ className: merge(
2051
+ "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
2052
+ className
2053
+ ),
2054
+ ...props,
2055
+ children
2056
+ }
2057
+ );
2058
+ }
2059
+ if (isMobile) {
2060
+ return /* @__PURE__ */ jsx(
2061
+ Sheet,
2062
+ {
2063
+ open: openMobile,
2064
+ onOpenChange: setOpenMobile,
2065
+ ...props,
2066
+ children: /* @__PURE__ */ jsxs(
2067
+ SheetContent,
2068
+ {
2069
+ dir,
2070
+ "data-sidebar": "sidebar",
2071
+ "data-slot": "sidebar",
2072
+ "data-mobile": "true",
2073
+ className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
2074
+ style: {
2075
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
2076
+ },
2077
+ side,
2078
+ children: [
2079
+ /* @__PURE__ */ jsxs(SheetHeader, { className: "sr-only", children: [
2080
+ /* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }),
2081
+ /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })
2082
+ ] }),
2083
+ /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
2084
+ ]
2085
+ }
2086
+ )
2087
+ }
2088
+ );
2089
+ }
2090
+ return /* @__PURE__ */ jsxs(
2091
+ "div",
2092
+ {
2093
+ className: "group peer hidden text-sidebar-foreground md:block",
2094
+ "data-state": state,
2095
+ "data-collapsible": state === "collapsed" ? collapsible : "",
2096
+ "data-variant": variant,
2097
+ "data-side": side,
2098
+ "data-slot": "sidebar",
2099
+ children: [
2100
+ /* @__PURE__ */ jsx(
2101
+ "div",
2102
+ {
2103
+ "data-slot": "sidebar-gap",
2104
+ className: merge(
2105
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
2106
+ "group-data-[collapsible=offcanvas]:w-0",
2107
+ "group-data-[side=right]:rotate-180",
2108
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
2109
+ )
2110
+ }
2111
+ ),
2112
+ /* @__PURE__ */ jsx(
2113
+ "div",
2114
+ {
2115
+ "data-slot": "sidebar-container",
2116
+ "data-side": side,
2117
+ className: merge(
2118
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
2119
+ // Adjust the padding for floating and inset variants.
2120
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
2121
+ className
2122
+ ),
2123
+ ...props,
2124
+ children: /* @__PURE__ */ jsx(
2125
+ "div",
2126
+ {
2127
+ "data-sidebar": "sidebar",
2128
+ "data-slot": "sidebar-inner",
2129
+ className: "flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",
2130
+ children
2131
+ }
2132
+ )
2133
+ }
2134
+ )
2135
+ ]
2136
+ }
2137
+ );
2138
+ };
2139
+ var Skeleton = ({
2140
+ className,
2141
+ ...props
2142
+ }) => {
2143
+ return /* @__PURE__ */ jsx(
2144
+ "div",
2145
+ {
2146
+ "data-slot": "skeleton",
2147
+ className: merge("animate-pulse rounded-md bg-gray-200/50", className),
2148
+ ...props
2149
+ }
2150
+ );
2151
+ };
2152
+ var Toaster = ({ ...props }) => {
2153
+ const { theme = "system" } = useTheme();
2154
+ return /* @__PURE__ */ jsx(
2155
+ Toaster$1,
2156
+ {
2157
+ theme,
2158
+ className: "toaster group",
2159
+ icons: {
2160
+ success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
2161
+ info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
2162
+ warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
2163
+ error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
2164
+ loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
2165
+ },
2166
+ style: {
2167
+ "--normal-bg": "var(--popover)",
2168
+ "--normal-text": "var(--popover-foreground)",
2169
+ "--normal-border": "var(--border)",
2170
+ "--border-radius": "var(--radius)"
2171
+ },
2172
+ toastOptions: {
2173
+ classNames: {
2174
+ toast: "cn-toast"
2175
+ }
2176
+ },
2177
+ ...props
2178
+ }
2179
+ );
2180
+ };
2181
+ var Switch = ({
2182
+ className,
2183
+ size = "default",
2184
+ ...props
2185
+ }) => {
2186
+ return /* @__PURE__ */ jsx(
2187
+ Switch$1.Root,
2188
+ {
2189
+ "data-slot": "switch",
2190
+ "data-size": size,
2191
+ className: merge(
2192
+ "cursor-pointer peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=default]:h-[16.6px] data-[size=default]:w-7 data-[size=sm]:h-3.5 data-[size=sm]:w-6 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",
2193
+ className
2194
+ ),
2195
+ ...props,
2196
+ children: /* @__PURE__ */ jsx(
2197
+ Switch$1.Thumb,
2198
+ {
2199
+ "data-slot": "switch-thumb",
2200
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"
2201
+ }
2202
+ )
2203
+ }
2204
+ );
2205
+ };
2206
+ var Table = ({
2207
+ className,
2208
+ ...props
2209
+ }) => {
2210
+ return /* @__PURE__ */ jsx(
2211
+ "div",
2212
+ {
2213
+ "data-slot": "table-container",
2214
+ className: "relative w-full overflow-x-auto",
2215
+ children: /* @__PURE__ */ jsx(
2216
+ "table",
2217
+ {
2218
+ "data-slot": "table",
2219
+ className: merge("w-full caption-bottom text-xs", className),
2220
+ ...props
2221
+ }
2222
+ )
2223
+ }
2224
+ );
2225
+ };
2226
+ var Tabs = ({
2227
+ className,
2228
+ orientation = "horizontal",
2229
+ ...props
2230
+ }) => {
2231
+ return /* @__PURE__ */ jsx(
2232
+ Tabs$1.Root,
2233
+ {
2234
+ "data-slot": "tabs",
2235
+ "data-orientation": orientation,
2236
+ className: merge("group/tabs flex gap-3 data-horizontal:flex-col", className),
2237
+ ...props
2238
+ }
2239
+ );
2240
+ };
2241
+ var toggleVariants = cva(
2242
+ "group/toggle inline-flex items-center justify-center gap-1 rounded-md text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
2243
+ {
2244
+ variants: {
2245
+ variant: {
2246
+ default: "bg-transparent",
2247
+ outline: "border border-input bg-transparent hover:bg-muted"
2248
+ },
2249
+ size: {
2250
+ default: "h-7 min-w-7 px-2",
2251
+ sm: "h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-1.5 text-[0.625rem] [&_svg:not([class*='size-'])]:size-3",
2252
+ lg: "h-8 min-w-8 px-2"
2253
+ }
2254
+ },
2255
+ defaultVariants: {
2256
+ variant: "default",
2257
+ size: "default"
2258
+ }
2259
+ }
2260
+ );
2261
+ var Toggle = ({
2262
+ className,
2263
+ variant = "default",
2264
+ size = "default",
2265
+ ...props
2266
+ }) => {
2267
+ return /* @__PURE__ */ jsx(
2268
+ Toggle$1.Root,
2269
+ {
2270
+ "data-slot": "toggle",
2271
+ className: merge(toggleVariants({ variant, size, className })),
2272
+ ...props
2273
+ }
2274
+ );
2275
+ };
2276
+ var ToggleGroupContext = createContext({
2277
+ size: "default",
2278
+ variant: "default",
2279
+ spacing: 0,
2280
+ orientation: "horizontal"
2281
+ });
2282
+ var ToggleGroup = ({
2283
+ className,
2284
+ variant,
2285
+ size,
2286
+ spacing = 0,
2287
+ orientation = "horizontal",
2288
+ children,
2289
+ ...props
2290
+ }) => {
2291
+ return /* @__PURE__ */ jsx(
2292
+ ToggleGroup$1.Root,
2293
+ {
2294
+ "data-slot": "toggle-group",
2295
+ "data-variant": variant,
2296
+ "data-size": size,
2297
+ "data-spacing": spacing,
2298
+ "data-orientation": orientation,
2299
+ style: { "--gap": spacing },
2300
+ className: merge(
2301
+ "group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)] data-vertical:flex-col data-vertical:items-stretch",
2302
+ className
2303
+ ),
2304
+ ...props,
2305
+ children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children })
2306
+ }
2307
+ );
2308
+ };
2309
+
2310
+ export { Accordion, ActionsMenu, AlertDialog, Avatar, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Checkbox, Collapsible, Combobox, Command, ConfirmDialog, ContextMenu, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, Glow, HoverCard, Image, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, Item, Label, Menubar, Modal, Pagination, Popover, Progress, RadioGroup, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, Sidebar, Skeleton, Spinner, Steps, Switch, Table, Tabs, Textarea, Toaster, Toggle, ToggleGroup, Tooltip, TruncatedText, WaveLayer };