@hai3/uikit 0.1.0-alpha.2 → 0.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,15 +1,17 @@
1
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
1
3
  import * as React18 from 'react';
2
4
  import React18__default from 'react';
3
5
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
4
6
  import { clsx } from 'clsx';
5
7
  import { twMerge } from 'tailwind-merge';
6
- import { jsx, jsxs } from 'react/jsx-runtime';
7
8
  import { Slot } from '@radix-ui/react-slot';
8
9
  import { cva } from 'class-variance-authority';
9
10
  import { ButtonSize, ButtonVariant, IconButtonSize } from '@hai3/uikit-contracts';
10
11
  export { ButtonSize, ButtonVariant, IconButtonSize } from '@hai3/uikit-contracts';
12
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
11
13
  import * as SwitchPrimitives from '@radix-ui/react-switch';
12
- import { Loader2, ChevronDown, X, ArrowLeft, ArrowRight, ChevronUp, Check, ChevronRight, Circle, ChevronRightIcon, CheckIcon, CircleIcon, User, Bot, Paperclip, Send, Plus, Search } from 'lucide-react';
14
+ import { Loader2, ChevronDown, X, ArrowLeft, ArrowRight, ChevronUp, Check, ChevronRight, MoreHorizontal, GripVertical, User, Bot, Paperclip, Send, Plus, Search } from 'lucide-react';
13
15
  import { trim, toUpper } from 'lodash';
14
16
  import * as SliderPrimitive from '@radix-ui/react-slider';
15
17
  import * as ProgressPrimitive from '@radix-ui/react-progress';
@@ -17,15 +19,27 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
17
19
  import * as PopoverPrimitive from '@radix-ui/react-popover';
18
20
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
19
21
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
22
+ import * as MenubarPrimitive from '@radix-ui/react-menubar';
23
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
20
24
  import * as SheetPrimitive from '@radix-ui/react-dialog';
25
+ import { Drawer as Drawer$1 } from 'vaul';
26
+ import * as ResizablePrimitive from 'react-resizable-panels';
27
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
28
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
21
29
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
22
30
  import useEmblaCarousel from 'embla-carousel-react';
23
31
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
32
+ export { Area, AreaChart, Bar, BarChart, Brush, CartesianGrid, Cell, Legend as ChartLegend, Tooltip as ChartTooltip, ComposedChart, Cross, Curve, Customized, Dot, ErrorBar, Funnel, FunnelChart, Label, LabelList, Line, LineChart, Pie, PieChart, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Polygon, Radar, RadarChart, RadialBar, RadialBarChart, Rectangle, ReferenceArea, ReferenceDot, ReferenceLine, ResponsiveContainer, Sankey, Scatter, ScatterChart, Sector, Text, Treemap, XAxis, YAxis, ZAxis } from 'recharts';
24
33
  import * as SelectPrimitive from '@radix-ui/react-select';
25
34
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
26
35
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
27
36
 
28
- // src/base/avatar.tsx
37
+ // src/base/aspect-ratio.tsx
38
+ function AspectRatio({
39
+ ...props
40
+ }) {
41
+ return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
42
+ }
29
43
  function cn(...inputs) {
30
44
  return twMerge(clsx(inputs));
31
45
  }
@@ -132,6 +146,47 @@ function Badge({
132
146
  }
133
147
  );
134
148
  }
149
+ var CheckIcon = ({ className = "" }) => {
150
+ return /* @__PURE__ */ jsx(
151
+ "svg",
152
+ {
153
+ className,
154
+ width: "16",
155
+ height: "16",
156
+ viewBox: "0 0 24 24",
157
+ fill: "none",
158
+ stroke: "currentColor",
159
+ strokeWidth: "2",
160
+ strokeLinecap: "round",
161
+ strokeLinejoin: "round",
162
+ children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" })
163
+ }
164
+ );
165
+ };
166
+ function Checkbox({
167
+ className,
168
+ ...props
169
+ }) {
170
+ return /* @__PURE__ */ jsx(
171
+ CheckboxPrimitive.Root,
172
+ {
173
+ "data-slot": "checkbox",
174
+ className: cn(
175
+ "peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
176
+ className
177
+ ),
178
+ ...props,
179
+ children: /* @__PURE__ */ jsx(
180
+ CheckboxPrimitive.Indicator,
181
+ {
182
+ "data-slot": "checkbox-indicator",
183
+ className: "grid place-content-center text-current transition-none",
184
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
185
+ }
186
+ )
187
+ }
188
+ );
189
+ }
135
190
  var Input = React18.forwardRef(
136
191
  ({ className, type, ...props }, ref) => {
137
192
  return /* @__PURE__ */ jsx(
@@ -570,164 +625,722 @@ var NavigationMenuIndicator = React18.forwardRef(({ className, ...props }, ref)
570
625
  }
571
626
  ));
572
627
  NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
573
- var Sheet = SheetPrimitive.Root;
574
- var SheetTrigger = SheetPrimitive.Trigger;
575
- var SheetClose = SheetPrimitive.Close;
576
- var SheetPortal = SheetPrimitive.Portal;
577
- var SheetOverlay = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
578
- SheetPrimitive.Overlay,
579
- {
580
- className: cn(
581
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
582
- className
583
- ),
584
- ...props,
585
- ref
586
- }
587
- ));
588
- SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
589
- var sheetVariants = cva(
590
- "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
591
- {
592
- variants: {
593
- side: {
594
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
595
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
596
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
597
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
598
- }
599
- },
600
- defaultVariants: {
601
- side: "right"
628
+ function Breadcrumb({ ...props }) {
629
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
630
+ }
631
+ function BreadcrumbList({ className, ...props }) {
632
+ return /* @__PURE__ */ jsx(
633
+ "ol",
634
+ {
635
+ "data-slot": "breadcrumb-list",
636
+ className: cn(
637
+ "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
638
+ className
639
+ ),
640
+ ...props
602
641
  }
603
- }
604
- );
605
- var SheetContent = React18.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
606
- /* @__PURE__ */ jsx(SheetOverlay, {}),
607
- /* @__PURE__ */ jsxs(
608
- SheetPrimitive.Content,
642
+ );
643
+ }
644
+ function BreadcrumbItem({ className, ...props }) {
645
+ return /* @__PURE__ */ jsx(
646
+ "li",
609
647
  {
610
- ref,
611
- className: cn(sheetVariants({ side }), className),
612
- ...props,
613
- children: [
614
- /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
615
- /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
616
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
617
- ] }),
618
- children
619
- ]
648
+ "data-slot": "breadcrumb-item",
649
+ className: cn("inline-flex items-center gap-1.5", className),
650
+ ...props
620
651
  }
621
- )
622
- ] }));
623
- SheetContent.displayName = SheetPrimitive.Content.displayName;
624
- var SheetHeader = ({
652
+ );
653
+ }
654
+ function BreadcrumbLink({
655
+ asChild,
625
656
  className,
626
657
  ...props
627
- }) => /* @__PURE__ */ jsx(
628
- "div",
629
- {
630
- className: cn(
631
- "flex flex-col space-y-2 text-center sm:text-left",
632
- className
633
- ),
634
- ...props
635
- }
636
- );
637
- SheetHeader.displayName = "SheetHeader";
638
- var SheetFooter = ({
658
+ }) {
659
+ const Comp = asChild ? Slot : "a";
660
+ return /* @__PURE__ */ jsx(
661
+ Comp,
662
+ {
663
+ "data-slot": "breadcrumb-link",
664
+ className: cn("hover:text-foreground transition-colors", className),
665
+ ...props
666
+ }
667
+ );
668
+ }
669
+ function BreadcrumbPage({ className, ...props }) {
670
+ return /* @__PURE__ */ jsx(
671
+ "span",
672
+ {
673
+ "data-slot": "breadcrumb-page",
674
+ role: "link",
675
+ "aria-disabled": "true",
676
+ "aria-current": "page",
677
+ className: cn("text-foreground font-normal", className),
678
+ ...props
679
+ }
680
+ );
681
+ }
682
+ function BreadcrumbSeparator({
683
+ children,
639
684
  className,
640
685
  ...props
641
- }) => /* @__PURE__ */ jsx(
642
- "div",
643
- {
644
- className: cn(
645
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
646
- className
647
- ),
648
- ...props
649
- }
650
- );
651
- SheetFooter.displayName = "SheetFooter";
652
- var SheetTitle = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
653
- SheetPrimitive.Title,
654
- {
655
- ref,
656
- className: cn("text-lg font-semibold text-foreground", className),
657
- ...props
658
- }
659
- ));
660
- SheetTitle.displayName = SheetPrimitive.Title.displayName;
661
- var SheetDescription = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
662
- SheetPrimitive.Description,
663
- {
664
- ref,
665
- className: cn("text-sm text-muted-foreground", className),
666
- ...props
667
- }
668
- ));
669
- SheetDescription.displayName = SheetPrimitive.Description.displayName;
670
- var Dialog = SheetPrimitive.Root;
671
- var DialogTrigger = SheetPrimitive.Trigger;
672
- var DialogPortal = SheetPrimitive.Portal;
673
- var DialogClose = SheetPrimitive.Close;
674
- var DialogOverlay = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
675
- SheetPrimitive.Overlay,
676
- {
677
- ref,
678
- className: cn(
679
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
680
- className
681
- ),
682
- ...props
683
- }
684
- ));
685
- DialogOverlay.displayName = SheetPrimitive.Overlay.displayName;
686
- var DialogContent = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
687
- /* @__PURE__ */ jsx(DialogOverlay, {}),
688
- /* @__PURE__ */ jsxs(
689
- SheetPrimitive.Content,
686
+ }) {
687
+ return /* @__PURE__ */ jsx(
688
+ "li",
690
689
  {
691
- ref,
692
- className: cn(
693
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
694
- className
695
- ),
690
+ "data-slot": "breadcrumb-separator",
691
+ role: "presentation",
692
+ "aria-hidden": "true",
693
+ className: cn("[&>svg]:size-3.5", className),
694
+ ...props,
695
+ children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
696
+ }
697
+ );
698
+ }
699
+ function BreadcrumbEllipsis({
700
+ className,
701
+ ...props
702
+ }) {
703
+ return /* @__PURE__ */ jsxs(
704
+ "span",
705
+ {
706
+ "data-slot": "breadcrumb-ellipsis",
707
+ role: "presentation",
708
+ "aria-hidden": "true",
709
+ className: cn("flex size-9 items-center justify-center", className),
696
710
  ...props,
697
711
  children: [
698
- children,
699
- /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
700
- /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
701
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
702
- ] })
712
+ /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }),
713
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
703
714
  ]
704
715
  }
705
- )
706
- ] }));
707
- DialogContent.displayName = SheetPrimitive.Content.displayName;
708
- var DialogHeader = ({
716
+ );
717
+ }
718
+ var ChevronRightIcon = ({ className = "" }) => {
719
+ return /* @__PURE__ */ jsx(
720
+ "svg",
721
+ {
722
+ className,
723
+ width: "16",
724
+ height: "16",
725
+ viewBox: "0 0 24 24",
726
+ fill: "none",
727
+ stroke: "currentColor",
728
+ strokeWidth: "2",
729
+ strokeLinecap: "round",
730
+ strokeLinejoin: "round",
731
+ children: /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" })
732
+ }
733
+ );
734
+ };
735
+ var CircleIcon = ({ className = "" }) => {
736
+ return /* @__PURE__ */ jsx(
737
+ "svg",
738
+ {
739
+ className,
740
+ width: "16",
741
+ height: "16",
742
+ viewBox: "0 0 24 24",
743
+ fill: "none",
744
+ stroke: "currentColor",
745
+ strokeWidth: "2",
746
+ strokeLinecap: "round",
747
+ strokeLinejoin: "round",
748
+ children: /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" })
749
+ }
750
+ );
751
+ };
752
+ function Menubar({
709
753
  className,
710
754
  ...props
711
- }) => /* @__PURE__ */ jsx(
712
- "div",
713
- {
714
- className: cn(
715
- "flex flex-col space-y-1.5 text-center sm:text-left",
716
- className
717
- ),
718
- ...props
719
- }
720
- );
721
- DialogHeader.displayName = "DialogHeader";
722
- var DialogFooter = ({
723
- className,
755
+ }) {
756
+ return /* @__PURE__ */ jsx(
757
+ MenubarPrimitive.Root,
758
+ {
759
+ "data-slot": "menubar",
760
+ className: cn(
761
+ "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
762
+ className
763
+ ),
764
+ ...props
765
+ }
766
+ );
767
+ }
768
+ function MenubarMenu({
724
769
  ...props
725
- }) => /* @__PURE__ */ jsx(
726
- "div",
727
- {
728
- className: cn(
729
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
730
- className
770
+ }) {
771
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
772
+ }
773
+ function MenubarGroup({
774
+ ...props
775
+ }) {
776
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
777
+ }
778
+ function MenubarPortal({
779
+ ...props
780
+ }) {
781
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
782
+ }
783
+ function MenubarRadioGroup({
784
+ ...props
785
+ }) {
786
+ return /* @__PURE__ */ jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
787
+ }
788
+ function MenubarTrigger({
789
+ className,
790
+ ...props
791
+ }) {
792
+ return /* @__PURE__ */ jsx(
793
+ MenubarPrimitive.Trigger,
794
+ {
795
+ "data-slot": "menubar-trigger",
796
+ className: cn(
797
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
798
+ className
799
+ ),
800
+ ...props
801
+ }
802
+ );
803
+ }
804
+ function MenubarContent({
805
+ className,
806
+ align = "start",
807
+ alignOffset = -4,
808
+ sideOffset = 8,
809
+ ...props
810
+ }) {
811
+ return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
812
+ MenubarPrimitive.Content,
813
+ {
814
+ "data-slot": "menubar-content",
815
+ align,
816
+ alignOffset,
817
+ sideOffset,
818
+ className: cn(
819
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md",
820
+ className
821
+ ),
822
+ ...props
823
+ }
824
+ ) });
825
+ }
826
+ function MenubarItem({
827
+ className,
828
+ inset,
829
+ variant = "default",
830
+ ...props
831
+ }) {
832
+ return /* @__PURE__ */ jsx(
833
+ MenubarPrimitive.Item,
834
+ {
835
+ "data-slot": "menubar-item",
836
+ "data-inset": inset,
837
+ "data-variant": variant,
838
+ className: cn(
839
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
840
+ className
841
+ ),
842
+ ...props
843
+ }
844
+ );
845
+ }
846
+ function MenubarCheckboxItem({
847
+ className,
848
+ children,
849
+ checked,
850
+ ...props
851
+ }) {
852
+ return /* @__PURE__ */ jsxs(
853
+ MenubarPrimitive.CheckboxItem,
854
+ {
855
+ "data-slot": "menubar-checkbox-item",
856
+ className: cn(
857
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
858
+ className
859
+ ),
860
+ checked,
861
+ ...props,
862
+ children: [
863
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
864
+ children
865
+ ]
866
+ }
867
+ );
868
+ }
869
+ function MenubarRadioItem({
870
+ className,
871
+ children,
872
+ ...props
873
+ }) {
874
+ return /* @__PURE__ */ jsxs(
875
+ MenubarPrimitive.RadioItem,
876
+ {
877
+ "data-slot": "menubar-radio-item",
878
+ className: cn(
879
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
880
+ className
881
+ ),
882
+ ...props,
883
+ children: [
884
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
885
+ children
886
+ ]
887
+ }
888
+ );
889
+ }
890
+ function MenubarLabel({
891
+ className,
892
+ inset,
893
+ ...props
894
+ }) {
895
+ return /* @__PURE__ */ jsx(
896
+ MenubarPrimitive.Label,
897
+ {
898
+ "data-slot": "menubar-label",
899
+ "data-inset": inset,
900
+ className: cn(
901
+ "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
902
+ className
903
+ ),
904
+ ...props
905
+ }
906
+ );
907
+ }
908
+ function MenubarSeparator({
909
+ className,
910
+ ...props
911
+ }) {
912
+ return /* @__PURE__ */ jsx(
913
+ MenubarPrimitive.Separator,
914
+ {
915
+ "data-slot": "menubar-separator",
916
+ className: cn("bg-border -mx-1 my-1 h-px", className),
917
+ ...props
918
+ }
919
+ );
920
+ }
921
+ function MenubarShortcut({
922
+ className,
923
+ ...props
924
+ }) {
925
+ return /* @__PURE__ */ jsx(
926
+ "span",
927
+ {
928
+ "data-slot": "menubar-shortcut",
929
+ className: cn(
930
+ "text-muted-foreground ml-auto text-xs tracking-widest",
931
+ className
932
+ ),
933
+ ...props
934
+ }
935
+ );
936
+ }
937
+ function MenubarSub({
938
+ ...props
939
+ }) {
940
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
941
+ }
942
+ function MenubarSubTrigger({
943
+ className,
944
+ inset,
945
+ children,
946
+ ...props
947
+ }) {
948
+ return /* @__PURE__ */ jsxs(
949
+ MenubarPrimitive.SubTrigger,
950
+ {
951
+ "data-slot": "menubar-sub-trigger",
952
+ "data-inset": inset,
953
+ className: cn(
954
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8",
955
+ className
956
+ ),
957
+ ...props,
958
+ children: [
959
+ children,
960
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })
961
+ ]
962
+ }
963
+ );
964
+ }
965
+ function MenubarSubContent({
966
+ className,
967
+ ...props
968
+ }) {
969
+ return /* @__PURE__ */ jsx(
970
+ MenubarPrimitive.SubContent,
971
+ {
972
+ "data-slot": "menubar-sub-content",
973
+ className: cn(
974
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
975
+ className
976
+ ),
977
+ ...props
978
+ }
979
+ );
980
+ }
981
+ var ChevronLeftIcon = ({ className = "" }) => {
982
+ return /* @__PURE__ */ jsx(
983
+ "svg",
984
+ {
985
+ className,
986
+ width: "16",
987
+ height: "16",
988
+ viewBox: "0 0 24 24",
989
+ fill: "none",
990
+ stroke: "currentColor",
991
+ strokeWidth: "2",
992
+ strokeLinecap: "round",
993
+ strokeLinejoin: "round",
994
+ children: /* @__PURE__ */ jsx("path", { d: "m15 18-6-6 6-6" })
995
+ }
996
+ );
997
+ };
998
+ var MoreHorizontalIcon = ({ className = "" }) => {
999
+ return /* @__PURE__ */ jsxs(
1000
+ "svg",
1001
+ {
1002
+ className,
1003
+ width: "16",
1004
+ height: "16",
1005
+ viewBox: "0 0 24 24",
1006
+ fill: "none",
1007
+ stroke: "currentColor",
1008
+ strokeWidth: "2",
1009
+ strokeLinecap: "round",
1010
+ strokeLinejoin: "round",
1011
+ children: [
1012
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1" }),
1013
+ /* @__PURE__ */ jsx("circle", { cx: "19", cy: "12", r: "1" }),
1014
+ /* @__PURE__ */ jsx("circle", { cx: "5", cy: "12", r: "1" })
1015
+ ]
1016
+ }
1017
+ );
1018
+ };
1019
+ function Pagination({ className, ...props }) {
1020
+ return /* @__PURE__ */ jsx(
1021
+ "nav",
1022
+ {
1023
+ role: "navigation",
1024
+ "aria-label": "pagination",
1025
+ "data-slot": "pagination",
1026
+ className: cn("mx-auto flex w-full justify-center", className),
1027
+ ...props
1028
+ }
1029
+ );
1030
+ }
1031
+ function PaginationContent({
1032
+ className,
1033
+ ...props
1034
+ }) {
1035
+ return /* @__PURE__ */ jsx(
1036
+ "ul",
1037
+ {
1038
+ "data-slot": "pagination-content",
1039
+ className: cn("flex flex-row items-center gap-1", className),
1040
+ ...props
1041
+ }
1042
+ );
1043
+ }
1044
+ function PaginationItem({ ...props }) {
1045
+ return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
1046
+ }
1047
+ function PaginationLink({
1048
+ className,
1049
+ isActive,
1050
+ size = ButtonSize.Icon,
1051
+ asChild,
1052
+ ...props
1053
+ }) {
1054
+ const Comp = asChild ? Slot : "a";
1055
+ return /* @__PURE__ */ jsx(
1056
+ Comp,
1057
+ {
1058
+ "aria-current": isActive ? "page" : void 0,
1059
+ "data-slot": "pagination-link",
1060
+ "data-active": isActive,
1061
+ className: cn(
1062
+ buttonVariants({
1063
+ variant: isActive ? ButtonVariant.Outline : ButtonVariant.Ghost,
1064
+ size
1065
+ }),
1066
+ className
1067
+ ),
1068
+ ...props
1069
+ }
1070
+ );
1071
+ }
1072
+ function PaginationPrevious({
1073
+ className,
1074
+ children,
1075
+ ...props
1076
+ }) {
1077
+ return /* @__PURE__ */ jsxs(
1078
+ PaginationLink,
1079
+ {
1080
+ "aria-label": "Go to previous page",
1081
+ size: ButtonSize.Default,
1082
+ className: cn("gap-1 px-2.5 sm:pl-2.5", className),
1083
+ ...props,
1084
+ children: [
1085
+ /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-4 w-4" }),
1086
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: children ?? "Previous" })
1087
+ ]
1088
+ }
1089
+ );
1090
+ }
1091
+ function PaginationNext({
1092
+ className,
1093
+ children,
1094
+ ...props
1095
+ }) {
1096
+ return /* @__PURE__ */ jsxs(
1097
+ PaginationLink,
1098
+ {
1099
+ "aria-label": "Go to next page",
1100
+ size: ButtonSize.Default,
1101
+ className: cn("gap-1 px-2.5 sm:pr-2.5", className),
1102
+ ...props,
1103
+ children: [
1104
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: children ?? "Next" }),
1105
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-4 w-4" })
1106
+ ]
1107
+ }
1108
+ );
1109
+ }
1110
+ function PaginationEllipsis({
1111
+ className,
1112
+ ...props
1113
+ }) {
1114
+ return /* @__PURE__ */ jsxs(
1115
+ "span",
1116
+ {
1117
+ "aria-hidden": true,
1118
+ "data-slot": "pagination-ellipsis",
1119
+ className: cn("flex size-9 items-center justify-center", className),
1120
+ ...props,
1121
+ children: [
1122
+ /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "h-4 w-4" }),
1123
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
1124
+ ]
1125
+ }
1126
+ );
1127
+ }
1128
+ function Tabs({
1129
+ className,
1130
+ ...props
1131
+ }) {
1132
+ return /* @__PURE__ */ jsx(
1133
+ TabsPrimitive.Root,
1134
+ {
1135
+ "data-slot": "tabs",
1136
+ className: cn("flex flex-col gap-2", className),
1137
+ ...props
1138
+ }
1139
+ );
1140
+ }
1141
+ function TabsList({
1142
+ className,
1143
+ ...props
1144
+ }) {
1145
+ return /* @__PURE__ */ jsx(
1146
+ TabsPrimitive.List,
1147
+ {
1148
+ "data-slot": "tabs-list",
1149
+ className: cn(
1150
+ "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
1151
+ className
1152
+ ),
1153
+ ...props
1154
+ }
1155
+ );
1156
+ }
1157
+ function TabsTrigger({
1158
+ className,
1159
+ ...props
1160
+ }) {
1161
+ return /* @__PURE__ */ jsx(
1162
+ TabsPrimitive.Trigger,
1163
+ {
1164
+ "data-slot": "tabs-trigger",
1165
+ className: cn(
1166
+ "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1167
+ className
1168
+ ),
1169
+ ...props
1170
+ }
1171
+ );
1172
+ }
1173
+ function TabsContent({
1174
+ className,
1175
+ ...props
1176
+ }) {
1177
+ return /* @__PURE__ */ jsx(
1178
+ TabsPrimitive.Content,
1179
+ {
1180
+ "data-slot": "tabs-content",
1181
+ className: cn("flex-1 outline-none", className),
1182
+ ...props
1183
+ }
1184
+ );
1185
+ }
1186
+ var Sheet = SheetPrimitive.Root;
1187
+ var SheetTrigger = SheetPrimitive.Trigger;
1188
+ var SheetClose = SheetPrimitive.Close;
1189
+ var SheetPortal = SheetPrimitive.Portal;
1190
+ var SheetOverlay = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1191
+ SheetPrimitive.Overlay,
1192
+ {
1193
+ className: cn(
1194
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1195
+ className
1196
+ ),
1197
+ ...props,
1198
+ ref
1199
+ }
1200
+ ));
1201
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
1202
+ var sheetVariants = cva(
1203
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
1204
+ {
1205
+ variants: {
1206
+ side: {
1207
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1208
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1209
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
1210
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
1211
+ }
1212
+ },
1213
+ defaultVariants: {
1214
+ side: "right"
1215
+ }
1216
+ }
1217
+ );
1218
+ var SheetContent = React18.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
1219
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
1220
+ /* @__PURE__ */ jsxs(
1221
+ SheetPrimitive.Content,
1222
+ {
1223
+ ref,
1224
+ className: cn(sheetVariants({ side }), className),
1225
+ ...props,
1226
+ children: [
1227
+ /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1228
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
1229
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1230
+ ] }),
1231
+ children
1232
+ ]
1233
+ }
1234
+ )
1235
+ ] }));
1236
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
1237
+ var SheetHeader = ({
1238
+ className,
1239
+ ...props
1240
+ }) => /* @__PURE__ */ jsx(
1241
+ "div",
1242
+ {
1243
+ className: cn(
1244
+ "flex flex-col space-y-2 text-center sm:text-left",
1245
+ className
1246
+ ),
1247
+ ...props
1248
+ }
1249
+ );
1250
+ SheetHeader.displayName = "SheetHeader";
1251
+ var SheetFooter = ({
1252
+ className,
1253
+ ...props
1254
+ }) => /* @__PURE__ */ jsx(
1255
+ "div",
1256
+ {
1257
+ className: cn(
1258
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1259
+ className
1260
+ ),
1261
+ ...props
1262
+ }
1263
+ );
1264
+ SheetFooter.displayName = "SheetFooter";
1265
+ var SheetTitle = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1266
+ SheetPrimitive.Title,
1267
+ {
1268
+ ref,
1269
+ className: cn("text-lg font-semibold text-foreground", className),
1270
+ ...props
1271
+ }
1272
+ ));
1273
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
1274
+ var SheetDescription = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1275
+ SheetPrimitive.Description,
1276
+ {
1277
+ ref,
1278
+ className: cn("text-sm text-muted-foreground", className),
1279
+ ...props
1280
+ }
1281
+ ));
1282
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
1283
+ var Dialog = SheetPrimitive.Root;
1284
+ var DialogTrigger = SheetPrimitive.Trigger;
1285
+ var DialogPortal = SheetPrimitive.Portal;
1286
+ var DialogClose = SheetPrimitive.Close;
1287
+ var DialogOverlay = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1288
+ SheetPrimitive.Overlay,
1289
+ {
1290
+ ref,
1291
+ className: cn(
1292
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1293
+ className
1294
+ ),
1295
+ ...props
1296
+ }
1297
+ ));
1298
+ DialogOverlay.displayName = SheetPrimitive.Overlay.displayName;
1299
+ var DialogContent = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
1300
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
1301
+ /* @__PURE__ */ jsxs(
1302
+ SheetPrimitive.Content,
1303
+ {
1304
+ ref,
1305
+ className: cn(
1306
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
1307
+ className
1308
+ ),
1309
+ ...props,
1310
+ children: [
1311
+ children,
1312
+ /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
1313
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
1314
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1315
+ ] })
1316
+ ]
1317
+ }
1318
+ )
1319
+ ] }));
1320
+ DialogContent.displayName = SheetPrimitive.Content.displayName;
1321
+ var DialogHeader = ({
1322
+ className,
1323
+ ...props
1324
+ }) => /* @__PURE__ */ jsx(
1325
+ "div",
1326
+ {
1327
+ className: cn(
1328
+ "flex flex-col space-y-1.5 text-center sm:text-left",
1329
+ className
1330
+ ),
1331
+ ...props
1332
+ }
1333
+ );
1334
+ DialogHeader.displayName = "DialogHeader";
1335
+ var DialogFooter = ({
1336
+ className,
1337
+ ...props
1338
+ }) => /* @__PURE__ */ jsx(
1339
+ "div",
1340
+ {
1341
+ className: cn(
1342
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1343
+ className
731
1344
  ),
732
1345
  ...props
733
1346
  }
@@ -754,6 +1367,231 @@ var DialogDescription = React18.forwardRef(({ className, ...props }, ref) => /*
754
1367
  }
755
1368
  ));
756
1369
  DialogDescription.displayName = SheetPrimitive.Description.displayName;
1370
+ function Drawer({
1371
+ ...props
1372
+ }) {
1373
+ return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
1374
+ }
1375
+ function DrawerTrigger({
1376
+ ...props
1377
+ }) {
1378
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
1379
+ }
1380
+ function DrawerPortal({
1381
+ ...props
1382
+ }) {
1383
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
1384
+ }
1385
+ function DrawerClose({
1386
+ ...props
1387
+ }) {
1388
+ return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
1389
+ }
1390
+ function DrawerOverlay({
1391
+ className,
1392
+ ...props
1393
+ }) {
1394
+ return /* @__PURE__ */ jsx(
1395
+ Drawer$1.Overlay,
1396
+ {
1397
+ "data-slot": "drawer-overlay",
1398
+ className: cn(
1399
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1400
+ className
1401
+ ),
1402
+ ...props
1403
+ }
1404
+ );
1405
+ }
1406
+ function DrawerContent({
1407
+ className,
1408
+ children,
1409
+ ...props
1410
+ }) {
1411
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
1412
+ /* @__PURE__ */ jsx(DrawerOverlay, {}),
1413
+ /* @__PURE__ */ jsxs(
1414
+ Drawer$1.Content,
1415
+ {
1416
+ "data-slot": "drawer-content",
1417
+ className: cn(
1418
+ "group/drawer-content bg-background fixed z-50 flex h-auto flex-col",
1419
+ "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",
1420
+ "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",
1421
+ "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",
1422
+ "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",
1423
+ className
1424
+ ),
1425
+ ...props,
1426
+ children: [
1427
+ /* @__PURE__ */ jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
1428
+ children
1429
+ ]
1430
+ }
1431
+ )
1432
+ ] });
1433
+ }
1434
+ function DrawerHeader({ className, ...props }) {
1435
+ return /* @__PURE__ */ jsx(
1436
+ "div",
1437
+ {
1438
+ "data-slot": "drawer-header",
1439
+ className: cn(
1440
+ "flex flex-col gap-1.5 p-4 text-center sm:text-left",
1441
+ className
1442
+ ),
1443
+ ...props
1444
+ }
1445
+ );
1446
+ }
1447
+ function DrawerFooter({ className, ...props }) {
1448
+ return /* @__PURE__ */ jsx(
1449
+ "div",
1450
+ {
1451
+ "data-slot": "drawer-footer",
1452
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1453
+ ...props
1454
+ }
1455
+ );
1456
+ }
1457
+ function DrawerTitle({
1458
+ className,
1459
+ ...props
1460
+ }) {
1461
+ return /* @__PURE__ */ jsx(
1462
+ Drawer$1.Title,
1463
+ {
1464
+ "data-slot": "drawer-title",
1465
+ className: cn("text-lg font-semibold text-foreground", className),
1466
+ ...props
1467
+ }
1468
+ );
1469
+ }
1470
+ function DrawerDescription({
1471
+ className,
1472
+ ...props
1473
+ }) {
1474
+ return /* @__PURE__ */ jsx(
1475
+ Drawer$1.Description,
1476
+ {
1477
+ "data-slot": "drawer-description",
1478
+ className: cn("text-sm text-muted-foreground", className),
1479
+ ...props
1480
+ }
1481
+ );
1482
+ }
1483
+ function ResizablePanelGroup({
1484
+ className,
1485
+ ...props
1486
+ }) {
1487
+ return /* @__PURE__ */ jsx(
1488
+ ResizablePrimitive.PanelGroup,
1489
+ {
1490
+ "data-slot": "resizable-panel-group",
1491
+ className: cn(
1492
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
1493
+ className
1494
+ ),
1495
+ ...props
1496
+ }
1497
+ );
1498
+ }
1499
+ function ResizablePanel({
1500
+ ...props
1501
+ }) {
1502
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
1503
+ }
1504
+ function ResizableHandle({
1505
+ withHandle,
1506
+ className,
1507
+ ...props
1508
+ }) {
1509
+ return /* @__PURE__ */ jsx(
1510
+ ResizablePrimitive.PanelResizeHandle,
1511
+ {
1512
+ "data-slot": "resizable-handle",
1513
+ className: cn(
1514
+ "bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
1515
+ className
1516
+ ),
1517
+ ...props,
1518
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border", children: /* @__PURE__ */ jsx(GripVertical, { className: "size-2.5" }) })
1519
+ }
1520
+ );
1521
+ }
1522
+ function ScrollArea({
1523
+ className,
1524
+ children,
1525
+ ...props
1526
+ }) {
1527
+ return /* @__PURE__ */ jsxs(
1528
+ ScrollAreaPrimitive.Root,
1529
+ {
1530
+ "data-slot": "scroll-area",
1531
+ className: cn("relative", className),
1532
+ ...props,
1533
+ children: [
1534
+ /* @__PURE__ */ jsx(
1535
+ ScrollAreaPrimitive.Viewport,
1536
+ {
1537
+ "data-slot": "scroll-area-viewport",
1538
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
1539
+ children
1540
+ }
1541
+ ),
1542
+ /* @__PURE__ */ jsx(ScrollBar, {}),
1543
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
1544
+ ]
1545
+ }
1546
+ );
1547
+ }
1548
+ function ScrollBar({
1549
+ className,
1550
+ orientation = "vertical",
1551
+ ...props
1552
+ }) {
1553
+ return /* @__PURE__ */ jsx(
1554
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1555
+ {
1556
+ "data-slot": "scroll-area-scrollbar",
1557
+ orientation,
1558
+ className: cn(
1559
+ "flex touch-none p-px transition-colors select-none",
1560
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
1561
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
1562
+ className
1563
+ ),
1564
+ ...props,
1565
+ children: /* @__PURE__ */ jsx(
1566
+ ScrollAreaPrimitive.ScrollAreaThumb,
1567
+ {
1568
+ "data-slot": "scroll-area-thumb",
1569
+ className: "bg-border relative flex-1 rounded-full"
1570
+ }
1571
+ )
1572
+ }
1573
+ );
1574
+ }
1575
+ function Separator2({
1576
+ className,
1577
+ orientation = "horizontal",
1578
+ decorative = true,
1579
+ ...props
1580
+ }) {
1581
+ return /* @__PURE__ */ jsx(
1582
+ SeparatorPrimitive.Root,
1583
+ {
1584
+ "data-slot": "separator",
1585
+ decorative,
1586
+ orientation,
1587
+ className: cn(
1588
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
1589
+ className
1590
+ ),
1591
+ ...props
1592
+ }
1593
+ );
1594
+ }
757
1595
  var Accordion = React18.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx(
758
1596
  AccordionPrimitive.Root,
759
1597
  {
@@ -1015,6 +1853,84 @@ var CollapsibleContent2 = React18.forwardRef(({ ...props }, ref) => /* @__PURE__
1015
1853
  }
1016
1854
  ));
1017
1855
  CollapsibleContent2.displayName = "CollapsibleContent";
1856
+ function ChartContainer({
1857
+ className,
1858
+ children,
1859
+ width = "100%",
1860
+ height = 350
1861
+ }) {
1862
+ return /* @__PURE__ */ jsx(
1863
+ "div",
1864
+ {
1865
+ "data-slot": "chart-container",
1866
+ className: cn("w-full", className),
1867
+ style: { width, height: typeof height === "number" ? `${height}px` : height },
1868
+ children
1869
+ }
1870
+ );
1871
+ }
1872
+ function ChartTooltipContent({
1873
+ className,
1874
+ label,
1875
+ payload,
1876
+ active
1877
+ }) {
1878
+ if (!active || !payload || payload.length === 0) {
1879
+ return null;
1880
+ }
1881
+ return /* @__PURE__ */ jsxs(
1882
+ "div",
1883
+ {
1884
+ "data-slot": "chart-tooltip-content",
1885
+ className: cn(
1886
+ "bg-background border-border text-foreground rounded-lg border p-2 shadow-md",
1887
+ className
1888
+ ),
1889
+ children: [
1890
+ label && /* @__PURE__ */ jsx("div", { className: "mb-1 text-xs font-medium text-muted-foreground", children: label }),
1891
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1", children: payload.map((item, index) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
1892
+ /* @__PURE__ */ jsx(
1893
+ "div",
1894
+ {
1895
+ className: "h-2 w-2 rounded-full",
1896
+ style: { backgroundColor: item.color }
1897
+ }
1898
+ ),
1899
+ /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
1900
+ item.name,
1901
+ ":"
1902
+ ] }),
1903
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: item.value })
1904
+ ] }, index)) })
1905
+ ]
1906
+ }
1907
+ );
1908
+ }
1909
+ function ChartLegendContent({
1910
+ className,
1911
+ payload
1912
+ }) {
1913
+ if (!payload || payload.length === 0) {
1914
+ return null;
1915
+ }
1916
+ return /* @__PURE__ */ jsx(
1917
+ "div",
1918
+ {
1919
+ "data-slot": "chart-legend-content",
1920
+ className: cn("flex items-center justify-center gap-4 text-sm pt-4", className),
1921
+ children: payload.map((item, index) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
1922
+ /* @__PURE__ */ jsx(
1923
+ "div",
1924
+ {
1925
+ className: "h-3 w-3 rounded-sm",
1926
+ style: { backgroundColor: item.color }
1927
+ }
1928
+ ),
1929
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: item.value })
1930
+ ] }, index))
1931
+ }
1932
+ );
1933
+ }
1018
1934
  var Select = SelectPrimitive.Root;
1019
1935
  var SelectGroup = SelectPrimitive.Group;
1020
1936
  var SelectValue = SelectPrimitive.Value;
@@ -1148,7 +2064,7 @@ var DropdownMenuSubTrigger = React18.forwardRef(({ className, inset, children, .
1148
2064
  ...props,
1149
2065
  children: [
1150
2066
  children,
1151
- /* @__PURE__ */ jsx(ChevronRight, { className: "ms-auto rtl:rotate-180" })
2067
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ms-auto rtl:rotate-180" })
1152
2068
  ]
1153
2069
  }
1154
2070
  ));
@@ -1203,7 +2119,7 @@ var DropdownMenuCheckboxItem = React18.forwardRef(({ className, children, checke
1203
2119
  checked,
1204
2120
  ...props,
1205
2121
  children: [
1206
- /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
2122
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-4 w-4" }) }) }),
1207
2123
  children
1208
2124
  ]
1209
2125
  }
@@ -1219,7 +2135,7 @@ var DropdownMenuRadioItem = React18.forwardRef(({ className, children, ...props
1219
2135
  ),
1220
2136
  ...props,
1221
2137
  children: [
1222
- /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }),
2138
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "h-2 w-2 fill-current" }) }) }),
1223
2139
  children
1224
2140
  ]
1225
2141
  }
@@ -2025,6 +2941,11 @@ var applyTheme = (theme, themeName) => {
2025
2941
  root.style.setProperty("--warning", hslToVar(theme.colors.warning));
2026
2942
  root.style.setProperty("--success", hslToVar(theme.colors.success));
2027
2943
  root.style.setProperty("--info", hslToVar(theme.colors.info));
2944
+ root.style.setProperty("--chart-1", theme.colors.chart[1]);
2945
+ root.style.setProperty("--chart-2", theme.colors.chart[2]);
2946
+ root.style.setProperty("--chart-3", theme.colors.chart[3]);
2947
+ root.style.setProperty("--chart-4", theme.colors.chart[4]);
2948
+ root.style.setProperty("--chart-5", theme.colors.chart[5]);
2028
2949
  root.style.setProperty("--left-menu", hslToVar(theme.colors.mainMenu.DEFAULT));
2029
2950
  root.style.setProperty("--left-menu-foreground", hslToVar(theme.colors.mainMenu.foreground));
2030
2951
  root.style.setProperty("--left-menu-hover", hslToVar(theme.colors.mainMenu.hover));
@@ -2049,6 +2970,6 @@ var applyTheme = (theme, themeName) => {
2049
2970
  }
2050
2971
  };
2051
2972
 
2052
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Avatar, AvatarFallback, AvatarImage, Badge, Button, CLOSE_ICON_ID, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChatInput, CloseIcon, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownButton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Header, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, Input, MENU_ICON_ID, MenuIcon, MessageBubble, MessageType, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuIcon, SidebarMenuItem, SidebarMenuLabel, Skeleton, Slider, SliderRange, SliderThumb, SliderTrack, Spinner, Switch, Textarea, ThreadList, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserInfo, applyTheme, badgeVariants };
2973
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CLOSE_ICON_ID, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegendContent, ChartTooltipContent, ChatInput, Checkbox, CloseIcon, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownButton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Header, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, Input, MENU_ICON_ID, MenuIcon, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageBubble, MessageType, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuIcon, SidebarMenuItem, SidebarMenuLabel, Skeleton, Slider, SliderRange, SliderThumb, SliderTrack, Spinner, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThreadList, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserInfo, applyTheme, badgeVariants };
2053
2974
  //# sourceMappingURL=index.mjs.map
2054
2975
  //# sourceMappingURL=index.mjs.map