@xwadex/fesd-next 0.3.2 → 0.3.4-10

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