@sntxindu/ui 1.0.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.
package/dist/index.mjs ADDED
@@ -0,0 +1,4444 @@
1
+ import { Accordion as Accordion$1, Slot, AlertDialog as AlertDialog$1, AspectRatio as AspectRatio$1, Avatar as Avatar$1, Separator as Separator$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, Dialog as Dialog$1, ContextMenu as ContextMenu$1, DropdownMenu as DropdownMenu$1, Label as Label$1, HoverCard as HoverCard$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Popover as Popover$1, Progress as Progress$1, RadioGroup as RadioGroup$1, ScrollArea as ScrollArea$1, Select as Select$1, Tooltip, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { ChevronDownIcon, ChevronUpIcon, ChevronRightIcon, MoreHorizontalIcon, ChevronLeftIcon, CheckIcon, XIcon, SearchIcon, MinusIcon, CircleIcon, PanelLeftIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon } from 'lucide-react';
5
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
+ import { cva } from 'class-variance-authority';
7
+ import * as React2 from 'react';
8
+ import { useMemo } from 'react';
9
+ import { getDefaultClassNames, DayPicker } from 'react-day-picker';
10
+ import useEmblaCarousel from 'embla-carousel-react';
11
+ import * as RechartsPrimitive from 'recharts';
12
+ import { Combobox as Combobox$1 } from '@base-ui/react';
13
+ import { Command as Command$1 } from 'cmdk';
14
+ import { Drawer as Drawer$1 } from 'vaul';
15
+ import { OTPInput, OTPInputContext } from 'input-otp';
16
+ import { Panel, Group, Separator as Separator$2 } from 'react-resizable-panels';
17
+ import { useTheme } from 'next-themes';
18
+ import { Toaster as Toaster$1 } from 'sonner';
19
+
20
+ // src/components/ui/accordion.tsx
21
+ function cn(...inputs) {
22
+ return twMerge(clsx(inputs));
23
+ }
24
+ function Accordion({
25
+ className,
26
+ ...props
27
+ }) {
28
+ return /* @__PURE__ */ jsx(
29
+ Accordion$1.Root,
30
+ {
31
+ "data-slot": "accordion",
32
+ className: cn("overflow-hidden rounded-md border flex w-full flex-col", className),
33
+ ...props
34
+ }
35
+ );
36
+ }
37
+ function AccordionItem({
38
+ className,
39
+ ...props
40
+ }) {
41
+ return /* @__PURE__ */ jsx(
42
+ Accordion$1.Item,
43
+ {
44
+ "data-slot": "accordion-item",
45
+ className: cn("data-open:bg-muted/50 not-last:border-b", className),
46
+ ...props
47
+ }
48
+ );
49
+ }
50
+ function AccordionTrigger({
51
+ className,
52
+ children,
53
+ ...props
54
+ }) {
55
+ return /* @__PURE__ */ jsx(Accordion$1.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
56
+ Accordion$1.Trigger,
57
+ {
58
+ "data-slot": "accordion-trigger",
59
+ className: cn(
60
+ "**:data-[slot=accordion-trigger-icon]:text-muted-foreground gap-6 p-2 text-left text-xs/relaxed font-medium hover:underline **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none disabled:pointer-events-none disabled:opacity-50",
61
+ className
62
+ ),
63
+ ...props,
64
+ children: [
65
+ children,
66
+ /* @__PURE__ */ jsx(ChevronDownIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }),
67
+ /* @__PURE__ */ jsx(ChevronUpIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })
68
+ ]
69
+ }
70
+ ) });
71
+ }
72
+ function AccordionContent({
73
+ className,
74
+ children,
75
+ ...props
76
+ }) {
77
+ return /* @__PURE__ */ jsx(
78
+ Accordion$1.Content,
79
+ {
80
+ "data-slot": "accordion-content",
81
+ className: "data-open:animate-accordion-down data-closed:animate-accordion-up px-2 text-xs/relaxed overflow-hidden",
82
+ ...props,
83
+ children: /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ className: cn(
87
+ "pt-0 pb-4 [&_a]:hover:text-foreground h-(--radix-accordion-content-height) [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4",
88
+ className
89
+ ),
90
+ children
91
+ }
92
+ )
93
+ }
94
+ );
95
+ }
96
+ var alertVariants = cva("grid gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5 w-full relative group/alert", {
97
+ variants: {
98
+ variant: {
99
+ default: "bg-card text-card-foreground",
100
+ destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
101
+ }
102
+ },
103
+ defaultVariants: {
104
+ variant: "default"
105
+ }
106
+ });
107
+ function Alert({
108
+ className,
109
+ variant,
110
+ ...props
111
+ }) {
112
+ return /* @__PURE__ */ jsx(
113
+ "div",
114
+ {
115
+ "data-slot": "alert",
116
+ role: "alert",
117
+ className: cn(alertVariants({ variant }), className),
118
+ ...props
119
+ }
120
+ );
121
+ }
122
+ function AlertTitle({ className, ...props }) {
123
+ return /* @__PURE__ */ jsx(
124
+ "div",
125
+ {
126
+ "data-slot": "alert-title",
127
+ className: cn(
128
+ "font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3",
129
+ className
130
+ ),
131
+ ...props
132
+ }
133
+ );
134
+ }
135
+ function AlertDescription({
136
+ className,
137
+ ...props
138
+ }) {
139
+ return /* @__PURE__ */ jsx(
140
+ "div",
141
+ {
142
+ "data-slot": "alert-description",
143
+ className: cn(
144
+ "text-muted-foreground text-xs/relaxed text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3",
145
+ className
146
+ ),
147
+ ...props
148
+ }
149
+ );
150
+ }
151
+ var buttonVariants = cva(
152
+ "focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium focus-visible:ring-[2px] aria-invalid:ring-[2px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",
153
+ {
154
+ variants: {
155
+ variant: {
156
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
157
+ outline: "border-border dark:bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
158
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
159
+ ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
160
+ destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
161
+ link: "text-primary underline-offset-4 hover:underline"
162
+ },
163
+ size: {
164
+ default: "h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
165
+ xs: "h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5",
166
+ sm: "h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
167
+ lg: "h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4",
168
+ icon: "size-7 [&_svg:not([class*='size-'])]:size-3.5",
169
+ "icon-xs": "size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5",
170
+ "icon-sm": "size-6 [&_svg:not([class*='size-'])]:size-3",
171
+ "icon-lg": "size-8 [&_svg:not([class*='size-'])]:size-4"
172
+ }
173
+ },
174
+ defaultVariants: {
175
+ variant: "default",
176
+ size: "default"
177
+ }
178
+ }
179
+ );
180
+ function Button({
181
+ className,
182
+ variant = "default",
183
+ size = "default",
184
+ asChild = false,
185
+ ...props
186
+ }) {
187
+ const Comp = asChild ? Slot.Root : "button";
188
+ return /* @__PURE__ */ jsx(
189
+ Comp,
190
+ {
191
+ "data-slot": "button",
192
+ "data-variant": variant,
193
+ "data-size": size,
194
+ className: cn(buttonVariants({ variant, size, className })),
195
+ ...props
196
+ }
197
+ );
198
+ }
199
+ function AlertDialog({
200
+ ...props
201
+ }) {
202
+ return /* @__PURE__ */ jsx(AlertDialog$1.Root, { "data-slot": "alert-dialog", ...props });
203
+ }
204
+ function AlertDialogTrigger({
205
+ ...props
206
+ }) {
207
+ return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
208
+ }
209
+ function AlertDialogPortal({
210
+ ...props
211
+ }) {
212
+ return /* @__PURE__ */ jsx(AlertDialog$1.Portal, { "data-slot": "alert-dialog-portal", ...props });
213
+ }
214
+ function AlertDialogOverlay({
215
+ className,
216
+ ...props
217
+ }) {
218
+ return /* @__PURE__ */ jsx(
219
+ AlertDialog$1.Overlay,
220
+ {
221
+ "data-slot": "alert-dialog-overlay",
222
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
223
+ ...props
224
+ }
225
+ );
226
+ }
227
+ function AlertDialogContent({
228
+ className,
229
+ size = "default",
230
+ ...props
231
+ }) {
232
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
233
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
234
+ /* @__PURE__ */ jsx(
235
+ AlertDialog$1.Content,
236
+ {
237
+ "data-slot": "alert-dialog-content",
238
+ "data-size": size,
239
+ className: cn(
240
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-3 rounded-xl p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-64 data-[size=default]:sm:max-w-sm group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none",
241
+ className
242
+ ),
243
+ ...props
244
+ }
245
+ )
246
+ ] });
247
+ }
248
+ function AlertDialogHeader({
249
+ className,
250
+ ...props
251
+ }) {
252
+ return /* @__PURE__ */ jsx(
253
+ "div",
254
+ {
255
+ "data-slot": "alert-dialog-header",
256
+ className: cn("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]", className),
257
+ ...props
258
+ }
259
+ );
260
+ }
261
+ function AlertDialogFooter({
262
+ className,
263
+ ...props
264
+ }) {
265
+ return /* @__PURE__ */ jsx(
266
+ "div",
267
+ {
268
+ "data-slot": "alert-dialog-footer",
269
+ className: cn(
270
+ "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",
271
+ className
272
+ ),
273
+ ...props
274
+ }
275
+ );
276
+ }
277
+ function AlertDialogTitle({
278
+ className,
279
+ ...props
280
+ }) {
281
+ return /* @__PURE__ */ jsx(
282
+ AlertDialog$1.Title,
283
+ {
284
+ "data-slot": "alert-dialog-title",
285
+ className: cn("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", className),
286
+ ...props
287
+ }
288
+ );
289
+ }
290
+ function AlertDialogDescription({
291
+ className,
292
+ ...props
293
+ }) {
294
+ return /* @__PURE__ */ jsx(
295
+ AlertDialog$1.Description,
296
+ {
297
+ "data-slot": "alert-dialog-description",
298
+ className: cn("text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", className),
299
+ ...props
300
+ }
301
+ );
302
+ }
303
+ function AlertDialogAction({
304
+ className,
305
+ variant = "default",
306
+ size = "default",
307
+ ...props
308
+ }) {
309
+ return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
310
+ AlertDialog$1.Action,
311
+ {
312
+ "data-slot": "alert-dialog-action",
313
+ className: cn(className),
314
+ ...props
315
+ }
316
+ ) });
317
+ }
318
+ function AlertDialogCancel({
319
+ className,
320
+ variant = "outline",
321
+ size = "default",
322
+ ...props
323
+ }) {
324
+ return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
325
+ AlertDialog$1.Cancel,
326
+ {
327
+ "data-slot": "alert-dialog-cancel",
328
+ className: cn(className),
329
+ ...props
330
+ }
331
+ ) });
332
+ }
333
+ function AspectRatio({
334
+ ...props
335
+ }) {
336
+ return /* @__PURE__ */ jsx(AspectRatio$1.Root, { "data-slot": "aspect-ratio", ...props });
337
+ }
338
+ function Avatar({
339
+ className,
340
+ size = "default",
341
+ ...props
342
+ }) {
343
+ return /* @__PURE__ */ jsx(
344
+ Avatar$1.Root,
345
+ {
346
+ "data-slot": "avatar",
347
+ "data-size": size,
348
+ className: cn(
349
+ "size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten",
350
+ className
351
+ ),
352
+ ...props
353
+ }
354
+ );
355
+ }
356
+ function AvatarImage({
357
+ className,
358
+ ...props
359
+ }) {
360
+ return /* @__PURE__ */ jsx(
361
+ Avatar$1.Image,
362
+ {
363
+ "data-slot": "avatar-image",
364
+ className: cn(
365
+ "rounded-full aspect-square size-full object-cover",
366
+ className
367
+ ),
368
+ ...props
369
+ }
370
+ );
371
+ }
372
+ function AvatarFallback({
373
+ className,
374
+ ...props
375
+ }) {
376
+ return /* @__PURE__ */ jsx(
377
+ Avatar$1.Fallback,
378
+ {
379
+ "data-slot": "avatar-fallback",
380
+ className: cn(
381
+ "bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs",
382
+ className
383
+ ),
384
+ ...props
385
+ }
386
+ );
387
+ }
388
+ var badgeVariants = cva(
389
+ "h-5 gap-1 rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-2.5! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>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-colors overflow-hidden group/badge",
390
+ {
391
+ variants: {
392
+ variant: {
393
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
394
+ secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
395
+ destructive: "bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20",
396
+ outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/20 dark:bg-input/30",
397
+ ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
398
+ link: "text-primary underline-offset-4 hover:underline"
399
+ }
400
+ },
401
+ defaultVariants: {
402
+ variant: "default"
403
+ }
404
+ }
405
+ );
406
+ function Badge({
407
+ className,
408
+ variant = "default",
409
+ asChild = false,
410
+ ...props
411
+ }) {
412
+ const Comp = asChild ? Slot.Root : "span";
413
+ return /* @__PURE__ */ jsx(
414
+ Comp,
415
+ {
416
+ "data-slot": "badge",
417
+ "data-variant": variant,
418
+ className: cn(badgeVariants({ variant }), className),
419
+ ...props
420
+ }
421
+ );
422
+ }
423
+ function Breadcrumb({ className, ...props }) {
424
+ return /* @__PURE__ */ jsx(
425
+ "nav",
426
+ {
427
+ "aria-label": "breadcrumb",
428
+ "data-slot": "breadcrumb",
429
+ className: cn(className),
430
+ ...props
431
+ }
432
+ );
433
+ }
434
+ function BreadcrumbList({ className, ...props }) {
435
+ return /* @__PURE__ */ jsx(
436
+ "ol",
437
+ {
438
+ "data-slot": "breadcrumb-list",
439
+ className: cn(
440
+ "text-muted-foreground gap-1.5 text-xs/relaxed flex flex-wrap items-center break-words",
441
+ className
442
+ ),
443
+ ...props
444
+ }
445
+ );
446
+ }
447
+ function BreadcrumbItem({ className, ...props }) {
448
+ return /* @__PURE__ */ jsx(
449
+ "li",
450
+ {
451
+ "data-slot": "breadcrumb-item",
452
+ className: cn("gap-1 inline-flex items-center", className),
453
+ ...props
454
+ }
455
+ );
456
+ }
457
+ function BreadcrumbLink({
458
+ asChild,
459
+ className,
460
+ ...props
461
+ }) {
462
+ const Comp = asChild ? Slot.Root : "a";
463
+ return /* @__PURE__ */ jsx(
464
+ Comp,
465
+ {
466
+ "data-slot": "breadcrumb-link",
467
+ className: cn("hover:text-foreground transition-colors", className),
468
+ ...props
469
+ }
470
+ );
471
+ }
472
+ function BreadcrumbPage({ className, ...props }) {
473
+ return /* @__PURE__ */ jsx(
474
+ "span",
475
+ {
476
+ "data-slot": "breadcrumb-page",
477
+ role: "link",
478
+ "aria-disabled": "true",
479
+ "aria-current": "page",
480
+ className: cn("text-foreground font-normal", className),
481
+ ...props
482
+ }
483
+ );
484
+ }
485
+ function BreadcrumbSeparator({
486
+ children,
487
+ className,
488
+ ...props
489
+ }) {
490
+ return /* @__PURE__ */ jsx(
491
+ "li",
492
+ {
493
+ "data-slot": "breadcrumb-separator",
494
+ role: "presentation",
495
+ "aria-hidden": "true",
496
+ className: cn("[&>svg]:size-3.5", className),
497
+ ...props,
498
+ children: children ?? /* @__PURE__ */ jsx(
499
+ ChevronRightIcon,
500
+ {}
501
+ )
502
+ }
503
+ );
504
+ }
505
+ function BreadcrumbEllipsis({
506
+ className,
507
+ ...props
508
+ }) {
509
+ return /* @__PURE__ */ jsxs(
510
+ "span",
511
+ {
512
+ "data-slot": "breadcrumb-ellipsis",
513
+ role: "presentation",
514
+ "aria-hidden": "true",
515
+ className: cn(
516
+ "size-4 [&>svg]:size-3.5 flex items-center justify-center",
517
+ className
518
+ ),
519
+ ...props,
520
+ children: [
521
+ /* @__PURE__ */ jsx(
522
+ MoreHorizontalIcon,
523
+ {}
524
+ ),
525
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
526
+ ]
527
+ }
528
+ );
529
+ }
530
+ function Separator({
531
+ className,
532
+ orientation = "horizontal",
533
+ decorative = true,
534
+ ...props
535
+ }) {
536
+ return /* @__PURE__ */ jsx(
537
+ Separator$1.Root,
538
+ {
539
+ "data-slot": "separator",
540
+ decorative,
541
+ orientation,
542
+ className: cn(
543
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch",
544
+ className
545
+ ),
546
+ ...props
547
+ }
548
+ );
549
+ }
550
+ var buttonGroupVariants = cva(
551
+ "has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
552
+ {
553
+ variants: {
554
+ orientation: {
555
+ horizontal: "[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
556
+ vertical: "[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
557
+ }
558
+ },
559
+ defaultVariants: {
560
+ orientation: "horizontal"
561
+ }
562
+ }
563
+ );
564
+ function ButtonGroup({
565
+ className,
566
+ orientation,
567
+ ...props
568
+ }) {
569
+ return /* @__PURE__ */ jsx(
570
+ "div",
571
+ {
572
+ role: "group",
573
+ "data-slot": "button-group",
574
+ "data-orientation": orientation,
575
+ className: cn(buttonGroupVariants({ orientation }), className),
576
+ ...props
577
+ }
578
+ );
579
+ }
580
+ function Calendar({
581
+ className,
582
+ classNames,
583
+ showOutsideDays = true,
584
+ captionLayout = "label",
585
+ buttonVariant = "ghost",
586
+ formatters,
587
+ components,
588
+ ...props
589
+ }) {
590
+ const defaultClassNames = getDefaultClassNames();
591
+ return /* @__PURE__ */ jsx(
592
+ DayPicker,
593
+ {
594
+ showOutsideDays,
595
+ className: cn(
596
+ "p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)] bg-background group/calendar [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
597
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
598
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
599
+ className
600
+ ),
601
+ captionLayout,
602
+ formatters: {
603
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
604
+ ...formatters
605
+ },
606
+ classNames: {
607
+ root: cn("w-fit", defaultClassNames.root),
608
+ months: cn(
609
+ "flex gap-4 flex-col md:flex-row relative",
610
+ defaultClassNames.months
611
+ ),
612
+ month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
613
+ nav: cn(
614
+ "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
615
+ defaultClassNames.nav
616
+ ),
617
+ button_previous: cn(
618
+ buttonVariants({ variant: buttonVariant }),
619
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
620
+ defaultClassNames.button_previous
621
+ ),
622
+ button_next: cn(
623
+ buttonVariants({ variant: buttonVariant }),
624
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
625
+ defaultClassNames.button_next
626
+ ),
627
+ month_caption: cn(
628
+ "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",
629
+ defaultClassNames.month_caption
630
+ ),
631
+ dropdowns: cn(
632
+ "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",
633
+ defaultClassNames.dropdowns
634
+ ),
635
+ dropdown_root: cn(
636
+ "relative cn-calendar-dropdown-root rounded-(--cell-radius)",
637
+ defaultClassNames.dropdown_root
638
+ ),
639
+ dropdown: cn(
640
+ "absolute bg-popover inset-0 opacity-0",
641
+ defaultClassNames.dropdown
642
+ ),
643
+ caption_label: cn(
644
+ "select-none font-medium",
645
+ captionLayout === "label" ? "text-sm" : "cn-calendar-caption-label rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5",
646
+ defaultClassNames.caption_label
647
+ ),
648
+ table: "w-full border-collapse",
649
+ weekdays: cn("flex", defaultClassNames.weekdays),
650
+ weekday: cn(
651
+ "text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none",
652
+ defaultClassNames.weekday
653
+ ),
654
+ week: cn("flex w-full mt-2", defaultClassNames.week),
655
+ week_number_header: cn(
656
+ "select-none w-(--cell-size)",
657
+ defaultClassNames.week_number_header
658
+ ),
659
+ week_number: cn(
660
+ "text-[0.8rem] select-none text-muted-foreground",
661
+ defaultClassNames.week_number
662
+ ),
663
+ day: cn(
664
+ "relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none",
665
+ props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
666
+ defaultClassNames.day
667
+ ),
668
+ range_start: cn(
669
+ "rounded-l-(--cell-radius) bg-muted elative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 -z-0 isolate",
670
+ defaultClassNames.range_start
671
+ ),
672
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
673
+ range_end: cn(
674
+ "rounded-r-(--cell-radius) bg-muted relative after:bg-muted-200 after:absolute after:inset-y-0 after:w-4 after:left-0 -z-0 isolate",
675
+ defaultClassNames.range_end
676
+ ),
677
+ today: cn(
678
+ "bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none",
679
+ defaultClassNames.today
680
+ ),
681
+ outside: cn(
682
+ "text-muted-foreground aria-selected:text-muted-foreground",
683
+ defaultClassNames.outside
684
+ ),
685
+ disabled: cn(
686
+ "text-muted-foreground opacity-50",
687
+ defaultClassNames.disabled
688
+ ),
689
+ hidden: cn("invisible", defaultClassNames.hidden),
690
+ ...classNames
691
+ },
692
+ components: {
693
+ Root: ({ className: className2, rootRef, ...props2 }) => {
694
+ return /* @__PURE__ */ jsx(
695
+ "div",
696
+ {
697
+ "data-slot": "calendar",
698
+ ref: rootRef,
699
+ className: cn(className2),
700
+ ...props2
701
+ }
702
+ );
703
+ },
704
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
705
+ if (orientation === "left") {
706
+ return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
707
+ }
708
+ if (orientation === "right") {
709
+ return /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("size-4", className2), ...props2 });
710
+ }
711
+ return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
712
+ },
713
+ DayButton: CalendarDayButton,
714
+ WeekNumber: ({ children, ...props2 }) => {
715
+ return /* @__PURE__ */ jsx("td", { ...props2, children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
716
+ },
717
+ ...components
718
+ },
719
+ ...props
720
+ }
721
+ );
722
+ }
723
+ function CalendarDayButton({
724
+ className,
725
+ day,
726
+ modifiers,
727
+ ...props
728
+ }) {
729
+ const defaultClassNames = getDefaultClassNames();
730
+ const ref = React2.useRef(null);
731
+ React2.useEffect(() => {
732
+ if (modifiers.focused) ref.current?.focus();
733
+ }, [modifiers.focused]);
734
+ return /* @__PURE__ */ jsx(
735
+ Button,
736
+ {
737
+ ref,
738
+ variant: "ghost",
739
+ size: "icon",
740
+ "data-day": day.date.toLocaleDateString(),
741
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
742
+ "data-range-start": modifiers.range_start,
743
+ "data-range-end": modifiers.range_end,
744
+ "data-range-middle": modifiers.range_middle,
745
+ className: cn(
746
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-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-foreground 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:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70",
747
+ defaultClassNames.day,
748
+ className
749
+ ),
750
+ ...props
751
+ }
752
+ );
753
+ }
754
+ function Card({
755
+ className,
756
+ size = "default",
757
+ ...props
758
+ }) {
759
+ return /* @__PURE__ */ jsx(
760
+ "div",
761
+ {
762
+ "data-slot": "card",
763
+ "data-size": size,
764
+ className: cn("ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 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 group/card flex flex-col", className),
765
+ ...props
766
+ }
767
+ );
768
+ }
769
+ function CardHeader({ className, ...props }) {
770
+ return /* @__PURE__ */ jsx(
771
+ "div",
772
+ {
773
+ "data-slot": "card-header",
774
+ className: cn(
775
+ "gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",
776
+ className
777
+ ),
778
+ ...props
779
+ }
780
+ );
781
+ }
782
+ function CardTitle({ className, ...props }) {
783
+ return /* @__PURE__ */ jsx(
784
+ "div",
785
+ {
786
+ "data-slot": "card-title",
787
+ className: cn("text-sm font-medium", className),
788
+ ...props
789
+ }
790
+ );
791
+ }
792
+ function CardDescription({ className, ...props }) {
793
+ return /* @__PURE__ */ jsx(
794
+ "div",
795
+ {
796
+ "data-slot": "card-description",
797
+ className: cn("text-muted-foreground text-xs/relaxed", className),
798
+ ...props
799
+ }
800
+ );
801
+ }
802
+ function CardContent({ className, ...props }) {
803
+ return /* @__PURE__ */ jsx(
804
+ "div",
805
+ {
806
+ "data-slot": "card-content",
807
+ className: cn("px-4 group-data-[size=sm]/card:px-3", className),
808
+ ...props
809
+ }
810
+ );
811
+ }
812
+ function CardFooter({ className, ...props }) {
813
+ return /* @__PURE__ */ jsx(
814
+ "div",
815
+ {
816
+ "data-slot": "card-footer",
817
+ className: cn("rounded-b-lg px-4 group-data-[size=sm]/card:px-3 [.border-t]:pt-4 group-data-[size=sm]/card:[.border-t]:pt-3 flex items-center", className),
818
+ ...props
819
+ }
820
+ );
821
+ }
822
+ var CarouselContext = React2.createContext(null);
823
+ function useCarousel() {
824
+ const context = React2.useContext(CarouselContext);
825
+ if (!context) {
826
+ throw new Error("useCarousel must be used within a <Carousel />");
827
+ }
828
+ return context;
829
+ }
830
+ function Carousel({
831
+ orientation = "horizontal",
832
+ opts,
833
+ setApi,
834
+ plugins,
835
+ className,
836
+ children,
837
+ ...props
838
+ }) {
839
+ const [carouselRef, api] = useEmblaCarousel(
840
+ {
841
+ ...opts,
842
+ axis: orientation === "horizontal" ? "x" : "y"
843
+ },
844
+ plugins
845
+ );
846
+ const [canScrollPrev, setCanScrollPrev] = React2.useState(false);
847
+ const [canScrollNext, setCanScrollNext] = React2.useState(false);
848
+ const onSelect = React2.useCallback((api2) => {
849
+ if (!api2) return;
850
+ setCanScrollPrev(api2.canScrollPrev());
851
+ setCanScrollNext(api2.canScrollNext());
852
+ }, []);
853
+ const scrollPrev = React2.useCallback(() => {
854
+ api?.scrollPrev();
855
+ }, [api]);
856
+ const scrollNext = React2.useCallback(() => {
857
+ api?.scrollNext();
858
+ }, [api]);
859
+ const handleKeyDown = React2.useCallback(
860
+ (event) => {
861
+ if (event.key === "ArrowLeft") {
862
+ event.preventDefault();
863
+ scrollPrev();
864
+ } else if (event.key === "ArrowRight") {
865
+ event.preventDefault();
866
+ scrollNext();
867
+ }
868
+ },
869
+ [scrollPrev, scrollNext]
870
+ );
871
+ React2.useEffect(() => {
872
+ if (!api || !setApi) return;
873
+ setApi(api);
874
+ }, [api, setApi]);
875
+ React2.useEffect(() => {
876
+ if (!api) return;
877
+ onSelect(api);
878
+ api.on("reInit", onSelect);
879
+ api.on("select", onSelect);
880
+ return () => {
881
+ api?.off("select", onSelect);
882
+ };
883
+ }, [api, onSelect]);
884
+ return /* @__PURE__ */ jsx(
885
+ CarouselContext.Provider,
886
+ {
887
+ value: {
888
+ carouselRef,
889
+ api,
890
+ opts,
891
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
892
+ scrollPrev,
893
+ scrollNext,
894
+ canScrollPrev,
895
+ canScrollNext
896
+ },
897
+ children: /* @__PURE__ */ jsx(
898
+ "div",
899
+ {
900
+ onKeyDownCapture: handleKeyDown,
901
+ className: cn("relative", className),
902
+ role: "region",
903
+ "aria-roledescription": "carousel",
904
+ "data-slot": "carousel",
905
+ ...props,
906
+ children
907
+ }
908
+ )
909
+ }
910
+ );
911
+ }
912
+ function CarouselContent({ className, ...props }) {
913
+ const { carouselRef, orientation } = useCarousel();
914
+ return /* @__PURE__ */ jsx(
915
+ "div",
916
+ {
917
+ ref: carouselRef,
918
+ className: "overflow-hidden",
919
+ "data-slot": "carousel-content",
920
+ children: /* @__PURE__ */ jsx(
921
+ "div",
922
+ {
923
+ className: cn(
924
+ "flex",
925
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
926
+ className
927
+ ),
928
+ ...props
929
+ }
930
+ )
931
+ }
932
+ );
933
+ }
934
+ function CarouselItem({ className, ...props }) {
935
+ const { orientation } = useCarousel();
936
+ return /* @__PURE__ */ jsx(
937
+ "div",
938
+ {
939
+ role: "group",
940
+ "aria-roledescription": "slide",
941
+ "data-slot": "carousel-item",
942
+ className: cn(
943
+ "min-w-0 shrink-0 grow-0 basis-full",
944
+ orientation === "horizontal" ? "pl-4" : "pt-4",
945
+ className
946
+ ),
947
+ ...props
948
+ }
949
+ );
950
+ }
951
+ function CarouselPrevious({
952
+ className,
953
+ variant = "outline",
954
+ size = "icon-sm",
955
+ ...props
956
+ }) {
957
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
958
+ return /* @__PURE__ */ jsxs(
959
+ Button,
960
+ {
961
+ "data-slot": "carousel-previous",
962
+ variant,
963
+ size,
964
+ className: cn(
965
+ "rounded-full absolute touch-manipulation",
966
+ orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
967
+ className
968
+ ),
969
+ disabled: !canScrollPrev,
970
+ onClick: scrollPrev,
971
+ ...props,
972
+ children: [
973
+ /* @__PURE__ */ jsx(
974
+ ChevronLeftIcon,
975
+ {}
976
+ ),
977
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Previous slide" })
978
+ ]
979
+ }
980
+ );
981
+ }
982
+ function CarouselNext({
983
+ className,
984
+ variant = "outline",
985
+ size = "icon-sm",
986
+ ...props
987
+ }) {
988
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
989
+ return /* @__PURE__ */ jsxs(
990
+ Button,
991
+ {
992
+ "data-slot": "carousel-next",
993
+ variant,
994
+ size,
995
+ className: cn(
996
+ "rounded-full absolute touch-manipulation",
997
+ orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
998
+ className
999
+ ),
1000
+ disabled: !canScrollNext,
1001
+ onClick: scrollNext,
1002
+ ...props,
1003
+ children: [
1004
+ /* @__PURE__ */ jsx(
1005
+ ChevronRightIcon,
1006
+ {}
1007
+ ),
1008
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Next slide" })
1009
+ ]
1010
+ }
1011
+ );
1012
+ }
1013
+ var THEMES = { light: "", dark: ".dark" };
1014
+ var ChartContext = React2.createContext(null);
1015
+ function useChart() {
1016
+ const context = React2.useContext(ChartContext);
1017
+ if (!context) {
1018
+ throw new Error("useChart must be used within a <ChartContainer />");
1019
+ }
1020
+ return context;
1021
+ }
1022
+ function ChartContainer({
1023
+ id,
1024
+ className,
1025
+ children,
1026
+ config,
1027
+ ...props
1028
+ }) {
1029
+ const uniqueId = React2.useId();
1030
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
1031
+ return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
1032
+ "div",
1033
+ {
1034
+ "data-slot": "chart",
1035
+ "data-chart": chartId,
1036
+ className: cn(
1037
+ "[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
1038
+ className
1039
+ ),
1040
+ ...props,
1041
+ children: [
1042
+ /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
1043
+ /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
1044
+ ]
1045
+ }
1046
+ ) });
1047
+ }
1048
+ var ChartStyle = ({ id, config }) => {
1049
+ const colorConfig = Object.entries(config).filter(
1050
+ ([, config2]) => config2.theme || config2.color
1051
+ );
1052
+ if (!colorConfig.length) {
1053
+ return null;
1054
+ }
1055
+ return /* @__PURE__ */ jsx(
1056
+ "style",
1057
+ {
1058
+ dangerouslySetInnerHTML: {
1059
+ __html: Object.entries(THEMES).map(
1060
+ ([theme, prefix]) => `
1061
+ ${prefix} [data-chart=${id}] {
1062
+ ${colorConfig.map(([key, itemConfig]) => {
1063
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
1064
+ return color ? ` --color-${key}: ${color};` : null;
1065
+ }).join("\n")}
1066
+ }
1067
+ `
1068
+ ).join("\n")
1069
+ }
1070
+ }
1071
+ );
1072
+ };
1073
+ var ChartTooltip = RechartsPrimitive.Tooltip;
1074
+ function ChartTooltipContent({
1075
+ active,
1076
+ payload,
1077
+ className,
1078
+ indicator = "dot",
1079
+ hideLabel = false,
1080
+ hideIndicator = false,
1081
+ label,
1082
+ labelFormatter,
1083
+ labelClassName,
1084
+ formatter,
1085
+ color,
1086
+ nameKey,
1087
+ labelKey
1088
+ }) {
1089
+ const { config } = useChart();
1090
+ const tooltipLabel = React2.useMemo(() => {
1091
+ if (hideLabel || !payload?.length) {
1092
+ return null;
1093
+ }
1094
+ const [item] = payload;
1095
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
1096
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1097
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
1098
+ if (labelFormatter) {
1099
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
1100
+ }
1101
+ if (!value) {
1102
+ return null;
1103
+ }
1104
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
1105
+ }, [
1106
+ label,
1107
+ labelFormatter,
1108
+ payload,
1109
+ hideLabel,
1110
+ labelClassName,
1111
+ config,
1112
+ labelKey
1113
+ ]);
1114
+ if (!active || !payload?.length) {
1115
+ return null;
1116
+ }
1117
+ const nestLabel = payload.length === 1 && indicator !== "dot";
1118
+ return /* @__PURE__ */ jsxs(
1119
+ "div",
1120
+ {
1121
+ className: cn(
1122
+ "border-border/50 bg-background gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs/relaxed shadow-xl grid min-w-[8rem] items-start",
1123
+ className
1124
+ ),
1125
+ children: [
1126
+ !nestLabel ? tooltipLabel : null,
1127
+ /* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
1128
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
1129
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1130
+ const indicatorColor = color || item.payload.fill || item.color;
1131
+ return /* @__PURE__ */ jsx(
1132
+ "div",
1133
+ {
1134
+ className: cn(
1135
+ "[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5",
1136
+ indicator === "dot" && "items-center"
1137
+ ),
1138
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
1139
+ itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
1140
+ "div",
1141
+ {
1142
+ className: cn(
1143
+ "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
1144
+ {
1145
+ "h-2.5 w-2.5": indicator === "dot",
1146
+ "w-1": indicator === "line",
1147
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
1148
+ "my-0.5": nestLabel && indicator === "dashed"
1149
+ }
1150
+ ),
1151
+ style: {
1152
+ "--color-bg": indicatorColor,
1153
+ "--color-border": indicatorColor
1154
+ }
1155
+ }
1156
+ ),
1157
+ /* @__PURE__ */ jsxs(
1158
+ "div",
1159
+ {
1160
+ className: cn(
1161
+ "flex flex-1 justify-between leading-none",
1162
+ nestLabel ? "items-end" : "items-center"
1163
+ ),
1164
+ children: [
1165
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
1166
+ nestLabel ? tooltipLabel : null,
1167
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
1168
+ ] }),
1169
+ item.value && /* @__PURE__ */ jsx("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
1170
+ ]
1171
+ }
1172
+ )
1173
+ ] })
1174
+ },
1175
+ item.dataKey
1176
+ );
1177
+ }) })
1178
+ ]
1179
+ }
1180
+ );
1181
+ }
1182
+ var ChartLegend = RechartsPrimitive.Legend;
1183
+ function ChartLegendContent({
1184
+ className,
1185
+ hideIcon = false,
1186
+ payload,
1187
+ verticalAlign = "bottom",
1188
+ nameKey
1189
+ }) {
1190
+ const { config } = useChart();
1191
+ if (!payload?.length) {
1192
+ return null;
1193
+ }
1194
+ return /* @__PURE__ */ jsx(
1195
+ "div",
1196
+ {
1197
+ className: cn(
1198
+ "flex items-center justify-center gap-4",
1199
+ verticalAlign === "top" ? "pb-3" : "pt-3",
1200
+ className
1201
+ ),
1202
+ children: payload.filter((item) => item.type !== "none").map((item) => {
1203
+ const key = `${nameKey || item.dataKey || "value"}`;
1204
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1205
+ return /* @__PURE__ */ jsxs(
1206
+ "div",
1207
+ {
1208
+ className: cn(
1209
+ "[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
1210
+ ),
1211
+ children: [
1212
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
1213
+ "div",
1214
+ {
1215
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
1216
+ style: {
1217
+ backgroundColor: item.color
1218
+ }
1219
+ }
1220
+ ),
1221
+ itemConfig?.label
1222
+ ]
1223
+ },
1224
+ item.value
1225
+ );
1226
+ })
1227
+ }
1228
+ );
1229
+ }
1230
+ function getPayloadConfigFromPayload(config, payload, key) {
1231
+ if (typeof payload !== "object" || payload === null) {
1232
+ return void 0;
1233
+ }
1234
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
1235
+ let configLabelKey = key;
1236
+ if (key in payload && typeof payload[key] === "string") {
1237
+ configLabelKey = payload[key];
1238
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
1239
+ configLabelKey = payloadPayload[key];
1240
+ }
1241
+ return configLabelKey in config ? config[configLabelKey] : config[key];
1242
+ }
1243
+ function Checkbox({
1244
+ className,
1245
+ ...props
1246
+ }) {
1247
+ return /* @__PURE__ */ jsx(
1248
+ Checkbox$1.Root,
1249
+ {
1250
+ "data-slot": "checkbox",
1251
+ className: cn(
1252
+ "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-[2px] aria-invalid:ring-[2px] peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50",
1253
+ className
1254
+ ),
1255
+ ...props,
1256
+ children: /* @__PURE__ */ jsx(
1257
+ Checkbox$1.Indicator,
1258
+ {
1259
+ "data-slot": "checkbox-indicator",
1260
+ className: "[&>svg]:size-3.5 grid place-content-center text-current transition-none",
1261
+ children: /* @__PURE__ */ jsx(
1262
+ CheckIcon,
1263
+ {}
1264
+ )
1265
+ }
1266
+ )
1267
+ }
1268
+ );
1269
+ }
1270
+ function Collapsible({
1271
+ ...props
1272
+ }) {
1273
+ return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
1274
+ }
1275
+ function CollapsibleTrigger({
1276
+ ...props
1277
+ }) {
1278
+ return /* @__PURE__ */ jsx(
1279
+ Collapsible$1.CollapsibleTrigger,
1280
+ {
1281
+ "data-slot": "collapsible-trigger",
1282
+ ...props
1283
+ }
1284
+ );
1285
+ }
1286
+ function CollapsibleContent({
1287
+ ...props
1288
+ }) {
1289
+ return /* @__PURE__ */ jsx(
1290
+ Collapsible$1.CollapsibleContent,
1291
+ {
1292
+ "data-slot": "collapsible-content",
1293
+ ...props
1294
+ }
1295
+ );
1296
+ }
1297
+ function Input({ className, type, ...props }) {
1298
+ return /* @__PURE__ */ jsx(
1299
+ "input",
1300
+ {
1301
+ type,
1302
+ "data-slot": "input",
1303
+ className: cn(
1304
+ "bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 rounded-md border px-2 py-0.5 text-sm transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
1305
+ className
1306
+ ),
1307
+ ...props
1308
+ }
1309
+ );
1310
+ }
1311
+ function Textarea({ className, ...props }) {
1312
+ return /* @__PURE__ */ jsx(
1313
+ "textarea",
1314
+ {
1315
+ "data-slot": "textarea",
1316
+ className: cn(
1317
+ "border-input bg-input/20 dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-md border px-2 py-2 text-sm transition-colors focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50",
1318
+ className
1319
+ ),
1320
+ ...props
1321
+ }
1322
+ );
1323
+ }
1324
+ function InputGroup({ className, ...props }) {
1325
+ return /* @__PURE__ */ jsx(
1326
+ "div",
1327
+ {
1328
+ "data-slot": "input-group",
1329
+ role: "group",
1330
+ className: cn(
1331
+ "border-input bg-input/20 dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-7 rounded-md border transition-colors has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:ring-[2px] has-[[data-slot][aria-invalid=true]]:ring-[2px] 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-[>[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 [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto",
1332
+ className
1333
+ ),
1334
+ ...props
1335
+ }
1336
+ );
1337
+ }
1338
+ var inputGroupAddonVariants = cva(
1339
+ "text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 h-auto gap-1 py-2 text-xs/relaxed font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5 flex cursor-text items-center justify-center select-none",
1340
+ {
1341
+ variants: {
1342
+ align: {
1343
+ "inline-start": "pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem] order-first",
1344
+ "inline-end": "pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem] order-last",
1345
+ "block-start": "px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start",
1346
+ "block-end": "px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start"
1347
+ }
1348
+ },
1349
+ defaultVariants: {
1350
+ align: "inline-start"
1351
+ }
1352
+ }
1353
+ );
1354
+ function InputGroupAddon({
1355
+ className,
1356
+ align = "inline-start",
1357
+ ...props
1358
+ }) {
1359
+ return /* @__PURE__ */ jsx(
1360
+ "div",
1361
+ {
1362
+ role: "group",
1363
+ "data-slot": "input-group-addon",
1364
+ "data-align": align,
1365
+ className: cn(inputGroupAddonVariants({ align }), className),
1366
+ onClick: (e) => {
1367
+ if (e.target.closest("button")) {
1368
+ return;
1369
+ }
1370
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
1371
+ },
1372
+ ...props
1373
+ }
1374
+ );
1375
+ }
1376
+ cva(
1377
+ "gap-2 rounded-md text-xs/relaxed shadow-none flex items-center",
1378
+ {
1379
+ variants: {
1380
+ size: {
1381
+ xs: "h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3",
1382
+ sm: "",
1383
+ "icon-xs": "size-6 p-0 has-[>svg]:p-0",
1384
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
1385
+ }
1386
+ },
1387
+ defaultVariants: {
1388
+ size: "xs"
1389
+ }
1390
+ }
1391
+ );
1392
+ var Combobox = Combobox$1.Root;
1393
+ function Dialog({
1394
+ ...props
1395
+ }) {
1396
+ return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "dialog", ...props });
1397
+ }
1398
+ function DialogTrigger({
1399
+ ...props
1400
+ }) {
1401
+ return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "dialog-trigger", ...props });
1402
+ }
1403
+ function DialogPortal({
1404
+ ...props
1405
+ }) {
1406
+ return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "dialog-portal", ...props });
1407
+ }
1408
+ function DialogOverlay({
1409
+ className,
1410
+ ...props
1411
+ }) {
1412
+ return /* @__PURE__ */ jsx(
1413
+ Dialog$1.Overlay,
1414
+ {
1415
+ "data-slot": "dialog-overlay",
1416
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50", className),
1417
+ ...props
1418
+ }
1419
+ );
1420
+ }
1421
+ function DialogContent({
1422
+ className,
1423
+ children,
1424
+ showCloseButton = true,
1425
+ ...props
1426
+ }) {
1427
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [
1428
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
1429
+ /* @__PURE__ */ jsxs(
1430
+ Dialog$1.Content,
1431
+ {
1432
+ "data-slot": "dialog-content",
1433
+ className: cn(
1434
+ "bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-xs/relaxed ring-1 duration-100 sm:max-w-sm fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2",
1435
+ className
1436
+ ),
1437
+ ...props,
1438
+ children: [
1439
+ children,
1440
+ showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "dialog-close", asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", className: "absolute top-2 right-2", size: "icon-sm", children: [
1441
+ /* @__PURE__ */ jsx(
1442
+ XIcon,
1443
+ {}
1444
+ ),
1445
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1446
+ ] }) })
1447
+ ]
1448
+ }
1449
+ )
1450
+ ] });
1451
+ }
1452
+ function DialogHeader({ className, ...props }) {
1453
+ return /* @__PURE__ */ jsx(
1454
+ "div",
1455
+ {
1456
+ "data-slot": "dialog-header",
1457
+ className: cn("gap-1 flex flex-col", className),
1458
+ ...props
1459
+ }
1460
+ );
1461
+ }
1462
+ function DialogFooter({
1463
+ className,
1464
+ showCloseButton = false,
1465
+ children,
1466
+ ...props
1467
+ }) {
1468
+ return /* @__PURE__ */ jsxs(
1469
+ "div",
1470
+ {
1471
+ "data-slot": "dialog-footer",
1472
+ className: cn(
1473
+ "gap-2 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
1474
+ className
1475
+ ),
1476
+ ...props,
1477
+ children: [
1478
+ children,
1479
+ showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", children: "Close" }) })
1480
+ ]
1481
+ }
1482
+ );
1483
+ }
1484
+ function DialogTitle({
1485
+ className,
1486
+ ...props
1487
+ }) {
1488
+ return /* @__PURE__ */ jsx(
1489
+ Dialog$1.Title,
1490
+ {
1491
+ "data-slot": "dialog-title",
1492
+ className: cn("text-sm font-medium", className),
1493
+ ...props
1494
+ }
1495
+ );
1496
+ }
1497
+ function DialogDescription({
1498
+ className,
1499
+ ...props
1500
+ }) {
1501
+ return /* @__PURE__ */ jsx(
1502
+ Dialog$1.Description,
1503
+ {
1504
+ "data-slot": "dialog-description",
1505
+ className: cn("text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed *:[a]:underline *:[a]:underline-offset-3", className),
1506
+ ...props
1507
+ }
1508
+ );
1509
+ }
1510
+ function Command({
1511
+ className,
1512
+ ...props
1513
+ }) {
1514
+ return /* @__PURE__ */ jsx(
1515
+ Command$1,
1516
+ {
1517
+ "data-slot": "command",
1518
+ className: cn(
1519
+ "bg-popover text-popover-foreground rounded-xl p-1 flex size-full flex-col overflow-hidden",
1520
+ className
1521
+ ),
1522
+ ...props
1523
+ }
1524
+ );
1525
+ }
1526
+ function CommandDialog({
1527
+ title = "Command Palette",
1528
+ description = "Search for a command to run...",
1529
+ children,
1530
+ className,
1531
+ showCloseButton = false,
1532
+ ...props
1533
+ }) {
1534
+ return /* @__PURE__ */ jsxs(Dialog, { ...props, children: [
1535
+ /* @__PURE__ */ jsxs(DialogHeader, { className: "sr-only", children: [
1536
+ /* @__PURE__ */ jsx(DialogTitle, { children: title }),
1537
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
1538
+ ] }),
1539
+ /* @__PURE__ */ jsx(
1540
+ DialogContent,
1541
+ {
1542
+ className: cn("rounded-xl! p-0 overflow-hidden p-0", className),
1543
+ showCloseButton,
1544
+ children
1545
+ }
1546
+ )
1547
+ ] });
1548
+ }
1549
+ function CommandInput({
1550
+ className,
1551
+ ...props
1552
+ }) {
1553
+ return /* @__PURE__ */ jsx("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0", children: /* @__PURE__ */ jsxs(InputGroup, { className: "bg-input/20 dark:bg-input/30 h-8!", children: [
1554
+ /* @__PURE__ */ jsx(
1555
+ Command$1.Input,
1556
+ {
1557
+ "data-slot": "command-input",
1558
+ className: cn(
1559
+ "w-full text-xs/relaxed outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
1560
+ className
1561
+ ),
1562
+ ...props
1563
+ }
1564
+ ),
1565
+ /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-3.5 shrink-0 opacity-50" }) })
1566
+ ] }) });
1567
+ }
1568
+ function CommandList({
1569
+ className,
1570
+ ...props
1571
+ }) {
1572
+ return /* @__PURE__ */ jsx(
1573
+ Command$1.List,
1574
+ {
1575
+ "data-slot": "command-list",
1576
+ className: cn(
1577
+ "no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto",
1578
+ className
1579
+ ),
1580
+ ...props
1581
+ }
1582
+ );
1583
+ }
1584
+ function CommandEmpty({
1585
+ className,
1586
+ ...props
1587
+ }) {
1588
+ return /* @__PURE__ */ jsx(
1589
+ Command$1.Empty,
1590
+ {
1591
+ "data-slot": "command-empty",
1592
+ className: cn("py-6 text-center text-xs/relaxed", className),
1593
+ ...props
1594
+ }
1595
+ );
1596
+ }
1597
+ function CommandGroup({
1598
+ className,
1599
+ ...props
1600
+ }) {
1601
+ return /* @__PURE__ */ jsx(
1602
+ Command$1.Group,
1603
+ {
1604
+ "data-slot": "command-group",
1605
+ className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
1606
+ ...props
1607
+ }
1608
+ );
1609
+ }
1610
+ function CommandSeparator({
1611
+ className,
1612
+ ...props
1613
+ }) {
1614
+ return /* @__PURE__ */ jsx(
1615
+ Command$1.Separator,
1616
+ {
1617
+ "data-slot": "command-separator",
1618
+ className: cn("bg-border/50 -mx-1 my-1 h-px", className),
1619
+ ...props
1620
+ }
1621
+ );
1622
+ }
1623
+ function CommandItem({
1624
+ className,
1625
+ children,
1626
+ ...props
1627
+ }) {
1628
+ return /* @__PURE__ */ jsxs(
1629
+ Command$1.Item,
1630
+ {
1631
+ "data-slot": "command-item",
1632
+ className: cn(
1633
+ "data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none [&_svg:not([class*='size-'])]:size-3.5 [[data-slot=dialog-content]_&]:rounded-md group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1634
+ className
1635
+ ),
1636
+ ...props,
1637
+ children: [
1638
+ children,
1639
+ /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto opacity-0 group-has-[[data-slot=command-shortcut]]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })
1640
+ ]
1641
+ }
1642
+ );
1643
+ }
1644
+ function CommandShortcut({
1645
+ className,
1646
+ ...props
1647
+ }) {
1648
+ return /* @__PURE__ */ jsx(
1649
+ "span",
1650
+ {
1651
+ "data-slot": "command-shortcut",
1652
+ className: cn("text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-[0.625rem] tracking-widest", className),
1653
+ ...props
1654
+ }
1655
+ );
1656
+ }
1657
+ function ContextMenu({
1658
+ ...props
1659
+ }) {
1660
+ return /* @__PURE__ */ jsx(ContextMenu$1.Root, { "data-slot": "context-menu", ...props });
1661
+ }
1662
+ function ContextMenuTrigger({
1663
+ className,
1664
+ ...props
1665
+ }) {
1666
+ return /* @__PURE__ */ jsx(
1667
+ ContextMenu$1.Trigger,
1668
+ {
1669
+ "data-slot": "context-menu-trigger",
1670
+ className: cn("select-none", className),
1671
+ ...props
1672
+ }
1673
+ );
1674
+ }
1675
+ function ContextMenuGroup({
1676
+ ...props
1677
+ }) {
1678
+ return /* @__PURE__ */ jsx(ContextMenu$1.Group, { "data-slot": "context-menu-group", ...props });
1679
+ }
1680
+ function ContextMenuPortal({
1681
+ ...props
1682
+ }) {
1683
+ return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { "data-slot": "context-menu-portal", ...props });
1684
+ }
1685
+ function ContextMenuSub({
1686
+ ...props
1687
+ }) {
1688
+ return /* @__PURE__ */ jsx(ContextMenu$1.Sub, { "data-slot": "context-menu-sub", ...props });
1689
+ }
1690
+ function ContextMenuRadioGroup({
1691
+ ...props
1692
+ }) {
1693
+ return /* @__PURE__ */ jsx(
1694
+ ContextMenu$1.RadioGroup,
1695
+ {
1696
+ "data-slot": "context-menu-radio-group",
1697
+ ...props
1698
+ }
1699
+ );
1700
+ }
1701
+ function ContextMenuContent({
1702
+ className,
1703
+ ...props
1704
+ }) {
1705
+ return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
1706
+ ContextMenu$1.Content,
1707
+ {
1708
+ "data-slot": "context-menu-content",
1709
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto", className),
1710
+ ...props
1711
+ }
1712
+ ) });
1713
+ }
1714
+ function ContextMenuItem({
1715
+ className,
1716
+ inset,
1717
+ variant = "default",
1718
+ ...props
1719
+ }) {
1720
+ return /* @__PURE__ */ jsx(
1721
+ ContextMenu$1.Item,
1722
+ {
1723
+ "data-slot": "context-menu-item",
1724
+ "data-inset": inset,
1725
+ "data-variant": variant,
1726
+ className: cn(
1727
+ "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 not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed [&_svg:not([class*='size-'])]:size-3.5 group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1728
+ className
1729
+ ),
1730
+ ...props
1731
+ }
1732
+ );
1733
+ }
1734
+ function ContextMenuSubTrigger({
1735
+ className,
1736
+ inset,
1737
+ children,
1738
+ ...props
1739
+ }) {
1740
+ return /* @__PURE__ */ jsxs(
1741
+ ContextMenu$1.SubTrigger,
1742
+ {
1743
+ "data-slot": "context-menu-sub-trigger",
1744
+ "data-inset": inset,
1745
+ className: cn(
1746
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs [&_svg:not([class*='size-'])]:size-3.5 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1747
+ className
1748
+ ),
1749
+ ...props,
1750
+ children: [
1751
+ children,
1752
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
1753
+ ]
1754
+ }
1755
+ );
1756
+ }
1757
+ function ContextMenuSubContent({
1758
+ className,
1759
+ ...props
1760
+ }) {
1761
+ return /* @__PURE__ */ jsx(
1762
+ ContextMenu$1.SubContent,
1763
+ {
1764
+ "data-slot": "context-menu-sub-content",
1765
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 origin-(--radix-context-menu-content-transform-origin) overflow-hidden", className),
1766
+ ...props
1767
+ }
1768
+ );
1769
+ }
1770
+ function ContextMenuCheckboxItem({
1771
+ className,
1772
+ children,
1773
+ checked,
1774
+ ...props
1775
+ }) {
1776
+ return /* @__PURE__ */ jsxs(
1777
+ ContextMenu$1.CheckboxItem,
1778
+ {
1779
+ "data-slot": "context-menu-checkbox-item",
1780
+ className: cn(
1781
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-3.5 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1782
+ className
1783
+ ),
1784
+ checked,
1785
+ ...props,
1786
+ children: [
1787
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
1788
+ CheckIcon,
1789
+ {}
1790
+ ) }) }),
1791
+ children
1792
+ ]
1793
+ }
1794
+ );
1795
+ }
1796
+ function ContextMenuRadioItem({
1797
+ className,
1798
+ children,
1799
+ ...props
1800
+ }) {
1801
+ return /* @__PURE__ */ jsxs(
1802
+ ContextMenu$1.RadioItem,
1803
+ {
1804
+ "data-slot": "context-menu-radio-item",
1805
+ className: cn(
1806
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-3.5 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1807
+ className
1808
+ ),
1809
+ ...props,
1810
+ children: [
1811
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
1812
+ CheckIcon,
1813
+ {}
1814
+ ) }) }),
1815
+ children
1816
+ ]
1817
+ }
1818
+ );
1819
+ }
1820
+ function ContextMenuLabel({
1821
+ className,
1822
+ inset,
1823
+ ...props
1824
+ }) {
1825
+ return /* @__PURE__ */ jsx(
1826
+ ContextMenu$1.Label,
1827
+ {
1828
+ "data-slot": "context-menu-label",
1829
+ "data-inset": inset,
1830
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs data-[inset]:pl-8", className),
1831
+ ...props
1832
+ }
1833
+ );
1834
+ }
1835
+ function ContextMenuSeparator({
1836
+ className,
1837
+ ...props
1838
+ }) {
1839
+ return /* @__PURE__ */ jsx(
1840
+ ContextMenu$1.Separator,
1841
+ {
1842
+ "data-slot": "context-menu-separator",
1843
+ className: cn("bg-border/50 -mx-1 my-1 h-px", className),
1844
+ ...props
1845
+ }
1846
+ );
1847
+ }
1848
+ function ContextMenuShortcut({
1849
+ className,
1850
+ ...props
1851
+ }) {
1852
+ return /* @__PURE__ */ jsx(
1853
+ "span",
1854
+ {
1855
+ "data-slot": "context-menu-shortcut",
1856
+ className: cn("text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-[0.625rem] tracking-widest", className),
1857
+ ...props
1858
+ }
1859
+ );
1860
+ }
1861
+ function Drawer({
1862
+ ...props
1863
+ }) {
1864
+ return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
1865
+ }
1866
+ function DrawerTrigger({
1867
+ ...props
1868
+ }) {
1869
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
1870
+ }
1871
+ function DrawerPortal({
1872
+ ...props
1873
+ }) {
1874
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
1875
+ }
1876
+ function DrawerClose({
1877
+ ...props
1878
+ }) {
1879
+ return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
1880
+ }
1881
+ function DrawerOverlay({
1882
+ className,
1883
+ ...props
1884
+ }) {
1885
+ return /* @__PURE__ */ jsx(
1886
+ Drawer$1.Overlay,
1887
+ {
1888
+ "data-slot": "drawer-overlay",
1889
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
1890
+ ...props
1891
+ }
1892
+ );
1893
+ }
1894
+ function DrawerContent({
1895
+ className,
1896
+ children,
1897
+ ...props
1898
+ }) {
1899
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
1900
+ /* @__PURE__ */ jsx(DrawerOverlay, {}),
1901
+ /* @__PURE__ */ jsxs(
1902
+ Drawer$1.Content,
1903
+ {
1904
+ "data-slot": "drawer-content",
1905
+ className: cn(
1906
+ "before:bg-background relative flex h-auto flex-col bg-transparent p-2 text-xs/relaxed before:absolute before:inset-2 before:-z-10 before:rounded-xl data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm group/drawer-content fixed z-50",
1907
+ className
1908
+ ),
1909
+ ...props,
1910
+ children: [
1911
+ /* @__PURE__ */ jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block bg-muted mx-auto hidden shrink-0 group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
1912
+ children
1913
+ ]
1914
+ }
1915
+ )
1916
+ ] });
1917
+ }
1918
+ function DrawerHeader({ className, ...props }) {
1919
+ return /* @__PURE__ */ jsx(
1920
+ "div",
1921
+ {
1922
+ "data-slot": "drawer-header",
1923
+ className: cn("gap-1 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:text-left flex flex-col", className),
1924
+ ...props
1925
+ }
1926
+ );
1927
+ }
1928
+ function DrawerFooter({ className, ...props }) {
1929
+ return /* @__PURE__ */ jsx(
1930
+ "div",
1931
+ {
1932
+ "data-slot": "drawer-footer",
1933
+ className: cn("gap-2 p-4 mt-auto flex flex-col", className),
1934
+ ...props
1935
+ }
1936
+ );
1937
+ }
1938
+ function DrawerTitle({
1939
+ className,
1940
+ ...props
1941
+ }) {
1942
+ return /* @__PURE__ */ jsx(
1943
+ Drawer$1.Title,
1944
+ {
1945
+ "data-slot": "drawer-title",
1946
+ className: cn("text-foreground text-sm font-medium", className),
1947
+ ...props
1948
+ }
1949
+ );
1950
+ }
1951
+ function DrawerDescription({
1952
+ className,
1953
+ ...props
1954
+ }) {
1955
+ return /* @__PURE__ */ jsx(
1956
+ Drawer$1.Description,
1957
+ {
1958
+ "data-slot": "drawer-description",
1959
+ className: cn("text-muted-foreground text-xs/relaxed", className),
1960
+ ...props
1961
+ }
1962
+ );
1963
+ }
1964
+ function DropdownMenu({
1965
+ ...props
1966
+ }) {
1967
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Root, { "data-slot": "dropdown-menu", ...props });
1968
+ }
1969
+ function DropdownMenuPortal({
1970
+ ...props
1971
+ }) {
1972
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { "data-slot": "dropdown-menu-portal", ...props });
1973
+ }
1974
+ function DropdownMenuTrigger({
1975
+ ...props
1976
+ }) {
1977
+ return /* @__PURE__ */ jsx(
1978
+ DropdownMenu$1.Trigger,
1979
+ {
1980
+ "data-slot": "dropdown-menu-trigger",
1981
+ ...props
1982
+ }
1983
+ );
1984
+ }
1985
+ function DropdownMenuContent({
1986
+ className,
1987
+ align = "start",
1988
+ sideOffset = 4,
1989
+ ...props
1990
+ }) {
1991
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { children: /* @__PURE__ */ jsx(
1992
+ DropdownMenu$1.Content,
1993
+ {
1994
+ "data-slot": "dropdown-menu-content",
1995
+ sideOffset,
1996
+ align,
1997
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden", className),
1998
+ ...props
1999
+ }
2000
+ ) });
2001
+ }
2002
+ function DropdownMenuGroup({
2003
+ ...props
2004
+ }) {
2005
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Group, { "data-slot": "dropdown-menu-group", ...props });
2006
+ }
2007
+ function DropdownMenuItem({
2008
+ className,
2009
+ inset,
2010
+ variant = "default",
2011
+ ...props
2012
+ }) {
2013
+ return /* @__PURE__ */ jsx(
2014
+ DropdownMenu$1.Item,
2015
+ {
2016
+ "data-slot": "dropdown-menu-item",
2017
+ "data-inset": inset,
2018
+ "data-variant": variant,
2019
+ className: cn(
2020
+ "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 not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed [&_svg:not([class*='size-'])]:size-3.5 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2021
+ className
2022
+ ),
2023
+ ...props
2024
+ }
2025
+ );
2026
+ }
2027
+ function DropdownMenuCheckboxItem({
2028
+ className,
2029
+ children,
2030
+ checked,
2031
+ ...props
2032
+ }) {
2033
+ return /* @__PURE__ */ jsxs(
2034
+ DropdownMenu$1.CheckboxItem,
2035
+ {
2036
+ "data-slot": "dropdown-menu-checkbox-item",
2037
+ className: cn(
2038
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-3.5 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2039
+ className
2040
+ ),
2041
+ checked,
2042
+ ...props,
2043
+ children: [
2044
+ /* @__PURE__ */ jsx(
2045
+ "span",
2046
+ {
2047
+ className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none",
2048
+ "data-slot": "dropdown-menu-checkbox-item-indicator",
2049
+ children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
2050
+ CheckIcon,
2051
+ {}
2052
+ ) })
2053
+ }
2054
+ ),
2055
+ children
2056
+ ]
2057
+ }
2058
+ );
2059
+ }
2060
+ function DropdownMenuRadioGroup({
2061
+ ...props
2062
+ }) {
2063
+ return /* @__PURE__ */ jsx(
2064
+ DropdownMenu$1.RadioGroup,
2065
+ {
2066
+ "data-slot": "dropdown-menu-radio-group",
2067
+ ...props
2068
+ }
2069
+ );
2070
+ }
2071
+ function DropdownMenuRadioItem({
2072
+ className,
2073
+ children,
2074
+ ...props
2075
+ }) {
2076
+ return /* @__PURE__ */ jsxs(
2077
+ DropdownMenu$1.RadioItem,
2078
+ {
2079
+ "data-slot": "dropdown-menu-radio-item",
2080
+ className: cn(
2081
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-3.5 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2082
+ className
2083
+ ),
2084
+ ...props,
2085
+ children: [
2086
+ /* @__PURE__ */ jsx(
2087
+ "span",
2088
+ {
2089
+ className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none",
2090
+ "data-slot": "dropdown-menu-radio-item-indicator",
2091
+ children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
2092
+ CheckIcon,
2093
+ {}
2094
+ ) })
2095
+ }
2096
+ ),
2097
+ children
2098
+ ]
2099
+ }
2100
+ );
2101
+ }
2102
+ function DropdownMenuLabel({
2103
+ className,
2104
+ inset,
2105
+ ...props
2106
+ }) {
2107
+ return /* @__PURE__ */ jsx(
2108
+ DropdownMenu$1.Label,
2109
+ {
2110
+ "data-slot": "dropdown-menu-label",
2111
+ "data-inset": inset,
2112
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs data-[inset]:pl-8", className),
2113
+ ...props
2114
+ }
2115
+ );
2116
+ }
2117
+ function DropdownMenuSeparator({
2118
+ className,
2119
+ ...props
2120
+ }) {
2121
+ return /* @__PURE__ */ jsx(
2122
+ DropdownMenu$1.Separator,
2123
+ {
2124
+ "data-slot": "dropdown-menu-separator",
2125
+ className: cn("bg-border/50 -mx-1 my-1 h-px", className),
2126
+ ...props
2127
+ }
2128
+ );
2129
+ }
2130
+ function DropdownMenuShortcut({
2131
+ className,
2132
+ ...props
2133
+ }) {
2134
+ return /* @__PURE__ */ jsx(
2135
+ "span",
2136
+ {
2137
+ "data-slot": "dropdown-menu-shortcut",
2138
+ className: cn("text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-[0.625rem] tracking-widest", className),
2139
+ ...props
2140
+ }
2141
+ );
2142
+ }
2143
+ function DropdownMenuSub({
2144
+ ...props
2145
+ }) {
2146
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Sub, { "data-slot": "dropdown-menu-sub", ...props });
2147
+ }
2148
+ function DropdownMenuSubTrigger({
2149
+ className,
2150
+ inset,
2151
+ children,
2152
+ ...props
2153
+ }) {
2154
+ return /* @__PURE__ */ jsxs(
2155
+ DropdownMenu$1.SubTrigger,
2156
+ {
2157
+ "data-slot": "dropdown-menu-sub-trigger",
2158
+ "data-inset": inset,
2159
+ className: cn(
2160
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs [&_svg:not([class*='size-'])]:size-3.5 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2161
+ className
2162
+ ),
2163
+ ...props,
2164
+ children: [
2165
+ children,
2166
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
2167
+ ]
2168
+ }
2169
+ );
2170
+ }
2171
+ function DropdownMenuSubContent({
2172
+ className,
2173
+ ...props
2174
+ }) {
2175
+ return /* @__PURE__ */ jsx(
2176
+ DropdownMenu$1.SubContent,
2177
+ {
2178
+ "data-slot": "dropdown-menu-sub-content",
2179
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden", className),
2180
+ ...props
2181
+ }
2182
+ );
2183
+ }
2184
+ function Empty({ className, ...props }) {
2185
+ return /* @__PURE__ */ jsx(
2186
+ "div",
2187
+ {
2188
+ "data-slot": "empty",
2189
+ className: cn(
2190
+ "gap-4 rounded-xl border-dashed p-6 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance",
2191
+ className
2192
+ ),
2193
+ ...props
2194
+ }
2195
+ );
2196
+ }
2197
+ cva(
2198
+ "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
2199
+ {
2200
+ variants: {
2201
+ variant: {
2202
+ default: "bg-transparent",
2203
+ icon: "bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-md [&_svg:not([class*='size-'])]:size-4"
2204
+ }
2205
+ },
2206
+ defaultVariants: {
2207
+ variant: "default"
2208
+ }
2209
+ }
2210
+ );
2211
+ function Label({
2212
+ className,
2213
+ ...props
2214
+ }) {
2215
+ return /* @__PURE__ */ jsx(
2216
+ Label$1.Root,
2217
+ {
2218
+ "data-slot": "label",
2219
+ className: cn(
2220
+ "gap-2 text-xs/relaxed leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed",
2221
+ className
2222
+ ),
2223
+ ...props
2224
+ }
2225
+ );
2226
+ }
2227
+ function FieldGroup({ className, ...props }) {
2228
+ return /* @__PURE__ */ jsx(
2229
+ "div",
2230
+ {
2231
+ "data-slot": "field-group",
2232
+ className: cn(
2233
+ "gap-4 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col",
2234
+ className
2235
+ ),
2236
+ ...props
2237
+ }
2238
+ );
2239
+ }
2240
+ var fieldVariants = cva("data-[invalid=true]:text-destructive gap-2 group/field flex w-full", {
2241
+ variants: {
2242
+ orientation: {
2243
+ vertical: "flex-col [&>*]:w-full [&>.sr-only]:w-auto",
2244
+ horizontal: "flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
2245
+ responsive: "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
2246
+ }
2247
+ },
2248
+ defaultVariants: {
2249
+ orientation: "vertical"
2250
+ }
2251
+ });
2252
+ function Field({
2253
+ className,
2254
+ orientation = "vertical",
2255
+ ...props
2256
+ }) {
2257
+ return /* @__PURE__ */ jsx(
2258
+ "div",
2259
+ {
2260
+ role: "group",
2261
+ "data-slot": "field",
2262
+ "data-orientation": orientation,
2263
+ className: cn(fieldVariants({ orientation }), className),
2264
+ ...props
2265
+ }
2266
+ );
2267
+ }
2268
+ function FieldLabel({
2269
+ className,
2270
+ ...props
2271
+ }) {
2272
+ return /* @__PURE__ */ jsx(
2273
+ Label,
2274
+ {
2275
+ "data-slot": "field-label",
2276
+ className: cn(
2277
+ "has-data-checked:bg-primary/5 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-2 group/field-label peer/field-label flex w-fit leading-snug",
2278
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
2279
+ className
2280
+ ),
2281
+ ...props
2282
+ }
2283
+ );
2284
+ }
2285
+ function FieldDescription({ className, ...props }) {
2286
+ return /* @__PURE__ */ jsx(
2287
+ "p",
2288
+ {
2289
+ "data-slot": "field-description",
2290
+ className: cn(
2291
+ "text-muted-foreground text-left text-xs/relaxed [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
2292
+ "last:mt-0 nth-last-2:-mt-1",
2293
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
2294
+ className
2295
+ ),
2296
+ ...props
2297
+ }
2298
+ );
2299
+ }
2300
+ function FieldError({
2301
+ className,
2302
+ children,
2303
+ errors,
2304
+ ...props
2305
+ }) {
2306
+ const content = useMemo(() => {
2307
+ if (children) {
2308
+ return children;
2309
+ }
2310
+ if (!errors?.length) {
2311
+ return null;
2312
+ }
2313
+ const uniqueErrors = [
2314
+ ...new Map(errors.map((error) => [error?.message, error])).values()
2315
+ ];
2316
+ if (uniqueErrors?.length == 1) {
2317
+ return uniqueErrors[0]?.message;
2318
+ }
2319
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
2320
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
2321
+ ) });
2322
+ }, [children, errors]);
2323
+ if (!content) {
2324
+ return null;
2325
+ }
2326
+ return /* @__PURE__ */ jsx(
2327
+ "div",
2328
+ {
2329
+ role: "alert",
2330
+ "data-slot": "field-error",
2331
+ className: cn("text-destructive text-xs/relaxed font-normal", className),
2332
+ ...props,
2333
+ children: content
2334
+ }
2335
+ );
2336
+ }
2337
+ function HoverCard({
2338
+ ...props
2339
+ }) {
2340
+ return /* @__PURE__ */ jsx(HoverCard$1.Root, { "data-slot": "hover-card", ...props });
2341
+ }
2342
+ function HoverCardTrigger({
2343
+ ...props
2344
+ }) {
2345
+ return /* @__PURE__ */ jsx(HoverCard$1.Trigger, { "data-slot": "hover-card-trigger", ...props });
2346
+ }
2347
+ function HoverCardContent({
2348
+ className,
2349
+ align = "center",
2350
+ sideOffset = 4,
2351
+ ...props
2352
+ }) {
2353
+ return /* @__PURE__ */ jsx(HoverCard$1.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
2354
+ HoverCard$1.Content,
2355
+ {
2356
+ "data-slot": "hover-card-content",
2357
+ align,
2358
+ sideOffset,
2359
+ className: cn(
2360
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground w-72 rounded-lg p-2.5 text-xs/relaxed shadow-md ring-1 duration-100 z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden",
2361
+ className
2362
+ ),
2363
+ ...props
2364
+ }
2365
+ ) });
2366
+ }
2367
+ function InputOTP({
2368
+ className,
2369
+ containerClassName,
2370
+ ...props
2371
+ }) {
2372
+ return /* @__PURE__ */ jsx(
2373
+ OTPInput,
2374
+ {
2375
+ "data-slot": "input-otp",
2376
+ containerClassName: cn(
2377
+ "cn-input-otp flex items-center has-disabled:opacity-50",
2378
+ containerClassName
2379
+ ),
2380
+ spellCheck: false,
2381
+ className: cn(
2382
+ "disabled:cursor-not-allowed",
2383
+ className
2384
+ ),
2385
+ ...props
2386
+ }
2387
+ );
2388
+ }
2389
+ function InputOTPGroup({ className, ...props }) {
2390
+ return /* @__PURE__ */ jsx(
2391
+ "div",
2392
+ {
2393
+ "data-slot": "input-otp-group",
2394
+ className: cn("has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-md has-aria-invalid:ring-[2px] flex items-center", className),
2395
+ ...props
2396
+ }
2397
+ );
2398
+ }
2399
+ function InputOTPSlot({
2400
+ index,
2401
+ className,
2402
+ ...props
2403
+ }) {
2404
+ const inputOTPContext = React2.useContext(OTPInputContext);
2405
+ const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
2406
+ return /* @__PURE__ */ jsxs(
2407
+ "div",
2408
+ {
2409
+ "data-slot": "input-otp-slot",
2410
+ "data-active": isActive,
2411
+ className: cn(
2412
+ "bg-input/20 dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/30 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-7 border-y border-r text-xs/relaxed transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-[2px] relative flex items-center justify-center data-[active=true]:z-10",
2413
+ className
2414
+ ),
2415
+ ...props,
2416
+ children: [
2417
+ char,
2418
+ hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000 bg-foreground h-4 w-px" }) })
2419
+ ]
2420
+ }
2421
+ );
2422
+ }
2423
+ function InputOTPSeparator({ ...props }) {
2424
+ return /* @__PURE__ */ jsx(
2425
+ "div",
2426
+ {
2427
+ "data-slot": "input-otp-separator",
2428
+ className: "[&_svg:not([class*='size-'])]:size-4 flex items-center",
2429
+ role: "separator",
2430
+ ...props,
2431
+ children: /* @__PURE__ */ jsx(
2432
+ MinusIcon,
2433
+ {}
2434
+ )
2435
+ }
2436
+ );
2437
+ }
2438
+ var itemVariants = cva(
2439
+ "[a]:hover:bg-muted rounded-md border text-xs/relaxed w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors",
2440
+ {
2441
+ variants: {
2442
+ variant: {
2443
+ default: "border-transparent",
2444
+ outline: "border-border",
2445
+ muted: "bg-muted/50 border-transparent"
2446
+ },
2447
+ size: {
2448
+ default: "gap-2.5 px-3 py-2.5",
2449
+ sm: "gap-2.5 px-3 py-2.5",
2450
+ xs: "gap-2.5 px-2.5 py-2 [[data-slot=dropdown-menu-content]_&]:p-0"
2451
+ }
2452
+ },
2453
+ defaultVariants: {
2454
+ variant: "default",
2455
+ size: "default"
2456
+ }
2457
+ }
2458
+ );
2459
+ function Item({
2460
+ className,
2461
+ variant = "default",
2462
+ size = "default",
2463
+ asChild = false,
2464
+ ...props
2465
+ }) {
2466
+ const Comp = asChild ? Slot.Root : "div";
2467
+ return /* @__PURE__ */ jsx(
2468
+ Comp,
2469
+ {
2470
+ "data-slot": "item",
2471
+ "data-variant": variant,
2472
+ "data-size": size,
2473
+ className: cn(itemVariants({ variant, size, className })),
2474
+ ...props
2475
+ }
2476
+ );
2477
+ }
2478
+ cva(
2479
+ "gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none",
2480
+ {
2481
+ variants: {
2482
+ variant: {
2483
+ default: "bg-transparent",
2484
+ icon: "[&_svg:not([class*='size-'])]:size-4",
2485
+ 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"
2486
+ }
2487
+ },
2488
+ defaultVariants: {
2489
+ variant: "default"
2490
+ }
2491
+ }
2492
+ );
2493
+ function Kbd({ className, ...props }) {
2494
+ return /* @__PURE__ */ jsx(
2495
+ "kbd",
2496
+ {
2497
+ "data-slot": "kbd",
2498
+ className: cn(
2499
+ "bg-muted text-muted-foreground [[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-xs px-1 font-sans text-[0.625rem] font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none",
2500
+ className
2501
+ ),
2502
+ ...props
2503
+ }
2504
+ );
2505
+ }
2506
+ function Menubar({
2507
+ className,
2508
+ ...props
2509
+ }) {
2510
+ return /* @__PURE__ */ jsx(
2511
+ Menubar$1.Root,
2512
+ {
2513
+ "data-slot": "menubar",
2514
+ className: cn("bg-background h-9 rounded-md border p-1 flex items-center", className),
2515
+ ...props
2516
+ }
2517
+ );
2518
+ }
2519
+ function MenubarMenu({
2520
+ ...props
2521
+ }) {
2522
+ return /* @__PURE__ */ jsx(Menubar$1.Menu, { "data-slot": "menubar-menu", ...props });
2523
+ }
2524
+ function MenubarGroup({
2525
+ ...props
2526
+ }) {
2527
+ return /* @__PURE__ */ jsx(Menubar$1.Group, { "data-slot": "menubar-group", ...props });
2528
+ }
2529
+ function MenubarPortal({
2530
+ ...props
2531
+ }) {
2532
+ return /* @__PURE__ */ jsx(Menubar$1.Portal, { "data-slot": "menubar-portal", ...props });
2533
+ }
2534
+ function MenubarRadioGroup({
2535
+ ...props
2536
+ }) {
2537
+ return /* @__PURE__ */ jsx(Menubar$1.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
2538
+ }
2539
+ function MenubarTrigger({
2540
+ className,
2541
+ ...props
2542
+ }) {
2543
+ return /* @__PURE__ */ jsx(
2544
+ Menubar$1.Trigger,
2545
+ {
2546
+ "data-slot": "menubar-trigger",
2547
+ className: cn(
2548
+ "hover:bg-muted aria-expanded:bg-muted rounded-[calc(var(--radius-sm)-2px)] px-2 py-[calc(--spacing(0.875))] text-xs/relaxed font-medium flex items-center outline-hidden select-none",
2549
+ className
2550
+ ),
2551
+ ...props
2552
+ }
2553
+ );
2554
+ }
2555
+ function MenubarContent({
2556
+ className,
2557
+ align = "start",
2558
+ alignOffset = -4,
2559
+ sideOffset = 8,
2560
+ ...props
2561
+ }) {
2562
+ return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
2563
+ Menubar$1.Content,
2564
+ {
2565
+ "data-slot": "menubar-content",
2566
+ align,
2567
+ alignOffset,
2568
+ sideOffset,
2569
+ className: cn("bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-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 ring-foreground/10 min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden", className),
2570
+ ...props
2571
+ }
2572
+ ) });
2573
+ }
2574
+ function MenubarItem({
2575
+ className,
2576
+ inset,
2577
+ variant = "default",
2578
+ ...props
2579
+ }) {
2580
+ return /* @__PURE__ */ jsx(
2581
+ Menubar$1.Item,
2582
+ {
2583
+ "data-slot": "menubar-item",
2584
+ "data-inset": inset,
2585
+ "data-variant": variant,
2586
+ className: cn(
2587
+ "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 not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-3.5 group/menubar-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2588
+ className
2589
+ ),
2590
+ ...props
2591
+ }
2592
+ );
2593
+ }
2594
+ function MenubarCheckboxItem({
2595
+ className,
2596
+ children,
2597
+ checked,
2598
+ ...props
2599
+ }) {
2600
+ return /* @__PURE__ */ jsxs(
2601
+ Menubar$1.CheckboxItem,
2602
+ {
2603
+ "data-slot": "menubar-checkbox-item",
2604
+ className: cn(
2605
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-2 pl-8 text-xs data-disabled:opacity-50 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2606
+ className
2607
+ ),
2608
+ checked,
2609
+ ...props,
2610
+ children: [
2611
+ /* @__PURE__ */ jsx("span", { className: "left-2 size-4 [&_svg:not([class*='size-'])]:size-4 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
2612
+ CheckIcon,
2613
+ {}
2614
+ ) }) }),
2615
+ children
2616
+ ]
2617
+ }
2618
+ );
2619
+ }
2620
+ function MenubarRadioItem({
2621
+ className,
2622
+ children,
2623
+ ...props
2624
+ }) {
2625
+ return /* @__PURE__ */ jsxs(
2626
+ Menubar$1.RadioItem,
2627
+ {
2628
+ "data-slot": "menubar-radio-item",
2629
+ className: cn(
2630
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-2 pl-8 text-xs data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-3.5 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2631
+ className
2632
+ ),
2633
+ ...props,
2634
+ children: [
2635
+ /* @__PURE__ */ jsx("span", { className: "left-2 size-4 [&_svg:not([class*='size-'])]:size-4 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
2636
+ CheckIcon,
2637
+ {}
2638
+ ) }) }),
2639
+ children
2640
+ ]
2641
+ }
2642
+ );
2643
+ }
2644
+ function MenubarLabel({
2645
+ className,
2646
+ inset,
2647
+ ...props
2648
+ }) {
2649
+ return /* @__PURE__ */ jsx(
2650
+ Menubar$1.Label,
2651
+ {
2652
+ "data-slot": "menubar-label",
2653
+ "data-inset": inset,
2654
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs data-[inset]:pl-8", className),
2655
+ ...props
2656
+ }
2657
+ );
2658
+ }
2659
+ function MenubarSeparator({
2660
+ className,
2661
+ ...props
2662
+ }) {
2663
+ return /* @__PURE__ */ jsx(
2664
+ Menubar$1.Separator,
2665
+ {
2666
+ "data-slot": "menubar-separator",
2667
+ className: cn("bg-border/50 -mx-1 my-1 h-px -mx-1 my-1 h-px", className),
2668
+ ...props
2669
+ }
2670
+ );
2671
+ }
2672
+ function MenubarShortcut({
2673
+ className,
2674
+ ...props
2675
+ }) {
2676
+ return /* @__PURE__ */ jsx(
2677
+ "span",
2678
+ {
2679
+ "data-slot": "menubar-shortcut",
2680
+ className: cn("text-muted-foreground group-focus/menubar-item:text-accent-foreground text-[0.625rem] tracking-widest ml-auto", className),
2681
+ ...props
2682
+ }
2683
+ );
2684
+ }
2685
+ function MenubarSub({
2686
+ ...props
2687
+ }) {
2688
+ return /* @__PURE__ */ jsx(Menubar$1.Sub, { "data-slot": "menubar-sub", ...props });
2689
+ }
2690
+ function MenubarSubTrigger({
2691
+ className,
2692
+ inset,
2693
+ children,
2694
+ ...props
2695
+ }) {
2696
+ return /* @__PURE__ */ jsxs(
2697
+ Menubar$1.SubTrigger,
2698
+ {
2699
+ "data-slot": "menubar-sub-trigger",
2700
+ "data-inset": inset,
2701
+ className: cn(
2702
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-3.5 flex cursor-default items-center outline-none select-none",
2703
+ className
2704
+ ),
2705
+ ...props,
2706
+ children: [
2707
+ children,
2708
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto size-4" })
2709
+ ]
2710
+ }
2711
+ );
2712
+ }
2713
+ function MenubarSubContent({
2714
+ className,
2715
+ ...props
2716
+ }) {
2717
+ return /* @__PURE__ */ jsx(
2718
+ Menubar$1.SubContent,
2719
+ {
2720
+ "data-slot": "menubar-sub-content",
2721
+ className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden", className),
2722
+ ...props
2723
+ }
2724
+ );
2725
+ }
2726
+ function NavigationMenu({
2727
+ className,
2728
+ children,
2729
+ viewport = true,
2730
+ ...props
2731
+ }) {
2732
+ return /* @__PURE__ */ jsxs(
2733
+ NavigationMenu$1.Root,
2734
+ {
2735
+ "data-slot": "navigation-menu",
2736
+ "data-viewport": viewport,
2737
+ className: cn(
2738
+ "max-w-max group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
2739
+ className
2740
+ ),
2741
+ ...props,
2742
+ children: [
2743
+ children,
2744
+ viewport && /* @__PURE__ */ jsx(NavigationMenuViewport, {})
2745
+ ]
2746
+ }
2747
+ );
2748
+ }
2749
+ function NavigationMenuList({
2750
+ className,
2751
+ ...props
2752
+ }) {
2753
+ return /* @__PURE__ */ jsx(
2754
+ NavigationMenu$1.List,
2755
+ {
2756
+ "data-slot": "navigation-menu-list",
2757
+ className: cn(
2758
+ "gap-0 group flex flex-1 list-none items-center justify-center",
2759
+ className
2760
+ ),
2761
+ ...props
2762
+ }
2763
+ );
2764
+ }
2765
+ function NavigationMenuItem({
2766
+ className,
2767
+ ...props
2768
+ }) {
2769
+ return /* @__PURE__ */ jsx(
2770
+ NavigationMenu$1.Item,
2771
+ {
2772
+ "data-slot": "navigation-menu-item",
2773
+ className: cn("relative", className),
2774
+ ...props
2775
+ }
2776
+ );
2777
+ }
2778
+ var navigationMenuTriggerStyle = cva(
2779
+ "bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/30 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-md px-2.5 py-1.5 text-xs/relaxed font-medium transition-all focus-visible:ring-[2px] focus-visible:outline-1 disabled:opacity-50 group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center disabled:pointer-events-none outline-none"
2780
+ );
2781
+ function NavigationMenuTrigger({
2782
+ className,
2783
+ children,
2784
+ ...props
2785
+ }) {
2786
+ return /* @__PURE__ */ jsxs(
2787
+ NavigationMenu$1.Trigger,
2788
+ {
2789
+ "data-slot": "navigation-menu-trigger",
2790
+ className: cn(navigationMenuTriggerStyle(), "group", className),
2791
+ ...props,
2792
+ children: [
2793
+ children,
2794
+ " ",
2795
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180", "aria-hidden": "true" })
2796
+ ]
2797
+ }
2798
+ );
2799
+ }
2800
+ function NavigationMenuContent({
2801
+ className,
2802
+ ...props
2803
+ }) {
2804
+ return /* @__PURE__ */ jsx(
2805
+ NavigationMenu$1.Content,
2806
+ {
2807
+ "data-slot": "navigation-menu-content",
2808
+ className: cn(
2809
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-1.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-xl group-data-[viewport=false]/navigation-menu:shadow-md group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300 top-0 left-0 w-full group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto",
2810
+ className
2811
+ ),
2812
+ ...props
2813
+ }
2814
+ );
2815
+ }
2816
+ function NavigationMenuViewport({
2817
+ className,
2818
+ ...props
2819
+ }) {
2820
+ return /* @__PURE__ */ jsx(
2821
+ "div",
2822
+ {
2823
+ className: cn(
2824
+ "absolute top-full left-0 isolate z-50 flex justify-center"
2825
+ ),
2826
+ children: /* @__PURE__ */ jsx(
2827
+ NavigationMenu$1.Viewport,
2828
+ {
2829
+ "data-slot": "navigation-menu-viewport",
2830
+ className: cn(
2831
+ "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-95 data-open:zoom-in-90 ring-foreground/10 rounded-xl shadow-md ring-1 duration-100 origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden md:w-[var(--radix-navigation-menu-viewport-width)]",
2832
+ className
2833
+ ),
2834
+ ...props
2835
+ }
2836
+ )
2837
+ }
2838
+ );
2839
+ }
2840
+ function NavigationMenuLink({
2841
+ className,
2842
+ ...props
2843
+ }) {
2844
+ return /* @__PURE__ */ jsx(
2845
+ NavigationMenu$1.Link,
2846
+ {
2847
+ "data-slot": "navigation-menu-link",
2848
+ className: cn("data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/30 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-lg p-2 text-xs/relaxed transition-all outline-none focus-visible:ring-[2px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className),
2849
+ ...props
2850
+ }
2851
+ );
2852
+ }
2853
+ function NavigationMenuIndicator({
2854
+ className,
2855
+ ...props
2856
+ }) {
2857
+ return /* @__PURE__ */ jsx(
2858
+ NavigationMenu$1.Indicator,
2859
+ {
2860
+ "data-slot": "navigation-menu-indicator",
2861
+ className: cn(
2862
+ "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden",
2863
+ className
2864
+ ),
2865
+ ...props,
2866
+ children: /* @__PURE__ */ jsx("div", { className: "bg-border rounded-tl-sm shadow-md relative top-[60%] h-2 w-2 rotate-45" })
2867
+ }
2868
+ );
2869
+ }
2870
+ function Pagination({ className, ...props }) {
2871
+ return /* @__PURE__ */ jsx(
2872
+ "nav",
2873
+ {
2874
+ role: "navigation",
2875
+ "aria-label": "pagination",
2876
+ "data-slot": "pagination",
2877
+ className: cn(
2878
+ "mx-auto flex w-full justify-center",
2879
+ className
2880
+ ),
2881
+ ...props
2882
+ }
2883
+ );
2884
+ }
2885
+ function PaginationContent({
2886
+ className,
2887
+ ...props
2888
+ }) {
2889
+ return /* @__PURE__ */ jsx(
2890
+ "ul",
2891
+ {
2892
+ "data-slot": "pagination-content",
2893
+ className: cn("gap-0.5 flex items-center", className),
2894
+ ...props
2895
+ }
2896
+ );
2897
+ }
2898
+ function PaginationItem({ ...props }) {
2899
+ return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
2900
+ }
2901
+ function PaginationLink({
2902
+ className,
2903
+ isActive,
2904
+ size = "icon",
2905
+ ...props
2906
+ }) {
2907
+ return /* @__PURE__ */ jsx(
2908
+ Button,
2909
+ {
2910
+ asChild: true,
2911
+ variant: isActive ? "outline" : "ghost",
2912
+ size,
2913
+ className: cn(className),
2914
+ children: /* @__PURE__ */ jsx(
2915
+ "a",
2916
+ {
2917
+ "aria-current": isActive ? "page" : void 0,
2918
+ "data-slot": "pagination-link",
2919
+ "data-active": isActive,
2920
+ ...props
2921
+ }
2922
+ )
2923
+ }
2924
+ );
2925
+ }
2926
+ function PaginationPrevious({
2927
+ className,
2928
+ ...props
2929
+ }) {
2930
+ return /* @__PURE__ */ jsxs(
2931
+ PaginationLink,
2932
+ {
2933
+ "aria-label": "Go to previous page",
2934
+ size: "default",
2935
+ className: cn("pl-2!", className),
2936
+ ...props,
2937
+ children: [
2938
+ /* @__PURE__ */ jsx(ChevronLeftIcon, { "data-icon": "inline-start" }),
2939
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: "Previous" })
2940
+ ]
2941
+ }
2942
+ );
2943
+ }
2944
+ function PaginationNext({
2945
+ className,
2946
+ ...props
2947
+ }) {
2948
+ return /* @__PURE__ */ jsxs(
2949
+ PaginationLink,
2950
+ {
2951
+ "aria-label": "Go to next page",
2952
+ size: "default",
2953
+ className: cn("pr-2!", className),
2954
+ ...props,
2955
+ children: [
2956
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: "Next" }),
2957
+ /* @__PURE__ */ jsx(ChevronRightIcon, { "data-icon": "inline-end" })
2958
+ ]
2959
+ }
2960
+ );
2961
+ }
2962
+ function PaginationEllipsis({
2963
+ className,
2964
+ ...props
2965
+ }) {
2966
+ return /* @__PURE__ */ jsxs(
2967
+ "span",
2968
+ {
2969
+ "aria-hidden": true,
2970
+ "data-slot": "pagination-ellipsis",
2971
+ className: cn(
2972
+ "size-7 items-center justify-center [&_svg:not([class*='size-'])]:size-3.5 flex items-center justify-center",
2973
+ className
2974
+ ),
2975
+ ...props,
2976
+ children: [
2977
+ /* @__PURE__ */ jsx(
2978
+ MoreHorizontalIcon,
2979
+ {}
2980
+ ),
2981
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
2982
+ ]
2983
+ }
2984
+ );
2985
+ }
2986
+ function Popover({
2987
+ ...props
2988
+ }) {
2989
+ return /* @__PURE__ */ jsx(Popover$1.Root, { "data-slot": "popover", ...props });
2990
+ }
2991
+ function PopoverTrigger({
2992
+ ...props
2993
+ }) {
2994
+ return /* @__PURE__ */ jsx(Popover$1.Trigger, { "data-slot": "popover-trigger", ...props });
2995
+ }
2996
+ function PopoverContent({
2997
+ className,
2998
+ align = "center",
2999
+ sideOffset = 4,
3000
+ ...props
3001
+ }) {
3002
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
3003
+ Popover$1.Content,
3004
+ {
3005
+ "data-slot": "popover-content",
3006
+ align,
3007
+ sideOffset,
3008
+ className: cn(
3009
+ "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 flex flex-col gap-4 rounded-lg p-2.5 text-xs shadow-md ring-1 duration-100 z-50 w-72 origin-(--radix-popover-content-transform-origin) outline-hidden",
3010
+ className
3011
+ ),
3012
+ ...props
3013
+ }
3014
+ ) });
3015
+ }
3016
+ function Progress({
3017
+ className,
3018
+ value,
3019
+ ...props
3020
+ }) {
3021
+ return /* @__PURE__ */ jsx(
3022
+ Progress$1.Root,
3023
+ {
3024
+ "data-slot": "progress",
3025
+ className: cn(
3026
+ "bg-muted h-1 rounded-md relative flex w-full items-center overflow-x-hidden",
3027
+ className
3028
+ ),
3029
+ ...props,
3030
+ children: /* @__PURE__ */ jsx(
3031
+ Progress$1.Indicator,
3032
+ {
3033
+ "data-slot": "progress-indicator",
3034
+ className: "bg-primary size-full flex-1 transition-all",
3035
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
3036
+ }
3037
+ )
3038
+ }
3039
+ );
3040
+ }
3041
+ function RadioGroup({
3042
+ className,
3043
+ ...props
3044
+ }) {
3045
+ return /* @__PURE__ */ jsx(
3046
+ RadioGroup$1.Root,
3047
+ {
3048
+ "data-slot": "radio-group",
3049
+ className: cn("grid gap-3 w-full", className),
3050
+ ...props
3051
+ }
3052
+ );
3053
+ }
3054
+ function RadioGroupItem({
3055
+ className,
3056
+ ...props
3057
+ }) {
3058
+ return /* @__PURE__ */ jsx(
3059
+ RadioGroup$1.Item,
3060
+ {
3061
+ "data-slot": "radio-group-item",
3062
+ className: cn(
3063
+ "border-input text-primary dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 data-checked:bg-primary data-checked:border-primary flex size-4 rounded-full transition-none focus-visible:ring-[2px] aria-invalid:ring-[2px] group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50",
3064
+ className
3065
+ ),
3066
+ ...props,
3067
+ children: /* @__PURE__ */ jsx(
3068
+ RadioGroup$1.Indicator,
3069
+ {
3070
+ "data-slot": "radio-group-indicator",
3071
+ className: "group-aria-invalid/radio-group-item:text-destructive flex size-4 items-center justify-center text-white",
3072
+ children: /* @__PURE__ */ jsx(CircleIcon, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current" })
3073
+ }
3074
+ )
3075
+ }
3076
+ );
3077
+ }
3078
+ var ResizablePanelGroup = Group;
3079
+ var ResizablePanel = Panel;
3080
+ function ResizableHandle({
3081
+ withHandle,
3082
+ className,
3083
+ ...props
3084
+ }) {
3085
+ return /* @__PURE__ */ jsx(
3086
+ Separator$2,
3087
+ {
3088
+ "data-slot": "resizable-handle",
3089
+ className: cn(
3090
+ "bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
3091
+ className
3092
+ ),
3093
+ ...props,
3094
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "bg-border h-6 w-1 rounded-lg z-10 flex shrink-0" })
3095
+ }
3096
+ );
3097
+ }
3098
+ function ScrollArea({
3099
+ className,
3100
+ children,
3101
+ ...props
3102
+ }) {
3103
+ return /* @__PURE__ */ jsxs(
3104
+ ScrollArea$1.Root,
3105
+ {
3106
+ "data-slot": "scroll-area",
3107
+ className: cn("relative", className),
3108
+ ...props,
3109
+ children: [
3110
+ /* @__PURE__ */ jsx(
3111
+ ScrollArea$1.Viewport,
3112
+ {
3113
+ "data-slot": "scroll-area-viewport",
3114
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
3115
+ children
3116
+ }
3117
+ ),
3118
+ /* @__PURE__ */ jsx(ScrollBar, {}),
3119
+ /* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
3120
+ ]
3121
+ }
3122
+ );
3123
+ }
3124
+ function ScrollBar({
3125
+ className,
3126
+ orientation = "vertical",
3127
+ ...props
3128
+ }) {
3129
+ return /* @__PURE__ */ jsx(
3130
+ ScrollArea$1.ScrollAreaScrollbar,
3131
+ {
3132
+ "data-slot": "scroll-area-scrollbar",
3133
+ "data-orientation": orientation,
3134
+ orientation,
3135
+ className: cn(
3136
+ "data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none",
3137
+ className
3138
+ ),
3139
+ ...props,
3140
+ children: /* @__PURE__ */ jsx(
3141
+ ScrollArea$1.ScrollAreaThumb,
3142
+ {
3143
+ "data-slot": "scroll-area-thumb",
3144
+ className: "rounded-full bg-border relative flex-1"
3145
+ }
3146
+ )
3147
+ }
3148
+ );
3149
+ }
3150
+ function Select({
3151
+ ...props
3152
+ }) {
3153
+ return /* @__PURE__ */ jsx(Select$1.Root, { "data-slot": "select", ...props });
3154
+ }
3155
+ function SelectGroup({
3156
+ className,
3157
+ ...props
3158
+ }) {
3159
+ return /* @__PURE__ */ jsx(
3160
+ Select$1.Group,
3161
+ {
3162
+ "data-slot": "select-group",
3163
+ className: cn("scroll-my-1 p-1", className),
3164
+ ...props
3165
+ }
3166
+ );
3167
+ }
3168
+ function SelectValue({
3169
+ ...props
3170
+ }) {
3171
+ return /* @__PURE__ */ jsx(Select$1.Value, { "data-slot": "select-value", ...props });
3172
+ }
3173
+ function SelectTrigger({
3174
+ className,
3175
+ size = "default",
3176
+ children,
3177
+ ...props
3178
+ }) {
3179
+ return /* @__PURE__ */ jsxs(
3180
+ Select$1.Trigger,
3181
+ {
3182
+ "data-slot": "select-trigger",
3183
+ "data-size": size,
3184
+ className: cn(
3185
+ "border-input data-[placeholder]:text-muted-foreground bg-input/20 dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border px-2 py-1.5 text-xs/relaxed transition-colors focus-visible:ring-[2px] aria-invalid:ring-[2px] data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-3.5 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
3186
+ className
3187
+ ),
3188
+ ...props,
3189
+ children: [
3190
+ children,
3191
+ /* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground size-3.5 pointer-events-none" }) })
3192
+ ]
3193
+ }
3194
+ );
3195
+ }
3196
+ function SelectContent({
3197
+ className,
3198
+ children,
3199
+ position = "item-aligned",
3200
+ align = "center",
3201
+ ...props
3202
+ }) {
3203
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
3204
+ Select$1.Content,
3205
+ {
3206
+ "data-slot": "select-content",
3207
+ className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 min-w-32 rounded-lg shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto", 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", className),
3208
+ position,
3209
+ align,
3210
+ ...props,
3211
+ children: [
3212
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
3213
+ /* @__PURE__ */ jsx(
3214
+ Select$1.Viewport,
3215
+ {
3216
+ "data-position": position,
3217
+ className: cn(
3218
+ "data-[position=popper]:h-[var(--radix-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--radix-select-trigger-width)]",
3219
+ position === "popper" && ""
3220
+ ),
3221
+ children
3222
+ }
3223
+ ),
3224
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
3225
+ ]
3226
+ }
3227
+ ) });
3228
+ }
3229
+ function SelectLabel({
3230
+ className,
3231
+ ...props
3232
+ }) {
3233
+ return /* @__PURE__ */ jsx(
3234
+ Select$1.Label,
3235
+ {
3236
+ "data-slot": "select-label",
3237
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
3238
+ ...props
3239
+ }
3240
+ );
3241
+ }
3242
+ function SelectItem({
3243
+ className,
3244
+ children,
3245
+ ...props
3246
+ }) {
3247
+ return /* @__PURE__ */ jsxs(
3248
+ Select$1.Item,
3249
+ {
3250
+ "data-slot": "select-item",
3251
+ className: cn(
3252
+ "focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
3253
+ className
3254
+ ),
3255
+ ...props,
3256
+ children: [
3257
+ /* @__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" }) }) }),
3258
+ /* @__PURE__ */ jsx(Select$1.ItemText, { children })
3259
+ ]
3260
+ }
3261
+ );
3262
+ }
3263
+ function SelectSeparator({
3264
+ className,
3265
+ ...props
3266
+ }) {
3267
+ return /* @__PURE__ */ jsx(
3268
+ Select$1.Separator,
3269
+ {
3270
+ "data-slot": "select-separator",
3271
+ className: cn("bg-border/50 -mx-1 my-1 h-px pointer-events-none", className),
3272
+ ...props
3273
+ }
3274
+ );
3275
+ }
3276
+ function SelectScrollUpButton({
3277
+ className,
3278
+ ...props
3279
+ }) {
3280
+ return /* @__PURE__ */ jsx(
3281
+ Select$1.ScrollUpButton,
3282
+ {
3283
+ "data-slot": "select-scroll-up-button",
3284
+ className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5", className),
3285
+ ...props,
3286
+ children: /* @__PURE__ */ jsx(
3287
+ ChevronUpIcon,
3288
+ {}
3289
+ )
3290
+ }
3291
+ );
3292
+ }
3293
+ function SelectScrollDownButton({
3294
+ className,
3295
+ ...props
3296
+ }) {
3297
+ return /* @__PURE__ */ jsx(
3298
+ Select$1.ScrollDownButton,
3299
+ {
3300
+ "data-slot": "select-scroll-down-button",
3301
+ className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5", className),
3302
+ ...props,
3303
+ children: /* @__PURE__ */ jsx(
3304
+ ChevronDownIcon,
3305
+ {}
3306
+ )
3307
+ }
3308
+ );
3309
+ }
3310
+ function Sheet({ ...props }) {
3311
+ return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "sheet", ...props });
3312
+ }
3313
+ function SheetTrigger({
3314
+ ...props
3315
+ }) {
3316
+ return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "sheet-trigger", ...props });
3317
+ }
3318
+ function SheetClose({
3319
+ ...props
3320
+ }) {
3321
+ return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "sheet-close", ...props });
3322
+ }
3323
+ function SheetPortal({
3324
+ ...props
3325
+ }) {
3326
+ return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "sheet-portal", ...props });
3327
+ }
3328
+ function SheetOverlay({
3329
+ className,
3330
+ ...props
3331
+ }) {
3332
+ return /* @__PURE__ */ jsx(
3333
+ Dialog$1.Overlay,
3334
+ {
3335
+ "data-slot": "sheet-overlay",
3336
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
3337
+ ...props
3338
+ }
3339
+ );
3340
+ }
3341
+ function SheetContent({
3342
+ className,
3343
+ children,
3344
+ side = "right",
3345
+ showCloseButton = true,
3346
+ ...props
3347
+ }) {
3348
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [
3349
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
3350
+ /* @__PURE__ */ jsxs(
3351
+ Dialog$1.Content,
3352
+ {
3353
+ "data-slot": "sheet-content",
3354
+ "data-side": side,
3355
+ className: cn("bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col 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", className),
3356
+ ...props,
3357
+ children: [
3358
+ children,
3359
+ showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "sheet-close", asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", className: "absolute top-4 right-4", size: "icon-sm", children: [
3360
+ /* @__PURE__ */ jsx(
3361
+ XIcon,
3362
+ {}
3363
+ ),
3364
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
3365
+ ] }) })
3366
+ ]
3367
+ }
3368
+ )
3369
+ ] });
3370
+ }
3371
+ function SheetHeader({ className, ...props }) {
3372
+ return /* @__PURE__ */ jsx(
3373
+ "div",
3374
+ {
3375
+ "data-slot": "sheet-header",
3376
+ className: cn("gap-1.5 p-6 flex flex-col", className),
3377
+ ...props
3378
+ }
3379
+ );
3380
+ }
3381
+ function SheetFooter({ className, ...props }) {
3382
+ return /* @__PURE__ */ jsx(
3383
+ "div",
3384
+ {
3385
+ "data-slot": "sheet-footer",
3386
+ className: cn("gap-2 p-6 mt-auto flex flex-col", className),
3387
+ ...props
3388
+ }
3389
+ );
3390
+ }
3391
+ function SheetTitle({
3392
+ className,
3393
+ ...props
3394
+ }) {
3395
+ return /* @__PURE__ */ jsx(
3396
+ Dialog$1.Title,
3397
+ {
3398
+ "data-slot": "sheet-title",
3399
+ className: cn("text-foreground text-sm font-medium", className),
3400
+ ...props
3401
+ }
3402
+ );
3403
+ }
3404
+ function SheetDescription({
3405
+ className,
3406
+ ...props
3407
+ }) {
3408
+ return /* @__PURE__ */ jsx(
3409
+ Dialog$1.Description,
3410
+ {
3411
+ "data-slot": "sheet-description",
3412
+ className: cn("text-muted-foreground text-xs/relaxed", className),
3413
+ ...props
3414
+ }
3415
+ );
3416
+ }
3417
+ function Skeleton({ className, ...props }) {
3418
+ return /* @__PURE__ */ jsx(
3419
+ "div",
3420
+ {
3421
+ "data-slot": "skeleton",
3422
+ className: cn("bg-muted rounded-md animate-pulse", className),
3423
+ ...props
3424
+ }
3425
+ );
3426
+ }
3427
+ function TooltipProvider({
3428
+ delayDuration = 0,
3429
+ ...props
3430
+ }) {
3431
+ return /* @__PURE__ */ jsx(
3432
+ Tooltip.Provider,
3433
+ {
3434
+ "data-slot": "tooltip-provider",
3435
+ delayDuration,
3436
+ ...props
3437
+ }
3438
+ );
3439
+ }
3440
+ function Tooltip2({
3441
+ ...props
3442
+ }) {
3443
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Tooltip.Root, { "data-slot": "tooltip", ...props }) });
3444
+ }
3445
+ function TooltipTrigger({
3446
+ ...props
3447
+ }) {
3448
+ return /* @__PURE__ */ jsx(Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
3449
+ }
3450
+ function TooltipContent({
3451
+ className,
3452
+ sideOffset = 0,
3453
+ children,
3454
+ ...props
3455
+ }) {
3456
+ return /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsxs(
3457
+ Tooltip.Content,
3458
+ {
3459
+ "data-slot": "tooltip-content",
3460
+ sideOffset,
3461
+ className: cn(
3462
+ "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-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 rounded-md px-3 py-1.5 text-xs **:data-[slot=kbd]:rounded-md bg-foreground text-background z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin)",
3463
+ className
3464
+ ),
3465
+ ...props,
3466
+ children: [
3467
+ children,
3468
+ /* @__PURE__ */ jsx(Tooltip.Arrow, { className: "size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 translate-y-[calc(-50%_-_2px)]" })
3469
+ ]
3470
+ }
3471
+ ) });
3472
+ }
3473
+ var MOBILE_BREAKPOINT = 768;
3474
+ function useIsMobile() {
3475
+ const [isMobile, setIsMobile] = React2.useState(void 0);
3476
+ React2.useEffect(() => {
3477
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
3478
+ const onChange = () => {
3479
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
3480
+ };
3481
+ mql.addEventListener("change", onChange);
3482
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
3483
+ return () => mql.removeEventListener("change", onChange);
3484
+ }, []);
3485
+ return !!isMobile;
3486
+ }
3487
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
3488
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
3489
+ var SIDEBAR_WIDTH = "16rem";
3490
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
3491
+ var SIDEBAR_WIDTH_ICON = "3rem";
3492
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
3493
+ var SidebarContext = React2.createContext(null);
3494
+ function useSidebar() {
3495
+ const context = React2.useContext(SidebarContext);
3496
+ if (!context) {
3497
+ throw new Error("useSidebar must be used within a SidebarProvider.");
3498
+ }
3499
+ return context;
3500
+ }
3501
+ function SidebarProvider({
3502
+ defaultOpen = true,
3503
+ open: openProp,
3504
+ onOpenChange: setOpenProp,
3505
+ className,
3506
+ style,
3507
+ children,
3508
+ ...props
3509
+ }) {
3510
+ const isMobile = useIsMobile();
3511
+ const [openMobile, setOpenMobile] = React2.useState(false);
3512
+ const [_open, _setOpen] = React2.useState(defaultOpen);
3513
+ const open = openProp ?? _open;
3514
+ const setOpen = React2.useCallback(
3515
+ (value) => {
3516
+ const openState = typeof value === "function" ? value(open) : value;
3517
+ if (setOpenProp) {
3518
+ setOpenProp(openState);
3519
+ } else {
3520
+ _setOpen(openState);
3521
+ }
3522
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
3523
+ },
3524
+ [setOpenProp, open]
3525
+ );
3526
+ const toggleSidebar = React2.useCallback(() => {
3527
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
3528
+ }, [isMobile, setOpen, setOpenMobile]);
3529
+ React2.useEffect(() => {
3530
+ const handleKeyDown = (event) => {
3531
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
3532
+ event.preventDefault();
3533
+ toggleSidebar();
3534
+ }
3535
+ };
3536
+ window.addEventListener("keydown", handleKeyDown);
3537
+ return () => window.removeEventListener("keydown", handleKeyDown);
3538
+ }, [toggleSidebar]);
3539
+ const state = open ? "expanded" : "collapsed";
3540
+ const contextValue = React2.useMemo(
3541
+ () => ({
3542
+ state,
3543
+ open,
3544
+ setOpen,
3545
+ isMobile,
3546
+ openMobile,
3547
+ setOpenMobile,
3548
+ toggleSidebar
3549
+ }),
3550
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
3551
+ );
3552
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
3553
+ "div",
3554
+ {
3555
+ "data-slot": "sidebar-wrapper",
3556
+ style: {
3557
+ "--sidebar-width": SIDEBAR_WIDTH,
3558
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
3559
+ ...style
3560
+ },
3561
+ className: cn(
3562
+ "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
3563
+ className
3564
+ ),
3565
+ ...props,
3566
+ children
3567
+ }
3568
+ ) });
3569
+ }
3570
+ function Sidebar({
3571
+ side = "left",
3572
+ variant = "sidebar",
3573
+ collapsible = "offExamples",
3574
+ className,
3575
+ children,
3576
+ ...props
3577
+ }) {
3578
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
3579
+ if (collapsible === "none") {
3580
+ return /* @__PURE__ */ jsx(
3581
+ "div",
3582
+ {
3583
+ "data-slot": "sidebar",
3584
+ className: cn(
3585
+ "bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",
3586
+ className
3587
+ ),
3588
+ ...props,
3589
+ children
3590
+ }
3591
+ );
3592
+ }
3593
+ if (isMobile) {
3594
+ return /* @__PURE__ */ jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs(
3595
+ SheetContent,
3596
+ {
3597
+ "data-sidebar": "sidebar",
3598
+ "data-slot": "sidebar",
3599
+ "data-mobile": "true",
3600
+ className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
3601
+ style: {
3602
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
3603
+ },
3604
+ side,
3605
+ children: [
3606
+ /* @__PURE__ */ jsxs(SheetHeader, { className: "sr-only", children: [
3607
+ /* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }),
3608
+ /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })
3609
+ ] }),
3610
+ /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
3611
+ ]
3612
+ }
3613
+ ) });
3614
+ }
3615
+ return /* @__PURE__ */ jsxs(
3616
+ "div",
3617
+ {
3618
+ className: "group peer text-sidebar-foreground hidden md:block",
3619
+ "data-state": state,
3620
+ "data-collapsible": state === "collapsed" ? collapsible : "",
3621
+ "data-variant": variant,
3622
+ "data-side": side,
3623
+ "data-slot": "sidebar",
3624
+ children: [
3625
+ /* @__PURE__ */ jsx(
3626
+ "div",
3627
+ {
3628
+ "data-slot": "sidebar-gap",
3629
+ className: cn(
3630
+ "transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent",
3631
+ "group-data-[collapsible=offExamples]:w-0",
3632
+ "group-data-[side=right]:rotate-180",
3633
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
3634
+ )
3635
+ }
3636
+ ),
3637
+ /* @__PURE__ */ jsx(
3638
+ "div",
3639
+ {
3640
+ "data-slot": "sidebar-container",
3641
+ className: cn(
3642
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
3643
+ side === "left" ? "left-0 group-data-[collapsible=offExamples]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offExamples]:right-[calc(var(--sidebar-width)*-1)]",
3644
+ // Adjust the padding for floating and inset variants.
3645
+ 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",
3646
+ className
3647
+ ),
3648
+ ...props,
3649
+ children: /* @__PURE__ */ jsx(
3650
+ "div",
3651
+ {
3652
+ "data-sidebar": "sidebar",
3653
+ "data-slot": "sidebar-inner",
3654
+ className: "bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col",
3655
+ children
3656
+ }
3657
+ )
3658
+ }
3659
+ )
3660
+ ]
3661
+ }
3662
+ );
3663
+ }
3664
+ function SidebarTrigger({
3665
+ className,
3666
+ onClick,
3667
+ ...props
3668
+ }) {
3669
+ const { toggleSidebar } = useSidebar();
3670
+ return /* @__PURE__ */ jsxs(
3671
+ Button,
3672
+ {
3673
+ "data-sidebar": "trigger",
3674
+ "data-slot": "sidebar-trigger",
3675
+ variant: "ghost",
3676
+ size: "icon-sm",
3677
+ className: cn(className),
3678
+ onClick: (event) => {
3679
+ onClick?.(event);
3680
+ toggleSidebar();
3681
+ },
3682
+ ...props,
3683
+ children: [
3684
+ /* @__PURE__ */ jsx(
3685
+ PanelLeftIcon,
3686
+ {}
3687
+ ),
3688
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
3689
+ ]
3690
+ }
3691
+ );
3692
+ }
3693
+ function SidebarRail({ className, ...props }) {
3694
+ const { toggleSidebar } = useSidebar();
3695
+ return /* @__PURE__ */ jsx(
3696
+ "button",
3697
+ {
3698
+ "data-sidebar": "rail",
3699
+ "data-slot": "sidebar-rail",
3700
+ "aria-label": "Toggle Sidebar",
3701
+ tabIndex: -1,
3702
+ onClick: toggleSidebar,
3703
+ title: "Toggle Sidebar",
3704
+ className: cn(
3705
+ "hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex",
3706
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
3707
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
3708
+ "hover:group-data-[collapsible=offExamples]:bg-sidebar group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full",
3709
+ "[[data-side=left][data-collapsible=offExamples]_&]:-right-2",
3710
+ "[[data-side=right][data-collapsible=offExamples]_&]:-left-2",
3711
+ className
3712
+ ),
3713
+ ...props
3714
+ }
3715
+ );
3716
+ }
3717
+ function SidebarInset({ className, ...props }) {
3718
+ return /* @__PURE__ */ jsx(
3719
+ "main",
3720
+ {
3721
+ "data-slot": "sidebar-inset",
3722
+ className: cn(
3723
+ "bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col",
3724
+ className
3725
+ ),
3726
+ ...props
3727
+ }
3728
+ );
3729
+ }
3730
+ function SidebarInput({
3731
+ className,
3732
+ ...props
3733
+ }) {
3734
+ return /* @__PURE__ */ jsx(
3735
+ Input,
3736
+ {
3737
+ "data-slot": "sidebar-input",
3738
+ "data-sidebar": "input",
3739
+ className: cn("bg-muted/20 dark:bg-muted/30 border-input h-8 w-full", className),
3740
+ ...props
3741
+ }
3742
+ );
3743
+ }
3744
+ function SidebarHeader({ className, ...props }) {
3745
+ return /* @__PURE__ */ jsx(
3746
+ "div",
3747
+ {
3748
+ "data-slot": "sidebar-header",
3749
+ "data-sidebar": "header",
3750
+ className: cn("gap-2 p-2 flex flex-col", className),
3751
+ ...props
3752
+ }
3753
+ );
3754
+ }
3755
+ function SidebarFooter({ className, ...props }) {
3756
+ return /* @__PURE__ */ jsx(
3757
+ "div",
3758
+ {
3759
+ "data-slot": "sidebar-footer",
3760
+ "data-sidebar": "footer",
3761
+ className: cn("gap-2 p-2 flex flex-col", className),
3762
+ ...props
3763
+ }
3764
+ );
3765
+ }
3766
+ function SidebarSeparator({
3767
+ className,
3768
+ ...props
3769
+ }) {
3770
+ return /* @__PURE__ */ jsx(
3771
+ Separator,
3772
+ {
3773
+ "data-slot": "sidebar-separator",
3774
+ "data-sidebar": "separator",
3775
+ className: cn("bg-sidebar-border mx-2 w-auto", className),
3776
+ ...props
3777
+ }
3778
+ );
3779
+ }
3780
+ function SidebarContent({ className, ...props }) {
3781
+ return /* @__PURE__ */ jsx(
3782
+ "div",
3783
+ {
3784
+ "data-slot": "sidebar-content",
3785
+ "data-sidebar": "content",
3786
+ className: cn(
3787
+ "no-scrollbar gap-0 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden",
3788
+ className
3789
+ ),
3790
+ ...props
3791
+ }
3792
+ );
3793
+ }
3794
+ function SidebarGroup({ className, ...props }) {
3795
+ return /* @__PURE__ */ jsx(
3796
+ "div",
3797
+ {
3798
+ "data-slot": "sidebar-group",
3799
+ "data-sidebar": "group",
3800
+ className: cn(
3801
+ "px-2 py-1 relative flex w-full min-w-0 flex-col",
3802
+ className
3803
+ ),
3804
+ ...props
3805
+ }
3806
+ );
3807
+ }
3808
+ function SidebarGroupLabel({
3809
+ className,
3810
+ asChild = false,
3811
+ ...props
3812
+ }) {
3813
+ const Comp = asChild ? Slot.Root : "div";
3814
+ return /* @__PURE__ */ jsx(
3815
+ Comp,
3816
+ {
3817
+ "data-slot": "sidebar-group-label",
3818
+ "data-sidebar": "group-label",
3819
+ className: cn(
3820
+ "text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0",
3821
+ className
3822
+ ),
3823
+ ...props
3824
+ }
3825
+ );
3826
+ }
3827
+ function SidebarGroupAction({
3828
+ className,
3829
+ asChild = false,
3830
+ ...props
3831
+ }) {
3832
+ const Comp = asChild ? Slot.Root : "button";
3833
+ return /* @__PURE__ */ jsx(
3834
+ Comp,
3835
+ {
3836
+ "data-slot": "sidebar-group-action",
3837
+ "data-sidebar": "group-action",
3838
+ className: cn(
3839
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0",
3840
+ className
3841
+ ),
3842
+ ...props
3843
+ }
3844
+ );
3845
+ }
3846
+ function SidebarGroupContent({
3847
+ className,
3848
+ ...props
3849
+ }) {
3850
+ return /* @__PURE__ */ jsx(
3851
+ "div",
3852
+ {
3853
+ "data-slot": "sidebar-group-content",
3854
+ "data-sidebar": "group-content",
3855
+ className: cn("text-xs w-full", className),
3856
+ ...props
3857
+ }
3858
+ );
3859
+ }
3860
+ function SidebarMenu({ className, ...props }) {
3861
+ return /* @__PURE__ */ jsx(
3862
+ "ul",
3863
+ {
3864
+ "data-slot": "sidebar-menu",
3865
+ "data-sidebar": "menu",
3866
+ className: cn("gap-px flex w-full min-w-0 flex-col", className),
3867
+ ...props
3868
+ }
3869
+ );
3870
+ }
3871
+ function SidebarMenuItem({ className, ...props }) {
3872
+ return /* @__PURE__ */ jsx(
3873
+ "li",
3874
+ {
3875
+ "data-slot": "sidebar-menu-item",
3876
+ "data-sidebar": "menu-item",
3877
+ className: cn("group/menu-item relative", className),
3878
+ ...props
3879
+ }
3880
+ );
3881
+ }
3882
+ var sidebarMenuButtonVariants = cva(
3883
+ "ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0",
3884
+ {
3885
+ variants: {
3886
+ variant: {
3887
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
3888
+ outline: "bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
3889
+ },
3890
+ size: {
3891
+ default: "h-8 text-xs",
3892
+ sm: "h-7 text-xs",
3893
+ lg: "h-12 text-xs group-data-[collapsible=icon]:p-0!"
3894
+ }
3895
+ },
3896
+ defaultVariants: {
3897
+ variant: "default",
3898
+ size: "default"
3899
+ }
3900
+ }
3901
+ );
3902
+ function SidebarMenuButton({
3903
+ asChild = false,
3904
+ isActive = false,
3905
+ variant = "default",
3906
+ size = "default",
3907
+ tooltip,
3908
+ className,
3909
+ ...props
3910
+ }) {
3911
+ const Comp = asChild ? Slot.Root : "button";
3912
+ const { isMobile, state } = useSidebar();
3913
+ const button = /* @__PURE__ */ jsx(
3914
+ Comp,
3915
+ {
3916
+ "data-slot": "sidebar-menu-button",
3917
+ "data-sidebar": "menu-button",
3918
+ "data-size": size,
3919
+ "data-active": isActive,
3920
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
3921
+ ...props
3922
+ }
3923
+ );
3924
+ if (!tooltip) {
3925
+ return button;
3926
+ }
3927
+ if (typeof tooltip === "string") {
3928
+ tooltip = {
3929
+ children: tooltip
3930
+ };
3931
+ }
3932
+ return /* @__PURE__ */ jsxs(Tooltip2, { children: [
3933
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: button }),
3934
+ /* @__PURE__ */ jsx(
3935
+ TooltipContent,
3936
+ {
3937
+ side: "right",
3938
+ align: "center",
3939
+ hidden: state !== "collapsed" || isMobile,
3940
+ ...tooltip
3941
+ }
3942
+ )
3943
+ ] });
3944
+ }
3945
+ function SidebarMenuAction({
3946
+ className,
3947
+ asChild = false,
3948
+ showOnHover = false,
3949
+ ...props
3950
+ }) {
3951
+ const Comp = asChild ? Slot.Root : "button";
3952
+ return /* @__PURE__ */ jsx(
3953
+ Comp,
3954
+ {
3955
+ "data-slot": "sidebar-menu-action",
3956
+ "data-sidebar": "menu-action",
3957
+ className: cn(
3958
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-[calc(var(--radius-sm)-2px)] p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0",
3959
+ showOnHover && "peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0",
3960
+ className
3961
+ ),
3962
+ ...props
3963
+ }
3964
+ );
3965
+ }
3966
+ function SidebarMenuBadge({
3967
+ className,
3968
+ ...props
3969
+ }) {
3970
+ return /* @__PURE__ */ jsx(
3971
+ "div",
3972
+ {
3973
+ "data-slot": "sidebar-menu-badge",
3974
+ "data-sidebar": "menu-badge",
3975
+ className: cn(
3976
+ "text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-[calc(var(--radius-sm)-2px)] px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden",
3977
+ className
3978
+ ),
3979
+ ...props
3980
+ }
3981
+ );
3982
+ }
3983
+ function SidebarMenuSkeleton({
3984
+ className,
3985
+ showIcon = false,
3986
+ ...props
3987
+ }) {
3988
+ const [width] = React2.useState(() => {
3989
+ return `${Math.floor(Math.random() * 40) + 50}%`;
3990
+ });
3991
+ return /* @__PURE__ */ jsxs(
3992
+ "div",
3993
+ {
3994
+ "data-slot": "sidebar-menu-skeleton",
3995
+ "data-sidebar": "menu-skeleton",
3996
+ className: cn("h-8 gap-2 rounded-md px-2 flex items-center", className),
3997
+ ...props,
3998
+ children: [
3999
+ showIcon && /* @__PURE__ */ jsx(
4000
+ Skeleton,
4001
+ {
4002
+ className: "size-4 rounded-md",
4003
+ "data-sidebar": "menu-skeleton-icon"
4004
+ }
4005
+ ),
4006
+ /* @__PURE__ */ jsx(
4007
+ Skeleton,
4008
+ {
4009
+ className: "h-4 max-w-(--skeleton-width) flex-1",
4010
+ "data-sidebar": "menu-skeleton-text",
4011
+ style: {
4012
+ "--skeleton-width": width
4013
+ }
4014
+ }
4015
+ )
4016
+ ]
4017
+ }
4018
+ );
4019
+ }
4020
+ function SidebarMenuSub({ className, ...props }) {
4021
+ return /* @__PURE__ */ jsx(
4022
+ "ul",
4023
+ {
4024
+ "data-slot": "sidebar-menu-sub",
4025
+ "data-sidebar": "menu-sub",
4026
+ className: cn("border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col", className),
4027
+ ...props
4028
+ }
4029
+ );
4030
+ }
4031
+ function SidebarMenuSubItem({
4032
+ className,
4033
+ ...props
4034
+ }) {
4035
+ return /* @__PURE__ */ jsx(
4036
+ "li",
4037
+ {
4038
+ "data-slot": "sidebar-menu-sub-item",
4039
+ "data-sidebar": "menu-sub-item",
4040
+ className: cn("group/menu-sub-item relative", className),
4041
+ ...props
4042
+ }
4043
+ );
4044
+ }
4045
+ function SidebarMenuSubButton({
4046
+ asChild = false,
4047
+ size = "md",
4048
+ isActive = false,
4049
+ className,
4050
+ ...props
4051
+ }) {
4052
+ const Comp = asChild ? Slot.Root : "a";
4053
+ return /* @__PURE__ */ jsx(
4054
+ Comp,
4055
+ {
4056
+ "data-slot": "sidebar-menu-sub-button",
4057
+ "data-sidebar": "menu-sub-button",
4058
+ "data-size": size,
4059
+ "data-active": isActive,
4060
+ className: cn(
4061
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-xs data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0",
4062
+ className
4063
+ ),
4064
+ ...props
4065
+ }
4066
+ );
4067
+ }
4068
+ function Slider({
4069
+ className,
4070
+ defaultValue,
4071
+ value,
4072
+ min = 0,
4073
+ max = 100,
4074
+ ...props
4075
+ }) {
4076
+ const _values = React2.useMemo(
4077
+ () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
4078
+ [value, defaultValue, min, max]
4079
+ );
4080
+ return /* @__PURE__ */ jsxs(
4081
+ Slider$1.Root,
4082
+ {
4083
+ "data-slot": "slider",
4084
+ defaultValue,
4085
+ value,
4086
+ min,
4087
+ max,
4088
+ className: cn(
4089
+ "data-vertical:min-h-40 relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col",
4090
+ className
4091
+ ),
4092
+ ...props,
4093
+ children: [
4094
+ /* @__PURE__ */ jsx(
4095
+ Slider$1.Track,
4096
+ {
4097
+ "data-slot": "slider-track",
4098
+ className: "bg-muted rounded-md data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3 bg-muted relative grow overflow-hidden data-horizontal:w-full data-vertical:h-full",
4099
+ children: /* @__PURE__ */ jsx(
4100
+ Slider$1.Range,
4101
+ {
4102
+ "data-slot": "slider-range",
4103
+ className: "bg-primary absolute select-none data-horizontal:h-full data-vertical:w-full"
4104
+ }
4105
+ )
4106
+ }
4107
+ ),
4108
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
4109
+ Slider$1.Thumb,
4110
+ {
4111
+ "data-slot": "slider-thumb",
4112
+ className: "border-primary ring-ring/30 size-4 rounded-md border bg-white shadow-sm transition-colors hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50"
4113
+ },
4114
+ index
4115
+ ))
4116
+ ]
4117
+ }
4118
+ );
4119
+ }
4120
+ function Spinner({ className, ...props }) {
4121
+ return /* @__PURE__ */ jsx(Loader2Icon, { role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className), ...props });
4122
+ }
4123
+ function Switch({
4124
+ className,
4125
+ size = "default",
4126
+ ...props
4127
+ }) {
4128
+ return /* @__PURE__ */ jsx(
4129
+ Switch$1.Root,
4130
+ {
4131
+ "data-slot": "switch",
4132
+ "data-size": size,
4133
+ className: cn(
4134
+ "data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-[2px] aria-invalid:ring-[2px] data-[size=default]:h-[16.6px] data-[size=default]:w-[28px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50",
4135
+ className
4136
+ ),
4137
+ ...props,
4138
+ children: /* @__PURE__ */ jsx(
4139
+ Switch$1.Thumb,
4140
+ {
4141
+ "data-slot": "switch-thumb",
4142
+ className: "bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full 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)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 pointer-events-none block ring-0 transition-transform"
4143
+ }
4144
+ )
4145
+ }
4146
+ );
4147
+ }
4148
+ function Table({ className, ...props }) {
4149
+ return /* @__PURE__ */ jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx(
4150
+ "table",
4151
+ {
4152
+ "data-slot": "table",
4153
+ className: cn("w-full caption-bottom text-xs", className),
4154
+ ...props
4155
+ }
4156
+ ) });
4157
+ }
4158
+ function TableHeader({ className, ...props }) {
4159
+ return /* @__PURE__ */ jsx(
4160
+ "thead",
4161
+ {
4162
+ "data-slot": "table-header",
4163
+ className: cn("[&_tr]:border-b", className),
4164
+ ...props
4165
+ }
4166
+ );
4167
+ }
4168
+ function TableBody({ className, ...props }) {
4169
+ return /* @__PURE__ */ jsx(
4170
+ "tbody",
4171
+ {
4172
+ "data-slot": "table-body",
4173
+ className: cn("[&_tr:last-child]:border-0", className),
4174
+ ...props
4175
+ }
4176
+ );
4177
+ }
4178
+ function TableFooter({ className, ...props }) {
4179
+ return /* @__PURE__ */ jsx(
4180
+ "tfoot",
4181
+ {
4182
+ "data-slot": "table-footer",
4183
+ className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
4184
+ ...props
4185
+ }
4186
+ );
4187
+ }
4188
+ function TableRow({ className, ...props }) {
4189
+ return /* @__PURE__ */ jsx(
4190
+ "tr",
4191
+ {
4192
+ "data-slot": "table-row",
4193
+ className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className),
4194
+ ...props
4195
+ }
4196
+ );
4197
+ }
4198
+ function TableHead({ className, ...props }) {
4199
+ return /* @__PURE__ */ jsx(
4200
+ "th",
4201
+ {
4202
+ "data-slot": "table-head",
4203
+ className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
4204
+ ...props
4205
+ }
4206
+ );
4207
+ }
4208
+ function TableCell({ className, ...props }) {
4209
+ return /* @__PURE__ */ jsx(
4210
+ "td",
4211
+ {
4212
+ "data-slot": "table-cell",
4213
+ className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
4214
+ ...props
4215
+ }
4216
+ );
4217
+ }
4218
+ function TableCaption({
4219
+ className,
4220
+ ...props
4221
+ }) {
4222
+ return /* @__PURE__ */ jsx(
4223
+ "caption",
4224
+ {
4225
+ "data-slot": "table-caption",
4226
+ className: cn("text-muted-foreground mt-4 text-xs", className),
4227
+ ...props
4228
+ }
4229
+ );
4230
+ }
4231
+ function Tabs({
4232
+ className,
4233
+ orientation = "horizontal",
4234
+ ...props
4235
+ }) {
4236
+ return /* @__PURE__ */ jsx(
4237
+ Tabs$1.Root,
4238
+ {
4239
+ "data-slot": "tabs",
4240
+ "data-orientation": orientation,
4241
+ className: cn(
4242
+ "gap-2 group/tabs flex data-[orientation=horizontal]:flex-col",
4243
+ className
4244
+ ),
4245
+ ...props
4246
+ }
4247
+ );
4248
+ }
4249
+ var tabsListVariants = cva(
4250
+ "rounded-lg p-[3px] group-data-horizontal/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col",
4251
+ {
4252
+ variants: {
4253
+ variant: {
4254
+ default: "bg-muted",
4255
+ line: "gap-1 bg-transparent"
4256
+ }
4257
+ },
4258
+ defaultVariants: {
4259
+ variant: "default"
4260
+ }
4261
+ }
4262
+ );
4263
+ function TabsList({
4264
+ className,
4265
+ variant = "default",
4266
+ ...props
4267
+ }) {
4268
+ return /* @__PURE__ */ jsx(
4269
+ Tabs$1.List,
4270
+ {
4271
+ "data-slot": "tabs-list",
4272
+ "data-variant": variant,
4273
+ className: cn(tabsListVariants({ variant }), className),
4274
+ ...props
4275
+ }
4276
+ );
4277
+ }
4278
+ function TabsTrigger({
4279
+ className,
4280
+ ...props
4281
+ }) {
4282
+ return /* @__PURE__ */ jsx(
4283
+ Tabs$1.Trigger,
4284
+ {
4285
+ "data-slot": "tabs-trigger",
4286
+ className: cn(
4287
+ "gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-xs font-medium group-data-vertical/tabs:py-[calc(--spacing(1.25))] [&_svg:not([class*='size-'])]:size-3.5 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
4288
+ "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
4289
+ "data-active:bg-background dark:data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 data-active:text-foreground",
4290
+ "after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
4291
+ className
4292
+ ),
4293
+ ...props
4294
+ }
4295
+ );
4296
+ }
4297
+ function TabsContent({
4298
+ className,
4299
+ ...props
4300
+ }) {
4301
+ return /* @__PURE__ */ jsx(
4302
+ Tabs$1.Content,
4303
+ {
4304
+ "data-slot": "tabs-content",
4305
+ className: cn("text-xs/relaxed flex-1 outline-none", className),
4306
+ ...props
4307
+ }
4308
+ );
4309
+ }
4310
+ var toggleVariants = cva(
4311
+ "hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-md text-xs font-medium transition-all [&_svg:not([class*='size-'])]:size-3.5 group/toggle hover:bg-muted inline-flex items-center justify-center whitespace-nowrap outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
4312
+ {
4313
+ variants: {
4314
+ variant: {
4315
+ default: "bg-transparent",
4316
+ outline: "border-input hover:bg-muted border bg-transparent"
4317
+ },
4318
+ size: {
4319
+ default: "h-7 min-w-7 px-2",
4320
+ sm: "h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-1.5 text-[0.625rem] [&_svg:not([class*='size-'])]:size-3",
4321
+ lg: "h-8 min-w-8 px-2"
4322
+ }
4323
+ },
4324
+ defaultVariants: {
4325
+ variant: "default",
4326
+ size: "default"
4327
+ }
4328
+ }
4329
+ );
4330
+ function Toggle({
4331
+ className,
4332
+ variant = "default",
4333
+ size = "default",
4334
+ ...props
4335
+ }) {
4336
+ return /* @__PURE__ */ jsx(
4337
+ Toggle$1.Root,
4338
+ {
4339
+ "data-slot": "toggle",
4340
+ className: cn(toggleVariants({ variant, size, className })),
4341
+ ...props
4342
+ }
4343
+ );
4344
+ }
4345
+ var ToggleGroupContext = React2.createContext({
4346
+ size: "default",
4347
+ variant: "default",
4348
+ spacing: 0,
4349
+ orientation: "horizontal"
4350
+ });
4351
+ function ToggleGroup({
4352
+ className,
4353
+ variant,
4354
+ size,
4355
+ spacing = 0,
4356
+ orientation = "horizontal",
4357
+ children,
4358
+ ...props
4359
+ }) {
4360
+ return /* @__PURE__ */ jsx(
4361
+ ToggleGroup$1.Root,
4362
+ {
4363
+ "data-slot": "toggle-group",
4364
+ "data-variant": variant,
4365
+ "data-size": size,
4366
+ "data-spacing": spacing,
4367
+ "data-orientation": orientation,
4368
+ style: { "--gap": spacing },
4369
+ className: cn(
4370
+ "rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)] group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch",
4371
+ className
4372
+ ),
4373
+ ...props,
4374
+ children: /* @__PURE__ */ jsx(
4375
+ ToggleGroupContext.Provider,
4376
+ {
4377
+ value: { variant, size, spacing, orientation },
4378
+ children
4379
+ }
4380
+ )
4381
+ }
4382
+ );
4383
+ }
4384
+ function ToggleGroupItem({
4385
+ className,
4386
+ children,
4387
+ variant = "default",
4388
+ size = "default",
4389
+ ...props
4390
+ }) {
4391
+ const context = React2.useContext(ToggleGroupContext);
4392
+ return /* @__PURE__ */ jsx(
4393
+ ToggleGroup$1.Item,
4394
+ {
4395
+ "data-slot": "toggle-group-item",
4396
+ "data-variant": context.variant || variant,
4397
+ "data-size": context.size || size,
4398
+ "data-spacing": context.spacing,
4399
+ className: cn(
4400
+ "group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t",
4401
+ toggleVariants({
4402
+ variant: context.variant || variant,
4403
+ size: context.size || size
4404
+ }),
4405
+ className
4406
+ ),
4407
+ ...props,
4408
+ children
4409
+ }
4410
+ );
4411
+ }
4412
+ var Toaster = ({ ...props }) => {
4413
+ const { theme = "system" } = useTheme();
4414
+ return /* @__PURE__ */ jsx(
4415
+ Toaster$1,
4416
+ {
4417
+ theme,
4418
+ className: "toaster group",
4419
+ icons: {
4420
+ success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
4421
+ info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
4422
+ warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
4423
+ error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
4424
+ loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
4425
+ },
4426
+ style: {
4427
+ "--normal-bg": "var(--popover)",
4428
+ "--normal-text": "var(--popover-foreground)",
4429
+ "--normal-border": "var(--border)",
4430
+ "--border-radius": "var(--radius)"
4431
+ },
4432
+ toastOptions: {
4433
+ classNames: {
4434
+ toast: "cn-toast"
4435
+ }
4436
+ },
4437
+ ...props
4438
+ }
4439
+ );
4440
+ };
4441
+
4442
+ 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, ButtonGroup, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, Kbd, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, toggleVariants, useIsMobile, useSidebar };
4443
+ //# sourceMappingURL=index.mjs.map
4444
+ //# sourceMappingURL=index.mjs.map