openchad-react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1525 @@
1
+ import * as React2 from 'react';
2
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ import { X, Check, Circle, Search, ChevronRight, ChevronDown, ChevronUp, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, GripVertical, Loader2Icon } from 'lucide-react';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
8
+ import { Command as Command$1 } from 'cmdk';
9
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
10
+ import { cva } from 'class-variance-authority';
11
+ import { Slot } from '@radix-ui/react-slot';
12
+ import { getDefaultClassNames, DayPicker } from 'react-day-picker';
13
+ import * as RechartsPrimitive from 'recharts';
14
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
15
+ import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
16
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
17
+ import * as LabelPrimitive from '@radix-ui/react-label';
18
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
19
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
20
+ import * as ResizablePrimitive from 'react-resizable-panels';
21
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
22
+ import * as SelectPrimitive from '@radix-ui/react-select';
23
+ import * as SliderPrimitive from '@radix-ui/react-slider';
24
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
25
+ import { Switch as Switch$1 } from 'radix-ui';
26
+
27
+ // components/ui/dialog.tsx
28
+ function cn(...inputs) {
29
+ return twMerge(clsx(inputs));
30
+ }
31
+ var Dialog = DialogPrimitive.Root;
32
+ var DialogTrigger = DialogPrimitive.Trigger;
33
+ var DialogPortal = DialogPrimitive.Portal;
34
+ var DialogClose = DialogPrimitive.Close;
35
+ var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
36
+ DialogPrimitive.Overlay,
37
+ {
38
+ ref,
39
+ className: cn(
40
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
41
+ className
42
+ ),
43
+ ...props
44
+ }
45
+ ));
46
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
47
+ var DialogContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
48
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
49
+ /* @__PURE__ */ jsxs(
50
+ DialogPrimitive.Content,
51
+ {
52
+ ref,
53
+ className: cn(
54
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-card px-6 pt-6 shadow-lg duration-200 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 sm:rounded-lg",
55
+ className
56
+ ),
57
+ ...props,
58
+ children: [
59
+ children,
60
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
61
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
62
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
63
+ ] })
64
+ ]
65
+ }
66
+ )
67
+ ] }));
68
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
69
+ var DialogHeader = ({
70
+ className,
71
+ ...props
72
+ }) => /* @__PURE__ */ jsx(
73
+ "div",
74
+ {
75
+ className: cn(
76
+ "flex flex-col space-y-1.5 text-center sm:text-left",
77
+ className
78
+ ),
79
+ ...props
80
+ }
81
+ );
82
+ DialogHeader.displayName = "DialogHeader";
83
+ var DialogFooter = ({
84
+ className,
85
+ ...props
86
+ }) => /* @__PURE__ */ jsx(
87
+ "div",
88
+ {
89
+ className: cn(
90
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
91
+ className
92
+ ),
93
+ ...props
94
+ }
95
+ );
96
+ DialogFooter.displayName = "DialogFooter";
97
+ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
98
+ DialogPrimitive.Title,
99
+ {
100
+ ref,
101
+ className: cn(
102
+ "text-lg font-semibold leading-none tracking-tight",
103
+ className
104
+ ),
105
+ ...props
106
+ }
107
+ ));
108
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
109
+ var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
110
+ DialogPrimitive.Description,
111
+ {
112
+ ref,
113
+ className: cn("text-sm text-muted-foreground", className),
114
+ ...props
115
+ }
116
+ ));
117
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
118
+ var DropdownMenu = DropdownMenuPrimitive.Root;
119
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
120
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
121
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
122
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
123
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
124
+ var DropdownMenuSubTrigger = React2.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsx(
125
+ DropdownMenuPrimitive.SubTrigger,
126
+ {
127
+ ref,
128
+ className: cn(
129
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-[hsl(var(--hoverfloat))] data-[state=open]:bg-[hsl(var(--hoverfloat))] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
130
+ inset && "pl-8",
131
+ className
132
+ ),
133
+ ...props,
134
+ children
135
+ }
136
+ ));
137
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
138
+ var DropdownMenuSubContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
139
+ DropdownMenuPrimitive.SubContent,
140
+ {
141
+ ref,
142
+ className: cn(
143
+ "border-[hsl(var(--accent))]/10 shadow-lg z-50 min-w-[8rem] overflow-hidden rounded-md border bg-[hsl(var(--float))] p-1 text-popover-foreground shadow-lg 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 origin-[--radix-dropdown-menu-content-transform-origin]",
144
+ className
145
+ ),
146
+ ...props
147
+ }
148
+ ));
149
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
150
+ var DropdownMenuContent = React2.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
151
+ DropdownMenuPrimitive.Content,
152
+ {
153
+ ref,
154
+ sideOffset,
155
+ className: cn(
156
+ "border border-solid border-[hsl(var(--accent))]/10 z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-[hsl(var(--float))] p-1 text-popover-foreground shadow-md",
157
+ "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 origin-[--radix-dropdown-menu-content-transform-origin]",
158
+ className
159
+ ),
160
+ ...props
161
+ }
162
+ ) }));
163
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
164
+ var DropdownMenuItem = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
165
+ DropdownMenuPrimitive.Item,
166
+ {
167
+ ref,
168
+ className: cn(
169
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-[hsl(var(--hoverfloat))] focus:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
170
+ inset && "pl-8",
171
+ className
172
+ ),
173
+ ...props
174
+ }
175
+ ));
176
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
177
+ var DropdownMenuCheckboxItem = React2.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
178
+ DropdownMenuPrimitive.CheckboxItem,
179
+ {
180
+ ref,
181
+ className: cn(
182
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-[hsl(var(--hoverfloat))] focus:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
183
+ className
184
+ ),
185
+ checked,
186
+ ...props,
187
+ children: [
188
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
189
+ children
190
+ ]
191
+ }
192
+ ));
193
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
194
+ var DropdownMenuRadioItem = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
195
+ DropdownMenuPrimitive.RadioItem,
196
+ {
197
+ ref,
198
+ className: cn(
199
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-[hsl(var(--hoverfloat))] focus:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
200
+ className
201
+ ),
202
+ ...props,
203
+ children: [
204
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }),
205
+ children
206
+ ]
207
+ }
208
+ ));
209
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
210
+ var DropdownMenuLabel = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
211
+ DropdownMenuPrimitive.Label,
212
+ {
213
+ ref,
214
+ className: cn(
215
+ "px-2 py-1.5 text-sm font-semibold",
216
+ inset && "pl-8",
217
+ className
218
+ ),
219
+ ...props
220
+ }
221
+ ));
222
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
223
+ var DropdownMenuSeparator = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
224
+ DropdownMenuPrimitive.Separator,
225
+ {
226
+ ref,
227
+ className: cn("-mx-1 my-1 h-px bg-accent/10", className),
228
+ ...props
229
+ }
230
+ ));
231
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
232
+ var DropdownMenuShortcut = ({
233
+ className,
234
+ ...props
235
+ }) => {
236
+ return /* @__PURE__ */ jsx(
237
+ "span",
238
+ {
239
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
240
+ ...props
241
+ }
242
+ );
243
+ };
244
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
245
+ var Command = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
246
+ Command$1,
247
+ {
248
+ ref,
249
+ className: cn(
250
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-card text-popover-foreground",
251
+ className
252
+ ),
253
+ ...props
254
+ }
255
+ ));
256
+ Command.displayName = Command$1.displayName;
257
+ var CommandDialog = ({ children, ...props }) => {
258
+ return /* @__PURE__ */ jsx(Dialog, { ...props, children: /* @__PURE__ */ jsx(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[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 }) }) });
259
+ };
260
+ var CommandInput = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
261
+ /* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
262
+ /* @__PURE__ */ jsx(
263
+ Command$1.Input,
264
+ {
265
+ ref,
266
+ className: cn(
267
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
268
+ className
269
+ ),
270
+ ...props
271
+ }
272
+ )
273
+ ] }));
274
+ CommandInput.displayName = Command$1.Input.displayName;
275
+ var CommandList = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
276
+ Command$1.List,
277
+ {
278
+ ref,
279
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
280
+ ...props
281
+ }
282
+ ));
283
+ CommandList.displayName = Command$1.List.displayName;
284
+ var CommandEmpty = React2.forwardRef((props, ref) => /* @__PURE__ */ jsx(
285
+ Command$1.Empty,
286
+ {
287
+ ref,
288
+ className: "py-6 text-center text-sm",
289
+ ...props
290
+ }
291
+ ));
292
+ CommandEmpty.displayName = Command$1.Empty.displayName;
293
+ var CommandGroup = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
294
+ Command$1.Group,
295
+ {
296
+ ref,
297
+ className: cn(
298
+ "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
299
+ className
300
+ ),
301
+ ...props
302
+ }
303
+ ));
304
+ CommandGroup.displayName = Command$1.Group.displayName;
305
+ var CommandSeparator = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
306
+ Command$1.Separator,
307
+ {
308
+ ref,
309
+ className: cn("-mx-1 h-px bg-border", className),
310
+ ...props
311
+ }
312
+ ));
313
+ CommandSeparator.displayName = Command$1.Separator.displayName;
314
+ var CommandItem = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
315
+ Command$1.Item,
316
+ {
317
+ ref,
318
+ className: cn(
319
+ "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-[hsl(var(--hover))] data-[selected=true]:text-accent data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
320
+ className
321
+ ),
322
+ ...props
323
+ }
324
+ ));
325
+ CommandItem.displayName = Command$1.Item.displayName;
326
+ var CommandShortcut = ({
327
+ className,
328
+ ...props
329
+ }) => {
330
+ return /* @__PURE__ */ jsx(
331
+ "span",
332
+ {
333
+ className: cn(
334
+ "ml-auto text-xs tracking-widest text-muted-foreground",
335
+ className
336
+ ),
337
+ ...props
338
+ }
339
+ );
340
+ };
341
+ CommandShortcut.displayName = "CommandShortcut";
342
+ var Avatar = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
343
+ AvatarPrimitive.Root,
344
+ {
345
+ ref,
346
+ className: cn(
347
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
348
+ className
349
+ ),
350
+ ...props
351
+ }
352
+ ));
353
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
354
+ var AvatarImage = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
355
+ AvatarPrimitive.Image,
356
+ {
357
+ ref,
358
+ className: cn("aspect-square h-full w-full", className),
359
+ ...props
360
+ }
361
+ ));
362
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
363
+ var AvatarFallback = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
364
+ AvatarPrimitive.Fallback,
365
+ {
366
+ ref,
367
+ className: cn(
368
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
369
+ className
370
+ ),
371
+ ...props
372
+ }
373
+ ));
374
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
375
+ var badgeVariants = cva(
376
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
377
+ {
378
+ variants: {
379
+ variant: {
380
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
381
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
382
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
383
+ outline: "text-foreground"
384
+ }
385
+ },
386
+ defaultVariants: {
387
+ variant: "default"
388
+ }
389
+ }
390
+ );
391
+ function Badge({ className, variant, ...props }) {
392
+ return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
393
+ }
394
+ var buttonVariants = cva(
395
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
396
+ {
397
+ variants: {
398
+ variant: {
399
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
400
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
401
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
402
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
403
+ ghost: "hover:bg-accent hover:text-accent-foreground",
404
+ link: "text-primary underline-offset-4 hover:underline"
405
+ },
406
+ size: {
407
+ default: "h-9 px-4 py-2",
408
+ sm: "h-8 rounded-md px-3 text-xs",
409
+ lg: "h-10 rounded-md px-8",
410
+ icon: "h-9 w-9"
411
+ }
412
+ },
413
+ defaultVariants: {
414
+ variant: "default",
415
+ size: "default"
416
+ }
417
+ }
418
+ );
419
+ var Button = React2.forwardRef(
420
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
421
+ const Comp = asChild ? Slot : "button";
422
+ return /* @__PURE__ */ jsx(
423
+ Comp,
424
+ {
425
+ className: cn(buttonVariants({ variant, size, className })),
426
+ ref,
427
+ ...props
428
+ }
429
+ );
430
+ }
431
+ );
432
+ Button.displayName = "Button";
433
+ function Calendar({
434
+ className,
435
+ classNames,
436
+ showOutsideDays = true,
437
+ captionLayout = "label",
438
+ buttonVariant = "ghost",
439
+ formatters,
440
+ components,
441
+ ...props
442
+ }) {
443
+ const defaultClassNames = getDefaultClassNames();
444
+ return /* @__PURE__ */ jsx(
445
+ DayPicker,
446
+ {
447
+ showOutsideDays,
448
+ className: cn(
449
+ "bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
450
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
451
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
452
+ className
453
+ ),
454
+ captionLayout,
455
+ formatters: {
456
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
457
+ ...formatters
458
+ },
459
+ classNames: {
460
+ root: cn("w-fit", defaultClassNames.root),
461
+ months: cn(
462
+ "relative flex flex-col gap-4 md:flex-row",
463
+ defaultClassNames.months
464
+ ),
465
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
466
+ nav: cn(
467
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
468
+ defaultClassNames.nav
469
+ ),
470
+ button_previous: cn(
471
+ buttonVariants({ variant: buttonVariant }),
472
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
473
+ defaultClassNames.button_previous
474
+ ),
475
+ button_next: cn(
476
+ buttonVariants({ variant: buttonVariant }),
477
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
478
+ defaultClassNames.button_next
479
+ ),
480
+ month_caption: cn(
481
+ "flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",
482
+ defaultClassNames.month_caption
483
+ ),
484
+ dropdowns: cn(
485
+ "flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",
486
+ defaultClassNames.dropdowns
487
+ ),
488
+ dropdown_root: cn(
489
+ "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
490
+ defaultClassNames.dropdown_root
491
+ ),
492
+ dropdown: cn(
493
+ "bg-popover absolute inset-0 opacity-0",
494
+ defaultClassNames.dropdown
495
+ ),
496
+ caption_label: cn(
497
+ "select-none font-medium",
498
+ captionLayout === "label" ? "text-sm" : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
499
+ defaultClassNames.caption_label
500
+ ),
501
+ table: "w-full border-collapse",
502
+ weekdays: cn("flex", defaultClassNames.weekdays),
503
+ weekday: cn(
504
+ "text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",
505
+ defaultClassNames.weekday
506
+ ),
507
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
508
+ week_number_header: cn(
509
+ "w-[--cell-size] select-none",
510
+ defaultClassNames.week_number_header
511
+ ),
512
+ week_number: cn(
513
+ "text-muted-foreground select-none text-[0.8rem]",
514
+ defaultClassNames.week_number
515
+ ),
516
+ day: cn(
517
+ "group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",
518
+ defaultClassNames.day
519
+ ),
520
+ range_start: cn(
521
+ "bg-accent rounded-l-md",
522
+ defaultClassNames.range_start
523
+ ),
524
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
525
+ range_end: cn("bg-accent rounded-r-md", defaultClassNames.range_end),
526
+ today: cn(
527
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
528
+ defaultClassNames.today
529
+ ),
530
+ outside: cn(
531
+ "text-muted-foreground aria-selected:text-muted-foreground",
532
+ defaultClassNames.outside
533
+ ),
534
+ disabled: cn(
535
+ "text-muted-foreground opacity-50",
536
+ defaultClassNames.disabled
537
+ ),
538
+ hidden: cn("invisible", defaultClassNames.hidden),
539
+ ...classNames
540
+ },
541
+ components: {
542
+ Root: ({ className: className2, rootRef, ...props2 }) => {
543
+ return /* @__PURE__ */ jsx(
544
+ "div",
545
+ {
546
+ "data-slot": "calendar",
547
+ ref: rootRef,
548
+ className: cn(className2),
549
+ ...props2
550
+ }
551
+ );
552
+ },
553
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
554
+ if (orientation === "left") {
555
+ return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
556
+ }
557
+ if (orientation === "right") {
558
+ return /* @__PURE__ */ jsx(
559
+ ChevronRightIcon,
560
+ {
561
+ className: cn("size-4", className2),
562
+ ...props2
563
+ }
564
+ );
565
+ }
566
+ return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
567
+ },
568
+ DayButton: CalendarDayButton,
569
+ WeekNumber: ({ children, ...props2 }) => {
570
+ return /* @__PURE__ */ jsx("td", { ...props2, children: /* @__PURE__ */ jsx("div", { className: "flex size-[--cell-size] items-center justify-center text-center", children }) });
571
+ },
572
+ ...components
573
+ },
574
+ ...props
575
+ }
576
+ );
577
+ }
578
+ function CalendarDayButton({
579
+ className,
580
+ day,
581
+ modifiers,
582
+ ...props
583
+ }) {
584
+ const defaultClassNames = getDefaultClassNames();
585
+ const ref = React2.useRef(null);
586
+ React2.useEffect(() => {
587
+ if (modifiers.focused) ref.current?.focus();
588
+ }, [modifiers.focused]);
589
+ return /* @__PURE__ */ jsx(
590
+ Button,
591
+ {
592
+ ref,
593
+ variant: "ghost",
594
+ size: "icon",
595
+ "data-day": day.date.toLocaleDateString(),
596
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
597
+ "data-range-start": modifiers.range_start,
598
+ "data-range-end": modifiers.range_end,
599
+ "data-range-middle": modifiers.range_middle,
600
+ className: cn(
601
+ "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 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
602
+ defaultClassNames.day,
603
+ className
604
+ ),
605
+ ...props
606
+ }
607
+ );
608
+ }
609
+ var Card = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
610
+ "div",
611
+ {
612
+ ref,
613
+ className: cn(
614
+ "rounded-xl border bg-card text-card-foreground shadow",
615
+ className
616
+ ),
617
+ ...props
618
+ }
619
+ ));
620
+ Card.displayName = "Card";
621
+ var CardHeader = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
622
+ "div",
623
+ {
624
+ ref,
625
+ className: cn("flex flex-col space-y-1.5 p-6", className),
626
+ ...props
627
+ }
628
+ ));
629
+ CardHeader.displayName = "CardHeader";
630
+ var CardTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
631
+ "div",
632
+ {
633
+ ref,
634
+ className: cn("font-semibold leading-none tracking-tight", className),
635
+ ...props
636
+ }
637
+ ));
638
+ CardTitle.displayName = "CardTitle";
639
+ var CardDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
640
+ "div",
641
+ {
642
+ ref,
643
+ className: cn("text-sm text-muted-foreground", className),
644
+ ...props
645
+ }
646
+ ));
647
+ CardDescription.displayName = "CardDescription";
648
+ var CardContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
649
+ CardContent.displayName = "CardContent";
650
+ var CardFooter = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
651
+ "div",
652
+ {
653
+ ref,
654
+ className: cn("flex items-center p-6 pt-0", className),
655
+ ...props
656
+ }
657
+ ));
658
+ CardFooter.displayName = "CardFooter";
659
+ var THEMES = { light: "", dark: ".dark" };
660
+ var ChartContext = React2.createContext(null);
661
+ function useChart() {
662
+ const context = React2.useContext(ChartContext);
663
+ if (!context) {
664
+ throw new Error("useChart must be used within a <ChartContainer />");
665
+ }
666
+ return context;
667
+ }
668
+ var ChartContainer = React2.forwardRef(({ id, className, children, config, ...props }, ref) => {
669
+ const uniqueId = React2.useId();
670
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
671
+ return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
672
+ "div",
673
+ {
674
+ "data-chart": chartId,
675
+ ref,
676
+ className: cn(
677
+ "flex aspect-video justify-center text-xs [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.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 [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",
678
+ className
679
+ ),
680
+ ...props,
681
+ children: [
682
+ /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
683
+ /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
684
+ ]
685
+ }
686
+ ) });
687
+ });
688
+ ChartContainer.displayName = "Chart";
689
+ var ChartStyle = ({ id, config }) => {
690
+ const colorConfig = Object.entries(config).filter(
691
+ ([, config2]) => config2.theme || config2.color
692
+ );
693
+ if (!colorConfig.length) {
694
+ return null;
695
+ }
696
+ return /* @__PURE__ */ jsx(
697
+ "style",
698
+ {
699
+ dangerouslySetInnerHTML: {
700
+ __html: Object.entries(THEMES).map(
701
+ ([theme, prefix]) => `
702
+ ${prefix} [data-chart=${id}] {
703
+ ${colorConfig.map(([key, itemConfig]) => {
704
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
705
+ return color ? ` --color-${key}: ${color};` : null;
706
+ }).join("\n")}
707
+ }
708
+ `
709
+ ).join("\n")
710
+ }
711
+ }
712
+ );
713
+ };
714
+ var ChartTooltip = RechartsPrimitive.Tooltip;
715
+ var ChartTooltipContent = React2.forwardRef(
716
+ ({
717
+ active,
718
+ payload,
719
+ className,
720
+ indicator = "dot",
721
+ hideLabel = false,
722
+ hideIndicator = false,
723
+ label,
724
+ labelFormatter,
725
+ labelClassName,
726
+ formatter,
727
+ color,
728
+ nameKey,
729
+ labelKey
730
+ }, ref) => {
731
+ const { config } = useChart();
732
+ const tooltipLabel = React2.useMemo(() => {
733
+ if (hideLabel || !payload?.length) {
734
+ return null;
735
+ }
736
+ const [item] = payload;
737
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
738
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
739
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
740
+ if (labelFormatter) {
741
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
742
+ }
743
+ if (!value) {
744
+ return null;
745
+ }
746
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
747
+ }, [
748
+ label,
749
+ labelFormatter,
750
+ payload,
751
+ hideLabel,
752
+ labelClassName,
753
+ config,
754
+ labelKey
755
+ ]);
756
+ if (!active || !payload?.length) {
757
+ return null;
758
+ }
759
+ const nestLabel = payload.length === 1 && indicator !== "dot";
760
+ return /* @__PURE__ */ jsxs(
761
+ "div",
762
+ {
763
+ ref,
764
+ className: cn(
765
+ "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
766
+ className
767
+ ),
768
+ children: [
769
+ !nestLabel ? tooltipLabel : null,
770
+ /* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
771
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
772
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
773
+ const indicatorColor = color || item.payload.fill || item.color;
774
+ return /* @__PURE__ */ jsx(
775
+ "div",
776
+ {
777
+ className: cn(
778
+ "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
779
+ indicator === "dot" && "items-center"
780
+ ),
781
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
782
+ itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
783
+ "div",
784
+ {
785
+ className: cn(
786
+ "shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",
787
+ {
788
+ "h-2.5 w-2.5": indicator === "dot",
789
+ "w-1": indicator === "line",
790
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
791
+ "my-0.5": nestLabel && indicator === "dashed"
792
+ }
793
+ ),
794
+ style: {
795
+ "--color-bg": indicatorColor,
796
+ "--color-border": indicatorColor
797
+ }
798
+ }
799
+ ),
800
+ /* @__PURE__ */ jsxs(
801
+ "div",
802
+ {
803
+ className: cn(
804
+ "flex flex-1 justify-between leading-none",
805
+ nestLabel ? "items-end" : "items-center"
806
+ ),
807
+ children: [
808
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
809
+ nestLabel ? tooltipLabel : null,
810
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
811
+ ] }),
812
+ item.value && /* @__PURE__ */ jsx("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
813
+ ]
814
+ }
815
+ )
816
+ ] })
817
+ },
818
+ item.dataKey
819
+ );
820
+ }) })
821
+ ]
822
+ }
823
+ );
824
+ }
825
+ );
826
+ ChartTooltipContent.displayName = "ChartTooltip";
827
+ var ChartLegend = RechartsPrimitive.Legend;
828
+ var ChartLegendContent = React2.forwardRef(
829
+ ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
830
+ const { config } = useChart();
831
+ if (!payload?.length) {
832
+ return null;
833
+ }
834
+ return /* @__PURE__ */ jsx(
835
+ "div",
836
+ {
837
+ ref,
838
+ className: cn(
839
+ "flex items-center justify-center gap-4",
840
+ verticalAlign === "top" ? "pb-3" : "pt-3",
841
+ className
842
+ ),
843
+ children: payload.filter((item) => item.type !== "none").map((item) => {
844
+ const key = `${nameKey || item.dataKey || "value"}`;
845
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
846
+ return /* @__PURE__ */ jsxs(
847
+ "div",
848
+ {
849
+ className: cn(
850
+ "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
851
+ ),
852
+ children: [
853
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
854
+ "div",
855
+ {
856
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
857
+ style: {
858
+ backgroundColor: item.color
859
+ }
860
+ }
861
+ ),
862
+ itemConfig?.label
863
+ ]
864
+ },
865
+ item.value
866
+ );
867
+ })
868
+ }
869
+ );
870
+ }
871
+ );
872
+ ChartLegendContent.displayName = "ChartLegend";
873
+ function getPayloadConfigFromPayload(config, payload, key) {
874
+ if (typeof payload !== "object" || payload === null) {
875
+ return void 0;
876
+ }
877
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
878
+ let configLabelKey = key;
879
+ if (key in payload && typeof payload[key] === "string") {
880
+ configLabelKey = payload[key];
881
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
882
+ configLabelKey = payloadPayload[key];
883
+ }
884
+ return configLabelKey in config ? config[configLabelKey] : config[key];
885
+ }
886
+ var Checkbox = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
887
+ CheckboxPrimitive.Root,
888
+ {
889
+ ref,
890
+ className: cn(
891
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
892
+ className
893
+ ),
894
+ ...props,
895
+ children: /* @__PURE__ */ jsx(
896
+ CheckboxPrimitive.Indicator,
897
+ {
898
+ className: cn("flex items-center justify-center text-current", className?.includes("rounded-full") && className),
899
+ children: !className?.includes("rounded-full") && /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" })
900
+ }
901
+ )
902
+ }
903
+ ));
904
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
905
+ var ContextMenu = ContextMenuPrimitive.Root;
906
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
907
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
908
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
909
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
910
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
911
+ var ContextMenuSubTrigger = React2.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
912
+ ContextMenuPrimitive.SubTrigger,
913
+ {
914
+ ref,
915
+ className: cn(
916
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-[hsl(var(--hover))] focus:text-accent data-[state=open]:bg-card data-[state=open]:text-accent",
917
+ inset && "pl-8",
918
+ className
919
+ ),
920
+ ...props,
921
+ children: [
922
+ children,
923
+ /* @__PURE__ */ jsx(ChevronRight, { className: "ml-auto h-4 w-4" })
924
+ ]
925
+ }
926
+ ));
927
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
928
+ var ContextMenuSubContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
929
+ ContextMenuPrimitive.SubContent,
930
+ {
931
+ ref,
932
+ className: cn(
933
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-card p-1 text-accent shadow-lg 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 origin-[--radix-context-menu-content-transform-origin]",
934
+ className
935
+ ),
936
+ ...props
937
+ }
938
+ ));
939
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
940
+ var ContextMenuContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
941
+ ContextMenuPrimitive.Content,
942
+ {
943
+ ref,
944
+ onContextMenu: (e) => {
945
+ e.preventDefault();
946
+ },
947
+ className: cn(
948
+ "z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-card p-1 text-accent shadow-md 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 origin-[--radix-context-menu-content-transform-origin]",
949
+ className
950
+ ),
951
+ ...props
952
+ }
953
+ ) }));
954
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
955
+ var ContextMenuItem = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
956
+ ContextMenuPrimitive.Item,
957
+ {
958
+ ref,
959
+ className: cn(
960
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-[hsl(var(--hover))] focus:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
961
+ inset && "pl-8",
962
+ className
963
+ ),
964
+ ...props
965
+ }
966
+ ));
967
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
968
+ var ContextMenuCheckboxItem = React2.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
969
+ ContextMenuPrimitive.CheckboxItem,
970
+ {
971
+ ref,
972
+ className: cn(
973
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
974
+ className
975
+ ),
976
+ checked,
977
+ ...props,
978
+ children: [
979
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
980
+ children
981
+ ]
982
+ }
983
+ ));
984
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
985
+ var ContextMenuRadioItem = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
986
+ ContextMenuPrimitive.RadioItem,
987
+ {
988
+ ref,
989
+ className: cn(
990
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
991
+ className
992
+ ),
993
+ ...props,
994
+ children: [
995
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-4 w-4 fill-current" }) }) }),
996
+ children
997
+ ]
998
+ }
999
+ ));
1000
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1001
+ var ContextMenuLabel = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1002
+ ContextMenuPrimitive.Label,
1003
+ {
1004
+ ref,
1005
+ className: cn(
1006
+ "px-2 py-1.5 text-sm font-semibold text-foreground",
1007
+ inset && "pl-8",
1008
+ className
1009
+ ),
1010
+ ...props
1011
+ }
1012
+ ));
1013
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1014
+ var ContextMenuSeparator = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1015
+ ContextMenuPrimitive.Separator,
1016
+ {
1017
+ ref,
1018
+ className: cn("-mx-1 my-1 h-px bg-border", className),
1019
+ ...props
1020
+ }
1021
+ ));
1022
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1023
+ var ContextMenuShortcut = ({
1024
+ className,
1025
+ ...props
1026
+ }) => {
1027
+ return /* @__PURE__ */ jsx(
1028
+ "span",
1029
+ {
1030
+ className: cn(
1031
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1032
+ className
1033
+ ),
1034
+ ...props
1035
+ }
1036
+ );
1037
+ };
1038
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
1039
+ function Empty({ className, ...props }) {
1040
+ return /* @__PURE__ */ jsx(
1041
+ "div",
1042
+ {
1043
+ "data-slot": "empty",
1044
+ className: cn(
1045
+ "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12",
1046
+ className
1047
+ ),
1048
+ ...props
1049
+ }
1050
+ );
1051
+ }
1052
+ function EmptyHeader({ className, ...props }) {
1053
+ return /* @__PURE__ */ jsx(
1054
+ "div",
1055
+ {
1056
+ "data-slot": "empty-header",
1057
+ className: cn(
1058
+ "flex max-w-sm flex-col items-center gap-2 text-center",
1059
+ className
1060
+ ),
1061
+ ...props
1062
+ }
1063
+ );
1064
+ }
1065
+ var emptyMediaVariants = cva(
1066
+ "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
1067
+ {
1068
+ variants: {
1069
+ variant: {
1070
+ default: "bg-transparent",
1071
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
1072
+ }
1073
+ },
1074
+ defaultVariants: {
1075
+ variant: "default"
1076
+ }
1077
+ }
1078
+ );
1079
+ function EmptyMedia({
1080
+ className,
1081
+ variant = "default",
1082
+ ...props
1083
+ }) {
1084
+ return /* @__PURE__ */ jsx(
1085
+ "div",
1086
+ {
1087
+ "data-slot": "empty-icon",
1088
+ "data-variant": variant,
1089
+ className: cn(emptyMediaVariants({ variant, className })),
1090
+ ...props
1091
+ }
1092
+ );
1093
+ }
1094
+ function EmptyTitle({ className, ...props }) {
1095
+ return /* @__PURE__ */ jsx(
1096
+ "div",
1097
+ {
1098
+ "data-slot": "empty-title",
1099
+ className: cn("text-lg font-medium tracking-tight", className),
1100
+ ...props
1101
+ }
1102
+ );
1103
+ }
1104
+ function EmptyDescription({ className, ...props }) {
1105
+ return /* @__PURE__ */ jsx(
1106
+ "div",
1107
+ {
1108
+ "data-slot": "empty-description",
1109
+ className: cn(
1110
+ "text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4",
1111
+ className
1112
+ ),
1113
+ ...props
1114
+ }
1115
+ );
1116
+ }
1117
+ function EmptyContent({ className, ...props }) {
1118
+ return /* @__PURE__ */ jsx(
1119
+ "div",
1120
+ {
1121
+ "data-slot": "empty-content",
1122
+ className: cn(
1123
+ "flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm",
1124
+ className
1125
+ ),
1126
+ ...props
1127
+ }
1128
+ );
1129
+ }
1130
+ var HoverCard = HoverCardPrimitive.Root;
1131
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
1132
+ var HoverCardContent = React2.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
1133
+ HoverCardPrimitive.Content,
1134
+ {
1135
+ ref,
1136
+ align,
1137
+ sideOffset,
1138
+ className: cn(
1139
+ "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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 origin-[--radix-hover-card-content-transform-origin]",
1140
+ className
1141
+ ),
1142
+ ...props
1143
+ }
1144
+ ));
1145
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
1146
+ var Input = React2.forwardRef(
1147
+ ({ className, type, ...props }, ref) => {
1148
+ return /* @__PURE__ */ jsx(
1149
+ "input",
1150
+ {
1151
+ type,
1152
+ className: cn(
1153
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1154
+ className
1155
+ ),
1156
+ ref,
1157
+ ...props
1158
+ }
1159
+ );
1160
+ }
1161
+ );
1162
+ Input.displayName = "Input";
1163
+ var labelVariants = cva(
1164
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1165
+ );
1166
+ var Label3 = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1167
+ LabelPrimitive.Root,
1168
+ {
1169
+ ref,
1170
+ className: cn(labelVariants(), className),
1171
+ ...props
1172
+ }
1173
+ ));
1174
+ Label3.displayName = LabelPrimitive.Root.displayName;
1175
+ var Popover = PopoverPrimitive.Root;
1176
+ var PopoverTrigger = PopoverPrimitive.Trigger;
1177
+ var PopoverAnchor = PopoverPrimitive.Anchor;
1178
+ var PopoverContent = React2.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1179
+ PopoverPrimitive.Content,
1180
+ {
1181
+ ref,
1182
+ align,
1183
+ sideOffset,
1184
+ className: cn(
1185
+ "z-50 w-72 rounded-md border bg-card p-4 text-popover-foreground shadow-md outline-none 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 origin-[--radix-popover-content-transform-origin]",
1186
+ className
1187
+ ),
1188
+ ...props
1189
+ }
1190
+ ) }));
1191
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1192
+ var Progress = React2.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
1193
+ ProgressPrimitive.Root,
1194
+ {
1195
+ ref,
1196
+ className: cn(
1197
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
1198
+ className
1199
+ ),
1200
+ ...props,
1201
+ children: /* @__PURE__ */ jsx(
1202
+ ProgressPrimitive.Indicator,
1203
+ {
1204
+ className: "h-full w-full flex-1 bg-primary transition-all",
1205
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
1206
+ }
1207
+ )
1208
+ }
1209
+ ));
1210
+ Progress.displayName = ProgressPrimitive.Root.displayName;
1211
+ var ResizablePanelGroup = ({
1212
+ className,
1213
+ ...props
1214
+ }) => /* @__PURE__ */ jsx(
1215
+ ResizablePrimitive.PanelGroup,
1216
+ {
1217
+ className: cn(
1218
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
1219
+ className
1220
+ ),
1221
+ ...props
1222
+ }
1223
+ );
1224
+ var ResizablePanel = ResizablePrimitive.Panel;
1225
+ var ResizableHandle = ({
1226
+ withHandle,
1227
+ className,
1228
+ ...props
1229
+ }) => /* @__PURE__ */ jsx(
1230
+ ResizablePrimitive.PanelResizeHandle,
1231
+ {
1232
+ className: cn(
1233
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 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-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
1234
+ className
1235
+ ),
1236
+ ...props,
1237
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx(GripVertical, { className: "h-2.5 w-2.5" }) })
1238
+ }
1239
+ );
1240
+ var ScrollArea = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1241
+ ScrollAreaPrimitive.Root,
1242
+ {
1243
+ ref,
1244
+ className: cn("relative overflow-hidden", className),
1245
+ ...props,
1246
+ children: [
1247
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
1248
+ /* @__PURE__ */ jsx(ScrollBar, {}),
1249
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
1250
+ ]
1251
+ }
1252
+ ));
1253
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
1254
+ var ScrollBar = React2.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
1255
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1256
+ {
1257
+ ref,
1258
+ orientation,
1259
+ className: cn(
1260
+ "flex touch-none select-none transition-colors",
1261
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
1262
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
1263
+ className
1264
+ ),
1265
+ ...props,
1266
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1267
+ }
1268
+ ));
1269
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
1270
+ var Select = SelectPrimitive.Root;
1271
+ var SelectGroup = SelectPrimitive.Group;
1272
+ var SelectValue = SelectPrimitive.Value;
1273
+ var SelectTrigger = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1274
+ SelectPrimitive.Trigger,
1275
+ {
1276
+ ref,
1277
+ className: cn(
1278
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
1279
+ className
1280
+ ),
1281
+ ...props,
1282
+ children: [
1283
+ children,
1284
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 opacity-50" }) })
1285
+ ]
1286
+ }
1287
+ ));
1288
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
1289
+ var SelectScrollUpButton = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1290
+ SelectPrimitive.ScrollUpButton,
1291
+ {
1292
+ ref,
1293
+ className: cn(
1294
+ "flex cursor-default items-center justify-center py-1",
1295
+ className
1296
+ ),
1297
+ ...props,
1298
+ children: /* @__PURE__ */ jsx(ChevronUp, { className: "h-4 w-4" })
1299
+ }
1300
+ ));
1301
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
1302
+ var SelectScrollDownButton = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1303
+ SelectPrimitive.ScrollDownButton,
1304
+ {
1305
+ ref,
1306
+ className: cn(
1307
+ "flex cursor-default items-center justify-center py-1",
1308
+ className
1309
+ ),
1310
+ ...props,
1311
+ children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4" })
1312
+ }
1313
+ ));
1314
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
1315
+ var SelectContent = React2.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
1316
+ SelectPrimitive.Content,
1317
+ {
1318
+ ref,
1319
+ className: cn(
1320
+ "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 origin-[--radix-select-content-transform-origin]",
1321
+ 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",
1322
+ className
1323
+ ),
1324
+ position,
1325
+ ...props,
1326
+ children: [
1327
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1328
+ /* @__PURE__ */ jsx(
1329
+ SelectPrimitive.Viewport,
1330
+ {
1331
+ className: cn(
1332
+ "p-1",
1333
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1334
+ ),
1335
+ children
1336
+ }
1337
+ ),
1338
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1339
+ ]
1340
+ }
1341
+ ) }));
1342
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
1343
+ var SelectLabel = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1344
+ SelectPrimitive.Label,
1345
+ {
1346
+ ref,
1347
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
1348
+ ...props
1349
+ }
1350
+ ));
1351
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
1352
+ var SelectItem = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1353
+ SelectPrimitive.Item,
1354
+ {
1355
+ ref,
1356
+ className: cn(
1357
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1358
+ className
1359
+ ),
1360
+ ...props,
1361
+ children: [
1362
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
1363
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
1364
+ ]
1365
+ }
1366
+ ));
1367
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
1368
+ var SelectSeparator = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1369
+ SelectPrimitive.Separator,
1370
+ {
1371
+ ref,
1372
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1373
+ ...props
1374
+ }
1375
+ ));
1376
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
1377
+ var Slider = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
1378
+ SliderPrimitive.Root,
1379
+ {
1380
+ ref,
1381
+ className: cn(
1382
+ "relative flex w-full touch-none select-none items-center",
1383
+ className
1384
+ ),
1385
+ ...props,
1386
+ children: [
1387
+ /* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
1388
+ /* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-card shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
1389
+ ]
1390
+ }
1391
+ ));
1392
+ Slider.displayName = SliderPrimitive.Root.displayName;
1393
+ function Spinner({ className, ...props }) {
1394
+ return /* @__PURE__ */ jsx(
1395
+ Loader2Icon,
1396
+ {
1397
+ role: "status",
1398
+ "aria-label": "Loading",
1399
+ className: cn("size-4 animate-spin", className),
1400
+ ...props
1401
+ }
1402
+ );
1403
+ }
1404
+ var Table = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
1405
+ "table",
1406
+ {
1407
+ ref,
1408
+ className: cn("w-full caption-bottom text-sm", className),
1409
+ ...props
1410
+ }
1411
+ ) }));
1412
+ Table.displayName = "Table";
1413
+ var TableHeader = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
1414
+ TableHeader.displayName = "TableHeader";
1415
+ var TableBody = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1416
+ "tbody",
1417
+ {
1418
+ ref,
1419
+ className: cn("[&_tr:last-child]:border-0", className),
1420
+ ...props
1421
+ }
1422
+ ));
1423
+ TableBody.displayName = "TableBody";
1424
+ var TableFooter = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1425
+ "tfoot",
1426
+ {
1427
+ ref,
1428
+ className: cn(
1429
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
1430
+ className
1431
+ ),
1432
+ ...props
1433
+ }
1434
+ ));
1435
+ TableFooter.displayName = "TableFooter";
1436
+ var TableRow = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1437
+ "tr",
1438
+ {
1439
+ ref,
1440
+ className: cn(
1441
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
1442
+ className
1443
+ ),
1444
+ ...props
1445
+ }
1446
+ ));
1447
+ TableRow.displayName = "TableRow";
1448
+ var TableHead = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1449
+ "th",
1450
+ {
1451
+ ref,
1452
+ className: cn(
1453
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1454
+ className
1455
+ ),
1456
+ ...props
1457
+ }
1458
+ ));
1459
+ TableHead.displayName = "TableHead";
1460
+ var TableCell = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1461
+ "td",
1462
+ {
1463
+ ref,
1464
+ className: cn(
1465
+ "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1466
+ className
1467
+ ),
1468
+ ...props
1469
+ }
1470
+ ));
1471
+ TableCell.displayName = "TableCell";
1472
+ var TableCaption = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1473
+ "caption",
1474
+ {
1475
+ ref,
1476
+ className: cn("mt-4 text-sm text-muted-foreground", className),
1477
+ ...props
1478
+ }
1479
+ ));
1480
+ TableCaption.displayName = "TableCaption";
1481
+ var TooltipProvider = TooltipPrimitive.Provider;
1482
+ var Tooltip2 = TooltipPrimitive.Root;
1483
+ var TooltipTrigger = TooltipPrimitive.Trigger;
1484
+ var TooltipContent = React2.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1485
+ TooltipPrimitive.Content,
1486
+ {
1487
+ ref,
1488
+ sideOffset,
1489
+ className: cn(
1490
+ "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs 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 origin-[--radix-tooltip-content-transform-origin]",
1491
+ className
1492
+ ),
1493
+ ...props
1494
+ }
1495
+ ) }));
1496
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
1497
+ function Switch({
1498
+ className,
1499
+ size = "default",
1500
+ ...props
1501
+ }) {
1502
+ return /* @__PURE__ */ jsx(
1503
+ Switch$1.Root,
1504
+ {
1505
+ "data-slot": "switch",
1506
+ "data-size": size,
1507
+ className: cn(
1508
+ "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-[hsl(var(--chat-border)))] transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-black data-disabled:cursor-not-allowed data-disabled:opacity-50",
1509
+ className
1510
+ ),
1511
+ ...props,
1512
+ children: /* @__PURE__ */ jsx(
1513
+ Switch$1.Thumb,
1514
+ {
1515
+ "data-slot": "switch-thumb",
1516
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] dark:data-[state=checked]:bg-primary-foreground group-data-[size=default]/switch:data-[state=unchecked]:translate-x-0 group-data-[size=sm]/switch:data-[state=unchecked]:translate-x-0 dark:data-[state=unchecked]:bg-foreground"
1517
+ }
1518
+ )
1519
+ }
1520
+ );
1521
+ }
1522
+
1523
+ export { Avatar, AvatarFallback, AvatarImage, Badge, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, 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, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, HoverCard, HoverCardContent, HoverCardTrigger, Input, Label3 as Label, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn };
1524
+ //# sourceMappingURL=chunk-VZ7VQBAB.mjs.map
1525
+ //# sourceMappingURL=chunk-VZ7VQBAB.mjs.map