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