@aumnidigital/bms 0.1.0

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.
@@ -0,0 +1,2068 @@
1
+ import { Slot } from '@radix-ui/react-slot';
2
+ import { cva } from 'class-variance-authority';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
7
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
8
+ import { ChevronDownIcon, ChevronRight, MoreHorizontal, CheckIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, XIcon } from 'lucide-react';
9
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
10
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
11
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
12
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
13
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
14
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
15
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
16
+ import * as LabelPrimitive from '@radix-ui/react-label';
17
+ import * as React3 from 'react';
18
+ import { getDefaultClassNames, DayPicker } from 'react-day-picker';
19
+ import * as SelectPrimitive from '@radix-ui/react-select';
20
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
21
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
22
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
23
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
24
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
25
+ import * as SliderPrimitive from '@radix-ui/react-slider';
26
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
27
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
28
+ import { FormProvider, Controller, useFormContext, useFormState } from 'react-hook-form';
29
+
30
+ function cn(...inputs) {
31
+ return twMerge(clsx(inputs));
32
+ }
33
+ var buttonVariants = cva(
34
+ "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:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
35
+ {
36
+ variants: {
37
+ variant: {
38
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
39
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
40
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
41
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
42
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
43
+ link: "text-primary underline-offset-4 hover:underline"
44
+ },
45
+ size: {
46
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
47
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
48
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
49
+ icon: "size-9",
50
+ "icon-sm": "size-8",
51
+ "icon-lg": "size-10"
52
+ }
53
+ },
54
+ defaultVariants: {
55
+ variant: "default",
56
+ size: "default"
57
+ }
58
+ }
59
+ );
60
+ function Button({
61
+ className,
62
+ variant = "default",
63
+ size = "default",
64
+ asChild = false,
65
+ ...props
66
+ }) {
67
+ const Comp = asChild ? Slot : "button";
68
+ return /* @__PURE__ */ jsx(
69
+ Comp,
70
+ {
71
+ "data-slot": "button",
72
+ "data-variant": variant,
73
+ "data-size": size,
74
+ className: cn(buttonVariants({ variant, size, className })),
75
+ ...props
76
+ }
77
+ );
78
+ }
79
+ function Card({ className, ...props }) {
80
+ return /* @__PURE__ */ jsx(
81
+ "div",
82
+ {
83
+ "data-slot": "card",
84
+ className: cn(
85
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
86
+ className
87
+ ),
88
+ ...props
89
+ }
90
+ );
91
+ }
92
+ function CardHeader({ className, ...props }) {
93
+ return /* @__PURE__ */ jsx(
94
+ "div",
95
+ {
96
+ "data-slot": "card-header",
97
+ className: cn(
98
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
99
+ className
100
+ ),
101
+ ...props
102
+ }
103
+ );
104
+ }
105
+ function CardTitle({ className, ...props }) {
106
+ return /* @__PURE__ */ jsx(
107
+ "div",
108
+ {
109
+ "data-slot": "card-title",
110
+ className: cn("leading-none font-semibold", className),
111
+ ...props
112
+ }
113
+ );
114
+ }
115
+ function CardDescription({ className, ...props }) {
116
+ return /* @__PURE__ */ jsx(
117
+ "div",
118
+ {
119
+ "data-slot": "card-description",
120
+ className: cn("text-muted-foreground text-sm", className),
121
+ ...props
122
+ }
123
+ );
124
+ }
125
+ function CardContent({ className, ...props }) {
126
+ return /* @__PURE__ */ jsx(
127
+ "div",
128
+ {
129
+ "data-slot": "card-content",
130
+ className: cn("px-6", className),
131
+ ...props
132
+ }
133
+ );
134
+ }
135
+ function CardFooter({ className, ...props }) {
136
+ return /* @__PURE__ */ jsx(
137
+ "div",
138
+ {
139
+ "data-slot": "card-footer",
140
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
141
+ ...props
142
+ }
143
+ );
144
+ }
145
+ var alertVariants = cva(
146
+ "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
147
+ {
148
+ variants: {
149
+ variant: {
150
+ default: "bg-card text-card-foreground",
151
+ destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
152
+ }
153
+ },
154
+ defaultVariants: {
155
+ variant: "default"
156
+ }
157
+ }
158
+ );
159
+ function Alert({
160
+ className,
161
+ variant,
162
+ ...props
163
+ }) {
164
+ return /* @__PURE__ */ jsx(
165
+ "div",
166
+ {
167
+ "data-slot": "alert",
168
+ role: "alert",
169
+ className: cn(alertVariants({ variant }), className),
170
+ ...props
171
+ }
172
+ );
173
+ }
174
+ function AlertTitle({ className, ...props }) {
175
+ return /* @__PURE__ */ jsx(
176
+ "div",
177
+ {
178
+ "data-slot": "alert-title",
179
+ className: cn(
180
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
181
+ className
182
+ ),
183
+ ...props
184
+ }
185
+ );
186
+ }
187
+ function AlertDescription({
188
+ className,
189
+ ...props
190
+ }) {
191
+ return /* @__PURE__ */ jsx(
192
+ "div",
193
+ {
194
+ "data-slot": "alert-description",
195
+ className: cn(
196
+ "text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
197
+ className
198
+ ),
199
+ ...props
200
+ }
201
+ );
202
+ }
203
+ function AlertDialog({
204
+ ...props
205
+ }) {
206
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
207
+ }
208
+ function AlertDialogTrigger({
209
+ ...props
210
+ }) {
211
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
212
+ }
213
+ function AlertDialogPortal({
214
+ ...props
215
+ }) {
216
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
217
+ }
218
+ function AlertDialogOverlay({
219
+ className,
220
+ ...props
221
+ }) {
222
+ return /* @__PURE__ */ jsx(
223
+ AlertDialogPrimitive.Overlay,
224
+ {
225
+ "data-slot": "alert-dialog-overlay",
226
+ className: cn(
227
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
228
+ className
229
+ ),
230
+ ...props
231
+ }
232
+ );
233
+ }
234
+ function AlertDialogContent({
235
+ className,
236
+ ...props
237
+ }) {
238
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
239
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
240
+ /* @__PURE__ */ jsx(
241
+ AlertDialogPrimitive.Content,
242
+ {
243
+ "data-slot": "alert-dialog-content",
244
+ className: cn(
245
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
246
+ className
247
+ ),
248
+ ...props
249
+ }
250
+ )
251
+ ] });
252
+ }
253
+ function AlertDialogHeader({
254
+ className,
255
+ ...props
256
+ }) {
257
+ return /* @__PURE__ */ jsx(
258
+ "div",
259
+ {
260
+ "data-slot": "alert-dialog-header",
261
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
262
+ ...props
263
+ }
264
+ );
265
+ }
266
+ function AlertDialogFooter({
267
+ className,
268
+ ...props
269
+ }) {
270
+ return /* @__PURE__ */ jsx(
271
+ "div",
272
+ {
273
+ "data-slot": "alert-dialog-footer",
274
+ className: cn(
275
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
276
+ className
277
+ ),
278
+ ...props
279
+ }
280
+ );
281
+ }
282
+ function AlertDialogTitle({
283
+ className,
284
+ ...props
285
+ }) {
286
+ return /* @__PURE__ */ jsx(
287
+ AlertDialogPrimitive.Title,
288
+ {
289
+ "data-slot": "alert-dialog-title",
290
+ className: cn("text-lg font-semibold", className),
291
+ ...props
292
+ }
293
+ );
294
+ }
295
+ function AlertDialogDescription({
296
+ className,
297
+ ...props
298
+ }) {
299
+ return /* @__PURE__ */ jsx(
300
+ AlertDialogPrimitive.Description,
301
+ {
302
+ "data-slot": "alert-dialog-description",
303
+ className: cn("text-muted-foreground text-sm", className),
304
+ ...props
305
+ }
306
+ );
307
+ }
308
+ function AlertDialogAction({
309
+ className,
310
+ ...props
311
+ }) {
312
+ return /* @__PURE__ */ jsx(
313
+ AlertDialogPrimitive.Action,
314
+ {
315
+ className: cn(buttonVariants(), className),
316
+ ...props
317
+ }
318
+ );
319
+ }
320
+ function AlertDialogCancel({
321
+ className,
322
+ ...props
323
+ }) {
324
+ return /* @__PURE__ */ jsx(
325
+ AlertDialogPrimitive.Cancel,
326
+ {
327
+ className: cn(buttonVariants({ variant: "outline" }), className),
328
+ ...props
329
+ }
330
+ );
331
+ }
332
+ var badgeVariants = cva(
333
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
334
+ {
335
+ variants: {
336
+ variant: {
337
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
338
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
339
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
340
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
341
+ }
342
+ },
343
+ defaultVariants: {
344
+ variant: "default"
345
+ }
346
+ }
347
+ );
348
+ function Badge({
349
+ className,
350
+ variant,
351
+ asChild = false,
352
+ ...props
353
+ }) {
354
+ const Comp = asChild ? Slot : "span";
355
+ return /* @__PURE__ */ jsx(
356
+ Comp,
357
+ {
358
+ "data-slot": "badge",
359
+ className: cn(badgeVariants({ variant }), className),
360
+ ...props
361
+ }
362
+ );
363
+ }
364
+ function Accordion({
365
+ ...props
366
+ }) {
367
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
368
+ }
369
+ function AccordionItem({
370
+ className,
371
+ ...props
372
+ }) {
373
+ return /* @__PURE__ */ jsx(
374
+ AccordionPrimitive.Item,
375
+ {
376
+ "data-slot": "accordion-item",
377
+ className: cn("border-b last:border-b-0", className),
378
+ ...props
379
+ }
380
+ );
381
+ }
382
+ function AccordionTrigger({
383
+ className,
384
+ children,
385
+ ...props
386
+ }) {
387
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
388
+ AccordionPrimitive.Trigger,
389
+ {
390
+ "data-slot": "accordion-trigger",
391
+ className: cn(
392
+ "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
393
+ className
394
+ ),
395
+ ...props,
396
+ children: [
397
+ children,
398
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
399
+ ]
400
+ }
401
+ ) });
402
+ }
403
+ function AccordionContent({
404
+ className,
405
+ children,
406
+ ...props
407
+ }) {
408
+ return /* @__PURE__ */ jsx(
409
+ AccordionPrimitive.Content,
410
+ {
411
+ "data-slot": "accordion-content",
412
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
413
+ ...props,
414
+ children: /* @__PURE__ */ jsx("div", { className: cn("pt-0 pb-4", className), children })
415
+ }
416
+ );
417
+ }
418
+ function Tabs({
419
+ className,
420
+ ...props
421
+ }) {
422
+ return /* @__PURE__ */ jsx(
423
+ TabsPrimitive.Root,
424
+ {
425
+ "data-slot": "tabs",
426
+ className: cn("flex flex-col gap-2", className),
427
+ ...props
428
+ }
429
+ );
430
+ }
431
+ function TabsList({
432
+ className,
433
+ ...props
434
+ }) {
435
+ return /* @__PURE__ */ jsx(
436
+ TabsPrimitive.List,
437
+ {
438
+ "data-slot": "tabs-list",
439
+ className: cn(
440
+ "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
441
+ className
442
+ ),
443
+ ...props
444
+ }
445
+ );
446
+ }
447
+ function TabsTrigger({
448
+ className,
449
+ ...props
450
+ }) {
451
+ return /* @__PURE__ */ jsx(
452
+ TabsPrimitive.Trigger,
453
+ {
454
+ "data-slot": "tabs-trigger",
455
+ className: cn(
456
+ "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
457
+ className
458
+ ),
459
+ ...props
460
+ }
461
+ );
462
+ }
463
+ function TabsContent({
464
+ className,
465
+ ...props
466
+ }) {
467
+ return /* @__PURE__ */ jsx(
468
+ TabsPrimitive.Content,
469
+ {
470
+ "data-slot": "tabs-content",
471
+ className: cn("flex-1 outline-none", className),
472
+ ...props
473
+ }
474
+ );
475
+ }
476
+ function Separator({
477
+ className,
478
+ orientation = "horizontal",
479
+ decorative = true,
480
+ ...props
481
+ }) {
482
+ return /* @__PURE__ */ jsx(
483
+ SeparatorPrimitive.Root,
484
+ {
485
+ "data-slot": "separator",
486
+ decorative,
487
+ orientation,
488
+ className: cn(
489
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
490
+ className
491
+ ),
492
+ ...props
493
+ }
494
+ );
495
+ }
496
+ function Avatar({
497
+ className,
498
+ ...props
499
+ }) {
500
+ return /* @__PURE__ */ jsx(
501
+ AvatarPrimitive.Root,
502
+ {
503
+ "data-slot": "avatar",
504
+ className: cn(
505
+ "relative flex size-8 shrink-0 overflow-hidden rounded-full",
506
+ className
507
+ ),
508
+ ...props
509
+ }
510
+ );
511
+ }
512
+ function AvatarImage({
513
+ className,
514
+ ...props
515
+ }) {
516
+ return /* @__PURE__ */ jsx(
517
+ AvatarPrimitive.Image,
518
+ {
519
+ "data-slot": "avatar-image",
520
+ className: cn("aspect-square size-full", className),
521
+ ...props
522
+ }
523
+ );
524
+ }
525
+ function AvatarFallback({
526
+ className,
527
+ ...props
528
+ }) {
529
+ return /* @__PURE__ */ jsx(
530
+ AvatarPrimitive.Fallback,
531
+ {
532
+ "data-slot": "avatar-fallback",
533
+ className: cn(
534
+ "bg-muted flex size-full items-center justify-center rounded-full",
535
+ className
536
+ ),
537
+ ...props
538
+ }
539
+ );
540
+ }
541
+ function Breadcrumb({ ...props }) {
542
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
543
+ }
544
+ function BreadcrumbList({ className, ...props }) {
545
+ return /* @__PURE__ */ jsx(
546
+ "ol",
547
+ {
548
+ "data-slot": "breadcrumb-list",
549
+ className: cn(
550
+ "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
551
+ className
552
+ ),
553
+ ...props
554
+ }
555
+ );
556
+ }
557
+ function BreadcrumbItem({ className, ...props }) {
558
+ return /* @__PURE__ */ jsx(
559
+ "li",
560
+ {
561
+ "data-slot": "breadcrumb-item",
562
+ className: cn("inline-flex items-center gap-1.5", className),
563
+ ...props
564
+ }
565
+ );
566
+ }
567
+ function BreadcrumbLink({
568
+ asChild,
569
+ className,
570
+ ...props
571
+ }) {
572
+ const Comp = asChild ? Slot : "a";
573
+ return /* @__PURE__ */ jsx(
574
+ Comp,
575
+ {
576
+ "data-slot": "breadcrumb-link",
577
+ className: cn("hover:text-foreground transition-colors", className),
578
+ ...props
579
+ }
580
+ );
581
+ }
582
+ function BreadcrumbPage({ className, ...props }) {
583
+ return /* @__PURE__ */ jsx(
584
+ "span",
585
+ {
586
+ "data-slot": "breadcrumb-page",
587
+ role: "link",
588
+ "aria-disabled": "true",
589
+ "aria-current": "page",
590
+ className: cn("text-foreground font-normal", className),
591
+ ...props
592
+ }
593
+ );
594
+ }
595
+ function BreadcrumbSeparator({
596
+ children,
597
+ className,
598
+ ...props
599
+ }) {
600
+ return /* @__PURE__ */ jsx(
601
+ "li",
602
+ {
603
+ "data-slot": "breadcrumb-separator",
604
+ role: "presentation",
605
+ "aria-hidden": "true",
606
+ className: cn("[&>svg]:size-3.5", className),
607
+ ...props,
608
+ children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
609
+ }
610
+ );
611
+ }
612
+ function BreadcrumbEllipsis({
613
+ className,
614
+ ...props
615
+ }) {
616
+ return /* @__PURE__ */ jsxs(
617
+ "span",
618
+ {
619
+ "data-slot": "breadcrumb-ellipsis",
620
+ role: "presentation",
621
+ "aria-hidden": "true",
622
+ className: cn("flex size-9 items-center justify-center", className),
623
+ ...props,
624
+ children: [
625
+ /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }),
626
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
627
+ ]
628
+ }
629
+ );
630
+ }
631
+ function Checkbox({
632
+ className,
633
+ ...props
634
+ }) {
635
+ return /* @__PURE__ */ jsx(
636
+ CheckboxPrimitive.Root,
637
+ {
638
+ "data-slot": "checkbox",
639
+ className: cn(
640
+ "peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
641
+ className
642
+ ),
643
+ ...props,
644
+ children: /* @__PURE__ */ jsx(
645
+ CheckboxPrimitive.Indicator,
646
+ {
647
+ "data-slot": "checkbox-indicator",
648
+ className: "grid place-content-center text-current transition-none",
649
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
650
+ }
651
+ )
652
+ }
653
+ );
654
+ }
655
+ function Progress({
656
+ className,
657
+ value,
658
+ ...props
659
+ }) {
660
+ return /* @__PURE__ */ jsx(
661
+ ProgressPrimitive.Root,
662
+ {
663
+ "data-slot": "progress",
664
+ className: cn(
665
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
666
+ className
667
+ ),
668
+ ...props,
669
+ children: /* @__PURE__ */ jsx(
670
+ ProgressPrimitive.Indicator,
671
+ {
672
+ "data-slot": "progress-indicator",
673
+ className: "bg-primary h-full w-full flex-1 transition-all",
674
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
675
+ }
676
+ )
677
+ }
678
+ );
679
+ }
680
+ function Skeleton({ className, ...props }) {
681
+ return /* @__PURE__ */ jsx(
682
+ "div",
683
+ {
684
+ "data-slot": "skeleton",
685
+ className: cn("bg-accent animate-pulse rounded-md", className),
686
+ ...props
687
+ }
688
+ );
689
+ }
690
+ function Table({ className, ...props }) {
691
+ return /* @__PURE__ */ jsx(
692
+ "div",
693
+ {
694
+ "data-slot": "table-container",
695
+ className: "relative w-full overflow-x-auto",
696
+ children: /* @__PURE__ */ jsx(
697
+ "table",
698
+ {
699
+ "data-slot": "table",
700
+ className: cn("w-full caption-bottom text-sm", className),
701
+ ...props
702
+ }
703
+ )
704
+ }
705
+ );
706
+ }
707
+ function TableHeader({ className, ...props }) {
708
+ return /* @__PURE__ */ jsx(
709
+ "thead",
710
+ {
711
+ "data-slot": "table-header",
712
+ className: cn("[&_tr]:border-b", className),
713
+ ...props
714
+ }
715
+ );
716
+ }
717
+ function TableBody({ className, ...props }) {
718
+ return /* @__PURE__ */ jsx(
719
+ "tbody",
720
+ {
721
+ "data-slot": "table-body",
722
+ className: cn("[&_tr:last-child]:border-0", className),
723
+ ...props
724
+ }
725
+ );
726
+ }
727
+ function TableFooter({ className, ...props }) {
728
+ return /* @__PURE__ */ jsx(
729
+ "tfoot",
730
+ {
731
+ "data-slot": "table-footer",
732
+ className: cn(
733
+ "bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",
734
+ className
735
+ ),
736
+ ...props
737
+ }
738
+ );
739
+ }
740
+ function TableRow({ className, ...props }) {
741
+ return /* @__PURE__ */ jsx(
742
+ "tr",
743
+ {
744
+ "data-slot": "table-row",
745
+ className: cn(
746
+ "hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
747
+ className
748
+ ),
749
+ ...props
750
+ }
751
+ );
752
+ }
753
+ function TableHead({ className, ...props }) {
754
+ return /* @__PURE__ */ jsx(
755
+ "th",
756
+ {
757
+ "data-slot": "table-head",
758
+ className: cn(
759
+ "text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
760
+ className
761
+ ),
762
+ ...props
763
+ }
764
+ );
765
+ }
766
+ function TableCell({ className, ...props }) {
767
+ return /* @__PURE__ */ jsx(
768
+ "td",
769
+ {
770
+ "data-slot": "table-cell",
771
+ className: cn(
772
+ "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
773
+ className
774
+ ),
775
+ ...props
776
+ }
777
+ );
778
+ }
779
+ function TableCaption({
780
+ className,
781
+ ...props
782
+ }) {
783
+ return /* @__PURE__ */ jsx(
784
+ "caption",
785
+ {
786
+ "data-slot": "table-caption",
787
+ className: cn("text-muted-foreground mt-4 text-sm", className),
788
+ ...props
789
+ }
790
+ );
791
+ }
792
+ function TooltipProvider({
793
+ delayDuration = 0,
794
+ ...props
795
+ }) {
796
+ return /* @__PURE__ */ jsx(
797
+ TooltipPrimitive.Provider,
798
+ {
799
+ "data-slot": "tooltip-provider",
800
+ delayDuration,
801
+ ...props
802
+ }
803
+ );
804
+ }
805
+ function Tooltip({
806
+ ...props
807
+ }) {
808
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
809
+ }
810
+ function TooltipTrigger({
811
+ ...props
812
+ }) {
813
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
814
+ }
815
+ function TooltipContent({
816
+ className,
817
+ sideOffset = 0,
818
+ children,
819
+ ...props
820
+ }) {
821
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
822
+ TooltipPrimitive.Content,
823
+ {
824
+ "data-slot": "tooltip-content",
825
+ sideOffset,
826
+ className: cn(
827
+ "bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
828
+ className
829
+ ),
830
+ ...props,
831
+ children: [
832
+ children,
833
+ /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
834
+ ]
835
+ }
836
+ ) });
837
+ }
838
+ function AspectRatio({
839
+ ...props
840
+ }) {
841
+ return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
842
+ }
843
+ function Input({ className, type, ...props }) {
844
+ return /* @__PURE__ */ jsx(
845
+ "input",
846
+ {
847
+ type,
848
+ "data-slot": "input",
849
+ className: cn(
850
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
851
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
852
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
853
+ className
854
+ ),
855
+ ...props
856
+ }
857
+ );
858
+ }
859
+ function Label({
860
+ className,
861
+ ...props
862
+ }) {
863
+ return /* @__PURE__ */ jsx(
864
+ LabelPrimitive.Root,
865
+ {
866
+ "data-slot": "label",
867
+ className: cn(
868
+ "flex items-center gap-2 text-sm 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",
869
+ className
870
+ ),
871
+ ...props
872
+ }
873
+ );
874
+ }
875
+ function Textarea({ className, ...props }) {
876
+ return /* @__PURE__ */ jsx(
877
+ "textarea",
878
+ {
879
+ "data-slot": "textarea",
880
+ className: cn(
881
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
882
+ className
883
+ ),
884
+ ...props
885
+ }
886
+ );
887
+ }
888
+ function Calendar({
889
+ className,
890
+ classNames,
891
+ showOutsideDays = true,
892
+ captionLayout = "label",
893
+ buttonVariant = "ghost",
894
+ formatters,
895
+ components,
896
+ ...props
897
+ }) {
898
+ const defaultClassNames = getDefaultClassNames();
899
+ return /* @__PURE__ */ jsx(
900
+ DayPicker,
901
+ {
902
+ showOutsideDays,
903
+ className: cn(
904
+ "bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
905
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
906
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
907
+ className
908
+ ),
909
+ captionLayout,
910
+ formatters: {
911
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
912
+ ...formatters
913
+ },
914
+ classNames: {
915
+ root: cn("w-fit", defaultClassNames.root),
916
+ months: cn(
917
+ "flex gap-4 flex-col md:flex-row relative",
918
+ defaultClassNames.months
919
+ ),
920
+ month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
921
+ nav: cn(
922
+ "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
923
+ defaultClassNames.nav
924
+ ),
925
+ button_previous: cn(
926
+ buttonVariants({ variant: buttonVariant }),
927
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
928
+ defaultClassNames.button_previous
929
+ ),
930
+ button_next: cn(
931
+ buttonVariants({ variant: buttonVariant }),
932
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
933
+ defaultClassNames.button_next
934
+ ),
935
+ month_caption: cn(
936
+ "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",
937
+ defaultClassNames.month_caption
938
+ ),
939
+ dropdowns: cn(
940
+ "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",
941
+ defaultClassNames.dropdowns
942
+ ),
943
+ dropdown_root: cn(
944
+ "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
945
+ defaultClassNames.dropdown_root
946
+ ),
947
+ dropdown: cn(
948
+ "absolute bg-popover inset-0 opacity-0",
949
+ defaultClassNames.dropdown
950
+ ),
951
+ caption_label: cn(
952
+ "select-none font-medium",
953
+ captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5",
954
+ defaultClassNames.caption_label
955
+ ),
956
+ table: "w-full border-collapse",
957
+ weekdays: cn("flex", defaultClassNames.weekdays),
958
+ weekday: cn(
959
+ "text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",
960
+ defaultClassNames.weekday
961
+ ),
962
+ week: cn("flex w-full mt-2", defaultClassNames.week),
963
+ week_number_header: cn(
964
+ "select-none w-(--cell-size)",
965
+ defaultClassNames.week_number_header
966
+ ),
967
+ week_number: cn(
968
+ "text-[0.8rem] select-none text-muted-foreground",
969
+ defaultClassNames.week_number
970
+ ),
971
+ day: cn(
972
+ "relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
973
+ props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md",
974
+ defaultClassNames.day
975
+ ),
976
+ range_start: cn(
977
+ "rounded-l-md bg-accent",
978
+ defaultClassNames.range_start
979
+ ),
980
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
981
+ range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
982
+ today: cn(
983
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
984
+ defaultClassNames.today
985
+ ),
986
+ outside: cn(
987
+ "text-muted-foreground aria-selected:text-muted-foreground",
988
+ defaultClassNames.outside
989
+ ),
990
+ disabled: cn(
991
+ "text-muted-foreground opacity-50",
992
+ defaultClassNames.disabled
993
+ ),
994
+ hidden: cn("invisible", defaultClassNames.hidden),
995
+ ...classNames
996
+ },
997
+ components: {
998
+ Root: ({ className: className2, rootRef, ...props2 }) => {
999
+ return /* @__PURE__ */ jsx(
1000
+ "div",
1001
+ {
1002
+ "data-slot": "calendar",
1003
+ ref: rootRef,
1004
+ className: cn(className2),
1005
+ ...props2
1006
+ }
1007
+ );
1008
+ },
1009
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
1010
+ if (orientation === "left") {
1011
+ return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
1012
+ }
1013
+ if (orientation === "right") {
1014
+ return /* @__PURE__ */ jsx(
1015
+ ChevronRightIcon,
1016
+ {
1017
+ className: cn("size-4", className2),
1018
+ ...props2
1019
+ }
1020
+ );
1021
+ }
1022
+ return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
1023
+ },
1024
+ DayButton: CalendarDayButton,
1025
+ WeekNumber: ({ children, ...props2 }) => {
1026
+ return /* @__PURE__ */ jsx("td", { ...props2, children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
1027
+ },
1028
+ ...components
1029
+ },
1030
+ ...props
1031
+ }
1032
+ );
1033
+ }
1034
+ function CalendarDayButton({
1035
+ className,
1036
+ day,
1037
+ modifiers,
1038
+ ...props
1039
+ }) {
1040
+ const defaultClassNames = getDefaultClassNames();
1041
+ const ref = React3.useRef(null);
1042
+ React3.useEffect(() => {
1043
+ if (modifiers.focused) ref.current?.focus();
1044
+ }, [modifiers.focused]);
1045
+ return /* @__PURE__ */ jsx(
1046
+ Button,
1047
+ {
1048
+ ref,
1049
+ variant: "ghost",
1050
+ size: "icon",
1051
+ "data-day": day.date.toLocaleDateString(),
1052
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
1053
+ "data-range-start": modifiers.range_start,
1054
+ "data-range-end": modifiers.range_end,
1055
+ "data-range-middle": modifiers.range_middle,
1056
+ className: cn(
1057
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70",
1058
+ defaultClassNames.day,
1059
+ className
1060
+ ),
1061
+ ...props
1062
+ }
1063
+ );
1064
+ }
1065
+ function Select({
1066
+ ...props
1067
+ }) {
1068
+ return /* @__PURE__ */ jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
1069
+ }
1070
+ function SelectGroup({
1071
+ ...props
1072
+ }) {
1073
+ return /* @__PURE__ */ jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
1074
+ }
1075
+ function SelectValue({
1076
+ ...props
1077
+ }) {
1078
+ return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
1079
+ }
1080
+ function SelectTrigger({
1081
+ className,
1082
+ size = "default",
1083
+ children,
1084
+ ...props
1085
+ }) {
1086
+ return /* @__PURE__ */ jsxs(
1087
+ SelectPrimitive.Trigger,
1088
+ {
1089
+ "data-slot": "select-trigger",
1090
+ "data-size": size,
1091
+ className: cn(
1092
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1093
+ className
1094
+ ),
1095
+ ...props,
1096
+ children: [
1097
+ children,
1098
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
1099
+ ]
1100
+ }
1101
+ );
1102
+ }
1103
+ function SelectContent({
1104
+ className,
1105
+ children,
1106
+ position = "item-aligned",
1107
+ align = "center",
1108
+ ...props
1109
+ }) {
1110
+ return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
1111
+ SelectPrimitive.Content,
1112
+ {
1113
+ "data-slot": "select-content",
1114
+ className: cn(
1115
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
1116
+ 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",
1117
+ className
1118
+ ),
1119
+ position,
1120
+ align,
1121
+ ...props,
1122
+ children: [
1123
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1124
+ /* @__PURE__ */ jsx(
1125
+ SelectPrimitive.Viewport,
1126
+ {
1127
+ className: cn(
1128
+ "p-1",
1129
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
1130
+ ),
1131
+ children
1132
+ }
1133
+ ),
1134
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1135
+ ]
1136
+ }
1137
+ ) });
1138
+ }
1139
+ function SelectLabel({
1140
+ className,
1141
+ ...props
1142
+ }) {
1143
+ return /* @__PURE__ */ jsx(
1144
+ SelectPrimitive.Label,
1145
+ {
1146
+ "data-slot": "select-label",
1147
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
1148
+ ...props
1149
+ }
1150
+ );
1151
+ }
1152
+ function SelectItem({
1153
+ className,
1154
+ children,
1155
+ ...props
1156
+ }) {
1157
+ return /* @__PURE__ */ jsxs(
1158
+ SelectPrimitive.Item,
1159
+ {
1160
+ "data-slot": "select-item",
1161
+ className: cn(
1162
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1163
+ className
1164
+ ),
1165
+ ...props,
1166
+ children: [
1167
+ /* @__PURE__ */ jsx(
1168
+ "span",
1169
+ {
1170
+ "data-slot": "select-item-indicator",
1171
+ className: "absolute right-2 flex size-3.5 items-center justify-center",
1172
+ children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
1173
+ }
1174
+ ),
1175
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
1176
+ ]
1177
+ }
1178
+ );
1179
+ }
1180
+ function SelectSeparator({
1181
+ className,
1182
+ ...props
1183
+ }) {
1184
+ return /* @__PURE__ */ jsx(
1185
+ SelectPrimitive.Separator,
1186
+ {
1187
+ "data-slot": "select-separator",
1188
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
1189
+ ...props
1190
+ }
1191
+ );
1192
+ }
1193
+ function SelectScrollUpButton({
1194
+ className,
1195
+ ...props
1196
+ }) {
1197
+ return /* @__PURE__ */ jsx(
1198
+ SelectPrimitive.ScrollUpButton,
1199
+ {
1200
+ "data-slot": "select-scroll-up-button",
1201
+ className: cn(
1202
+ "flex cursor-default items-center justify-center py-1",
1203
+ className
1204
+ ),
1205
+ ...props,
1206
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
1207
+ }
1208
+ );
1209
+ }
1210
+ function SelectScrollDownButton({
1211
+ className,
1212
+ ...props
1213
+ }) {
1214
+ return /* @__PURE__ */ jsx(
1215
+ SelectPrimitive.ScrollDownButton,
1216
+ {
1217
+ "data-slot": "select-scroll-down-button",
1218
+ className: cn(
1219
+ "flex cursor-default items-center justify-center py-1",
1220
+ className
1221
+ ),
1222
+ ...props,
1223
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
1224
+ }
1225
+ );
1226
+ }
1227
+ function DropdownMenu({
1228
+ ...props
1229
+ }) {
1230
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
1231
+ }
1232
+ function DropdownMenuPortal({
1233
+ ...props
1234
+ }) {
1235
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
1236
+ }
1237
+ function DropdownMenuTrigger({
1238
+ ...props
1239
+ }) {
1240
+ return /* @__PURE__ */ jsx(
1241
+ DropdownMenuPrimitive.Trigger,
1242
+ {
1243
+ "data-slot": "dropdown-menu-trigger",
1244
+ ...props
1245
+ }
1246
+ );
1247
+ }
1248
+ function DropdownMenuContent({
1249
+ className,
1250
+ sideOffset = 4,
1251
+ ...props
1252
+ }) {
1253
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1254
+ DropdownMenuPrimitive.Content,
1255
+ {
1256
+ "data-slot": "dropdown-menu-content",
1257
+ sideOffset,
1258
+ className: cn(
1259
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
1260
+ className
1261
+ ),
1262
+ ...props
1263
+ }
1264
+ ) });
1265
+ }
1266
+ function DropdownMenuGroup({
1267
+ ...props
1268
+ }) {
1269
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
1270
+ }
1271
+ function DropdownMenuItem({
1272
+ className,
1273
+ inset,
1274
+ variant = "default",
1275
+ ...props
1276
+ }) {
1277
+ return /* @__PURE__ */ jsx(
1278
+ DropdownMenuPrimitive.Item,
1279
+ {
1280
+ "data-slot": "dropdown-menu-item",
1281
+ "data-inset": inset,
1282
+ "data-variant": variant,
1283
+ className: cn(
1284
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1285
+ className
1286
+ ),
1287
+ ...props
1288
+ }
1289
+ );
1290
+ }
1291
+ function DropdownMenuCheckboxItem({
1292
+ className,
1293
+ children,
1294
+ checked,
1295
+ ...props
1296
+ }) {
1297
+ return /* @__PURE__ */ jsxs(
1298
+ DropdownMenuPrimitive.CheckboxItem,
1299
+ {
1300
+ "data-slot": "dropdown-menu-checkbox-item",
1301
+ className: cn(
1302
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1303
+ className
1304
+ ),
1305
+ checked,
1306
+ ...props,
1307
+ children: [
1308
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1309
+ children
1310
+ ]
1311
+ }
1312
+ );
1313
+ }
1314
+ function DropdownMenuRadioGroup({
1315
+ ...props
1316
+ }) {
1317
+ return /* @__PURE__ */ jsx(
1318
+ DropdownMenuPrimitive.RadioGroup,
1319
+ {
1320
+ "data-slot": "dropdown-menu-radio-group",
1321
+ ...props
1322
+ }
1323
+ );
1324
+ }
1325
+ function DropdownMenuRadioItem({
1326
+ className,
1327
+ children,
1328
+ ...props
1329
+ }) {
1330
+ return /* @__PURE__ */ jsxs(
1331
+ DropdownMenuPrimitive.RadioItem,
1332
+ {
1333
+ "data-slot": "dropdown-menu-radio-item",
1334
+ className: cn(
1335
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1336
+ className
1337
+ ),
1338
+ ...props,
1339
+ children: [
1340
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
1341
+ children
1342
+ ]
1343
+ }
1344
+ );
1345
+ }
1346
+ function DropdownMenuLabel({
1347
+ className,
1348
+ inset,
1349
+ ...props
1350
+ }) {
1351
+ return /* @__PURE__ */ jsx(
1352
+ DropdownMenuPrimitive.Label,
1353
+ {
1354
+ "data-slot": "dropdown-menu-label",
1355
+ "data-inset": inset,
1356
+ className: cn(
1357
+ "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
1358
+ className
1359
+ ),
1360
+ ...props
1361
+ }
1362
+ );
1363
+ }
1364
+ function DropdownMenuSeparator({
1365
+ className,
1366
+ ...props
1367
+ }) {
1368
+ return /* @__PURE__ */ jsx(
1369
+ DropdownMenuPrimitive.Separator,
1370
+ {
1371
+ "data-slot": "dropdown-menu-separator",
1372
+ className: cn("bg-border -mx-1 my-1 h-px", className),
1373
+ ...props
1374
+ }
1375
+ );
1376
+ }
1377
+ function DropdownMenuShortcut({
1378
+ className,
1379
+ ...props
1380
+ }) {
1381
+ return /* @__PURE__ */ jsx(
1382
+ "span",
1383
+ {
1384
+ "data-slot": "dropdown-menu-shortcut",
1385
+ className: cn(
1386
+ "text-muted-foreground ml-auto text-xs tracking-widest",
1387
+ className
1388
+ ),
1389
+ ...props
1390
+ }
1391
+ );
1392
+ }
1393
+ function DropdownMenuSub({
1394
+ ...props
1395
+ }) {
1396
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
1397
+ }
1398
+ function DropdownMenuSubTrigger({
1399
+ className,
1400
+ inset,
1401
+ children,
1402
+ ...props
1403
+ }) {
1404
+ return /* @__PURE__ */ jsxs(
1405
+ DropdownMenuPrimitive.SubTrigger,
1406
+ {
1407
+ "data-slot": "dropdown-menu-sub-trigger",
1408
+ "data-inset": inset,
1409
+ className: cn(
1410
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1411
+ className
1412
+ ),
1413
+ ...props,
1414
+ children: [
1415
+ children,
1416
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto size-4" })
1417
+ ]
1418
+ }
1419
+ );
1420
+ }
1421
+ function DropdownMenuSubContent({
1422
+ className,
1423
+ ...props
1424
+ }) {
1425
+ return /* @__PURE__ */ jsx(
1426
+ DropdownMenuPrimitive.SubContent,
1427
+ {
1428
+ "data-slot": "dropdown-menu-sub-content",
1429
+ className: cn(
1430
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
1431
+ className
1432
+ ),
1433
+ ...props
1434
+ }
1435
+ );
1436
+ }
1437
+ function Dialog({
1438
+ ...props
1439
+ }) {
1440
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
1441
+ }
1442
+ function DialogTrigger({
1443
+ ...props
1444
+ }) {
1445
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
1446
+ }
1447
+ function DialogPortal({
1448
+ ...props
1449
+ }) {
1450
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
1451
+ }
1452
+ function DialogClose({
1453
+ ...props
1454
+ }) {
1455
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
1456
+ }
1457
+ function DialogOverlay({
1458
+ className,
1459
+ ...props
1460
+ }) {
1461
+ return /* @__PURE__ */ jsx(
1462
+ DialogPrimitive.Overlay,
1463
+ {
1464
+ "data-slot": "dialog-overlay",
1465
+ className: cn(
1466
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1467
+ className
1468
+ ),
1469
+ ...props
1470
+ }
1471
+ );
1472
+ }
1473
+ function DialogContent({
1474
+ className,
1475
+ children,
1476
+ showCloseButton = true,
1477
+ ...props
1478
+ }) {
1479
+ return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
1480
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
1481
+ /* @__PURE__ */ jsxs(
1482
+ DialogPrimitive.Content,
1483
+ {
1484
+ "data-slot": "dialog-content",
1485
+ className: cn(
1486
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
1487
+ className
1488
+ ),
1489
+ ...props,
1490
+ children: [
1491
+ children,
1492
+ showCloseButton && /* @__PURE__ */ jsxs(
1493
+ DialogPrimitive.Close,
1494
+ {
1495
+ "data-slot": "dialog-close",
1496
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1497
+ children: [
1498
+ /* @__PURE__ */ jsx(XIcon, {}),
1499
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1500
+ ]
1501
+ }
1502
+ )
1503
+ ]
1504
+ }
1505
+ )
1506
+ ] });
1507
+ }
1508
+ function DialogHeader({ className, ...props }) {
1509
+ return /* @__PURE__ */ jsx(
1510
+ "div",
1511
+ {
1512
+ "data-slot": "dialog-header",
1513
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
1514
+ ...props
1515
+ }
1516
+ );
1517
+ }
1518
+ function DialogFooter({ className, ...props }) {
1519
+ return /* @__PURE__ */ jsx(
1520
+ "div",
1521
+ {
1522
+ "data-slot": "dialog-footer",
1523
+ className: cn(
1524
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
1525
+ className
1526
+ ),
1527
+ ...props
1528
+ }
1529
+ );
1530
+ }
1531
+ function DialogTitle({
1532
+ className,
1533
+ ...props
1534
+ }) {
1535
+ return /* @__PURE__ */ jsx(
1536
+ DialogPrimitive.Title,
1537
+ {
1538
+ "data-slot": "dialog-title",
1539
+ className: cn("text-lg leading-none font-semibold", className),
1540
+ ...props
1541
+ }
1542
+ );
1543
+ }
1544
+ function DialogDescription({
1545
+ className,
1546
+ ...props
1547
+ }) {
1548
+ return /* @__PURE__ */ jsx(
1549
+ DialogPrimitive.Description,
1550
+ {
1551
+ "data-slot": "dialog-description",
1552
+ className: cn("text-muted-foreground text-sm", className),
1553
+ ...props
1554
+ }
1555
+ );
1556
+ }
1557
+ function Popover({
1558
+ ...props
1559
+ }) {
1560
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1561
+ }
1562
+ function PopoverTrigger({
1563
+ ...props
1564
+ }) {
1565
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1566
+ }
1567
+ function PopoverContent({
1568
+ className,
1569
+ align = "center",
1570
+ sideOffset = 4,
1571
+ ...props
1572
+ }) {
1573
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1574
+ PopoverPrimitive.Content,
1575
+ {
1576
+ "data-slot": "popover-content",
1577
+ align,
1578
+ sideOffset,
1579
+ className: cn(
1580
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
1581
+ className
1582
+ ),
1583
+ ...props
1584
+ }
1585
+ ) });
1586
+ }
1587
+ function ScrollArea({
1588
+ className,
1589
+ children,
1590
+ ...props
1591
+ }) {
1592
+ return /* @__PURE__ */ jsxs(
1593
+ ScrollAreaPrimitive.Root,
1594
+ {
1595
+ "data-slot": "scroll-area",
1596
+ className: cn("relative", className),
1597
+ ...props,
1598
+ children: [
1599
+ /* @__PURE__ */ jsx(
1600
+ ScrollAreaPrimitive.Viewport,
1601
+ {
1602
+ "data-slot": "scroll-area-viewport",
1603
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
1604
+ children
1605
+ }
1606
+ ),
1607
+ /* @__PURE__ */ jsx(ScrollBar, {}),
1608
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
1609
+ ]
1610
+ }
1611
+ );
1612
+ }
1613
+ function ScrollBar({
1614
+ className,
1615
+ orientation = "vertical",
1616
+ ...props
1617
+ }) {
1618
+ return /* @__PURE__ */ jsx(
1619
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1620
+ {
1621
+ "data-slot": "scroll-area-scrollbar",
1622
+ orientation,
1623
+ className: cn(
1624
+ "flex touch-none p-px transition-colors select-none",
1625
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
1626
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
1627
+ className
1628
+ ),
1629
+ ...props,
1630
+ children: /* @__PURE__ */ jsx(
1631
+ ScrollAreaPrimitive.ScrollAreaThumb,
1632
+ {
1633
+ "data-slot": "scroll-area-thumb",
1634
+ className: "bg-border relative flex-1 rounded-full"
1635
+ }
1636
+ )
1637
+ }
1638
+ );
1639
+ }
1640
+ function Sheet({ ...props }) {
1641
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
1642
+ }
1643
+ function SheetTrigger({
1644
+ ...props
1645
+ }) {
1646
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
1647
+ }
1648
+ function SheetClose({
1649
+ ...props
1650
+ }) {
1651
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
1652
+ }
1653
+ function SheetPortal({
1654
+ ...props
1655
+ }) {
1656
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
1657
+ }
1658
+ function SheetOverlay({
1659
+ className,
1660
+ ...props
1661
+ }) {
1662
+ return /* @__PURE__ */ jsx(
1663
+ DialogPrimitive.Overlay,
1664
+ {
1665
+ "data-slot": "sheet-overlay",
1666
+ className: cn(
1667
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1668
+ className
1669
+ ),
1670
+ ...props
1671
+ }
1672
+ );
1673
+ }
1674
+ function SheetContent({
1675
+ className,
1676
+ children,
1677
+ side = "right",
1678
+ ...props
1679
+ }) {
1680
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [
1681
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
1682
+ /* @__PURE__ */ jsxs(
1683
+ DialogPrimitive.Content,
1684
+ {
1685
+ "data-slot": "sheet-content",
1686
+ className: cn(
1687
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1688
+ side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
1689
+ side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
1690
+ side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
1691
+ side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
1692
+ className
1693
+ ),
1694
+ ...props,
1695
+ children: [
1696
+ children,
1697
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
1698
+ /* @__PURE__ */ jsx(XIcon, { className: "size-4" }),
1699
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1700
+ ] })
1701
+ ]
1702
+ }
1703
+ )
1704
+ ] });
1705
+ }
1706
+ function SheetHeader({ className, ...props }) {
1707
+ return /* @__PURE__ */ jsx(
1708
+ "div",
1709
+ {
1710
+ "data-slot": "sheet-header",
1711
+ className: cn("flex flex-col gap-1.5 p-4", className),
1712
+ ...props
1713
+ }
1714
+ );
1715
+ }
1716
+ function SheetFooter({ className, ...props }) {
1717
+ return /* @__PURE__ */ jsx(
1718
+ "div",
1719
+ {
1720
+ "data-slot": "sheet-footer",
1721
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1722
+ ...props
1723
+ }
1724
+ );
1725
+ }
1726
+ function SheetTitle({
1727
+ className,
1728
+ ...props
1729
+ }) {
1730
+ return /* @__PURE__ */ jsx(
1731
+ DialogPrimitive.Title,
1732
+ {
1733
+ "data-slot": "sheet-title",
1734
+ className: cn("text-foreground font-semibold", className),
1735
+ ...props
1736
+ }
1737
+ );
1738
+ }
1739
+ function SheetDescription({
1740
+ className,
1741
+ ...props
1742
+ }) {
1743
+ return /* @__PURE__ */ jsx(
1744
+ DialogPrimitive.Description,
1745
+ {
1746
+ "data-slot": "sheet-description",
1747
+ className: cn("text-muted-foreground text-sm", className),
1748
+ ...props
1749
+ }
1750
+ );
1751
+ }
1752
+ function Collapsible({
1753
+ ...props
1754
+ }) {
1755
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
1756
+ }
1757
+ function CollapsibleTrigger2({
1758
+ ...props
1759
+ }) {
1760
+ return /* @__PURE__ */ jsx(
1761
+ CollapsiblePrimitive.CollapsibleTrigger,
1762
+ {
1763
+ "data-slot": "collapsible-trigger",
1764
+ ...props
1765
+ }
1766
+ );
1767
+ }
1768
+ function CollapsibleContent2({
1769
+ ...props
1770
+ }) {
1771
+ return /* @__PURE__ */ jsx(
1772
+ CollapsiblePrimitive.CollapsibleContent,
1773
+ {
1774
+ "data-slot": "collapsible-content",
1775
+ ...props
1776
+ }
1777
+ );
1778
+ }
1779
+ function Slider({
1780
+ className,
1781
+ defaultValue,
1782
+ value,
1783
+ min = 0,
1784
+ max = 100,
1785
+ ...props
1786
+ }) {
1787
+ const _values = React3.useMemo(
1788
+ () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
1789
+ [value, defaultValue, min, max]
1790
+ );
1791
+ return /* @__PURE__ */ jsxs(
1792
+ SliderPrimitive.Root,
1793
+ {
1794
+ "data-slot": "slider",
1795
+ defaultValue,
1796
+ value,
1797
+ min,
1798
+ max,
1799
+ className: cn(
1800
+ "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
1801
+ className
1802
+ ),
1803
+ ...props,
1804
+ children: [
1805
+ /* @__PURE__ */ jsx(
1806
+ SliderPrimitive.Track,
1807
+ {
1808
+ "data-slot": "slider-track",
1809
+ className: cn(
1810
+ "bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
1811
+ ),
1812
+ children: /* @__PURE__ */ jsx(
1813
+ SliderPrimitive.Range,
1814
+ {
1815
+ "data-slot": "slider-range",
1816
+ className: cn(
1817
+ "bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
1818
+ )
1819
+ }
1820
+ )
1821
+ }
1822
+ ),
1823
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
1824
+ SliderPrimitive.Thumb,
1825
+ {
1826
+ "data-slot": "slider-thumb",
1827
+ className: "border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
1828
+ },
1829
+ index
1830
+ ))
1831
+ ]
1832
+ }
1833
+ );
1834
+ }
1835
+ function Switch({
1836
+ className,
1837
+ ...props
1838
+ }) {
1839
+ return /* @__PURE__ */ jsx(
1840
+ SwitchPrimitive.Root,
1841
+ {
1842
+ "data-slot": "switch",
1843
+ className: cn(
1844
+ "peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
1845
+ className
1846
+ ),
1847
+ ...props,
1848
+ children: /* @__PURE__ */ jsx(
1849
+ SwitchPrimitive.Thumb,
1850
+ {
1851
+ "data-slot": "switch-thumb",
1852
+ className: cn(
1853
+ "bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
1854
+ )
1855
+ }
1856
+ )
1857
+ }
1858
+ );
1859
+ }
1860
+ function RadioGroup2({
1861
+ className,
1862
+ ...props
1863
+ }) {
1864
+ return /* @__PURE__ */ jsx(
1865
+ RadioGroupPrimitive.Root,
1866
+ {
1867
+ "data-slot": "radio-group",
1868
+ className: cn("grid gap-3", className),
1869
+ ...props
1870
+ }
1871
+ );
1872
+ }
1873
+ function RadioGroupItem({
1874
+ className,
1875
+ ...props
1876
+ }) {
1877
+ return /* @__PURE__ */ jsx(
1878
+ RadioGroupPrimitive.Item,
1879
+ {
1880
+ "data-slot": "radio-group-item",
1881
+ className: cn(
1882
+ "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
1883
+ className
1884
+ ),
1885
+ ...props,
1886
+ children: /* @__PURE__ */ jsx(
1887
+ RadioGroupPrimitive.Indicator,
1888
+ {
1889
+ "data-slot": "radio-group-indicator",
1890
+ className: "relative flex items-center justify-center",
1891
+ children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
1892
+ }
1893
+ )
1894
+ }
1895
+ );
1896
+ }
1897
+ var Form = FormProvider;
1898
+ var FormFieldContext = React3.createContext(
1899
+ {}
1900
+ );
1901
+ var FormField = ({
1902
+ ...props
1903
+ }) => {
1904
+ return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
1905
+ };
1906
+ var useFormField = () => {
1907
+ const fieldContext = React3.useContext(FormFieldContext);
1908
+ const itemContext = React3.useContext(FormItemContext);
1909
+ const { getFieldState } = useFormContext();
1910
+ const formState = useFormState({ name: fieldContext.name });
1911
+ const fieldState = getFieldState(fieldContext.name, formState);
1912
+ if (!fieldContext) {
1913
+ throw new Error("useFormField should be used within <FormField>");
1914
+ }
1915
+ const { id } = itemContext;
1916
+ return {
1917
+ id,
1918
+ name: fieldContext.name,
1919
+ formItemId: `${id}-form-item`,
1920
+ formDescriptionId: `${id}-form-item-description`,
1921
+ formMessageId: `${id}-form-item-message`,
1922
+ ...fieldState
1923
+ };
1924
+ };
1925
+ var FormItemContext = React3.createContext(
1926
+ {}
1927
+ );
1928
+ function FormItem({ className, ...props }) {
1929
+ const id = React3.useId();
1930
+ return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx(
1931
+ "div",
1932
+ {
1933
+ "data-slot": "form-item",
1934
+ className: cn("grid gap-2", className),
1935
+ ...props
1936
+ }
1937
+ ) });
1938
+ }
1939
+ function FormLabel({
1940
+ className,
1941
+ ...props
1942
+ }) {
1943
+ const { error, formItemId } = useFormField();
1944
+ return /* @__PURE__ */ jsx(
1945
+ Label,
1946
+ {
1947
+ "data-slot": "form-label",
1948
+ "data-error": !!error,
1949
+ className: cn("data-[error=true]:text-destructive", className),
1950
+ htmlFor: formItemId,
1951
+ ...props
1952
+ }
1953
+ );
1954
+ }
1955
+ function FormControl({ ...props }) {
1956
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1957
+ return /* @__PURE__ */ jsx(
1958
+ Slot,
1959
+ {
1960
+ "data-slot": "form-control",
1961
+ id: formItemId,
1962
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
1963
+ "aria-invalid": !!error,
1964
+ ...props
1965
+ }
1966
+ );
1967
+ }
1968
+ function FormDescription({ className, ...props }) {
1969
+ const { formDescriptionId } = useFormField();
1970
+ return /* @__PURE__ */ jsx(
1971
+ "p",
1972
+ {
1973
+ "data-slot": "form-description",
1974
+ id: formDescriptionId,
1975
+ className: cn("text-muted-foreground text-sm", className),
1976
+ ...props
1977
+ }
1978
+ );
1979
+ }
1980
+ function FormMessage({ className, ...props }) {
1981
+ const { error, formMessageId } = useFormField();
1982
+ const body = error ? String(error?.message ?? "") : props.children;
1983
+ if (!body) {
1984
+ return null;
1985
+ }
1986
+ return /* @__PURE__ */ jsx(
1987
+ "p",
1988
+ {
1989
+ "data-slot": "form-message",
1990
+ id: formMessageId,
1991
+ className: cn("text-destructive text-sm", className),
1992
+ ...props,
1993
+ children: body
1994
+ }
1995
+ );
1996
+ }
1997
+ function CTAButtonGroup({ buttons, className }) {
1998
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap gap-4", className), children: buttons.map((button, index) => /* @__PURE__ */ jsx(
1999
+ Button,
2000
+ {
2001
+ variant: button.variant || "default",
2002
+ asChild: !!button.href,
2003
+ onClick: button.onClick,
2004
+ children: button.href ? /* @__PURE__ */ jsx("a", { href: button.href, children: button.label }) : button.label
2005
+ },
2006
+ index
2007
+ )) });
2008
+ }
2009
+ function CTASection({
2010
+ title,
2011
+ description,
2012
+ primaryAction,
2013
+ secondaryAction,
2014
+ variant = "default",
2015
+ className,
2016
+ children
2017
+ }) {
2018
+ const variantStyles = {
2019
+ default: "bg-card",
2020
+ highlight: "bg-primary text-primary-foreground",
2021
+ minimal: "border-0 shadow-none"
2022
+ };
2023
+ return /* @__PURE__ */ jsxs(Card, { className: cn(variantStyles[variant], "my-8", className), children: [
2024
+ /* @__PURE__ */ jsxs(CardHeader, { children: [
2025
+ /* @__PURE__ */ jsx(
2026
+ CardTitle,
2027
+ {
2028
+ className: cn(variant === "highlight" && "text-primary-foreground"),
2029
+ children: title
2030
+ }
2031
+ ),
2032
+ description && /* @__PURE__ */ jsx(
2033
+ CardDescription,
2034
+ {
2035
+ className: cn(
2036
+ variant === "highlight" && "text-primary-foreground/80"
2037
+ ),
2038
+ children: description
2039
+ }
2040
+ )
2041
+ ] }),
2042
+ children && /* @__PURE__ */ jsx(CardContent, { children }),
2043
+ (primaryAction || secondaryAction) && /* @__PURE__ */ jsxs(CardFooter, { className: "gap-4", children: [
2044
+ primaryAction && /* @__PURE__ */ jsx(
2045
+ Button,
2046
+ {
2047
+ variant: variant === "highlight" ? "secondary" : "default",
2048
+ asChild: !!primaryAction.href,
2049
+ onClick: primaryAction.onClick,
2050
+ children: primaryAction.href ? /* @__PURE__ */ jsx("a", { href: primaryAction.href, children: primaryAction.label }) : primaryAction.label
2051
+ }
2052
+ ),
2053
+ secondaryAction && /* @__PURE__ */ jsx(
2054
+ Button,
2055
+ {
2056
+ variant: variant === "highlight" ? "outline" : "ghost",
2057
+ asChild: !!secondaryAction.href,
2058
+ onClick: secondaryAction.onClick,
2059
+ children: secondaryAction.href ? /* @__PURE__ */ jsx("a", { href: secondaryAction.href, children: secondaryAction.label }) : secondaryAction.label
2060
+ }
2061
+ )
2062
+ ] })
2063
+ ] });
2064
+ }
2065
+
2066
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CTAButtonGroup, CTASection, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input, Label, Popover, PopoverContent, PopoverTrigger, Progress, RadioGroup2 as RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Skeleton, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn };
2067
+ //# sourceMappingURL=chunk-NO6MNNEU.js.map
2068
+ //# sourceMappingURL=chunk-NO6MNNEU.js.map