@tradalab/lyra 1.11.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui/index.js CHANGED
@@ -1,28 +1,32 @@
1
1
  "use client";
2
- import { Dialog, DialogHeader, DialogTitle, DialogDescription, DialogContent, Label } from '../chunk-44WIOUJJ.js';
3
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Label } from '../chunk-44WIOUJJ.js';
2
+ import { Dialog, DialogHeader, DialogTitle, DialogDescription, DialogContent, Label } from '../chunk-RSAN65FI.js';
3
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Label } from '../chunk-RSAN65FI.js';
4
4
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from '../chunk-CV3UXQBT.js';
5
- import { Separator, InputGroup, InputGroupAddon } from '../chunk-V6TVUMAU.js';
6
- export { AccountMenu, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, ScrollArea, ScrollBar, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, defaultAccountMenuLabels, initialsOf, useSidebar } from '../chunk-V6TVUMAU.js';
5
+ import { Separator, InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton } from '../chunk-2PHVSGAE.js';
6
+ export { AccountMenu, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, ScrollArea, ScrollBar, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, defaultAccountMenuLabels, initialsOf, useSidebar } from '../chunk-2PHVSGAE.js';
7
7
  import '../chunk-QYA2HGKW.js';
8
- export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '../chunk-ZG5ZPKFL.js';
8
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '../chunk-LZZ3UOPT.js';
9
9
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input } from '../chunk-SQA4ILAK.js';
10
- import { Button } from '../chunk-KFQOYZ64.js';
11
- export { Button, buttonVariants } from '../chunk-KFQOYZ64.js';
10
+ import { Button, buttonVariants } from '../chunk-5Q4UTRYU.js';
11
+ export { Button, buttonVariants } from '../chunk-5Q4UTRYU.js';
12
12
  import { cn } from '../chunk-XH55BHUU.js';
13
- import * as React21 from 'react';
13
+ import * as React8 from 'react';
14
14
  import { useMemo } from 'react';
15
- import { Accordion as Accordion$1, AlertDialog as AlertDialog$1, AspectRatio as AspectRatio$1, Slot, Checkbox as Checkbox$1, Collapsible as Collapsible$1, HoverCard as HoverCard$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Popover as Popover$1, Progress as Progress$1, RadioGroup as RadioGroup$1, Select as Select$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
16
- import { ChevronDownIcon, ChevronUpIcon, CheckIcon, SearchIcon, MinusIcon, ChevronRightIcon, ChevronLeftIcon, MoreHorizontalIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon } from 'lucide-react';
17
- import { jsx, jsxs } from 'react/jsx-runtime';
15
+ import { Direction, Accordion as Accordion$1, AlertDialog as AlertDialog$1, AspectRatio as AspectRatio$1, Slot, Checkbox as Checkbox$1, Collapsible as Collapsible$1, HoverCard as HoverCard$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Popover as Popover$1, Progress as Progress$1, RadioGroup as RadioGroup$1, Select as Select$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
16
+ import { ChevronDownIcon, ChevronUpIcon, ChevronLeftIcon, ChevronRightIcon, CheckIcon, XIcon, SearchIcon, MinusIcon, ArrowDownIcon, MoreHorizontalIcon, Loader2Icon, CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon } from 'lucide-react';
17
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
18
18
  import { cva } from 'class-variance-authority';
19
+ import { getDefaultClassNames, DayPicker } from 'react-day-picker';
20
+ import useEmblaCarousel from 'embla-carousel-react';
21
+ import * as RechartsPrimitive from 'recharts';
22
+ import { Combobox as Combobox$1 } from '@base-ui/react';
19
23
  import { Command as Command$1 } from 'cmdk';
20
24
  import { Drawer as Drawer$1 } from 'vaul';
21
25
  import { OTPInput, OTPInputContext } from 'input-otp';
26
+ import { MessageScroller as MessageScroller$1 } from '@shadcn/react/message-scroller';
27
+ export { useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility } from '@shadcn/react/message-scroller';
22
28
  import * as ResizablePrimitive from 'react-resizable-panels';
23
- import { useTheme } from 'next-themes';
24
- import { Toaster as Toaster$1 } from 'sonner';
25
- export { toast } from 'sonner';
29
+ import { Toast as Toast$1 } from '@base-ui/react/toast';
26
30
 
27
31
  function Accordion({
28
32
  className,
@@ -110,20 +114,38 @@ var alertVariants = cva(
110
114
  }
111
115
  }
112
116
  );
113
- function Alert({ className, variant, ...props }) {
114
- return /* @__PURE__ */ jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props });
117
+ function Alert({
118
+ className,
119
+ variant,
120
+ ...props
121
+ }) {
122
+ return /* @__PURE__ */ jsx(
123
+ "div",
124
+ {
125
+ "data-slot": "alert",
126
+ role: "alert",
127
+ className: cn(alertVariants({ variant }), className),
128
+ ...props
129
+ }
130
+ );
115
131
  }
116
132
  function AlertTitle({ className, ...props }) {
117
133
  return /* @__PURE__ */ jsx(
118
134
  "div",
119
135
  {
120
136
  "data-slot": "alert-title",
121
- className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
137
+ className: cn(
138
+ "font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
139
+ className
140
+ ),
122
141
  ...props
123
142
  }
124
143
  );
125
144
  }
126
- function AlertDescription({ className, ...props }) {
145
+ function AlertDescription({
146
+ className,
147
+ ...props
148
+ }) {
127
149
  return /* @__PURE__ */ jsx(
128
150
  "div",
129
151
  {
@@ -137,7 +159,17 @@ function AlertDescription({ className, ...props }) {
137
159
  );
138
160
  }
139
161
  function AlertAction({ className, ...props }) {
140
- return /* @__PURE__ */ jsx("div", { "data-slot": "alert-action", className: cn("absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))]", className), ...props });
162
+ return /* @__PURE__ */ jsx(
163
+ "div",
164
+ {
165
+ "data-slot": "alert-action",
166
+ className: cn(
167
+ "absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))]",
168
+ className
169
+ ),
170
+ ...props
171
+ }
172
+ );
141
173
  }
142
174
  function AlertDialog({
143
175
  ...props
@@ -301,658 +333,2249 @@ function AlertDialogCancel({
301
333
  }
302
334
  ) });
303
335
  }
304
- function AspectRatio({ ...props }) {
336
+ function AspectRatio({
337
+ ...props
338
+ }) {
305
339
  return /* @__PURE__ */ jsx(AspectRatio$1.Root, { "data-slot": "aspect-ratio", ...props });
306
340
  }
307
- var badgeVariants = cva(
308
- "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!",
341
+ var attachmentVariants = cva(
342
+ "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",
309
343
  {
310
344
  variants: {
311
- variant: {
312
- default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
313
- secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
314
- 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",
315
- outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
316
- ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
317
- link: "text-primary underline-offset-4 hover:underline"
345
+ size: {
346
+ 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",
347
+ 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",
348
+ 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"
349
+ },
350
+ orientation: {
351
+ horizontal: "min-w-40 items-center",
352
+ vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30"
318
353
  }
319
- },
320
- defaultVariants: {
321
- variant: "default"
322
354
  }
323
355
  }
324
356
  );
325
- function Badge({
357
+ function Attachment({
326
358
  className,
327
- variant = "default",
328
- asChild = false,
359
+ state = "done",
360
+ size = "default",
361
+ orientation = "horizontal",
329
362
  ...props
330
363
  }) {
331
- const Comp = asChild ? Slot.Root : "span";
332
364
  return /* @__PURE__ */ jsx(
333
- Comp,
365
+ "div",
334
366
  {
335
- "data-slot": "badge",
336
- "data-variant": variant,
337
- className: cn(badgeVariants({ variant }), className),
367
+ "data-slot": "attachment",
368
+ "data-state": state,
369
+ "data-size": size,
370
+ "data-orientation": orientation,
371
+ className: cn(attachmentVariants({ size, orientation }), className),
338
372
  ...props
339
373
  }
340
374
  );
341
375
  }
342
- var buttonGroupVariants = cva(
343
- "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",
376
+ var attachmentMediaVariants = cva(
377
+ "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",
344
378
  {
345
379
  variants: {
346
- orientation: {
347
- horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
348
- vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
380
+ variant: {
381
+ icon: "",
382
+ 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"
349
383
  }
350
384
  },
351
385
  defaultVariants: {
352
- orientation: "horizontal"
386
+ variant: "icon"
353
387
  }
354
388
  }
355
389
  );
356
- function ButtonGroup({
390
+ function AttachmentMedia({
357
391
  className,
358
- orientation,
392
+ variant = "icon",
359
393
  ...props
360
394
  }) {
361
395
  return /* @__PURE__ */ jsx(
362
396
  "div",
363
397
  {
364
- role: "group",
365
- "data-slot": "button-group",
366
- "data-orientation": orientation,
367
- className: cn(buttonGroupVariants({ orientation }), className),
398
+ "data-slot": "attachment-media",
399
+ "data-variant": variant,
400
+ className: cn(attachmentMediaVariants({ variant }), className),
368
401
  ...props
369
402
  }
370
403
  );
371
404
  }
372
- function ButtonGroupText({
405
+ function AttachmentContent({
373
406
  className,
374
- asChild = false,
375
407
  ...props
376
408
  }) {
377
- const Comp = asChild ? Slot.Root : "div";
378
409
  return /* @__PURE__ */ jsx(
379
- Comp,
410
+ "div",
380
411
  {
412
+ "data-slot": "attachment-content",
381
413
  className: cn(
382
- "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",
414
+ "max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1",
383
415
  className
384
416
  ),
385
417
  ...props
386
418
  }
387
419
  );
388
420
  }
389
- function ButtonGroupSeparator({
421
+ function AttachmentTitle({
390
422
  className,
391
- orientation = "vertical",
392
423
  ...props
393
424
  }) {
394
425
  return /* @__PURE__ */ jsx(
395
- Separator,
426
+ "span",
396
427
  {
397
- "data-slot": "button-group-separator",
398
- orientation,
428
+ "data-slot": "attachment-title",
399
429
  className: cn(
400
- "relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
430
+ "block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer",
401
431
  className
402
432
  ),
403
433
  ...props
404
434
  }
405
435
  );
406
436
  }
407
- function Checkbox({
437
+ function AttachmentDescription({
408
438
  className,
409
439
  ...props
410
440
  }) {
411
441
  return /* @__PURE__ */ jsx(
412
- Checkbox$1.Root,
442
+ "span",
413
443
  {
414
- "data-slot": "checkbox",
444
+ "data-slot": "attachment-description",
415
445
  className: cn(
416
- "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",
446
+ "mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive/80",
447
+ "max-w-full",
417
448
  className
418
449
  ),
419
- ...props,
420
- children: /* @__PURE__ */ jsx(
421
- Checkbox$1.Indicator,
422
- {
423
- "data-slot": "checkbox-indicator",
424
- className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
425
- children: /* @__PURE__ */ jsx(
426
- CheckIcon,
427
- {}
428
- )
429
- }
430
- )
450
+ ...props
431
451
  }
432
452
  );
433
453
  }
434
- function Collapsible({
435
- ...props
436
- }) {
437
- return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
438
- }
439
- function CollapsibleTrigger({
454
+ function AttachmentActions({
455
+ className,
440
456
  ...props
441
457
  }) {
442
458
  return /* @__PURE__ */ jsx(
443
- Collapsible$1.CollapsibleTrigger,
459
+ "div",
444
460
  {
445
- "data-slot": "collapsible-trigger",
461
+ "data-slot": "attachment-actions",
462
+ className: cn(
463
+ "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",
464
+ className
465
+ ),
446
466
  ...props
447
467
  }
448
468
  );
449
469
  }
450
- function CollapsibleContent({
470
+ function AttachmentAction({
471
+ className,
472
+ variant,
473
+ size = "icon-xs",
451
474
  ...props
452
475
  }) {
453
476
  return /* @__PURE__ */ jsx(
454
- Collapsible$1.CollapsibleContent,
477
+ Button,
455
478
  {
456
- "data-slot": "collapsible-content",
479
+ "data-slot": "attachment-action",
480
+ variant: variant ?? "ghost",
481
+ size,
482
+ className: cn(className),
457
483
  ...props
458
484
  }
459
485
  );
460
486
  }
461
- function Command({
487
+ function AttachmentTrigger({
462
488
  className,
489
+ asChild = false,
490
+ type,
463
491
  ...props
464
492
  }) {
493
+ const Comp = asChild ? Slot.Root : "button";
465
494
  return /* @__PURE__ */ jsx(
466
- Command$1,
495
+ Comp,
467
496
  {
468
- "data-slot": "command",
497
+ "data-slot": "attachment-trigger",
498
+ type: asChild ? void 0 : type ?? "button",
499
+ className: cn("absolute inset-0 z-10 outline-none", className),
500
+ ...props
501
+ }
502
+ );
503
+ }
504
+ function AttachmentGroup({ className, ...props }) {
505
+ return /* @__PURE__ */ jsx(
506
+ "div",
507
+ {
508
+ "data-slot": "attachment-group",
469
509
  className: cn(
470
- "flex size-full flex-col overflow-hidden rounded-none bg-popover text-popover-foreground",
510
+ "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",
471
511
  className
472
512
  ),
473
513
  ...props
474
514
  }
475
515
  );
476
516
  }
477
- function CommandDialog({
478
- title = "Command Palette",
479
- description = "Search for a command to run...",
480
- children,
481
- className,
482
- showCloseButton = false,
483
- ...props
484
- }) {
485
- return /* @__PURE__ */ jsxs(Dialog, { ...props, children: [
486
- /* @__PURE__ */ jsxs(DialogHeader, { className: "sr-only", children: [
487
- /* @__PURE__ */ jsx(DialogTitle, { children: title }),
488
- /* @__PURE__ */ jsx(DialogDescription, { children: description })
489
- ] }),
490
- /* @__PURE__ */ jsx(
491
- DialogContent,
492
- {
493
- className: cn(
494
- "top-1/3 translate-y-0 overflow-hidden rounded-none p-0",
495
- className
496
- ),
497
- showCloseButton,
498
- children
517
+ var badgeVariants = cva(
518
+ "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!",
519
+ {
520
+ variants: {
521
+ variant: {
522
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
523
+ secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
524
+ 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",
525
+ outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
526
+ ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
527
+ link: "text-primary underline-offset-4 hover:underline"
499
528
  }
500
- )
501
- ] });
502
- }
503
- function CommandInput({
529
+ },
530
+ defaultVariants: {
531
+ variant: "default"
532
+ }
533
+ }
534
+ );
535
+ function Badge({
504
536
  className,
537
+ variant = "default",
538
+ asChild = false,
505
539
  ...props
506
540
  }) {
507
- return /* @__PURE__ */ jsx("div", { "data-slot": "command-input-wrapper", className: "border-b pb-0", children: /* @__PURE__ */ jsxs(InputGroup, { className: "h-8 border-none border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!", children: [
508
- /* @__PURE__ */ jsx(
509
- Command$1.Input,
510
- {
511
- "data-slot": "command-input",
512
- className: cn(
513
- "w-full text-xs outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
514
- className
515
- ),
516
- ...props
517
- }
518
- ),
519
- /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }) })
520
- ] }) });
541
+ const Comp = asChild ? Slot.Root : "span";
542
+ return /* @__PURE__ */ jsx(
543
+ Comp,
544
+ {
545
+ "data-slot": "badge",
546
+ "data-variant": variant,
547
+ className: cn(badgeVariants({ variant }), className),
548
+ ...props
549
+ }
550
+ );
521
551
  }
522
- function CommandList({
523
- className,
524
- ...props
525
- }) {
552
+ function BubbleGroup({ className, ...props }) {
526
553
  return /* @__PURE__ */ jsx(
527
- Command$1.List,
554
+ "div",
528
555
  {
529
- "data-slot": "command-list",
530
- className: cn(
531
- "no-scrollbar max-h-72 scroll-py-0 overflow-x-hidden overflow-y-auto outline-none",
532
- className
533
- ),
556
+ "data-slot": "bubble-group",
557
+ className: cn("flex min-w-0 flex-col gap-2", className),
534
558
  ...props
535
559
  }
536
560
  );
537
561
  }
538
- function CommandEmpty({
562
+ var bubbleVariants = cva(
563
+ "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",
564
+ {
565
+ variants: {
566
+ variant: {
567
+ 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",
568
+ 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%)]",
569
+ 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%)]",
570
+ 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)]",
571
+ 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",
572
+ 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",
573
+ 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"
574
+ }
575
+ },
576
+ defaultVariants: {
577
+ variant: "default"
578
+ }
579
+ }
580
+ );
581
+ function Bubble({
582
+ variant = "default",
583
+ align = "start",
539
584
  className,
540
585
  ...props
541
586
  }) {
542
587
  return /* @__PURE__ */ jsx(
543
- Command$1.Empty,
588
+ "div",
544
589
  {
545
- "data-slot": "command-empty",
546
- className: cn("py-6 text-center text-xs", className),
590
+ "data-slot": "bubble",
591
+ "data-variant": variant,
592
+ "data-align": align,
593
+ className: cn(bubbleVariants({ variant }), className),
547
594
  ...props
548
595
  }
549
596
  );
550
597
  }
551
- function CommandGroup({
598
+ function BubbleContent({
599
+ asChild = false,
552
600
  className,
553
601
  ...props
554
602
  }) {
603
+ const Comp = asChild ? Slot.Root : "div";
555
604
  return /* @__PURE__ */ jsx(
556
- Command$1.Group,
605
+ Comp,
557
606
  {
558
- "data-slot": "command-group",
607
+ "data-slot": "bubble-content",
559
608
  className: cn(
560
- "overflow-hidden text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:text-muted-foreground",
609
+ "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",
561
610
  className
562
611
  ),
563
612
  ...props
564
613
  }
565
614
  );
566
615
  }
567
- function CommandSeparator({
616
+ var bubbleReactionsVariants = cva(
617
+ "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",
618
+ {
619
+ variants: {
620
+ side: {
621
+ top: "top-0 -translate-y-3/4",
622
+ bottom: "bottom-0 translate-y-3/4"
623
+ },
624
+ align: {
625
+ start: "left-3",
626
+ end: "right-3"
627
+ }
628
+ },
629
+ defaultVariants: {
630
+ side: "bottom",
631
+ align: "end"
632
+ }
633
+ }
634
+ );
635
+ function BubbleReactions({
636
+ side = "bottom",
637
+ align = "end",
568
638
  className,
569
639
  ...props
570
640
  }) {
571
641
  return /* @__PURE__ */ jsx(
572
- Command$1.Separator,
642
+ "div",
573
643
  {
574
- "data-slot": "command-separator",
575
- className: cn("-mx-1 h-px bg-border", className),
644
+ "data-slot": "bubble-reactions",
645
+ "data-align": align,
646
+ "data-side": side,
647
+ className: cn(bubbleReactionsVariants({ side, align }), className),
576
648
  ...props
577
649
  }
578
650
  );
579
651
  }
580
- function CommandItem({
581
- className,
582
- children,
583
- ...props
584
- }) {
652
+ var buttonGroupVariants = cva(
653
+ "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",
654
+ {
655
+ variants: {
656
+ orientation: {
657
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
658
+ vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
659
+ }
660
+ },
661
+ defaultVariants: {
662
+ orientation: "horizontal"
663
+ }
664
+ }
665
+ );
666
+ function ButtonGroup({
667
+ className,
668
+ orientation,
669
+ ...props
670
+ }) {
671
+ return /* @__PURE__ */ jsx(
672
+ "div",
673
+ {
674
+ role: "group",
675
+ "data-slot": "button-group",
676
+ "data-orientation": orientation,
677
+ className: cn(buttonGroupVariants({ orientation }), className),
678
+ ...props
679
+ }
680
+ );
681
+ }
682
+ function ButtonGroupText({
683
+ className,
684
+ asChild = false,
685
+ ...props
686
+ }) {
687
+ const Comp = asChild ? Slot.Root : "div";
688
+ return /* @__PURE__ */ jsx(
689
+ Comp,
690
+ {
691
+ className: cn(
692
+ "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",
693
+ className
694
+ ),
695
+ ...props
696
+ }
697
+ );
698
+ }
699
+ function ButtonGroupSeparator({
700
+ className,
701
+ orientation = "vertical",
702
+ ...props
703
+ }) {
704
+ return /* @__PURE__ */ jsx(
705
+ Separator,
706
+ {
707
+ "data-slot": "button-group-separator",
708
+ orientation,
709
+ className: cn(
710
+ "relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
711
+ className
712
+ ),
713
+ ...props
714
+ }
715
+ );
716
+ }
717
+ function Calendar({
718
+ className,
719
+ classNames,
720
+ showOutsideDays = true,
721
+ captionLayout = "label",
722
+ buttonVariant = "ghost",
723
+ locale,
724
+ formatters,
725
+ components,
726
+ ...props
727
+ }) {
728
+ const defaultClassNames = getDefaultClassNames();
729
+ return /* @__PURE__ */ jsx(
730
+ DayPicker,
731
+ {
732
+ showOutsideDays,
733
+ className: cn(
734
+ "group/calendar bg-background p-2 [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
735
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
736
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
737
+ className
738
+ ),
739
+ captionLayout,
740
+ locale,
741
+ formatters: {
742
+ formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
743
+ ...formatters
744
+ },
745
+ classNames: {
746
+ root: cn("w-fit", defaultClassNames.root),
747
+ months: cn(
748
+ "relative flex flex-col gap-4 md:flex-row",
749
+ defaultClassNames.months
750
+ ),
751
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
752
+ nav: cn(
753
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
754
+ defaultClassNames.nav
755
+ ),
756
+ button_previous: cn(
757
+ buttonVariants({ variant: buttonVariant }),
758
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
759
+ defaultClassNames.button_previous
760
+ ),
761
+ button_next: cn(
762
+ buttonVariants({ variant: buttonVariant }),
763
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
764
+ defaultClassNames.button_next
765
+ ),
766
+ month_caption: cn(
767
+ "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
768
+ defaultClassNames.month_caption
769
+ ),
770
+ dropdowns: cn(
771
+ "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
772
+ defaultClassNames.dropdowns
773
+ ),
774
+ dropdown_root: cn(
775
+ "relative rounded-(--cell-radius)",
776
+ defaultClassNames.dropdown_root
777
+ ),
778
+ dropdown: cn(
779
+ "absolute inset-0 bg-popover opacity-0",
780
+ defaultClassNames.dropdown
781
+ ),
782
+ caption_label: cn(
783
+ "font-medium select-none",
784
+ captionLayout === "label" ? "text-sm" : "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
785
+ defaultClassNames.caption_label
786
+ ),
787
+ month_grid: cn("w-full border-collapse", defaultClassNames.month_grid),
788
+ weekdays: cn("flex", defaultClassNames.weekdays),
789
+ weekday: cn(
790
+ "flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
791
+ defaultClassNames.weekday
792
+ ),
793
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
794
+ week_number_header: cn(
795
+ "w-(--cell-size) select-none",
796
+ defaultClassNames.week_number_header
797
+ ),
798
+ week_number: cn(
799
+ "text-[0.8rem] text-muted-foreground select-none",
800
+ defaultClassNames.week_number
801
+ ),
802
+ day: cn(
803
+ "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)",
804
+ props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
805
+ defaultClassNames.day
806
+ ),
807
+ range_start: cn(
808
+ "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",
809
+ defaultClassNames.range_start
810
+ ),
811
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
812
+ range_end: cn(
813
+ "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",
814
+ defaultClassNames.range_end
815
+ ),
816
+ today: cn(
817
+ "rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
818
+ defaultClassNames.today
819
+ ),
820
+ outside: cn(
821
+ "text-muted-foreground aria-selected:text-muted-foreground",
822
+ defaultClassNames.outside
823
+ ),
824
+ disabled: cn(
825
+ "text-muted-foreground opacity-50",
826
+ defaultClassNames.disabled
827
+ ),
828
+ hidden: cn("invisible", defaultClassNames.hidden),
829
+ ...classNames
830
+ },
831
+ components: {
832
+ Root: ({ className: className2, rootRef, ...props2 }) => {
833
+ return /* @__PURE__ */ jsx(
834
+ "div",
835
+ {
836
+ "data-slot": "calendar",
837
+ ref: rootRef,
838
+ className: cn(className2),
839
+ ...props2
840
+ }
841
+ );
842
+ },
843
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
844
+ if (orientation === "left") {
845
+ return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
846
+ }
847
+ if (orientation === "right") {
848
+ return /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("size-4", className2), ...props2 });
849
+ }
850
+ return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
851
+ },
852
+ DayButton: ({ ...props2 }) => /* @__PURE__ */ jsx(CalendarDayButton, { locale, ...props2 }),
853
+ WeekNumber: ({ children, ...props2 }) => {
854
+ return /* @__PURE__ */ jsx("td", { ...props2, children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
855
+ },
856
+ ...components
857
+ },
858
+ ...props
859
+ }
860
+ );
861
+ }
862
+ function CalendarDayButton({
863
+ className,
864
+ day,
865
+ modifiers,
866
+ locale,
867
+ ...props
868
+ }) {
869
+ const defaultClassNames = getDefaultClassNames();
870
+ const ref = React8.useRef(null);
871
+ React8.useEffect(() => {
872
+ if (modifiers.focused) ref.current?.focus();
873
+ }, [modifiers.focused]);
874
+ return /* @__PURE__ */ jsx(
875
+ Button,
876
+ {
877
+ ref,
878
+ variant: "ghost",
879
+ size: "icon",
880
+ "data-day": day.date.toLocaleDateString(locale?.code),
881
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
882
+ "data-range-start": modifiers.range_start,
883
+ "data-range-end": modifiers.range_end,
884
+ "data-range-middle": modifiers.range_middle,
885
+ className: cn(
886
+ "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",
887
+ defaultClassNames.day,
888
+ className
889
+ ),
890
+ ...props
891
+ }
892
+ );
893
+ }
894
+ var CarouselContext = React8.createContext(null);
895
+ function useCarousel() {
896
+ const context = React8.useContext(CarouselContext);
897
+ if (!context) {
898
+ throw new Error("useCarousel must be used within a <Carousel />");
899
+ }
900
+ return context;
901
+ }
902
+ function Carousel({
903
+ orientation = "horizontal",
904
+ opts,
905
+ setApi,
906
+ plugins,
907
+ className,
908
+ children,
909
+ ...props
910
+ }) {
911
+ const [carouselRef, api] = useEmblaCarousel(
912
+ {
913
+ ...opts,
914
+ axis: orientation === "horizontal" ? "x" : "y"
915
+ },
916
+ plugins
917
+ );
918
+ const [canScrollPrev, setCanScrollPrev] = React8.useState(false);
919
+ const [canScrollNext, setCanScrollNext] = React8.useState(false);
920
+ const onSelect = React8.useCallback((api2) => {
921
+ if (!api2) return;
922
+ setCanScrollPrev(api2.canScrollPrev());
923
+ setCanScrollNext(api2.canScrollNext());
924
+ }, []);
925
+ const scrollPrev = React8.useCallback(() => {
926
+ api?.scrollPrev();
927
+ }, [api]);
928
+ const scrollNext = React8.useCallback(() => {
929
+ api?.scrollNext();
930
+ }, [api]);
931
+ const handleKeyDown = React8.useCallback(
932
+ (event) => {
933
+ if (event.key === "ArrowLeft") {
934
+ event.preventDefault();
935
+ scrollPrev();
936
+ } else if (event.key === "ArrowRight") {
937
+ event.preventDefault();
938
+ scrollNext();
939
+ }
940
+ },
941
+ [scrollPrev, scrollNext]
942
+ );
943
+ React8.useEffect(() => {
944
+ if (!api || !setApi) return;
945
+ setApi(api);
946
+ }, [api, setApi]);
947
+ React8.useEffect(() => {
948
+ if (!api) return;
949
+ onSelect(api);
950
+ api.on("reInit", onSelect);
951
+ api.on("select", onSelect);
952
+ return () => {
953
+ api?.off("select", onSelect);
954
+ };
955
+ }, [api, onSelect]);
956
+ return /* @__PURE__ */ jsx(
957
+ CarouselContext.Provider,
958
+ {
959
+ value: {
960
+ carouselRef,
961
+ api,
962
+ opts,
963
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
964
+ scrollPrev,
965
+ scrollNext,
966
+ canScrollPrev,
967
+ canScrollNext
968
+ },
969
+ children: /* @__PURE__ */ jsx(
970
+ "div",
971
+ {
972
+ onKeyDownCapture: handleKeyDown,
973
+ className: cn("relative", className),
974
+ role: "region",
975
+ "aria-roledescription": "carousel",
976
+ "data-slot": "carousel",
977
+ ...props,
978
+ children
979
+ }
980
+ )
981
+ }
982
+ );
983
+ }
984
+ function CarouselContent({ className, ...props }) {
985
+ const { carouselRef, orientation } = useCarousel();
986
+ return /* @__PURE__ */ jsx(
987
+ "div",
988
+ {
989
+ ref: carouselRef,
990
+ className: "overflow-hidden",
991
+ "data-slot": "carousel-content",
992
+ children: /* @__PURE__ */ jsx(
993
+ "div",
994
+ {
995
+ className: cn(
996
+ "flex",
997
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
998
+ className
999
+ ),
1000
+ ...props
1001
+ }
1002
+ )
1003
+ }
1004
+ );
1005
+ }
1006
+ function CarouselItem({ className, ...props }) {
1007
+ const { orientation } = useCarousel();
1008
+ return /* @__PURE__ */ jsx(
1009
+ "div",
1010
+ {
1011
+ role: "group",
1012
+ "aria-roledescription": "slide",
1013
+ "data-slot": "carousel-item",
1014
+ className: cn(
1015
+ "min-w-0 shrink-0 grow-0 basis-full",
1016
+ orientation === "horizontal" ? "pl-4" : "pt-4",
1017
+ className
1018
+ ),
1019
+ ...props
1020
+ }
1021
+ );
1022
+ }
1023
+ function CarouselPrevious({
1024
+ className,
1025
+ variant = "outline",
1026
+ size = "icon-sm",
1027
+ ...props
1028
+ }) {
1029
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
1030
+ return /* @__PURE__ */ jsxs(
1031
+ Button,
1032
+ {
1033
+ "data-slot": "carousel-previous",
1034
+ variant,
1035
+ size,
1036
+ className: cn(
1037
+ "absolute touch-manipulation",
1038
+ orientation === "horizontal" ? "inset-y-0 -left-12 my-auto" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
1039
+ className
1040
+ ),
1041
+ disabled: !canScrollPrev,
1042
+ onClick: scrollPrev,
1043
+ ...props,
1044
+ children: [
1045
+ /* @__PURE__ */ jsx(ChevronLeftIcon, {}),
1046
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Previous slide" })
1047
+ ]
1048
+ }
1049
+ );
1050
+ }
1051
+ function CarouselNext({
1052
+ className,
1053
+ variant = "outline",
1054
+ size = "icon-sm",
1055
+ ...props
1056
+ }) {
1057
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
1058
+ return /* @__PURE__ */ jsxs(
1059
+ Button,
1060
+ {
1061
+ "data-slot": "carousel-next",
1062
+ variant,
1063
+ size,
1064
+ className: cn(
1065
+ "absolute touch-manipulation",
1066
+ orientation === "horizontal" ? "inset-y-0 -right-12 my-auto" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
1067
+ className
1068
+ ),
1069
+ disabled: !canScrollNext,
1070
+ onClick: scrollNext,
1071
+ ...props,
1072
+ children: [
1073
+ /* @__PURE__ */ jsx(ChevronRightIcon, {}),
1074
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Next slide" })
1075
+ ]
1076
+ }
1077
+ );
1078
+ }
1079
+ var THEMES = { light: "", dark: ".dark" };
1080
+ var INITIAL_DIMENSION = { width: 320, height: 200 };
1081
+ var ChartContext = React8.createContext(null);
1082
+ function useChart() {
1083
+ const context = React8.useContext(ChartContext);
1084
+ if (!context) {
1085
+ throw new Error("useChart must be used within a <ChartContainer />");
1086
+ }
1087
+ return context;
1088
+ }
1089
+ function ChartContainer({
1090
+ id,
1091
+ className,
1092
+ children,
1093
+ config,
1094
+ initialDimension = INITIAL_DIMENSION,
1095
+ ...props
1096
+ }) {
1097
+ const uniqueId = React8.useId();
1098
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
1099
+ return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
1100
+ "div",
1101
+ {
1102
+ "data-slot": "chart",
1103
+ "data-chart": chartId,
1104
+ className: cn(
1105
+ "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",
1106
+ className
1107
+ ),
1108
+ ...props,
1109
+ children: [
1110
+ /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
1111
+ /* @__PURE__ */ jsx(
1112
+ RechartsPrimitive.ResponsiveContainer,
1113
+ {
1114
+ initialDimension,
1115
+ children
1116
+ }
1117
+ )
1118
+ ]
1119
+ }
1120
+ ) });
1121
+ }
1122
+ var ChartStyle = ({ id, config }) => {
1123
+ const colorConfig = Object.entries(config).filter(
1124
+ ([, config2]) => config2.theme ?? config2.color
1125
+ );
1126
+ if (!colorConfig.length) {
1127
+ return null;
1128
+ }
1129
+ return /* @__PURE__ */ jsx(
1130
+ "style",
1131
+ {
1132
+ dangerouslySetInnerHTML: {
1133
+ __html: Object.entries(THEMES).map(
1134
+ ([theme, prefix]) => `
1135
+ ${prefix} [data-chart=${id}] {
1136
+ ${colorConfig.map(([key, itemConfig]) => {
1137
+ const color = itemConfig.theme?.[theme] ?? itemConfig.color;
1138
+ return color ? ` --color-${key}: ${color};` : null;
1139
+ }).join("\n")}
1140
+ }
1141
+ `
1142
+ ).join("\n")
1143
+ }
1144
+ }
1145
+ );
1146
+ };
1147
+ var ChartTooltip = RechartsPrimitive.Tooltip;
1148
+ function ChartTooltipContent({
1149
+ active,
1150
+ payload,
1151
+ className,
1152
+ indicator = "dot",
1153
+ hideLabel = false,
1154
+ hideIndicator = false,
1155
+ label,
1156
+ labelFormatter,
1157
+ labelClassName,
1158
+ formatter,
1159
+ color,
1160
+ nameKey,
1161
+ labelKey
1162
+ }) {
1163
+ const { config } = useChart();
1164
+ const tooltipLabel = React8.useMemo(() => {
1165
+ if (hideLabel || !payload?.length) {
1166
+ return null;
1167
+ }
1168
+ const [item] = payload;
1169
+ const key = `${labelKey ?? item?.dataKey ?? item?.name ?? "value"}`;
1170
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1171
+ const value = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
1172
+ if (labelFormatter) {
1173
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
1174
+ }
1175
+ if (!value) {
1176
+ return null;
1177
+ }
1178
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
1179
+ }, [
1180
+ label,
1181
+ labelFormatter,
1182
+ payload,
1183
+ hideLabel,
1184
+ labelClassName,
1185
+ config,
1186
+ labelKey
1187
+ ]);
1188
+ if (!active || !payload?.length) {
1189
+ return null;
1190
+ }
1191
+ const nestLabel = payload.length === 1 && indicator !== "dot";
1192
+ return /* @__PURE__ */ jsxs(
1193
+ "div",
1194
+ {
1195
+ className: cn(
1196
+ "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",
1197
+ className
1198
+ ),
1199
+ children: [
1200
+ !nestLabel ? tooltipLabel : null,
1201
+ /* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
1202
+ const key = `${nameKey ?? item.name ?? item.dataKey ?? "value"}`;
1203
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1204
+ const indicatorColor = color ?? item.payload?.fill ?? item.color;
1205
+ return /* @__PURE__ */ jsx(
1206
+ "div",
1207
+ {
1208
+ className: cn(
1209
+ "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
1210
+ indicator === "dot" && "items-center"
1211
+ ),
1212
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
1213
+ itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
1214
+ "div",
1215
+ {
1216
+ className: cn(
1217
+ "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
1218
+ {
1219
+ "h-2.5 w-2.5": indicator === "dot",
1220
+ "w-1": indicator === "line",
1221
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
1222
+ "my-0.5": nestLabel && indicator === "dashed"
1223
+ }
1224
+ ),
1225
+ style: {
1226
+ "--color-bg": indicatorColor,
1227
+ "--color-border": indicatorColor
1228
+ }
1229
+ }
1230
+ ),
1231
+ /* @__PURE__ */ jsxs(
1232
+ "div",
1233
+ {
1234
+ className: cn(
1235
+ "flex flex-1 justify-between leading-none",
1236
+ nestLabel ? "items-end" : "items-center"
1237
+ ),
1238
+ children: [
1239
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
1240
+ nestLabel ? tooltipLabel : null,
1241
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label ?? item.name })
1242
+ ] }),
1243
+ 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) })
1244
+ ]
1245
+ }
1246
+ )
1247
+ ] })
1248
+ },
1249
+ index
1250
+ );
1251
+ }) })
1252
+ ]
1253
+ }
1254
+ );
1255
+ }
1256
+ var ChartLegend = RechartsPrimitive.Legend;
1257
+ function ChartLegendContent({
1258
+ className,
1259
+ hideIcon = false,
1260
+ payload,
1261
+ verticalAlign = "bottom",
1262
+ nameKey
1263
+ }) {
1264
+ const { config } = useChart();
1265
+ if (!payload?.length) {
1266
+ return null;
1267
+ }
1268
+ return /* @__PURE__ */ jsx(
1269
+ "div",
1270
+ {
1271
+ className: cn(
1272
+ "flex items-center justify-center gap-4",
1273
+ verticalAlign === "top" ? "pb-3" : "pt-3",
1274
+ className
1275
+ ),
1276
+ children: payload.filter((item) => item.type !== "none").map((item, index) => {
1277
+ const key = `${nameKey ?? item.dataKey ?? "value"}`;
1278
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1279
+ return /* @__PURE__ */ jsxs(
1280
+ "div",
1281
+ {
1282
+ className: cn(
1283
+ "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
1284
+ ),
1285
+ children: [
1286
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
1287
+ "div",
1288
+ {
1289
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
1290
+ style: {
1291
+ backgroundColor: item.color
1292
+ }
1293
+ }
1294
+ ),
1295
+ itemConfig?.label
1296
+ ]
1297
+ },
1298
+ index
1299
+ );
1300
+ })
1301
+ }
1302
+ );
1303
+ }
1304
+ function getPayloadConfigFromPayload(config, payload, key) {
1305
+ if (typeof payload !== "object" || payload === null) {
1306
+ return void 0;
1307
+ }
1308
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
1309
+ let configLabelKey = key;
1310
+ if (key in payload && typeof payload[key] === "string") {
1311
+ configLabelKey = payload[key];
1312
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
1313
+ configLabelKey = payloadPayload[key];
1314
+ }
1315
+ return configLabelKey in config ? config[configLabelKey] : config[key];
1316
+ }
1317
+ function Checkbox({
1318
+ className,
1319
+ ...props
1320
+ }) {
1321
+ return /* @__PURE__ */ jsx(
1322
+ Checkbox$1.Root,
1323
+ {
1324
+ "data-slot": "checkbox",
1325
+ className: cn(
1326
+ "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",
1327
+ className
1328
+ ),
1329
+ ...props,
1330
+ children: /* @__PURE__ */ jsx(
1331
+ Checkbox$1.Indicator,
1332
+ {
1333
+ "data-slot": "checkbox-indicator",
1334
+ className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
1335
+ children: /* @__PURE__ */ jsx(
1336
+ CheckIcon,
1337
+ {}
1338
+ )
1339
+ }
1340
+ )
1341
+ }
1342
+ );
1343
+ }
1344
+ function Collapsible({
1345
+ ...props
1346
+ }) {
1347
+ return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
1348
+ }
1349
+ function CollapsibleTrigger({
1350
+ ...props
1351
+ }) {
1352
+ return /* @__PURE__ */ jsx(
1353
+ Collapsible$1.CollapsibleTrigger,
1354
+ {
1355
+ "data-slot": "collapsible-trigger",
1356
+ ...props
1357
+ }
1358
+ );
1359
+ }
1360
+ function CollapsibleContent({
1361
+ ...props
1362
+ }) {
1363
+ return /* @__PURE__ */ jsx(
1364
+ Collapsible$1.CollapsibleContent,
1365
+ {
1366
+ "data-slot": "collapsible-content",
1367
+ ...props
1368
+ }
1369
+ );
1370
+ }
1371
+ var Combobox = Combobox$1.Root;
1372
+ function ComboboxValue({ ...props }) {
1373
+ return /* @__PURE__ */ jsx(Combobox$1.Value, { "data-slot": "combobox-value", ...props });
1374
+ }
1375
+ function ComboboxTrigger({
1376
+ className,
1377
+ children,
1378
+ ...props
1379
+ }) {
1380
+ return /* @__PURE__ */ jsxs(
1381
+ Combobox$1.Trigger,
1382
+ {
1383
+ "data-slot": "combobox-trigger",
1384
+ className: cn("[&_svg:not([class*='size-'])]:size-4", className),
1385
+ ...props,
1386
+ children: [
1387
+ children,
1388
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" })
1389
+ ]
1390
+ }
1391
+ );
1392
+ }
1393
+ function ComboboxClear({ className, ...props }) {
1394
+ return /* @__PURE__ */ jsx(
1395
+ Combobox$1.Clear,
1396
+ {
1397
+ "data-slot": "combobox-clear",
1398
+ render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
1399
+ className: cn(className),
1400
+ ...props,
1401
+ children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
1402
+ }
1403
+ );
1404
+ }
1405
+ function ComboboxInput({
1406
+ className,
1407
+ children,
1408
+ disabled = false,
1409
+ showTrigger = true,
1410
+ showClear = false,
1411
+ ...props
1412
+ }) {
1413
+ return /* @__PURE__ */ jsxs(InputGroup, { className: cn("w-auto", className), children: [
1414
+ /* @__PURE__ */ jsx(
1415
+ Combobox$1.Input,
1416
+ {
1417
+ render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
1418
+ ...props
1419
+ }
1420
+ ),
1421
+ /* @__PURE__ */ jsxs(InputGroupAddon, { align: "inline-end", children: [
1422
+ showTrigger && /* @__PURE__ */ jsx(
1423
+ InputGroupButton,
1424
+ {
1425
+ size: "icon-xs",
1426
+ variant: "ghost",
1427
+ asChild: true,
1428
+ "data-slot": "input-group-button",
1429
+ className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
1430
+ disabled,
1431
+ children: /* @__PURE__ */ jsx(ComboboxTrigger, {})
1432
+ }
1433
+ ),
1434
+ showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })
1435
+ ] }),
1436
+ children
1437
+ ] });
1438
+ }
1439
+ function ComboboxContent({
1440
+ className,
1441
+ side = "bottom",
1442
+ sideOffset = 6,
1443
+ align = "start",
1444
+ alignOffset = 0,
1445
+ anchor,
1446
+ ...props
1447
+ }) {
1448
+ return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
1449
+ Combobox$1.Positioner,
1450
+ {
1451
+ side,
1452
+ sideOffset,
1453
+ align,
1454
+ alignOffset,
1455
+ anchor,
1456
+ className: "isolate z-50",
1457
+ children: /* @__PURE__ */ jsx(
1458
+ Combobox$1.Popup,
1459
+ {
1460
+ "data-slot": "combobox-content",
1461
+ "data-chips": !!anchor,
1462
+ 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),
1463
+ ...props
1464
+ }
1465
+ )
1466
+ }
1467
+ ) });
1468
+ }
1469
+ function ComboboxList({ className, ...props }) {
1470
+ return /* @__PURE__ */ jsx(
1471
+ Combobox$1.List,
1472
+ {
1473
+ "data-slot": "combobox-list",
1474
+ className: cn(
1475
+ "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",
1476
+ className
1477
+ ),
1478
+ ...props
1479
+ }
1480
+ );
1481
+ }
1482
+ function ComboboxItem({
1483
+ className,
1484
+ children,
1485
+ ...props
1486
+ }) {
1487
+ return /* @__PURE__ */ jsxs(
1488
+ Combobox$1.Item,
1489
+ {
1490
+ "data-slot": "combobox-item",
1491
+ className: cn(
1492
+ "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",
1493
+ className
1494
+ ),
1495
+ ...props,
1496
+ children: [
1497
+ children,
1498
+ /* @__PURE__ */ jsx(
1499
+ Combobox$1.ItemIndicator,
1500
+ {
1501
+ render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
1502
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" })
1503
+ }
1504
+ )
1505
+ ]
1506
+ }
1507
+ );
1508
+ }
1509
+ function ComboboxGroup({ className, ...props }) {
1510
+ return /* @__PURE__ */ jsx(
1511
+ Combobox$1.Group,
1512
+ {
1513
+ "data-slot": "combobox-group",
1514
+ className: cn(className),
1515
+ ...props
1516
+ }
1517
+ );
1518
+ }
1519
+ function ComboboxLabel({
1520
+ className,
1521
+ ...props
1522
+ }) {
1523
+ return /* @__PURE__ */ jsx(
1524
+ Combobox$1.GroupLabel,
1525
+ {
1526
+ "data-slot": "combobox-label",
1527
+ className: cn("px-2 py-2 text-xs text-muted-foreground", className),
1528
+ ...props
1529
+ }
1530
+ );
1531
+ }
1532
+ function ComboboxCollection({ ...props }) {
1533
+ return /* @__PURE__ */ jsx(Combobox$1.Collection, { "data-slot": "combobox-collection", ...props });
1534
+ }
1535
+ function ComboboxEmpty({ className, ...props }) {
1536
+ return /* @__PURE__ */ jsx(
1537
+ Combobox$1.Empty,
1538
+ {
1539
+ "data-slot": "combobox-empty",
1540
+ className: cn(
1541
+ "hidden w-full justify-center py-2 text-center text-xs text-muted-foreground group-data-empty/combobox-content:flex",
1542
+ className
1543
+ ),
1544
+ ...props
1545
+ }
1546
+ );
1547
+ }
1548
+ function ComboboxSeparator({
1549
+ className,
1550
+ ...props
1551
+ }) {
1552
+ return /* @__PURE__ */ jsx(
1553
+ Combobox$1.Separator,
1554
+ {
1555
+ "data-slot": "combobox-separator",
1556
+ className: cn("-mx-1 h-px bg-border", className),
1557
+ ...props
1558
+ }
1559
+ );
1560
+ }
1561
+ function ComboboxChips({
1562
+ className,
1563
+ ...props
1564
+ }) {
1565
+ return /* @__PURE__ */ jsx(
1566
+ Combobox$1.Chips,
1567
+ {
1568
+ "data-slot": "combobox-chips",
1569
+ className: cn(
1570
+ "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",
1571
+ className
1572
+ ),
1573
+ ...props
1574
+ }
1575
+ );
1576
+ }
1577
+ function ComboboxChip({
1578
+ className,
1579
+ children,
1580
+ showRemove = true,
1581
+ ...props
1582
+ }) {
1583
+ return /* @__PURE__ */ jsxs(
1584
+ Combobox$1.Chip,
1585
+ {
1586
+ "data-slot": "combobox-chip",
1587
+ className: cn(
1588
+ "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",
1589
+ className
1590
+ ),
1591
+ ...props,
1592
+ children: [
1593
+ children,
1594
+ showRemove && /* @__PURE__ */ jsx(
1595
+ Combobox$1.ChipRemove,
1596
+ {
1597
+ render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
1598
+ className: "-ml-1 opacity-50 hover:opacity-100",
1599
+ "data-slot": "combobox-chip-remove",
1600
+ children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
1601
+ }
1602
+ )
1603
+ ]
1604
+ }
1605
+ );
1606
+ }
1607
+ function ComboboxChipsInput({
1608
+ className,
1609
+ ...props
1610
+ }) {
1611
+ return /* @__PURE__ */ jsx(
1612
+ Combobox$1.Input,
1613
+ {
1614
+ "data-slot": "combobox-chip-input",
1615
+ className: cn("min-w-16 flex-1 outline-none", className),
1616
+ ...props
1617
+ }
1618
+ );
1619
+ }
1620
+ function useComboboxAnchor() {
1621
+ return React8.useRef(null);
1622
+ }
1623
+ function Command({
1624
+ className,
1625
+ ...props
1626
+ }) {
1627
+ return /* @__PURE__ */ jsx(
1628
+ Command$1,
1629
+ {
1630
+ "data-slot": "command",
1631
+ className: cn(
1632
+ "flex size-full flex-col overflow-hidden rounded-none bg-popover text-popover-foreground",
1633
+ className
1634
+ ),
1635
+ ...props
1636
+ }
1637
+ );
1638
+ }
1639
+ function CommandDialog({
1640
+ title = "Command Palette",
1641
+ description = "Search for a command to run...",
1642
+ children,
1643
+ className,
1644
+ showCloseButton = false,
1645
+ ...props
1646
+ }) {
1647
+ return /* @__PURE__ */ jsxs(Dialog, { ...props, children: [
1648
+ /* @__PURE__ */ jsxs(DialogHeader, { className: "sr-only", children: [
1649
+ /* @__PURE__ */ jsx(DialogTitle, { children: title }),
1650
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
1651
+ ] }),
1652
+ /* @__PURE__ */ jsx(
1653
+ DialogContent,
1654
+ {
1655
+ className: cn(
1656
+ "top-1/3 translate-y-0 overflow-hidden rounded-none p-0",
1657
+ className
1658
+ ),
1659
+ showCloseButton,
1660
+ children
1661
+ }
1662
+ )
1663
+ ] });
1664
+ }
1665
+ function CommandInput({
1666
+ className,
1667
+ ...props
1668
+ }) {
1669
+ return /* @__PURE__ */ jsx("div", { "data-slot": "command-input-wrapper", className: "border-b pb-0", children: /* @__PURE__ */ jsxs(InputGroup, { className: "h-8 border-none border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!", children: [
1670
+ /* @__PURE__ */ jsx(
1671
+ Command$1.Input,
1672
+ {
1673
+ "data-slot": "command-input",
1674
+ className: cn(
1675
+ "w-full text-xs outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
1676
+ className
1677
+ ),
1678
+ ...props
1679
+ }
1680
+ ),
1681
+ /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }) })
1682
+ ] }) });
1683
+ }
1684
+ function CommandList({
1685
+ className,
1686
+ ...props
1687
+ }) {
1688
+ return /* @__PURE__ */ jsx(
1689
+ Command$1.List,
1690
+ {
1691
+ "data-slot": "command-list",
1692
+ className: cn(
1693
+ "no-scrollbar max-h-72 scroll-py-0 overflow-x-hidden overflow-y-auto outline-none",
1694
+ className
1695
+ ),
1696
+ ...props
1697
+ }
1698
+ );
1699
+ }
1700
+ function CommandEmpty({
1701
+ className,
1702
+ ...props
1703
+ }) {
1704
+ return /* @__PURE__ */ jsx(
1705
+ Command$1.Empty,
1706
+ {
1707
+ "data-slot": "command-empty",
1708
+ className: cn("py-6 text-center text-xs", className),
1709
+ ...props
1710
+ }
1711
+ );
1712
+ }
1713
+ function CommandGroup({
1714
+ className,
1715
+ ...props
1716
+ }) {
1717
+ return /* @__PURE__ */ jsx(
1718
+ Command$1.Group,
1719
+ {
1720
+ "data-slot": "command-group",
1721
+ className: cn(
1722
+ "overflow-hidden text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:text-muted-foreground",
1723
+ className
1724
+ ),
1725
+ ...props
1726
+ }
1727
+ );
1728
+ }
1729
+ function CommandSeparator({
1730
+ className,
1731
+ ...props
1732
+ }) {
1733
+ return /* @__PURE__ */ jsx(
1734
+ Command$1.Separator,
1735
+ {
1736
+ "data-slot": "command-separator",
1737
+ className: cn("-mx-1 h-px bg-border", className),
1738
+ ...props
1739
+ }
1740
+ );
1741
+ }
1742
+ function CommandItem({
1743
+ className,
1744
+ children,
1745
+ ...props
1746
+ }) {
1747
+ return /* @__PURE__ */ jsxs(
1748
+ Command$1.Item,
1749
+ {
1750
+ "data-slot": "command-item",
1751
+ className: cn(
1752
+ "group/command-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none in-data-[slot=dialog-content]:rounded-none! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground",
1753
+ className
1754
+ ),
1755
+ ...props,
1756
+ children: [
1757
+ children,
1758
+ /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })
1759
+ ]
1760
+ }
1761
+ );
1762
+ }
1763
+ function CommandShortcut({
1764
+ className,
1765
+ ...props
1766
+ }) {
1767
+ return /* @__PURE__ */ jsx(
1768
+ "span",
1769
+ {
1770
+ "data-slot": "command-shortcut",
1771
+ className: cn(
1772
+ "ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",
1773
+ className
1774
+ ),
1775
+ ...props
1776
+ }
1777
+ );
1778
+ }
1779
+ function DirectionProvider({
1780
+ dir,
1781
+ direction,
1782
+ children
1783
+ }) {
1784
+ return /* @__PURE__ */ jsx(Direction.DirectionProvider, { dir: direction ?? dir, children });
1785
+ }
1786
+ var useDirection = Direction.useDirection;
1787
+ function Drawer({
1788
+ ...props
1789
+ }) {
1790
+ return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
1791
+ }
1792
+ function DrawerTrigger({
1793
+ ...props
1794
+ }) {
1795
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
1796
+ }
1797
+ function DrawerPortal({
1798
+ ...props
1799
+ }) {
1800
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
1801
+ }
1802
+ function DrawerClose({
1803
+ ...props
1804
+ }) {
1805
+ return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
1806
+ }
1807
+ function DrawerOverlay({
1808
+ className,
1809
+ ...props
1810
+ }) {
1811
+ return /* @__PURE__ */ jsx(
1812
+ Drawer$1.Overlay,
1813
+ {
1814
+ "data-slot": "drawer-overlay",
1815
+ className: cn(
1816
+ "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",
1817
+ className
1818
+ ),
1819
+ ...props
1820
+ }
1821
+ );
1822
+ }
1823
+ function DrawerContent({
1824
+ className,
1825
+ children,
1826
+ ...props
1827
+ }) {
1828
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
1829
+ /* @__PURE__ */ jsx(DrawerOverlay, {}),
1830
+ /* @__PURE__ */ jsxs(
1831
+ Drawer$1.Content,
1832
+ {
1833
+ "data-slot": "drawer-content",
1834
+ className: cn(
1835
+ "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",
1836
+ className
1837
+ ),
1838
+ ...props,
1839
+ children: [
1840
+ /* @__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" }),
1841
+ children
1842
+ ]
1843
+ }
1844
+ )
1845
+ ] });
1846
+ }
1847
+ function DrawerHeader({ className, ...props }) {
1848
+ return /* @__PURE__ */ jsx(
1849
+ "div",
1850
+ {
1851
+ "data-slot": "drawer-header",
1852
+ className: cn(
1853
+ "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",
1854
+ className
1855
+ ),
1856
+ ...props
1857
+ }
1858
+ );
1859
+ }
1860
+ function DrawerFooter({ className, ...props }) {
1861
+ return /* @__PURE__ */ jsx(
1862
+ "div",
1863
+ {
1864
+ "data-slot": "drawer-footer",
1865
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1866
+ ...props
1867
+ }
1868
+ );
1869
+ }
1870
+ function DrawerTitle({
1871
+ className,
1872
+ ...props
1873
+ }) {
1874
+ return /* @__PURE__ */ jsx(
1875
+ Drawer$1.Title,
1876
+ {
1877
+ "data-slot": "drawer-title",
1878
+ className: cn(
1879
+ "font-heading text-sm font-medium text-foreground",
1880
+ className
1881
+ ),
1882
+ ...props
1883
+ }
1884
+ );
1885
+ }
1886
+ function DrawerDescription({
1887
+ className,
1888
+ ...props
1889
+ }) {
1890
+ return /* @__PURE__ */ jsx(
1891
+ Drawer$1.Description,
1892
+ {
1893
+ "data-slot": "drawer-description",
1894
+ className: cn("text-xs/relaxed text-muted-foreground", className),
1895
+ ...props
1896
+ }
1897
+ );
1898
+ }
1899
+ function Empty({ className, ...props }) {
1900
+ return /* @__PURE__ */ jsx(
1901
+ "div",
1902
+ {
1903
+ "data-slot": "empty",
1904
+ className: cn(
1905
+ "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",
1906
+ className
1907
+ ),
1908
+ ...props
1909
+ }
1910
+ );
1911
+ }
1912
+ function EmptyHeader({ className, ...props }) {
1913
+ return /* @__PURE__ */ jsx(
1914
+ "div",
1915
+ {
1916
+ "data-slot": "empty-header",
1917
+ className: cn("flex max-w-sm flex-col items-center gap-2", className),
1918
+ ...props
1919
+ }
1920
+ );
1921
+ }
1922
+ var emptyMediaVariants = cva(
1923
+ "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
1924
+ {
1925
+ variants: {
1926
+ variant: {
1927
+ default: "bg-transparent",
1928
+ icon: "flex size-8 shrink-0 items-center justify-center rounded-none bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4"
1929
+ }
1930
+ },
1931
+ defaultVariants: {
1932
+ variant: "default"
1933
+ }
1934
+ }
1935
+ );
1936
+ function EmptyMedia({
1937
+ className,
1938
+ variant = "default",
1939
+ ...props
1940
+ }) {
1941
+ return /* @__PURE__ */ jsx(
1942
+ "div",
1943
+ {
1944
+ "data-slot": "empty-icon",
1945
+ "data-variant": variant,
1946
+ className: cn(emptyMediaVariants({ variant, className })),
1947
+ ...props
1948
+ }
1949
+ );
1950
+ }
1951
+ function EmptyTitle({ className, ...props }) {
1952
+ return /* @__PURE__ */ jsx(
1953
+ "div",
1954
+ {
1955
+ "data-slot": "empty-title",
1956
+ className: cn("font-heading text-sm font-medium", className),
1957
+ ...props
1958
+ }
1959
+ );
1960
+ }
1961
+ function EmptyDescription({ className, ...props }) {
1962
+ return /* @__PURE__ */ jsx(
1963
+ "div",
1964
+ {
1965
+ "data-slot": "empty-description",
1966
+ className: cn(
1967
+ "text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
1968
+ className
1969
+ ),
1970
+ ...props
1971
+ }
1972
+ );
1973
+ }
1974
+ function EmptyContent({ className, ...props }) {
1975
+ return /* @__PURE__ */ jsx(
1976
+ "div",
1977
+ {
1978
+ "data-slot": "empty-content",
1979
+ className: cn(
1980
+ "flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-xs text-balance",
1981
+ className
1982
+ ),
1983
+ ...props
1984
+ }
1985
+ );
1986
+ }
1987
+ function FieldSet({ className, ...props }) {
1988
+ return /* @__PURE__ */ jsx(
1989
+ "fieldset",
1990
+ {
1991
+ "data-slot": "field-set",
1992
+ className: cn(
1993
+ "flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
1994
+ className
1995
+ ),
1996
+ ...props
1997
+ }
1998
+ );
1999
+ }
2000
+ function FieldLegend({
2001
+ className,
2002
+ variant = "legend",
2003
+ ...props
2004
+ }) {
2005
+ return /* @__PURE__ */ jsx(
2006
+ "legend",
2007
+ {
2008
+ "data-slot": "field-legend",
2009
+ "data-variant": variant,
2010
+ className: cn(
2011
+ "mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm",
2012
+ className
2013
+ ),
2014
+ ...props
2015
+ }
2016
+ );
2017
+ }
2018
+ function FieldGroup({ className, ...props }) {
2019
+ return /* @__PURE__ */ jsx(
2020
+ "div",
2021
+ {
2022
+ "data-slot": "field-group",
2023
+ className: cn(
2024
+ "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",
2025
+ className
2026
+ ),
2027
+ ...props
2028
+ }
2029
+ );
2030
+ }
2031
+ var fieldVariants = cva(
2032
+ "group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
2033
+ {
2034
+ variants: {
2035
+ orientation: {
2036
+ vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
2037
+ 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",
2038
+ 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"
2039
+ }
2040
+ },
2041
+ defaultVariants: {
2042
+ orientation: "vertical"
2043
+ }
2044
+ }
2045
+ );
2046
+ function Field({
2047
+ className,
2048
+ orientation = "vertical",
2049
+ ...props
2050
+ }) {
2051
+ return /* @__PURE__ */ jsx(
2052
+ "div",
2053
+ {
2054
+ role: "group",
2055
+ "data-slot": "field",
2056
+ "data-orientation": orientation,
2057
+ className: cn(fieldVariants({ orientation }), className),
2058
+ ...props
2059
+ }
2060
+ );
2061
+ }
2062
+ function FieldContent({ className, ...props }) {
2063
+ return /* @__PURE__ */ jsx(
2064
+ "div",
2065
+ {
2066
+ "data-slot": "field-content",
2067
+ className: cn(
2068
+ "group/field-content flex flex-1 flex-col gap-0.5 leading-snug",
2069
+ className
2070
+ ),
2071
+ ...props
2072
+ }
2073
+ );
2074
+ }
2075
+ function FieldLabel({
2076
+ className,
2077
+ ...props
2078
+ }) {
2079
+ return /* @__PURE__ */ jsx(
2080
+ Label,
2081
+ {
2082
+ "data-slot": "field-label",
2083
+ className: cn(
2084
+ "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",
2085
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
2086
+ className
2087
+ ),
2088
+ ...props
2089
+ }
2090
+ );
2091
+ }
2092
+ function FieldTitle({ className, ...props }) {
2093
+ return /* @__PURE__ */ jsx(
2094
+ "div",
2095
+ {
2096
+ "data-slot": "field-label",
2097
+ className: cn(
2098
+ "flex w-fit items-center gap-2 text-xs/relaxed group-data-[disabled=true]/field:opacity-50",
2099
+ className
2100
+ ),
2101
+ ...props
2102
+ }
2103
+ );
2104
+ }
2105
+ function FieldDescription({ className, ...props }) {
2106
+ return /* @__PURE__ */ jsx(
2107
+ "p",
2108
+ {
2109
+ "data-slot": "field-description",
2110
+ className: cn(
2111
+ "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",
2112
+ "last:mt-0 nth-last-2:-mt-1",
2113
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
2114
+ className
2115
+ ),
2116
+ ...props
2117
+ }
2118
+ );
2119
+ }
2120
+ function FieldSeparator({
2121
+ children,
2122
+ className,
2123
+ ...props
2124
+ }) {
585
2125
  return /* @__PURE__ */ jsxs(
586
- Command$1.Item,
2126
+ "div",
587
2127
  {
588
- "data-slot": "command-item",
2128
+ "data-slot": "field-separator",
2129
+ "data-content": !!children,
589
2130
  className: cn(
590
- "group/command-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none in-data-[slot=dialog-content]:rounded-none! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground",
2131
+ "relative -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2",
591
2132
  className
592
2133
  ),
593
2134
  ...props,
594
2135
  children: [
595
- children,
596
- /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })
2136
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
2137
+ children && /* @__PURE__ */ jsx(
2138
+ "span",
2139
+ {
2140
+ className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
2141
+ "data-slot": "field-separator-content",
2142
+ children
2143
+ }
2144
+ )
597
2145
  ]
598
2146
  }
599
2147
  );
600
2148
  }
601
- function CommandShortcut({
2149
+ function FieldError({
602
2150
  className,
2151
+ children,
2152
+ errors,
603
2153
  ...props
604
2154
  }) {
2155
+ const content = useMemo(() => {
2156
+ if (children) {
2157
+ return children;
2158
+ }
2159
+ if (!errors?.length) {
2160
+ return null;
2161
+ }
2162
+ const uniqueErrors = [
2163
+ ...new Map(errors.map((error) => [error?.message, error])).values()
2164
+ ];
2165
+ if (uniqueErrors?.length == 1) {
2166
+ return uniqueErrors[0]?.message;
2167
+ }
2168
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
2169
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
2170
+ ) });
2171
+ }, [children, errors]);
2172
+ if (!content) {
2173
+ return null;
2174
+ }
605
2175
  return /* @__PURE__ */ jsx(
606
- "span",
2176
+ "div",
607
2177
  {
608
- "data-slot": "command-shortcut",
609
- className: cn(
610
- "ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",
611
- className
612
- ),
613
- ...props
2178
+ role: "alert",
2179
+ "data-slot": "field-error",
2180
+ className: cn("text-xs font-normal text-destructive", className),
2181
+ ...props,
2182
+ children: content
614
2183
  }
615
2184
  );
616
2185
  }
617
- function Drawer({
618
- ...props
619
- }) {
620
- return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
621
- }
622
- function DrawerTrigger({
2186
+ function HoverCard({
623
2187
  ...props
624
2188
  }) {
625
- return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
2189
+ return /* @__PURE__ */ jsx(HoverCard$1.Root, { "data-slot": "hover-card", ...props });
626
2190
  }
627
- function DrawerPortal({
2191
+ function HoverCardTrigger({
628
2192
  ...props
629
2193
  }) {
630
- return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
2194
+ return /* @__PURE__ */ jsx(HoverCard$1.Trigger, { "data-slot": "hover-card-trigger", ...props });
631
2195
  }
632
- function DrawerClose({
2196
+ function HoverCardContent({
2197
+ className,
2198
+ align = "center",
2199
+ sideOffset = 4,
633
2200
  ...props
634
2201
  }) {
635
- return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
2202
+ return /* @__PURE__ */ jsx(HoverCard$1.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
2203
+ HoverCard$1.Content,
2204
+ {
2205
+ "data-slot": "hover-card-content",
2206
+ align,
2207
+ sideOffset,
2208
+ className: cn(
2209
+ "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",
2210
+ className
2211
+ ),
2212
+ ...props
2213
+ }
2214
+ ) });
636
2215
  }
637
- function DrawerOverlay({
2216
+ function InputOTP({
638
2217
  className,
2218
+ containerClassName,
639
2219
  ...props
640
2220
  }) {
641
2221
  return /* @__PURE__ */ jsx(
642
- Drawer$1.Overlay,
2222
+ OTPInput,
643
2223
  {
644
- "data-slot": "drawer-overlay",
2224
+ "data-slot": "input-otp",
2225
+ containerClassName: cn(
2226
+ "cn-input-otp flex items-center has-disabled:opacity-50",
2227
+ containerClassName
2228
+ ),
2229
+ spellCheck: false,
2230
+ className: cn("disabled:cursor-not-allowed", className),
2231
+ ...props
2232
+ }
2233
+ );
2234
+ }
2235
+ function InputOTPGroup({ className, ...props }) {
2236
+ return /* @__PURE__ */ jsx(
2237
+ "div",
2238
+ {
2239
+ "data-slot": "input-otp-group",
645
2240
  className: cn(
646
- "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",
2241
+ "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",
647
2242
  className
648
2243
  ),
649
2244
  ...props
650
2245
  }
651
2246
  );
652
2247
  }
653
- function DrawerContent({
2248
+ function InputOTPSlot({
2249
+ index,
654
2250
  className,
655
- children,
656
2251
  ...props
657
2252
  }) {
658
- return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
659
- /* @__PURE__ */ jsx(DrawerOverlay, {}),
660
- /* @__PURE__ */ jsxs(
661
- Drawer$1.Content,
662
- {
663
- "data-slot": "drawer-content",
664
- className: cn(
665
- "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",
666
- className
667
- ),
668
- ...props,
669
- children: [
670
- /* @__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" }),
671
- children
672
- ]
673
- }
674
- )
675
- ] });
676
- }
677
- function DrawerHeader({ className, ...props }) {
678
- return /* @__PURE__ */ jsx(
2253
+ const inputOTPContext = React8.useContext(OTPInputContext);
2254
+ const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
2255
+ return /* @__PURE__ */ jsxs(
679
2256
  "div",
680
2257
  {
681
- "data-slot": "drawer-header",
2258
+ "data-slot": "input-otp-slot",
2259
+ "data-active": isActive,
682
2260
  className: cn(
683
- "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",
2261
+ "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",
684
2262
  className
685
2263
  ),
686
- ...props
2264
+ ...props,
2265
+ children: [
2266
+ char,
2267
+ 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" }) })
2268
+ ]
687
2269
  }
688
2270
  );
689
2271
  }
690
- function DrawerFooter({ className, ...props }) {
2272
+ function InputOTPSeparator({ ...props }) {
691
2273
  return /* @__PURE__ */ jsx(
692
2274
  "div",
693
2275
  {
694
- "data-slot": "drawer-footer",
695
- className: cn("mt-auto flex flex-col gap-2 p-4", className),
696
- ...props
2276
+ "data-slot": "input-otp-separator",
2277
+ className: "flex items-center [&_svg:not([class*='size-'])]:size-4",
2278
+ role: "separator",
2279
+ ...props,
2280
+ children: /* @__PURE__ */ jsx(
2281
+ MinusIcon,
2282
+ {}
2283
+ )
697
2284
  }
698
2285
  );
699
2286
  }
700
- function DrawerTitle({
701
- className,
702
- ...props
703
- }) {
2287
+ function ItemGroup({ className, ...props }) {
704
2288
  return /* @__PURE__ */ jsx(
705
- Drawer$1.Title,
2289
+ "div",
706
2290
  {
707
- "data-slot": "drawer-title",
2291
+ role: "list",
2292
+ "data-slot": "item-group",
708
2293
  className: cn(
709
- "font-heading text-sm font-medium text-foreground",
2294
+ "group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
710
2295
  className
711
2296
  ),
712
2297
  ...props
713
2298
  }
714
2299
  );
715
2300
  }
716
- function DrawerDescription({
2301
+ function ItemSeparator({
717
2302
  className,
718
2303
  ...props
719
2304
  }) {
720
2305
  return /* @__PURE__ */ jsx(
721
- Drawer$1.Description,
2306
+ Separator,
722
2307
  {
723
- "data-slot": "drawer-description",
724
- className: cn("text-xs/relaxed text-muted-foreground", className),
2308
+ "data-slot": "item-separator",
2309
+ orientation: "horizontal",
2310
+ className: cn("my-2", className),
725
2311
  ...props
726
2312
  }
727
2313
  );
728
2314
  }
729
- function FieldSet({ className, ...props }) {
2315
+ var itemVariants = cva(
2316
+ "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",
2317
+ {
2318
+ variants: {
2319
+ variant: {
2320
+ default: "border-transparent",
2321
+ outline: "border-border",
2322
+ muted: "border-transparent bg-muted/50"
2323
+ },
2324
+ size: {
2325
+ default: "gap-2.5 px-3 py-2.5",
2326
+ sm: "gap-2.5 px-3 py-2.5",
2327
+ xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0"
2328
+ }
2329
+ },
2330
+ defaultVariants: {
2331
+ variant: "default",
2332
+ size: "default"
2333
+ }
2334
+ }
2335
+ );
2336
+ function Item({
2337
+ className,
2338
+ variant = "default",
2339
+ size = "default",
2340
+ asChild = false,
2341
+ ...props
2342
+ }) {
2343
+ const Comp = asChild ? Slot.Root : "div";
730
2344
  return /* @__PURE__ */ jsx(
731
- "fieldset",
2345
+ Comp,
732
2346
  {
733
- "data-slot": "field-set",
734
- className: cn("flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", className),
2347
+ "data-slot": "item",
2348
+ "data-variant": variant,
2349
+ "data-size": size,
2350
+ className: cn(itemVariants({ variant, size, className })),
735
2351
  ...props
736
2352
  }
737
2353
  );
738
2354
  }
739
- function FieldLegend({ className, variant = "legend", ...props }) {
2355
+ var itemMediaVariants = cva(
2356
+ "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",
2357
+ {
2358
+ variants: {
2359
+ variant: {
2360
+ default: "bg-transparent",
2361
+ icon: "[&_svg:not([class*='size-'])]:size-4",
2362
+ 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"
2363
+ }
2364
+ },
2365
+ defaultVariants: {
2366
+ variant: "default"
2367
+ }
2368
+ }
2369
+ );
2370
+ function ItemMedia({
2371
+ className,
2372
+ variant = "default",
2373
+ ...props
2374
+ }) {
740
2375
  return /* @__PURE__ */ jsx(
741
- "legend",
2376
+ "div",
742
2377
  {
743
- "data-slot": "field-legend",
2378
+ "data-slot": "item-media",
744
2379
  "data-variant": variant,
745
- className: cn("mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm", className),
2380
+ className: cn(itemMediaVariants({ variant, className })),
746
2381
  ...props
747
2382
  }
748
2383
  );
749
2384
  }
750
- function FieldGroup({ className, ...props }) {
2385
+ function ItemContent({ className, ...props }) {
751
2386
  return /* @__PURE__ */ jsx(
752
2387
  "div",
753
2388
  {
754
- "data-slot": "field-group",
2389
+ "data-slot": "item-content",
755
2390
  className: cn(
756
- "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",
2391
+ "flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
757
2392
  className
758
2393
  ),
759
2394
  ...props
760
2395
  }
761
2396
  );
762
2397
  }
763
- var fieldVariants = cva("group/field flex w-full gap-2 data-[invalid=true]:text-destructive", {
764
- variants: {
765
- orientation: {
766
- vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
767
- 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",
768
- 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"
2398
+ function ItemTitle({ className, ...props }) {
2399
+ return /* @__PURE__ */ jsx(
2400
+ "div",
2401
+ {
2402
+ "data-slot": "item-title",
2403
+ className: cn(
2404
+ "line-clamp-1 flex w-fit items-center gap-2 text-xs font-medium underline-offset-4",
2405
+ className
2406
+ ),
2407
+ ...props
769
2408
  }
770
- },
771
- defaultVariants: {
772
- orientation: "vertical"
773
- }
774
- });
775
- function Field({ className, orientation = "vertical", ...props }) {
776
- return /* @__PURE__ */ jsx("div", { role: "group", "data-slot": "field", "data-orientation": orientation, className: cn(fieldVariants({ orientation }), className), ...props });
777
- }
778
- function FieldContent({ className, ...props }) {
779
- return /* @__PURE__ */ jsx("div", { "data-slot": "field-content", className: cn("group/field-content flex flex-1 flex-col gap-0.5 leading-snug", className), ...props });
2409
+ );
780
2410
  }
781
- function FieldLabel({ className, ...props }) {
2411
+ function ItemDescription({ className, ...props }) {
782
2412
  return /* @__PURE__ */ jsx(
783
- Label,
2413
+ "p",
784
2414
  {
785
- "data-slot": "field-label",
2415
+ "data-slot": "item-description",
786
2416
  className: cn(
787
- "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",
788
- "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
2417
+ "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",
789
2418
  className
790
2419
  ),
791
2420
  ...props
792
2421
  }
793
2422
  );
794
2423
  }
795
- function FieldTitle({ className, ...props }) {
2424
+ function ItemActions({ className, ...props }) {
796
2425
  return /* @__PURE__ */ jsx(
797
2426
  "div",
798
2427
  {
799
- "data-slot": "field-label",
800
- className: cn("flex w-fit items-center gap-2 text-xs/relaxed group-data-[disabled=true]/field:opacity-50", className),
2428
+ "data-slot": "item-actions",
2429
+ className: cn("flex items-center gap-2", className),
801
2430
  ...props
802
2431
  }
803
2432
  );
804
2433
  }
805
- function FieldDescription({ className, ...props }) {
2434
+ function ItemHeader({ className, ...props }) {
806
2435
  return /* @__PURE__ */ jsx(
807
- "p",
2436
+ "div",
808
2437
  {
809
- "data-slot": "field-description",
2438
+ "data-slot": "item-header",
810
2439
  className: cn(
811
- "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",
812
- "last:mt-0 nth-last-2:-mt-1",
813
- "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
2440
+ "flex basis-full items-center justify-between gap-2",
814
2441
  className
815
2442
  ),
816
2443
  ...props
817
2444
  }
818
2445
  );
819
2446
  }
820
- function FieldSeparator({
821
- children,
822
- className,
823
- ...props
824
- }) {
825
- return /* @__PURE__ */ jsxs(
2447
+ function ItemFooter({ className, ...props }) {
2448
+ return /* @__PURE__ */ jsx(
826
2449
  "div",
827
2450
  {
828
- "data-slot": "field-separator",
829
- "data-content": !!children,
830
- className: cn("relative -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2", className),
831
- ...props,
832
- children: [
833
- /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
834
- children && /* @__PURE__ */ jsx("span", { className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground", "data-slot": "field-separator-content", children })
835
- ]
2451
+ "data-slot": "item-footer",
2452
+ className: cn(
2453
+ "flex basis-full items-center justify-between gap-2",
2454
+ className
2455
+ ),
2456
+ ...props
836
2457
  }
837
2458
  );
838
2459
  }
839
- function FieldError({
840
- className,
841
- children,
842
- errors,
843
- ...props
844
- }) {
845
- const content = useMemo(() => {
846
- if (children) {
847
- return children;
848
- }
849
- if (!errors?.length) {
850
- return null;
851
- }
852
- const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
853
- if (uniqueErrors?.length == 1) {
854
- return uniqueErrors[0]?.message;
855
- }
856
- return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map((error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)) });
857
- }, [children, errors]);
858
- if (!content) {
859
- return null;
860
- }
861
- return /* @__PURE__ */ jsx("div", { role: "alert", "data-slot": "field-error", className: cn("text-xs font-normal text-destructive", className), ...props, children: content });
862
- }
863
- function HoverCard({ ...props }) {
864
- return /* @__PURE__ */ jsx(HoverCard$1.Root, { "data-slot": "hover-card", ...props });
865
- }
866
- function HoverCardTrigger({ ...props }) {
867
- return /* @__PURE__ */ jsx(HoverCard$1.Trigger, { "data-slot": "hover-card-trigger", ...props });
868
- }
869
- function HoverCardContent({ className, align = "center", sideOffset = 4, ...props }) {
870
- return /* @__PURE__ */ jsx(HoverCard$1.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
871
- HoverCard$1.Content,
2460
+ function Kbd({ className, ...props }) {
2461
+ return /* @__PURE__ */ jsx(
2462
+ "kbd",
872
2463
  {
873
- "data-slot": "hover-card-content",
874
- align,
875
- sideOffset,
2464
+ "data-slot": "kbd",
876
2465
  className: cn(
877
- "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",
2466
+ "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",
878
2467
  className
879
2468
  ),
880
2469
  ...props
881
2470
  }
882
- ) });
2471
+ );
2472
+ }
2473
+ function KbdGroup({ className, ...props }) {
2474
+ return /* @__PURE__ */ jsx(
2475
+ "kbd",
2476
+ {
2477
+ "data-slot": "kbd-group",
2478
+ className: cn("inline-flex items-center gap-1", className),
2479
+ ...props
2480
+ }
2481
+ );
883
2482
  }
884
- function InputOTP({
2483
+ var markerVariants = cva(
2484
+ "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",
2485
+ {
2486
+ variants: {
2487
+ variant: {
2488
+ default: "",
2489
+ 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",
2490
+ border: "border-b border-border pb-2"
2491
+ }
2492
+ }
2493
+ }
2494
+ );
2495
+ function Marker({
885
2496
  className,
886
- containerClassName,
2497
+ variant = "default",
2498
+ asChild = false,
887
2499
  ...props
888
2500
  }) {
2501
+ const Comp = asChild ? Slot.Root : "div";
889
2502
  return /* @__PURE__ */ jsx(
890
- OTPInput,
2503
+ Comp,
891
2504
  {
892
- "data-slot": "input-otp",
893
- containerClassName: cn("cn-input-otp flex items-center has-disabled:opacity-50", containerClassName),
894
- spellCheck: false,
895
- className: cn("disabled:cursor-not-allowed", className),
2505
+ "data-slot": "marker",
2506
+ "data-variant": variant,
2507
+ className: cn(markerVariants({ variant, className })),
896
2508
  ...props
897
2509
  }
898
2510
  );
899
2511
  }
900
- function InputOTPGroup({ className, ...props }) {
2512
+ function MarkerIcon({ className, ...props }) {
901
2513
  return /* @__PURE__ */ jsx(
902
- "div",
2514
+ "span",
903
2515
  {
904
- "data-slot": "input-otp-group",
2516
+ "data-slot": "marker-icon",
2517
+ "aria-hidden": "true",
905
2518
  className: cn(
906
- "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",
2519
+ "size-3.5 shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
907
2520
  className
908
2521
  ),
909
2522
  ...props
910
2523
  }
911
2524
  );
912
2525
  }
913
- function InputOTPSlot({
914
- index,
2526
+ function MarkerContent({ className, ...props }) {
2527
+ return /* @__PURE__ */ jsx(
2528
+ "span",
2529
+ {
2530
+ "data-slot": "marker-content",
2531
+ className: cn(
2532
+ "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",
2533
+ className
2534
+ ),
2535
+ ...props
2536
+ }
2537
+ );
2538
+ }
2539
+ function Menubar({
915
2540
  className,
916
2541
  ...props
917
2542
  }) {
918
- const inputOTPContext = React21.useContext(OTPInputContext);
919
- const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
920
- return /* @__PURE__ */ jsxs(
921
- "div",
2543
+ return /* @__PURE__ */ jsx(
2544
+ Menubar$1.Root,
922
2545
  {
923
- "data-slot": "input-otp-slot",
924
- "data-active": isActive,
2546
+ "data-slot": "menubar",
925
2547
  className: cn(
926
- "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",
2548
+ "flex h-8 items-center gap-0.5 rounded-none border p-1",
927
2549
  className
928
2550
  ),
929
- ...props,
930
- children: [
931
- char,
932
- 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" }) })
933
- ]
2551
+ ...props
934
2552
  }
935
2553
  );
936
2554
  }
937
- function InputOTPSeparator({ ...props }) {
938
- return /* @__PURE__ */ jsx("div", { "data-slot": "input-otp-separator", className: "flex items-center [&_svg:not([class*='size-'])]:size-4", role: "separator", ...props, children: /* @__PURE__ */ jsx(MinusIcon, {}) });
939
- }
940
- function Menubar({ className, ...props }) {
941
- return /* @__PURE__ */ jsx(Menubar$1.Root, { "data-slot": "menubar", className: cn("flex h-8 items-center gap-0.5 rounded-none border p-1", className), ...props });
942
- }
943
- function MenubarMenu({ ...props }) {
2555
+ function MenubarMenu({
2556
+ ...props
2557
+ }) {
944
2558
  return /* @__PURE__ */ jsx(Menubar$1.Menu, { "data-slot": "menubar-menu", ...props });
945
2559
  }
946
- function MenubarGroup({ ...props }) {
2560
+ function MenubarGroup({
2561
+ ...props
2562
+ }) {
947
2563
  return /* @__PURE__ */ jsx(Menubar$1.Group, { "data-slot": "menubar-group", ...props });
948
2564
  }
949
- function MenubarPortal({ ...props }) {
2565
+ function MenubarPortal({
2566
+ ...props
2567
+ }) {
950
2568
  return /* @__PURE__ */ jsx(Menubar$1.Portal, { "data-slot": "menubar-portal", ...props });
951
2569
  }
952
- function MenubarRadioGroup({ ...props }) {
2570
+ function MenubarRadioGroup({
2571
+ ...props
2572
+ }) {
953
2573
  return /* @__PURE__ */ jsx(Menubar$1.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
954
2574
  }
955
- function MenubarTrigger({ className, ...props }) {
2575
+ function MenubarTrigger({
2576
+ className,
2577
+ ...props
2578
+ }) {
956
2579
  return /* @__PURE__ */ jsx(
957
2580
  Menubar$1.Trigger,
958
2581
  {
@@ -965,7 +2588,13 @@ function MenubarTrigger({ className, ...props }) {
965
2588
  }
966
2589
  );
967
2590
  }
968
- function MenubarContent({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }) {
2591
+ function MenubarContent({
2592
+ className,
2593
+ align = "start",
2594
+ alignOffset = -4,
2595
+ sideOffset = 8,
2596
+ ...props
2597
+ }) {
969
2598
  return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
970
2599
  Menubar$1.Content,
971
2600
  {
@@ -973,10 +2602,7 @@ function MenubarContent({ className, align = "start", alignOffset = -4, sideOffs
973
2602
  align,
974
2603
  alignOffset,
975
2604
  sideOffset,
976
- className: cn(
977
- "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",
978
- className
979
- ),
2605
+ 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),
980
2606
  ...props
981
2607
  }
982
2608
  ) });
@@ -1020,7 +2646,10 @@ function MenubarCheckboxItem({
1020
2646
  checked,
1021
2647
  ...props,
1022
2648
  children: [
1023
- /* @__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(CheckIcon, {}) }) }),
2649
+ /* @__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(
2650
+ CheckIcon,
2651
+ {}
2652
+ ) }) }),
1024
2653
  children
1025
2654
  ]
1026
2655
  }
@@ -1043,7 +2672,10 @@ function MenubarRadioItem({
1043
2672
  ),
1044
2673
  ...props,
1045
2674
  children: [
1046
- /* @__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(CheckIcon, {}) }) }),
2675
+ /* @__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(
2676
+ CheckIcon,
2677
+ {}
2678
+ ) }) }),
1047
2679
  children
1048
2680
  ]
1049
2681
  }
@@ -1054,22 +2686,48 @@ function MenubarLabel({
1054
2686
  inset,
1055
2687
  ...props
1056
2688
  }) {
1057
- return /* @__PURE__ */ jsx(Menubar$1.Label, { "data-slot": "menubar-label", "data-inset": inset, className: cn("px-2 py-2 text-xs data-inset:pl-8", className), ...props });
2689
+ return /* @__PURE__ */ jsx(
2690
+ Menubar$1.Label,
2691
+ {
2692
+ "data-slot": "menubar-label",
2693
+ "data-inset": inset,
2694
+ className: cn("px-2 py-2 text-xs data-inset:pl-8", className),
2695
+ ...props
2696
+ }
2697
+ );
1058
2698
  }
1059
- function MenubarSeparator({ className, ...props }) {
1060
- return /* @__PURE__ */ jsx(Menubar$1.Separator, { "data-slot": "menubar-separator", className: cn("-mx-1 my-1 h-px bg-border", className), ...props });
2699
+ function MenubarSeparator({
2700
+ className,
2701
+ ...props
2702
+ }) {
2703
+ return /* @__PURE__ */ jsx(
2704
+ Menubar$1.Separator,
2705
+ {
2706
+ "data-slot": "menubar-separator",
2707
+ className: cn("-mx-1 my-1 h-px bg-border", className),
2708
+ ...props
2709
+ }
2710
+ );
1061
2711
  }
1062
- function MenubarShortcut({ className, ...props }) {
2712
+ function MenubarShortcut({
2713
+ className,
2714
+ ...props
2715
+ }) {
1063
2716
  return /* @__PURE__ */ jsx(
1064
2717
  "span",
1065
2718
  {
1066
2719
  "data-slot": "menubar-shortcut",
1067
- className: cn("ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground", className),
2720
+ className: cn(
2721
+ "ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground",
2722
+ className
2723
+ ),
1068
2724
  ...props
1069
2725
  }
1070
2726
  );
1071
2727
  }
1072
- function MenubarSub({ ...props }) {
2728
+ function MenubarSub({
2729
+ ...props
2730
+ }) {
1073
2731
  return /* @__PURE__ */ jsx(Menubar$1.Sub, { "data-slot": "menubar-sub", ...props });
1074
2732
  }
1075
2733
  function MenubarSubTrigger({
@@ -1095,15 +2753,249 @@ function MenubarSubTrigger({
1095
2753
  }
1096
2754
  );
1097
2755
  }
1098
- function MenubarSubContent({ className, ...props }) {
2756
+ function MenubarSubContent({
2757
+ className,
2758
+ ...props
2759
+ }) {
2760
+ return /* @__PURE__ */ jsx(
2761
+ Menubar$1.SubContent,
2762
+ {
2763
+ "data-slot": "menubar-sub-content",
2764
+ 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),
2765
+ ...props
2766
+ }
2767
+ );
2768
+ }
2769
+ function MessageGroup({ className, ...props }) {
2770
+ return /* @__PURE__ */ jsx(
2771
+ "div",
2772
+ {
2773
+ "data-slot": "message-group",
2774
+ className: cn("flex min-w-0 flex-col gap-1.5", className),
2775
+ ...props
2776
+ }
2777
+ );
2778
+ }
2779
+ function Message({
2780
+ className,
2781
+ align = "start",
2782
+ ...props
2783
+ }) {
2784
+ return /* @__PURE__ */ jsx(
2785
+ "div",
2786
+ {
2787
+ "data-slot": "message",
2788
+ "data-align": align,
2789
+ className: cn(
2790
+ "group/message relative flex w-full min-w-0 gap-1.5 text-xs data-[align=end]:flex-row-reverse",
2791
+ className
2792
+ ),
2793
+ ...props
2794
+ }
2795
+ );
2796
+ }
2797
+ function MessageAvatar({ className, ...props }) {
2798
+ return /* @__PURE__ */ jsx(
2799
+ "div",
2800
+ {
2801
+ "data-slot": "message-avatar",
2802
+ className: cn(
2803
+ "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",
2804
+ className
2805
+ ),
2806
+ ...props
2807
+ }
2808
+ );
2809
+ }
2810
+ function MessageContent({ className, ...props }) {
2811
+ return /* @__PURE__ */ jsx(
2812
+ "div",
2813
+ {
2814
+ "data-slot": "message-content",
2815
+ className: cn(
2816
+ "flex w-full min-w-0 flex-col gap-2 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end",
2817
+ className
2818
+ ),
2819
+ ...props
2820
+ }
2821
+ );
2822
+ }
2823
+ function MessageHeader({ className, ...props }) {
2824
+ return /* @__PURE__ */ jsx(
2825
+ "div",
2826
+ {
2827
+ "data-slot": "message-header",
2828
+ className: cn(
2829
+ "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",
2830
+ className
2831
+ ),
2832
+ ...props
2833
+ }
2834
+ );
2835
+ }
2836
+ function MessageFooter({ className, ...props }) {
2837
+ return /* @__PURE__ */ jsx(
2838
+ "div",
2839
+ {
2840
+ "data-slot": "message-footer",
2841
+ className: cn(
2842
+ "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",
2843
+ className
2844
+ ),
2845
+ ...props
2846
+ }
2847
+ );
2848
+ }
2849
+ function MessageScrollerProvider(props) {
2850
+ return /* @__PURE__ */ jsx(MessageScroller$1.Provider, { ...props });
2851
+ }
2852
+ function MessageScroller({
2853
+ className,
2854
+ ...props
2855
+ }) {
2856
+ return /* @__PURE__ */ jsx(
2857
+ MessageScroller$1.Root,
2858
+ {
2859
+ "data-slot": "message-scroller",
2860
+ className: cn(
2861
+ "group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",
2862
+ className
2863
+ ),
2864
+ ...props
2865
+ }
2866
+ );
2867
+ }
2868
+ function MessageScrollerViewport({
2869
+ className,
2870
+ ...props
2871
+ }) {
2872
+ return /* @__PURE__ */ jsx(
2873
+ MessageScroller$1.Viewport,
2874
+ {
2875
+ "data-slot": "message-scroller-viewport",
2876
+ className: cn(
2877
+ "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",
2878
+ className
2879
+ ),
2880
+ ...props
2881
+ }
2882
+ );
2883
+ }
2884
+ function MessageScrollerContent({
2885
+ className,
2886
+ ...props
2887
+ }) {
2888
+ return /* @__PURE__ */ jsx(
2889
+ MessageScroller$1.Content,
2890
+ {
2891
+ "data-slot": "message-scroller-content",
2892
+ className: cn("flex h-max min-h-full flex-col gap-6", className),
2893
+ ...props
2894
+ }
2895
+ );
2896
+ }
2897
+ function MessageScrollerItem({
2898
+ className,
2899
+ scrollAnchor = false,
2900
+ ...props
2901
+ }) {
2902
+ return /* @__PURE__ */ jsx(
2903
+ MessageScroller$1.Item,
2904
+ {
2905
+ "data-slot": "message-scroller-item",
2906
+ scrollAnchor,
2907
+ className: cn(
2908
+ "min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",
2909
+ className
2910
+ ),
2911
+ ...props
2912
+ }
2913
+ );
2914
+ }
2915
+ function MessageScrollerButton({
2916
+ direction = "end",
2917
+ className,
2918
+ children,
2919
+ render,
2920
+ variant = "secondary",
2921
+ size = "icon-sm",
2922
+ ...props
2923
+ }) {
2924
+ return /* @__PURE__ */ jsx(
2925
+ MessageScroller$1.Button,
2926
+ {
2927
+ "data-slot": "message-scroller-button",
2928
+ "data-direction": direction,
2929
+ "data-variant": variant,
2930
+ "data-size": size,
2931
+ direction,
2932
+ className: cn(
2933
+ "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",
2934
+ className
2935
+ ),
2936
+ render: render ?? /* @__PURE__ */ jsx(Button, { variant, size }),
2937
+ ...props,
2938
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
2939
+ /* @__PURE__ */ jsx(
2940
+ ArrowDownIcon,
2941
+ {}
2942
+ ),
2943
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: direction === "end" ? "Scroll to end" : "Scroll to start" })
2944
+ ] })
2945
+ }
2946
+ );
2947
+ }
2948
+ function NativeSelect({
2949
+ className,
2950
+ size = "default",
2951
+ ...props
2952
+ }) {
2953
+ return /* @__PURE__ */ jsxs(
2954
+ "div",
2955
+ {
2956
+ className: cn(
2957
+ "group/native-select relative w-fit has-[select:disabled]:opacity-50",
2958
+ className
2959
+ ),
2960
+ "data-slot": "native-select-wrapper",
2961
+ "data-size": size,
2962
+ children: [
2963
+ /* @__PURE__ */ jsx(
2964
+ "select",
2965
+ {
2966
+ "data-slot": "native-select",
2967
+ "data-size": size,
2968
+ className: "h-8 w-full min-w-0 appearance-none rounded-none border border-input bg-transparent py-1 pr-8 pl-2.5 text-xs transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-none data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
2969
+ ...props
2970
+ }
2971
+ ),
2972
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none", "aria-hidden": "true", "data-slot": "native-select-icon" })
2973
+ ]
2974
+ }
2975
+ );
2976
+ }
2977
+ function NativeSelectOption({
2978
+ className,
2979
+ ...props
2980
+ }) {
2981
+ return /* @__PURE__ */ jsx(
2982
+ "option",
2983
+ {
2984
+ "data-slot": "native-select-option",
2985
+ className: cn("bg-[Canvas] text-[CanvasText]", className),
2986
+ ...props
2987
+ }
2988
+ );
2989
+ }
2990
+ function NativeSelectOptGroup({
2991
+ className,
2992
+ ...props
2993
+ }) {
1099
2994
  return /* @__PURE__ */ jsx(
1100
- Menubar$1.SubContent,
2995
+ "optgroup",
1101
2996
  {
1102
- "data-slot": "menubar-sub-content",
1103
- className: cn(
1104
- "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",
1105
- className
1106
- ),
2997
+ "data-slot": "native-select-optgroup",
2998
+ className: cn("bg-[Canvas] text-[CanvasText]", className),
1107
2999
  ...props
1108
3000
  }
1109
3001
  );
@@ -1119,7 +3011,10 @@ function NavigationMenu({
1119
3011
  {
1120
3012
  "data-slot": "navigation-menu",
1121
3013
  "data-viewport": viewport,
1122
- className: cn("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className),
3014
+ className: cn(
3015
+ "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
3016
+ className
3017
+ ),
1123
3018
  ...props,
1124
3019
  children: [
1125
3020
  children,
@@ -1128,36 +3023,61 @@ function NavigationMenu({
1128
3023
  }
1129
3024
  );
1130
3025
  }
1131
- function NavigationMenuList({ className, ...props }) {
3026
+ function NavigationMenuList({
3027
+ className,
3028
+ ...props
3029
+ }) {
1132
3030
  return /* @__PURE__ */ jsx(
1133
3031
  NavigationMenu$1.List,
1134
3032
  {
1135
3033
  "data-slot": "navigation-menu-list",
1136
- className: cn("group flex flex-1 list-none items-center justify-center gap-0", className),
3034
+ className: cn(
3035
+ "group flex flex-1 list-none items-center justify-center gap-0",
3036
+ className
3037
+ ),
1137
3038
  ...props
1138
3039
  }
1139
3040
  );
1140
3041
  }
1141
- function NavigationMenuItem({ className, ...props }) {
1142
- return /* @__PURE__ */ jsx(NavigationMenu$1.Item, { "data-slot": "navigation-menu-item", className: cn("relative", className), ...props });
3042
+ function NavigationMenuItem({
3043
+ className,
3044
+ ...props
3045
+ }) {
3046
+ return /* @__PURE__ */ jsx(
3047
+ NavigationMenu$1.Item,
3048
+ {
3049
+ "data-slot": "navigation-menu-item",
3050
+ className: cn("relative", className),
3051
+ ...props
3052
+ }
3053
+ );
1143
3054
  }
1144
3055
  var navigationMenuTriggerStyle = cva(
1145
3056
  "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"
1146
3057
  );
1147
- function NavigationMenuTrigger({ className, children, ...props }) {
1148
- return /* @__PURE__ */ jsxs(NavigationMenu$1.Trigger, { "data-slot": "navigation-menu-trigger", className: cn(navigationMenuTriggerStyle(), "group", className), ...props, children: [
1149
- children,
1150
- " ",
1151
- /* @__PURE__ */ jsx(
1152
- ChevronDownIcon,
1153
- {
1154
- 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",
1155
- "aria-hidden": "true"
1156
- }
1157
- )
1158
- ] });
3058
+ function NavigationMenuTrigger({
3059
+ className,
3060
+ children,
3061
+ ...props
3062
+ }) {
3063
+ return /* @__PURE__ */ jsxs(
3064
+ NavigationMenu$1.Trigger,
3065
+ {
3066
+ "data-slot": "navigation-menu-trigger",
3067
+ className: cn(navigationMenuTriggerStyle(), "group", className),
3068
+ ...props,
3069
+ children: [
3070
+ children,
3071
+ " ",
3072
+ /* @__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" })
3073
+ ]
3074
+ }
3075
+ );
1159
3076
  }
1160
- function NavigationMenuContent({ className, ...props }) {
3077
+ function NavigationMenuContent({
3078
+ className,
3079
+ ...props
3080
+ }) {
1161
3081
  return /* @__PURE__ */ jsx(
1162
3082
  NavigationMenu$1.Content,
1163
3083
  {
@@ -1170,20 +3090,34 @@ function NavigationMenuContent({ className, ...props }) {
1170
3090
  }
1171
3091
  );
1172
3092
  }
1173
- function NavigationMenuViewport({ className, ...props }) {
1174
- return /* @__PURE__ */ jsx("div", { className: cn("absolute top-full left-0 isolate z-50 flex justify-center"), children: /* @__PURE__ */ jsx(
1175
- NavigationMenu$1.Viewport,
3093
+ function NavigationMenuViewport({
3094
+ className,
3095
+ ...props
3096
+ }) {
3097
+ return /* @__PURE__ */ jsx(
3098
+ "div",
1176
3099
  {
1177
- "data-slot": "navigation-menu-viewport",
1178
3100
  className: cn(
1179
- "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",
1180
- className
3101
+ "absolute top-full left-0 isolate z-50 flex justify-center"
1181
3102
  ),
1182
- ...props
3103
+ children: /* @__PURE__ */ jsx(
3104
+ NavigationMenu$1.Viewport,
3105
+ {
3106
+ "data-slot": "navigation-menu-viewport",
3107
+ className: cn(
3108
+ "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",
3109
+ className
3110
+ ),
3111
+ ...props
3112
+ }
3113
+ )
1183
3114
  }
1184
- ) });
3115
+ );
1185
3116
  }
1186
- function NavigationMenuLink({ className, ...props }) {
3117
+ function NavigationMenuLink({
3118
+ className,
3119
+ ...props
3120
+ }) {
1187
3121
  return /* @__PURE__ */ jsx(
1188
3122
  NavigationMenu$1.Link,
1189
3123
  {
@@ -1196,7 +3130,10 @@ function NavigationMenuLink({ className, ...props }) {
1196
3130
  }
1197
3131
  );
1198
3132
  }
1199
- function NavigationMenuIndicator({ className, ...props }) {
3133
+ function NavigationMenuIndicator({
3134
+ className,
3135
+ ...props
3136
+ }) {
1200
3137
  return /* @__PURE__ */ jsx(
1201
3138
  NavigationMenu$1.Indicator,
1202
3139
  {
@@ -1211,39 +3148,115 @@ function NavigationMenuIndicator({ className, ...props }) {
1211
3148
  );
1212
3149
  }
1213
3150
  function Pagination({ className, ...props }) {
1214
- return /* @__PURE__ */ jsx("nav", { role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("mx-auto flex w-full justify-center", className), ...props });
3151
+ return /* @__PURE__ */ jsx(
3152
+ "nav",
3153
+ {
3154
+ role: "navigation",
3155
+ "aria-label": "pagination",
3156
+ "data-slot": "pagination",
3157
+ className: cn("mx-auto flex w-full justify-center", className),
3158
+ ...props
3159
+ }
3160
+ );
1215
3161
  }
1216
- function PaginationContent({ className, ...props }) {
1217
- return /* @__PURE__ */ jsx("ul", { "data-slot": "pagination-content", className: cn("flex items-center gap-0.5", className), ...props });
3162
+ function PaginationContent({
3163
+ className,
3164
+ ...props
3165
+ }) {
3166
+ return /* @__PURE__ */ jsx(
3167
+ "ul",
3168
+ {
3169
+ "data-slot": "pagination-content",
3170
+ className: cn("flex items-center gap-0.5", className),
3171
+ ...props
3172
+ }
3173
+ );
1218
3174
  }
1219
3175
  function PaginationItem({ ...props }) {
1220
3176
  return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
1221
3177
  }
1222
- function PaginationLink({ className, isActive, size = "icon", ...props }) {
1223
- return /* @__PURE__ */ jsx(Button, { asChild: true, variant: isActive ? "outline" : "ghost", size, className: cn(className), children: /* @__PURE__ */ jsx("a", { "aria-current": isActive ? "page" : void 0, "data-slot": "pagination-link", "data-active": isActive, ...props }) });
3178
+ function PaginationLink({
3179
+ className,
3180
+ isActive,
3181
+ size = "icon",
3182
+ ...props
3183
+ }) {
3184
+ return /* @__PURE__ */ jsx(
3185
+ Button,
3186
+ {
3187
+ asChild: true,
3188
+ variant: isActive ? "outline" : "ghost",
3189
+ size,
3190
+ className: cn(className),
3191
+ children: /* @__PURE__ */ jsx(
3192
+ "a",
3193
+ {
3194
+ "aria-current": isActive ? "page" : void 0,
3195
+ "data-slot": "pagination-link",
3196
+ "data-active": isActive,
3197
+ ...props
3198
+ }
3199
+ )
3200
+ }
3201
+ );
1224
3202
  }
1225
- function PaginationPrevious({ className, text = "Previous", ...props }) {
1226
- return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "Go to previous page", size: "default", className: cn("pl-1.5!", className), ...props, children: [
1227
- /* @__PURE__ */ jsx(ChevronLeftIcon, { "data-icon": "inline-start" }),
1228
- /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text })
1229
- ] });
3203
+ function PaginationPrevious({
3204
+ className,
3205
+ text = "Previous",
3206
+ ...props
3207
+ }) {
3208
+ return /* @__PURE__ */ jsxs(
3209
+ PaginationLink,
3210
+ {
3211
+ "aria-label": "Go to previous page",
3212
+ size: "default",
3213
+ className: cn("pl-1.5!", className),
3214
+ ...props,
3215
+ children: [
3216
+ /* @__PURE__ */ jsx(ChevronLeftIcon, { "data-icon": "inline-start" }),
3217
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text })
3218
+ ]
3219
+ }
3220
+ );
1230
3221
  }
1231
- function PaginationNext({ className, text = "Next", ...props }) {
1232
- return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "Go to next page", size: "default", className: cn("pr-1.5!", className), ...props, children: [
1233
- /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text }),
1234
- /* @__PURE__ */ jsx(ChevronRightIcon, { "data-icon": "inline-end" })
1235
- ] });
3222
+ function PaginationNext({
3223
+ className,
3224
+ text = "Next",
3225
+ ...props
3226
+ }) {
3227
+ return /* @__PURE__ */ jsxs(
3228
+ PaginationLink,
3229
+ {
3230
+ "aria-label": "Go to next page",
3231
+ size: "default",
3232
+ className: cn("pr-1.5!", className),
3233
+ ...props,
3234
+ children: [
3235
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text }),
3236
+ /* @__PURE__ */ jsx(ChevronRightIcon, { "data-icon": "inline-end" })
3237
+ ]
3238
+ }
3239
+ );
1236
3240
  }
1237
- function PaginationEllipsis({ className, ...props }) {
3241
+ function PaginationEllipsis({
3242
+ className,
3243
+ ...props
3244
+ }) {
1238
3245
  return /* @__PURE__ */ jsxs(
1239
3246
  "span",
1240
3247
  {
1241
3248
  "aria-hidden": true,
1242
3249
  "data-slot": "pagination-ellipsis",
1243
- className: cn("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
3250
+ className: cn(
3251
+ "flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
3252
+ className
3253
+ ),
1244
3254
  ...props,
1245
3255
  children: [
1246
- /* @__PURE__ */ jsx(MoreHorizontalIcon, {}),
3256
+ /* @__PURE__ */ jsx(
3257
+ MoreHorizontalIcon,
3258
+ {}
3259
+ ),
1247
3260
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
1248
3261
  ]
1249
3262
  }
@@ -1317,12 +3330,19 @@ function PopoverDescription({
1317
3330
  }
1318
3331
  );
1319
3332
  }
1320
- function Progress({ className, value, ...props }) {
3333
+ function Progress({
3334
+ className,
3335
+ value,
3336
+ ...props
3337
+ }) {
1321
3338
  return /* @__PURE__ */ jsx(
1322
3339
  Progress$1.Root,
1323
3340
  {
1324
3341
  "data-slot": "progress",
1325
- className: cn("relative flex h-1 w-full items-center overflow-x-hidden rounded-none bg-muted", className),
3342
+ className: cn(
3343
+ "relative flex h-1 w-full items-center overflow-x-hidden rounded-none bg-muted",
3344
+ className
3345
+ ),
1326
3346
  ...props,
1327
3347
  children: /* @__PURE__ */ jsx(
1328
3348
  Progress$1.Indicator,
@@ -1335,10 +3355,23 @@ function Progress({ className, value, ...props }) {
1335
3355
  }
1336
3356
  );
1337
3357
  }
1338
- function RadioGroup({ className, ...props }) {
1339
- return /* @__PURE__ */ jsx(RadioGroup$1.Root, { "data-slot": "radio-group", className: cn("grid w-full gap-2", className), ...props });
3358
+ function RadioGroup({
3359
+ className,
3360
+ ...props
3361
+ }) {
3362
+ return /* @__PURE__ */ jsx(
3363
+ RadioGroup$1.Root,
3364
+ {
3365
+ "data-slot": "radio-group",
3366
+ className: cn("grid w-full gap-2", className),
3367
+ ...props
3368
+ }
3369
+ );
1340
3370
  }
1341
- function RadioGroupItem({ className, ...props }) {
3371
+ function RadioGroupItem({
3372
+ className,
3373
+ ...props
3374
+ }) {
1342
3375
  return /* @__PURE__ */ jsx(
1343
3376
  RadioGroup$1.Item,
1344
3377
  {
@@ -1348,16 +3381,29 @@ function RadioGroupItem({ className, ...props }) {
1348
3381
  className
1349
3382
  ),
1350
3383
  ...props,
1351
- children: /* @__PURE__ */ jsx(RadioGroup$1.Indicator, { "data-slot": "radio-group-indicator", className: "flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" }) })
3384
+ children: /* @__PURE__ */ jsx(
3385
+ RadioGroup$1.Indicator,
3386
+ {
3387
+ "data-slot": "radio-group-indicator",
3388
+ className: "flex size-4 items-center justify-center",
3389
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" })
3390
+ }
3391
+ )
1352
3392
  }
1353
3393
  );
1354
3394
  }
1355
- function ResizablePanelGroup({ className, ...props }) {
3395
+ function ResizablePanelGroup({
3396
+ className,
3397
+ ...props
3398
+ }) {
1356
3399
  return /* @__PURE__ */ jsx(
1357
- ResizablePrimitive.PanelGroup,
3400
+ ResizablePrimitive.Group,
1358
3401
  {
1359
3402
  "data-slot": "resizable-panel-group",
1360
- className: cn("flex h-full w-full aria-[orientation=vertical]:flex-col", className),
3403
+ className: cn(
3404
+ "flex h-full w-full aria-[orientation=vertical]:flex-col",
3405
+ className
3406
+ ),
1361
3407
  ...props
1362
3408
  }
1363
3409
  );
@@ -1371,7 +3417,7 @@ function ResizableHandle({
1371
3417
  ...props
1372
3418
  }) {
1373
3419
  return /* @__PURE__ */ jsx(
1374
- ResizablePrimitive.PanelResizeHandle,
3420
+ ResizablePrimitive.Separator,
1375
3421
  {
1376
3422
  "data-slot": "resizable-handle",
1377
3423
  className: cn(
@@ -1558,7 +3604,7 @@ function Slider({
1558
3604
  max = 100,
1559
3605
  ...props
1560
3606
  }) {
1561
- const _values = React21.useMemo(
3607
+ const _values = React8.useMemo(
1562
3608
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
1563
3609
  [value, defaultValue, min, max]
1564
3610
  );
@@ -1602,37 +3648,8 @@ function Slider({
1602
3648
  }
1603
3649
  );
1604
3650
  }
1605
- var Toaster = ({ ...props }) => {
1606
- const { theme = "system" } = useTheme();
1607
- return /* @__PURE__ */ jsx(
1608
- Toaster$1,
1609
- {
1610
- theme,
1611
- className: "toaster group",
1612
- icons: {
1613
- success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
1614
- info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
1615
- warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
1616
- error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
1617
- loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
1618
- },
1619
- style: {
1620
- "--normal-bg": "var(--popover)",
1621
- "--normal-text": "var(--popover-foreground)",
1622
- "--normal-border": "var(--border)",
1623
- "--border-radius": "var(--radius)"
1624
- },
1625
- toastOptions: {
1626
- classNames: {
1627
- toast: "cn-toast"
1628
- }
1629
- },
1630
- ...props
1631
- }
1632
- );
1633
- };
1634
3651
  function Spinner({ className, ...props }) {
1635
- return /* @__PURE__ */ jsx(Loader2Icon, { role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className), ...props });
3652
+ return /* @__PURE__ */ jsx(Loader2Icon, { "data-slot": "spinner", role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className), ...props });
1636
3653
  }
1637
3654
  function Switch({
1638
3655
  className,
@@ -1738,6 +3755,178 @@ function TabsContent({
1738
3755
  }
1739
3756
  );
1740
3757
  }
3758
+ var toast = Toast$1.createToastManager();
3759
+ function ToastProvider({ ...props }) {
3760
+ return /* @__PURE__ */ jsx(Toast$1.Provider, { ...props });
3761
+ }
3762
+ function ToastPortal({ ...props }) {
3763
+ return /* @__PURE__ */ jsx(Toast$1.Portal, { "data-slot": "toast-portal", ...props });
3764
+ }
3765
+ function ToastViewport({ className, ...props }) {
3766
+ return /* @__PURE__ */ jsx(
3767
+ Toast$1.Viewport,
3768
+ {
3769
+ "data-slot": "toast-viewport",
3770
+ className: cn(
3771
+ "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",
3772
+ className
3773
+ ),
3774
+ ...props
3775
+ }
3776
+ );
3777
+ }
3778
+ function Toast({ className, ...props }) {
3779
+ return /* @__PURE__ */ jsx(
3780
+ Toast$1.Root,
3781
+ {
3782
+ "data-slot": "toast",
3783
+ className: cn(
3784
+ "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",
3785
+ "[--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))]",
3786
+ "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]",
3787
+ "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']",
3788
+ "data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]",
3789
+ "data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]",
3790
+ "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]",
3791
+ "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
3792
+ "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
3793
+ "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
3794
+ "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
3795
+ "data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
3796
+ "data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
3797
+ "data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
3798
+ "data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
3799
+ className
3800
+ ),
3801
+ ...props
3802
+ }
3803
+ );
3804
+ }
3805
+ function ToastContent({ className, ...props }) {
3806
+ return /* @__PURE__ */ jsx(
3807
+ Toast$1.Content,
3808
+ {
3809
+ "data-slot": "toast-content",
3810
+ className: cn(
3811
+ "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",
3812
+ className
3813
+ ),
3814
+ ...props
3815
+ }
3816
+ );
3817
+ }
3818
+ function ToastTitle({ className, ...props }) {
3819
+ return /* @__PURE__ */ jsx(
3820
+ Toast$1.Title,
3821
+ {
3822
+ "data-slot": "toast-title",
3823
+ className: cn("text-sm font-medium", className),
3824
+ ...props
3825
+ }
3826
+ );
3827
+ }
3828
+ function ToastDescription({
3829
+ className,
3830
+ ...props
3831
+ }) {
3832
+ return /* @__PURE__ */ jsx(
3833
+ Toast$1.Description,
3834
+ {
3835
+ "data-slot": "toast-description",
3836
+ className: cn("text-sm text-muted-foreground", className),
3837
+ ...props
3838
+ }
3839
+ );
3840
+ }
3841
+ function ToastAction({
3842
+ className,
3843
+ render = /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm" }),
3844
+ ...props
3845
+ }) {
3846
+ return /* @__PURE__ */ jsx(
3847
+ Toast$1.Action,
3848
+ {
3849
+ "data-slot": "toast-action",
3850
+ render,
3851
+ className: cn("shrink-0", className),
3852
+ ...props
3853
+ }
3854
+ );
3855
+ }
3856
+ function ToastClose({
3857
+ className,
3858
+ children,
3859
+ render = /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-sm" }),
3860
+ ...props
3861
+ }) {
3862
+ return /* @__PURE__ */ jsx(
3863
+ Toast$1.Close,
3864
+ {
3865
+ "data-slot": "toast-close",
3866
+ "aria-label": "Close toast",
3867
+ render,
3868
+ className: cn(
3869
+ "relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground",
3870
+ className
3871
+ ),
3872
+ ...props,
3873
+ children: children ?? /* @__PURE__ */ jsx(XIcon, { "aria-hidden": "true" })
3874
+ }
3875
+ );
3876
+ }
3877
+ function ToastIcon({ type }) {
3878
+ let icon = null;
3879
+ if (type === "success") {
3880
+ icon = /* @__PURE__ */ jsx(CircleCheckIcon, { "aria-hidden": "true" });
3881
+ }
3882
+ if (type === "info") {
3883
+ icon = /* @__PURE__ */ jsx(InfoIcon, { "aria-hidden": "true" });
3884
+ }
3885
+ if (type === "warning") {
3886
+ icon = /* @__PURE__ */ jsx(TriangleAlertIcon, { "aria-hidden": "true" });
3887
+ }
3888
+ if (type === "error") {
3889
+ icon = /* @__PURE__ */ jsx(OctagonXIcon, { className: "text-destructive", "aria-hidden": "true" });
3890
+ }
3891
+ if (type === "loading") {
3892
+ icon = /* @__PURE__ */ jsx(Loader2Icon, { className: "animate-spin", "aria-hidden": "true" });
3893
+ }
3894
+ if (!icon) {
3895
+ return null;
3896
+ }
3897
+ return /* @__PURE__ */ jsx(
3898
+ "span",
3899
+ {
3900
+ "data-slot": "toast-icon",
3901
+ className: "shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
3902
+ children: icon
3903
+ }
3904
+ );
3905
+ }
3906
+ function ToastList() {
3907
+ const { toasts } = Toast$1.useToastManager();
3908
+ return toasts.map((toastItem) => /* @__PURE__ */ jsx(Toast, { toast: toastItem, children: /* @__PURE__ */ jsxs(ToastContent, { children: [
3909
+ /* @__PURE__ */ jsx(ToastIcon, { type: toastItem.type }),
3910
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
3911
+ /* @__PURE__ */ jsx(ToastTitle, {}),
3912
+ /* @__PURE__ */ jsx(ToastDescription, {})
3913
+ ] }),
3914
+ /* @__PURE__ */ jsx(ToastAction, {}),
3915
+ /* @__PURE__ */ jsx(ToastClose, {})
3916
+ ] }) }, toastItem.id));
3917
+ }
3918
+ function Toaster({
3919
+ children,
3920
+ toastManager = toast,
3921
+ ...props
3922
+ }) {
3923
+ return /* @__PURE__ */ jsxs(ToastProvider, { toastManager, ...props, children: [
3924
+ children,
3925
+ /* @__PURE__ */ jsx(ToastPortal, { children: /* @__PURE__ */ jsx(ToastViewport, { children: /* @__PURE__ */ jsx(ToastList, {}) }) })
3926
+ ] });
3927
+ }
3928
+ var createToastManager = Toast$1.createToastManager;
3929
+ var useToastManager = Toast$1.useToastManager;
1741
3930
  var toggleVariants = cva(
1742
3931
  "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",
1743
3932
  {
@@ -1764,19 +3953,26 @@ function Toggle({
1764
3953
  size = "default",
1765
3954
  ...props
1766
3955
  }) {
1767
- return /* @__PURE__ */ jsx(Toggle$1.Root, { "data-slot": "toggle", className: cn(toggleVariants({ variant, size, className })), ...props });
3956
+ return /* @__PURE__ */ jsx(
3957
+ Toggle$1.Root,
3958
+ {
3959
+ "data-slot": "toggle",
3960
+ className: cn(toggleVariants({ variant, size, className })),
3961
+ ...props
3962
+ }
3963
+ );
1768
3964
  }
1769
- var ToggleGroupContext = React21.createContext({
3965
+ var ToggleGroupContext = React8.createContext({
1770
3966
  size: "default",
1771
3967
  variant: "default",
1772
- spacing: 0,
3968
+ spacing: 2,
1773
3969
  orientation: "horizontal"
1774
3970
  });
1775
3971
  function ToggleGroup({
1776
3972
  className,
1777
3973
  variant,
1778
3974
  size,
1779
- spacing = 0,
3975
+ spacing = 2,
1780
3976
  orientation = "horizontal",
1781
3977
  children,
1782
3978
  ...props
@@ -1795,7 +3991,13 @@ function ToggleGroup({
1795
3991
  className
1796
3992
  ),
1797
3993
  ...props,
1798
- children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children })
3994
+ children: /* @__PURE__ */ jsx(
3995
+ ToggleGroupContext.Provider,
3996
+ {
3997
+ value: { variant, size, spacing, orientation },
3998
+ children
3999
+ }
4000
+ )
1799
4001
  }
1800
4002
  );
1801
4003
  }
@@ -1806,7 +4008,7 @@ function ToggleGroupItem({
1806
4008
  size = "default",
1807
4009
  ...props
1808
4010
  }) {
1809
- const context = React21.useContext(ToggleGroupContext);
4011
+ const context = React8.useContext(ToggleGroupContext);
1810
4012
  return /* @__PURE__ */ jsx(
1811
4013
  ToggleGroup$1.Item,
1812
4014
  {
@@ -1854,6 +4056,6 @@ function Container({ as: Component = "div", maxWidth = "xl", fluid = false, cent
1854
4056
  );
1855
4057
  }
1856
4058
 
1857
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Badge, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Container, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Slider, Spinner, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Toaster, Toggle, ToggleGroup, ToggleGroupItem, badgeVariants, buttonGroupVariants, navigationMenuTriggerStyle, tabsListVariants, toggleVariants };
4059
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, 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, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Container, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, 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, 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, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Slider, Spinner, Switch, 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 };
1858
4060
  //# sourceMappingURL=index.js.map
1859
4061
  //# sourceMappingURL=index.js.map