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