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