@webstacks/ui 0.1.0

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