@e-infra/design-system 0.0.2 → 0.0.3

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